nitro-renderer/dist/index-H-H0n5qT.cjs
2025-01-21 14:12:11 -05:00

5201 lines
1.7 MiB

"use strict";var B=(i=>(i.Application="application",i.WebGLPipes="webgl-pipes",i.WebGLPipesAdaptor="webgl-pipes-adaptor",i.WebGLSystem="webgl-system",i.WebGPUPipes="webgpu-pipes",i.WebGPUPipesAdaptor="webgpu-pipes-adaptor",i.WebGPUSystem="webgpu-system",i.CanvasSystem="canvas-system",i.CanvasPipesAdaptor="canvas-pipes-adaptor",i.CanvasPipes="canvas-pipes",i.Asset="asset",i.LoadParser="load-parser",i.ResolveParser="resolve-parser",i.CacheParser="cache-parser",i.DetectionParser="detection-parser",i.MaskEffect="mask-effect",i.BlendMode="blend-mode",i.TextureSource="texture-source",i.Environment="environment",i.ShapeBuilder="shape-builder",i.Batcher="batcher",i))(B||{});const tT=i=>{if(typeof i=="function"||typeof i=="object"&&i.extension){if(!i.extension)throw new Error("Extension class must have an extension object");i={...typeof i.extension!="object"?{type:i.extension}:i.extension,ref:i}}if(typeof i=="object")i={...i};else throw new Error("Invalid extension type");return typeof i.type=="string"&&(i.type=[i.type]),i},cc=(i,t)=>tT(i).priority??t,fe={_addHandlers:{},_removeHandlers:{},_queue:{},remove(...i){return i.map(tT).forEach(t=>{t.type.forEach(e=>{var s,r;return(r=(s=this._removeHandlers)[e])==null?void 0:r.call(s,t)})}),this},add(...i){return i.map(tT).forEach(t=>{t.type.forEach(e=>{var n,a;const s=this._addHandlers,r=this._queue;s[e]?(a=s[e])==null||a.call(s,t):(r[e]=r[e]||[],(n=r[e])==null||n.push(t))})}),this},handle(i,t,e){var a;const s=this._addHandlers,r=this._removeHandlers;if(s[i]||r[i])throw new Error(`Extension type ${i} already has a handler`);s[i]=t,r[i]=e;const n=this._queue;return n[i]&&((a=n[i])==null||a.forEach(o=>t(o)),delete n[i]),this},handleByMap(i,t){return this.handle(i,e=>{e.name&&(t[e.name]=e.ref)},e=>{e.name&&delete t[e.name]})},handleByNamedList(i,t,e=-1){return this.handle(i,s=>{t.findIndex(n=>n.name===s.name)>=0||(t.push({name:s.name,value:s.ref}),t.sort((n,a)=>cc(a.value,e)-cc(n.value,e)))},s=>{const r=t.findIndex(n=>n.name===s.name);r!==-1&&t.splice(r,1)})},handleByList(i,t,e=-1){return this.handle(i,s=>{t.includes(s.ref)||(t.push(s.ref),t.sort((r,n)=>cc(n,e)-cc(r,e)))},s=>{const r=t.indexOf(s.ref);r!==-1&&t.splice(r,1)})}},YX={extension:{type:B.Environment,name:"browser",priority:-1},test:()=>!0,load:async()=>{await Promise.resolve().then(()=>require("./browserAll-tpr82i3Q.cjs"))}},WX={extension:{type:B.Environment,name:"webworker",priority:0},test:()=>typeof self<"u"&&self.WorkerGlobalScope!==void 0,load:async()=>{await Promise.resolve().then(()=>require("./webworkerAll-CuC225D_.cjs"))}};class Pe{constructor(t,e,s){this._x=e||0,this._y=s||0,this._observer=t}clone(t){return new Pe(t??this._observer,this._x,this._y)}set(t=0,e=t){return(this._x!==t||this._y!==e)&&(this._x=t,this._y=e,this._observer._onUpdate(this)),this}copyFrom(t){return(this._x!==t.x||this._y!==t.y)&&(this._x=t.x,this._y=t.y,this._observer._onUpdate(this)),this}copyTo(t){return t.set(this._x,this._y),t}equals(t){return t.x===this._x&&t.y===this._y}toString(){return`[pixi.js/math:ObservablePoint x=0 y=0 scope=${this._observer}]`}get x(){return this._x}set x(t){this._x!==t&&(this._x=t,this._observer._onUpdate(this))}get y(){return this._y}set y(t){this._y!==t&&(this._y=t,this._observer._onUpdate(this))}}var yu=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function UI(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var Zy={exports:{}};(function(i){var t=Object.prototype.hasOwnProperty,e="~";function s(){}Object.create&&(s.prototype=Object.create(null),new s().__proto__||(e=!1));function r(u,l,c){this.fn=u,this.context=l,this.once=c||!1}function n(u,l,c,h,_){if(typeof c!="function")throw new TypeError("The listener must be a function");var d=new r(c,h||u,_),f=e?e+l:l;return u._events[f]?u._events[f].fn?u._events[f]=[u._events[f],d]:u._events[f].push(d):(u._events[f]=d,u._eventsCount++),u}function a(u,l){--u._eventsCount===0?u._events=new s:delete u._events[l]}function o(){this._events=new s,this._eventsCount=0}o.prototype.eventNames=function(){var l=[],c,h;if(this._eventsCount===0)return l;for(h in c=this._events)t.call(c,h)&&l.push(e?h.slice(1):h);return Object.getOwnPropertySymbols?l.concat(Object.getOwnPropertySymbols(c)):l},o.prototype.listeners=function(l){var c=e?e+l:l,h=this._events[c];if(!h)return[];if(h.fn)return[h.fn];for(var _=0,d=h.length,f=new Array(d);_<d;_++)f[_]=h[_].fn;return f},o.prototype.listenerCount=function(l){var c=e?e+l:l,h=this._events[c];return h?h.fn?1:h.length:0},o.prototype.emit=function(l,c,h,_,d,f){var p=e?e+l:l;if(!this._events[p])return!1;var g=this._events[p],m=arguments.length,O,y;if(g.fn){switch(g.once&&this.removeListener(l,g.fn,void 0,!0),m){case 1:return g.fn.call(g.context),!0;case 2:return g.fn.call(g.context,c),!0;case 3:return g.fn.call(g.context,c,h),!0;case 4:return g.fn.call(g.context,c,h,_),!0;case 5:return g.fn.call(g.context,c,h,_,d),!0;case 6:return g.fn.call(g.context,c,h,_,d,f),!0}for(y=1,O=new Array(m-1);y<m;y++)O[y-1]=arguments[y];g.fn.apply(g.context,O)}else{var C=g.length,P;for(y=0;y<C;y++)switch(g[y].once&&this.removeListener(l,g[y].fn,void 0,!0),m){case 1:g[y].fn.call(g[y].context);break;case 2:g[y].fn.call(g[y].context,c);break;case 3:g[y].fn.call(g[y].context,c,h);break;case 4:g[y].fn.call(g[y].context,c,h,_);break;default:if(!O)for(P=1,O=new Array(m-1);P<m;P++)O[P-1]=arguments[P];g[y].fn.apply(g[y].context,O)}}return!0},o.prototype.on=function(l,c,h){return n(this,l,c,h,!1)},o.prototype.once=function(l,c,h){return n(this,l,c,h,!0)},o.prototype.removeListener=function(l,c,h,_){var d=e?e+l:l;if(!this._events[d])return this;if(!c)return a(this,d),this;var f=this._events[d];if(f.fn)f.fn===c&&(!_||f.once)&&(!h||f.context===h)&&a(this,d);else{for(var p=0,g=[],m=f.length;p<m;p++)(f[p].fn!==c||_&&!f[p].once||h&&f[p].context!==h)&&g.push(f[p]);g.length?this._events[d]=g.length===1?g[0]:g:a(this,d)}return this},o.prototype.removeAllListeners=function(l){var c;return l?(c=e?e+l:l,this._events[c]&&a(this,c)):(this._events=new s,this._eventsCount=0),this},o.prototype.off=o.prototype.removeListener,o.prototype.addListener=o.prototype.on,o.prefixed=e,o.EventEmitter=o,i.exports=o})(Zy);var jX=Zy.exports;const ks=UI(jX),KX=Math.PI*2,XX=180/Math.PI,$o=Math.PI/180;class st{constructor(t=0,e=0){this.x=0,this.y=0,this.x=t,this.y=e}clone(){return new st(this.x,this.y)}copyFrom(t){return this.set(t.x,t.y),this}copyTo(t){return t.set(this.x,this.y),t}equals(t){return t.x===this.x&&t.y===this.y}set(t=0,e=t){return this.x=t,this.y=e,this}toString(){return`[pixi.js/math:Point x=${this.x} y=${this.y}]`}static get shared(){return nE.x=0,nE.y=0,nE}}const nE=new st;class ot{constructor(t=1,e=0,s=0,r=1,n=0,a=0){this.array=null,this.a=t,this.b=e,this.c=s,this.d=r,this.tx=n,this.ty=a}fromArray(t){this.a=t[0],this.b=t[1],this.c=t[3],this.d=t[4],this.tx=t[2],this.ty=t[5]}set(t,e,s,r,n,a){return this.a=t,this.b=e,this.c=s,this.d=r,this.tx=n,this.ty=a,this}toArray(t,e){this.array||(this.array=new Float32Array(9));const s=e||this.array;return t?(s[0]=this.a,s[1]=this.b,s[2]=0,s[3]=this.c,s[4]=this.d,s[5]=0,s[6]=this.tx,s[7]=this.ty,s[8]=1):(s[0]=this.a,s[1]=this.c,s[2]=this.tx,s[3]=this.b,s[4]=this.d,s[5]=this.ty,s[6]=0,s[7]=0,s[8]=1),s}apply(t,e){e=e||new st;const s=t.x,r=t.y;return e.x=this.a*s+this.c*r+this.tx,e.y=this.b*s+this.d*r+this.ty,e}applyInverse(t,e){e=e||new st;const s=this.a,r=this.b,n=this.c,a=this.d,o=this.tx,u=this.ty,l=1/(s*a+n*-r),c=t.x,h=t.y;return e.x=a*l*c+-n*l*h+(u*n-o*a)*l,e.y=s*l*h+-r*l*c+(-u*s+o*r)*l,e}translate(t,e){return this.tx+=t,this.ty+=e,this}scale(t,e){return this.a*=t,this.d*=e,this.c*=t,this.b*=e,this.tx*=t,this.ty*=e,this}rotate(t){const e=Math.cos(t),s=Math.sin(t),r=this.a,n=this.c,a=this.tx;return this.a=r*e-this.b*s,this.b=r*s+this.b*e,this.c=n*e-this.d*s,this.d=n*s+this.d*e,this.tx=a*e-this.ty*s,this.ty=a*s+this.ty*e,this}append(t){const e=this.a,s=this.b,r=this.c,n=this.d;return this.a=t.a*e+t.b*r,this.b=t.a*s+t.b*n,this.c=t.c*e+t.d*r,this.d=t.c*s+t.d*n,this.tx=t.tx*e+t.ty*r+this.tx,this.ty=t.tx*s+t.ty*n+this.ty,this}appendFrom(t,e){const s=t.a,r=t.b,n=t.c,a=t.d,o=t.tx,u=t.ty,l=e.a,c=e.b,h=e.c,_=e.d;return this.a=s*l+r*h,this.b=s*c+r*_,this.c=n*l+a*h,this.d=n*c+a*_,this.tx=o*l+u*h+e.tx,this.ty=o*c+u*_+e.ty,this}setTransform(t,e,s,r,n,a,o,u,l){return this.a=Math.cos(o+l)*n,this.b=Math.sin(o+l)*n,this.c=-Math.sin(o-u)*a,this.d=Math.cos(o-u)*a,this.tx=t-(s*this.a+r*this.c),this.ty=e-(s*this.b+r*this.d),this}prepend(t){const e=this.tx;if(t.a!==1||t.b!==0||t.c!==0||t.d!==1){const s=this.a,r=this.c;this.a=s*t.a+this.b*t.c,this.b=s*t.b+this.b*t.d,this.c=r*t.a+this.d*t.c,this.d=r*t.b+this.d*t.d}return this.tx=e*t.a+this.ty*t.c+t.tx,this.ty=e*t.b+this.ty*t.d+t.ty,this}decompose(t){const e=this.a,s=this.b,r=this.c,n=this.d,a=t.pivot,o=-Math.atan2(-r,n),u=Math.atan2(s,e),l=Math.abs(o+u);return l<1e-5||Math.abs(KX-l)<1e-5?(t.rotation=u,t.skew.x=t.skew.y=0):(t.rotation=0,t.skew.x=o,t.skew.y=u),t.scale.x=Math.sqrt(e*e+s*s),t.scale.y=Math.sqrt(r*r+n*n),t.position.x=this.tx+(a.x*e+a.y*r),t.position.y=this.ty+(a.x*s+a.y*n),t}invert(){const t=this.a,e=this.b,s=this.c,r=this.d,n=this.tx,a=t*r-e*s;return this.a=r/a,this.b=-e/a,this.c=-s/a,this.d=t/a,this.tx=(s*this.ty-r*n)/a,this.ty=-(t*this.ty-e*n)/a,this}isIdentity(){return this.a===1&&this.b===0&&this.c===0&&this.d===1&&this.tx===0&&this.ty===0}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){const t=new ot;return t.a=this.a,t.b=this.b,t.c=this.c,t.d=this.d,t.tx=this.tx,t.ty=this.ty,t}copyTo(t){return t.a=this.a,t.b=this.b,t.c=this.c,t.d=this.d,t.tx=this.tx,t.ty=this.ty,t}copyFrom(t){return this.a=t.a,this.b=t.b,this.c=t.c,this.d=t.d,this.tx=t.tx,this.ty=t.ty,this}equals(t){return t.a===this.a&&t.b===this.b&&t.c===this.c&&t.d===this.d&&t.tx===this.tx&&t.ty===this.ty}toString(){return`[pixi.js:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`}static get IDENTITY(){return $X.identity()}static get shared(){return qX.identity()}}const qX=new ot,$X=new ot,zn=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],Vn=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],Hn=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],Yn=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],eT=[],Jy=[],_c=Math.sign;function QX(){for(let i=0;i<16;i++){const t=[];eT.push(t);for(let e=0;e<16;e++){const s=_c(zn[i]*zn[e]+Hn[i]*Vn[e]),r=_c(Vn[i]*zn[e]+Yn[i]*Vn[e]),n=_c(zn[i]*Hn[e]+Hn[i]*Yn[e]),a=_c(Vn[i]*Hn[e]+Yn[i]*Yn[e]);for(let o=0;o<16;o++)if(zn[o]===s&&Vn[o]===r&&Hn[o]===n&&Yn[o]===a){t.push(o);break}}}for(let i=0;i<16;i++){const t=new ot;t.set(zn[i],Vn[i],Hn[i],Yn[i],0,0),Jy.push(t)}}QX();const me={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:i=>zn[i],uY:i=>Vn[i],vX:i=>Hn[i],vY:i=>Yn[i],inv:i=>i&8?i&15:-i&7,add:(i,t)=>eT[i][t],sub:(i,t)=>eT[i][me.inv(t)],rotate180:i=>i^4,isVertical:i=>(i&3)===2,byDirection:(i,t)=>Math.abs(i)*2<=Math.abs(t)?t>=0?me.S:me.N:Math.abs(t)*2<=Math.abs(i)?i>0?me.E:me.W:t>0?i>0?me.SE:me.SW:i>0?me.NE:me.NW,matrixAppendRotationInv:(i,t,e=0,s=0)=>{const r=Jy[me.inv(t)];r.tx=e,r.ty=s,i.append(r)}},dc=[new st,new st,new st,new st];class Kt{constructor(t=0,e=0,s=0,r=0){this.type="rectangle",this.x=Number(t),this.y=Number(e),this.width=Number(s),this.height=Number(r)}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}isEmpty(){return this.left===this.right||this.top===this.bottom}static get EMPTY(){return new Kt(0,0,0,0)}clone(){return new Kt(this.x,this.y,this.width,this.height)}copyFromBounds(t){return this.x=t.minX,this.y=t.minY,this.width=t.maxX-t.minX,this.height=t.maxY-t.minY,this}copyFrom(t){return this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height,this}copyTo(t){return t.copyFrom(this),t}contains(t,e){return this.width<=0||this.height<=0?!1:t>=this.x&&t<this.x+this.width&&e>=this.y&&e<this.y+this.height}strokeContains(t,e,s){const{width:r,height:n}=this;if(r<=0||n<=0)return!1;const a=this.x,o=this.y,u=a-s/2,l=a+r+s/2,c=o-s/2,h=o+n+s/2,_=a+s/2,d=a+r-s/2,f=o+s/2,p=o+n-s/2;return t>=u&&t<=l&&e>=c&&e<=h&&!(t>_&&t<d&&e>f&&e<p)}intersects(t,e){if(!e){const F=this.x<t.x?t.x:this.x;if((this.right>t.right?t.right:this.right)<=F)return!1;const U=this.y<t.y?t.y:this.y;return(this.bottom>t.bottom?t.bottom:this.bottom)>U}const s=this.left,r=this.right,n=this.top,a=this.bottom;if(r<=s||a<=n)return!1;const o=dc[0].set(t.left,t.top),u=dc[1].set(t.left,t.bottom),l=dc[2].set(t.right,t.top),c=dc[3].set(t.right,t.bottom);if(l.x<=o.x||u.y<=o.y)return!1;const h=Math.sign(e.a*e.d-e.b*e.c);if(h===0||(e.apply(o,o),e.apply(u,u),e.apply(l,l),e.apply(c,c),Math.max(o.x,u.x,l.x,c.x)<=s||Math.min(o.x,u.x,l.x,c.x)>=r||Math.max(o.y,u.y,l.y,c.y)<=n||Math.min(o.y,u.y,l.y,c.y)>=a))return!1;const _=h*(u.y-o.y),d=h*(o.x-u.x),f=_*s+d*n,p=_*r+d*n,g=_*s+d*a,m=_*r+d*a;if(Math.max(f,p,g,m)<=_*o.x+d*o.y||Math.min(f,p,g,m)>=_*c.x+d*c.y)return!1;const O=h*(o.y-l.y),y=h*(l.x-o.x),C=O*s+y*n,P=O*r+y*n,L=O*s+y*a,N=O*r+y*a;return!(Math.max(C,P,L,N)<=O*o.x+y*o.y||Math.min(C,P,L,N)>=O*c.x+y*c.y)}pad(t=0,e=t){return this.x-=t,this.y-=e,this.width+=t*2,this.height+=e*2,this}fit(t){const e=Math.max(this.x,t.x),s=Math.min(this.x+this.width,t.x+t.width),r=Math.max(this.y,t.y),n=Math.min(this.y+this.height,t.y+t.height);return this.x=e,this.width=Math.max(s-e,0),this.y=r,this.height=Math.max(n-r,0),this}ceil(t=1,e=.001){const s=Math.ceil((this.x+this.width-e)*t)/t,r=Math.ceil((this.y+this.height-e)*t)/t;return this.x=Math.floor((this.x+e)*t)/t,this.y=Math.floor((this.y+e)*t)/t,this.width=s-this.x,this.height=r-this.y,this}enlarge(t){const e=Math.min(this.x,t.x),s=Math.max(this.x+this.width,t.x+t.width),r=Math.min(this.y,t.y),n=Math.max(this.y+this.height,t.y+t.height);return this.x=e,this.width=s-e,this.y=r,this.height=n-r,this}getBounds(t){return t=t||new Kt,t.copyFrom(this),t}toString(){return`[pixi.js/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`}}const aE={default:-1};function Se(i="default"){return aE[i]===void 0&&(aE[i]=-1),++aE[i]}const _O={},Te="8.0.0",ZX="8.3.4";function ct(i,t,e=3){if(_O[t])return;let s=new Error().stack;typeof s>"u"?console.warn("PixiJS Deprecation Warning: ",`${t}
Deprecated since v${i}`):(s=s.split(`
`).splice(e).join(`
`),console.groupCollapsed?(console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s","color:#614108;background:#fffbe6","font-weight:normal;color:#614108;background:#fffbe6",`${t}
Deprecated since v${i}`),console.warn(s),console.groupEnd()):(console.warn("PixiJS Deprecation Warning: ",`${t}
Deprecated since v${i}`),console.warn(s))),_O[t]=!0}const tv=()=>{};function Dl(i){return i+=i===0?1:0,--i,i|=i>>>1,i|=i>>>2,i|=i>>>4,i|=i>>>8,i|=i>>>16,i+1}function dO(i){return!(i&i-1)&&!!i}function JX(i){const t={};for(const e in i)i[e]!==void 0&&(t[e]=i[e]);return t}const fO=Object.create(null);function t7(i){const t=fO[i];return t===void 0&&(fO[i]=Se("resource")),t}const ev=class sv extends ks{constructor(t={}){super(),this._resourceType="textureSampler",this._touched=0,this._maxAnisotropy=1,this.destroyed=!1,t={...sv.defaultOptions,...t},this.addressMode=t.addressMode,this.addressModeU=t.addressModeU??this.addressModeU,this.addressModeV=t.addressModeV??this.addressModeV,this.addressModeW=t.addressModeW??this.addressModeW,this.scaleMode=t.scaleMode,this.magFilter=t.magFilter??this.magFilter,this.minFilter=t.minFilter??this.minFilter,this.mipmapFilter=t.mipmapFilter??this.mipmapFilter,this.lodMinClamp=t.lodMinClamp,this.lodMaxClamp=t.lodMaxClamp,this.compare=t.compare,this.maxAnisotropy=t.maxAnisotropy??1}set addressMode(t){this.addressModeU=t,this.addressModeV=t,this.addressModeW=t}get addressMode(){return this.addressModeU}set wrapMode(t){ct(Te,"TextureStyle.wrapMode is now TextureStyle.addressMode"),this.addressMode=t}get wrapMode(){return this.addressMode}set scaleMode(t){this.magFilter=t,this.minFilter=t,this.mipmapFilter=t}get scaleMode(){return this.magFilter}set maxAnisotropy(t){this._maxAnisotropy=Math.min(t,16),this._maxAnisotropy>1&&(this.scaleMode="linear")}get maxAnisotropy(){return this._maxAnisotropy}get _resourceId(){return this._sharedResourceId||this._generateResourceId()}update(){this.emit("change",this),this._sharedResourceId=null}_generateResourceId(){const t=`${this.addressModeU}-${this.addressModeV}-${this.addressModeW}-${this.magFilter}-${this.minFilter}-${this.mipmapFilter}-${this.lodMinClamp}-${this.lodMaxClamp}-${this.compare}-${this._maxAnisotropy}`;return this._sharedResourceId=t7(t),this._resourceId}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this.removeAllListeners()}};ev.defaultOptions={addressMode:"clamp-to-edge",scaleMode:"linear"};let iv=ev;const rv=class nv extends ks{constructor(t={}){super(),this.options=t,this.uid=Se("textureSource"),this._resourceType="textureSource",this._resourceId=Se("resource"),this.uploadMethodId="unknown",this._resolution=1,this.pixelWidth=1,this.pixelHeight=1,this.width=1,this.height=1,this.sampleCount=1,this.mipLevelCount=1,this.autoGenerateMipmaps=!1,this.format="rgba8unorm",this.dimension="2d",this.antialias=!1,this._touched=0,this._batchTick=-1,this._textureBindLocation=-1,t={...nv.defaultOptions,...t},this.label=t.label??"",this.resource=t.resource,this.autoGarbageCollect=t.autoGarbageCollect,this._resolution=t.resolution,t.width?this.pixelWidth=t.width*this._resolution:this.pixelWidth=this.resource?this.resourceWidth??1:1,t.height?this.pixelHeight=t.height*this._resolution:this.pixelHeight=this.resource?this.resourceHeight??1:1,this.width=this.pixelWidth/this._resolution,this.height=this.pixelHeight/this._resolution,this.format=t.format,this.dimension=t.dimensions,this.mipLevelCount=t.mipLevelCount,this.autoGenerateMipmaps=t.autoGenerateMipmaps,this.sampleCount=t.sampleCount,this.antialias=t.antialias,this.alphaMode=t.alphaMode,this.style=new iv(JX(t)),this.destroyed=!1,this._refreshPOT()}get source(){return this}get style(){return this._style}set style(t){var e,s;this.style!==t&&((e=this._style)==null||e.off("change",this._onStyleChange,this),this._style=t,(s=this._style)==null||s.on("change",this._onStyleChange,this),this._onStyleChange())}get addressMode(){return this._style.addressMode}set addressMode(t){this._style.addressMode=t}get repeatMode(){return this._style.addressMode}set repeatMode(t){this._style.addressMode=t}get magFilter(){return this._style.magFilter}set magFilter(t){this._style.magFilter=t}get minFilter(){return this._style.minFilter}set minFilter(t){this._style.minFilter=t}get mipmapFilter(){return this._style.mipmapFilter}set mipmapFilter(t){this._style.mipmapFilter=t}get lodMinClamp(){return this._style.lodMinClamp}set lodMinClamp(t){this._style.lodMinClamp=t}get lodMaxClamp(){return this._style.lodMaxClamp}set lodMaxClamp(t){this._style.lodMaxClamp=t}_onStyleChange(){this.emit("styleChange",this)}update(){if(this.resource){const t=this._resolution;if(this.resize(this.resourceWidth/t,this.resourceHeight/t))return}this.emit("update",this)}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this._style&&(this._style.destroy(),this._style=null),this.uploadMethodId=null,this.resource=null,this.removeAllListeners()}unload(){this._resourceId=Se("resource"),this.emit("change",this),this.emit("unload",this)}get resourceWidth(){const{resource:t}=this;return t.naturalWidth||t.videoWidth||t.displayWidth||t.width}get resourceHeight(){const{resource:t}=this;return t.naturalHeight||t.videoHeight||t.displayHeight||t.height}get resolution(){return this._resolution}set resolution(t){this._resolution!==t&&(this._resolution=t,this.width=this.pixelWidth/t,this.height=this.pixelHeight/t)}resize(t,e,s){s=s||this._resolution,t=t||this.width,e=e||this.height;const r=Math.round(t*s),n=Math.round(e*s);return this.width=r/s,this.height=n/s,this._resolution=s,this.pixelWidth===r&&this.pixelHeight===n?!1:(this._refreshPOT(),this.pixelWidth=r,this.pixelHeight=n,this.emit("resize",this),this._resourceId=Se("resource"),this.emit("change",this),!0)}updateMipmaps(){this.autoGenerateMipmaps&&this.mipLevelCount>1&&this.emit("updateMipmaps",this)}set wrapMode(t){this._style.wrapMode=t}get wrapMode(){return this._style.wrapMode}set scaleMode(t){this._style.scaleMode=t}get scaleMode(){return this._style.scaleMode}_refreshPOT(){this.isPowerOfTwo=dO(this.pixelWidth)&&dO(this.pixelHeight)}static test(t){throw new Error("Unimplemented")}};rv.defaultOptions={resolution:1,format:"bgra8unorm",alphaMode:"premultiply-alpha-on-upload",dimensions:"2d",mipLevelCount:1,autoGenerateMipmaps:!1,sampleCount:1,antialias:!1,autoGarbageCollect:!1};let De=rv;class dm extends De{constructor(t){const e=t.resource||new Float32Array(t.width*t.height*4);let s=t.format;s||(e instanceof Float32Array?s="rgba32float":e instanceof Int32Array||e instanceof Uint32Array?s="rgba32uint":e instanceof Int16Array||e instanceof Uint16Array?s="rgba16uint":(e instanceof Int8Array,s="bgra8unorm")),super({...t,resource:e,format:s}),this.uploadMethodId="buffer"}static test(t){return t instanceof Int8Array||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array}}dm.extension=B.TextureSource;const gO=new ot;class av{constructor(t,e){this.mapCoord=new ot,this.uClampFrame=new Float32Array(4),this.uClampOffset=new Float32Array(2),this._textureID=-1,this._updateID=0,this.clampOffset=0,typeof e>"u"?this.clampMargin=t.width<10?0:.5:this.clampMargin=e,this.isSimple=!1,this.texture=t}get texture(){return this._texture}set texture(t){var e;this.texture!==t&&((e=this._texture)==null||e.removeListener("update",this.update,this),this._texture=t,this._texture.addListener("update",this.update,this),this.update())}multiplyUvs(t,e){e===void 0&&(e=t);const s=this.mapCoord;for(let r=0;r<t.length;r+=2){const n=t[r],a=t[r+1];e[r]=n*s.a+a*s.c+s.tx,e[r+1]=n*s.b+a*s.d+s.ty}return e}update(){const t=this._texture;this._updateID++;const e=t.uvs;this.mapCoord.set(e.x1-e.x0,e.y1-e.y0,e.x3-e.x0,e.y3-e.y0,e.x0,e.y0);const s=t.orig,r=t.trim;r&&(gO.set(s.width/r.width,0,0,s.height/r.height,-r.x/r.width,-r.y/r.height),this.mapCoord.append(gO));const n=t.source,a=this.uClampFrame,o=this.clampMargin/n._resolution,u=this.clampOffset/n._resolution;return a[0]=(t.frame.x+o+u)/n.width,a[1]=(t.frame.y+o+u)/n.height,a[2]=(t.frame.x+t.frame.width-o+u)/n.width,a[3]=(t.frame.y+t.frame.height-o+u)/n.height,this.uClampOffset[0]=this.clampOffset/n.pixelWidth,this.uClampOffset[1]=this.clampOffset/n.pixelHeight,this.isSimple=t.frame.width===n.width&&t.frame.height===n.height&&t.rotate===0,!0}}class W extends ks{constructor({source:t,label:e,frame:s,orig:r,trim:n,defaultAnchor:a,defaultBorders:o,rotate:u,dynamic:l}={}){if(super(),this.uid=Se("texture"),this.uvs={x0:0,y0:0,x1:0,y1:0,x2:0,y2:0,x3:0,y3:0},this.frame=new Kt,this.noFrame=!1,this.dynamic=!1,this.isTexture=!0,this.label=e,this.source=(t==null?void 0:t.source)??new De,this.noFrame=!s,s)this.frame.copyFrom(s);else{const{width:c,height:h}=this._source;this.frame.width=c,this.frame.height=h}this.orig=r||this.frame,this.trim=n,this.rotate=u??0,this.defaultAnchor=a,this.defaultBorders=o,this.destroyed=!1,this.dynamic=l||!1,this.updateUvs()}set source(t){this._source&&this._source.off("resize",this.update,this),this._source=t,t.on("resize",this.update,this),this.emit("update",this)}get source(){return this._source}get textureMatrix(){return this._textureMatrix||(this._textureMatrix=new av(this)),this._textureMatrix}get width(){return this.orig.width}get height(){return this.orig.height}updateUvs(){const{uvs:t,frame:e}=this,{width:s,height:r}=this._source,n=e.x/s,a=e.y/r,o=e.width/s,u=e.height/r;let l=this.rotate;if(l){const c=o/2,h=u/2,_=n+c,d=a+h;l=me.add(l,me.NW),t.x0=_+c*me.uX(l),t.y0=d+h*me.uY(l),l=me.add(l,2),t.x1=_+c*me.uX(l),t.y1=d+h*me.uY(l),l=me.add(l,2),t.x2=_+c*me.uX(l),t.y2=d+h*me.uY(l),l=me.add(l,2),t.x3=_+c*me.uX(l),t.y3=d+h*me.uY(l)}else t.x0=n,t.y0=a,t.x1=n+o,t.y1=a,t.x2=n+o,t.y2=a+u,t.x3=n,t.y3=a+u}destroy(t=!1){this._source&&t&&(this._source.destroy(),this._source=null),this._textureMatrix=null,this.destroyed=!0,this.emit("destroy",this),this.removeAllListeners()}update(){this.noFrame&&(this.frame.width=this._source.width,this.frame.height=this._source.height),this.updateUvs(),this.emit("update",this)}get baseTexture(){return ct(Te,"Texture.baseTexture is now Texture.source"),this._source}}W.EMPTY=new W({label:"EMPTY",source:new De({label:"EMPTY"})});W.EMPTY.destroy=tv;W.WHITE=new W({source:new dm({resource:new Uint8Array([255,255,255,255]),width:1,height:1,alphaMode:"premultiply-alpha-on-upload",label:"WHITE"}),label:"WHITE"});W.WHITE.destroy=tv;function ov(i,t,e,s){const{width:r,height:n}=e.orig,a=e.trim;if(a){const o=a.width,u=a.height;i.minX=a.x-t._x*r-s,i.maxX=i.minX+o,i.minY=a.y-t._y*n-s,i.maxY=i.minY+u}else i.minX=-t._x*r-s,i.maxX=i.minX+r,i.minY=-t._y*n-s,i.maxY=i.minY+n}const pO=new ot;class Bs{constructor(t=1/0,e=1/0,s=-1/0,r=-1/0){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=pO,this.minX=t,this.minY=e,this.maxX=s,this.maxY=r}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}get rectangle(){this._rectangle||(this._rectangle=new Kt);const t=this._rectangle;return this.minX>this.maxX||this.minY>this.maxY?(t.x=0,t.y=0,t.width=0,t.height=0):t.copyFromBounds(this),t}clear(){return this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.matrix=pO,this}set(t,e,s,r){this.minX=t,this.minY=e,this.maxX=s,this.maxY=r}addFrame(t,e,s,r,n){n||(n=this.matrix);const a=n.a,o=n.b,u=n.c,l=n.d,c=n.tx,h=n.ty;let _=this.minX,d=this.minY,f=this.maxX,p=this.maxY,g=a*t+u*e+c,m=o*t+l*e+h;g<_&&(_=g),m<d&&(d=m),g>f&&(f=g),m>p&&(p=m),g=a*s+u*e+c,m=o*s+l*e+h,g<_&&(_=g),m<d&&(d=m),g>f&&(f=g),m>p&&(p=m),g=a*t+u*r+c,m=o*t+l*r+h,g<_&&(_=g),m<d&&(d=m),g>f&&(f=g),m>p&&(p=m),g=a*s+u*r+c,m=o*s+l*r+h,g<_&&(_=g),m<d&&(d=m),g>f&&(f=g),m>p&&(p=m),this.minX=_,this.minY=d,this.maxX=f,this.maxY=p}addRect(t,e){this.addFrame(t.x,t.y,t.x+t.width,t.y+t.height,e)}addBounds(t,e){this.addFrame(t.minX,t.minY,t.maxX,t.maxY,e)}addBoundsMask(t){this.minX=this.minX>t.minX?this.minX:t.minX,this.minY=this.minY>t.minY?this.minY:t.minY,this.maxX=this.maxX<t.maxX?this.maxX:t.maxX,this.maxY=this.maxY<t.maxY?this.maxY:t.maxY}applyMatrix(t){const e=this.minX,s=this.minY,r=this.maxX,n=this.maxY,{a,b:o,c:u,d:l,tx:c,ty:h}=t;let _=a*e+u*s+c,d=o*e+l*s+h;this.minX=_,this.minY=d,this.maxX=_,this.maxY=d,_=a*r+u*s+c,d=o*r+l*s+h,this.minX=_<this.minX?_:this.minX,this.minY=d<this.minY?d:this.minY,this.maxX=_>this.maxX?_:this.maxX,this.maxY=d>this.maxY?d:this.maxY,_=a*e+u*n+c,d=o*e+l*n+h,this.minX=_<this.minX?_:this.minX,this.minY=d<this.minY?d:this.minY,this.maxX=_>this.maxX?_:this.maxX,this.maxY=d>this.maxY?d:this.maxY,_=a*r+u*n+c,d=o*r+l*n+h,this.minX=_<this.minX?_:this.minX,this.minY=d<this.minY?d:this.minY,this.maxX=_>this.maxX?_:this.maxX,this.maxY=d>this.maxY?d:this.maxY}fit(t){return this.minX<t.left&&(this.minX=t.left),this.maxX>t.right&&(this.maxX=t.right),this.minY<t.top&&(this.minY=t.top),this.maxY>t.bottom&&(this.maxY=t.bottom),this}fitBounds(t,e,s,r){return this.minX<t&&(this.minX=t),this.maxX>e&&(this.maxX=e),this.minY<s&&(this.minY=s),this.maxY>r&&(this.maxY=r),this}pad(t,e=t){return this.minX-=t,this.maxX+=t,this.minY-=e,this.maxY+=e,this}ceil(){return this.minX=Math.floor(this.minX),this.minY=Math.floor(this.minY),this.maxX=Math.ceil(this.maxX),this.maxY=Math.ceil(this.maxY),this}clone(){return new Bs(this.minX,this.minY,this.maxX,this.maxY)}scale(t,e=t){return this.minX*=t,this.minY*=e,this.maxX*=t,this.maxY*=e,this}get x(){return this.minX}set x(t){const e=this.maxX-this.minX;this.minX=t,this.maxX=t+e}get y(){return this.minY}set y(t){const e=this.maxY-this.minY;this.minY=t,this.maxY=t+e}get width(){return this.maxX-this.minX}set width(t){this.maxX=this.minX+t}get height(){return this.maxY-this.minY}set height(t){this.maxY=this.minY+t}get left(){return this.minX}get right(){return this.maxX}get top(){return this.minY}get bottom(){return this.maxY}get isPositive(){return this.maxX-this.minX>0&&this.maxY-this.minY>0}get isValid(){return this.minX+this.minY!==1/0}addVertexData(t,e,s,r){let n=this.minX,a=this.minY,o=this.maxX,u=this.maxY;r||(r=this.matrix);const l=r.a,c=r.b,h=r.c,_=r.d,d=r.tx,f=r.ty;for(let p=e;p<s;p+=2){const g=t[p],m=t[p+1],O=l*g+h*m+d,y=c*g+_*m+f;n=O<n?O:n,a=y<a?y:a,o=O>o?O:o,u=y>u?y:u}this.minX=n,this.minY=a,this.maxX=o,this.maxY=u}containsPoint(t,e){return this.minX<=t&&this.minY<=e&&this.maxX>=t&&this.maxY>=e}toString(){return`[pixi.js:Bounds minX=${this.minX} minY=${this.minY} maxX=${this.maxX} maxY=${this.maxY} width=${this.width} height=${this.height}]`}}var e7={grad:.9,turn:360,rad:360/(2*Math.PI)},or=function(i){return typeof i=="string"?i.length>0:typeof i=="number"},Ve=function(i,t,e){return t===void 0&&(t=0),e===void 0&&(e=Math.pow(10,t)),Math.round(e*i)/e+0},si=function(i,t,e){return t===void 0&&(t=0),e===void 0&&(e=1),i>e?e:i>t?i:t},uv=function(i){return(i=isFinite(i)?i%360:0)>0?i:i+360},mO=function(i){return{r:si(i.r,0,255),g:si(i.g,0,255),b:si(i.b,0,255),a:si(i.a)}},oE=function(i){return{r:Ve(i.r),g:Ve(i.g),b:Ve(i.b),a:Ve(i.a,3)}},s7=/^#([0-9a-f]{3,8})$/i,fc=function(i){var t=i.toString(16);return t.length<2?"0"+t:t},lv=function(i){var t=i.r,e=i.g,s=i.b,r=i.a,n=Math.max(t,e,s),a=n-Math.min(t,e,s),o=a?n===t?(e-s)/a:n===e?2+(s-t)/a:4+(t-e)/a:0;return{h:60*(o<0?o+6:o),s:n?a/n*100:0,v:n/255*100,a:r}},hv=function(i){var t=i.h,e=i.s,s=i.v,r=i.a;t=t/360*6,e/=100,s/=100;var n=Math.floor(t),a=s*(1-e),o=s*(1-(t-n)*e),u=s*(1-(1-t+n)*e),l=n%6;return{r:255*[s,o,a,a,u,s][l],g:255*[u,s,s,o,a,a][l],b:255*[a,a,u,s,s,o][l],a:r}},EO=function(i){return{h:uv(i.h),s:si(i.s,0,100),l:si(i.l,0,100),a:si(i.a)}},TO=function(i){return{h:Ve(i.h),s:Ve(i.s),l:Ve(i.l),a:Ve(i.a,3)}},IO=function(i){return hv((e=(t=i).s,{h:t.h,s:(e*=((s=t.l)<50?s:100-s)/100)>0?2*e/(s+e)*100:0,v:s+e,a:t.a}));var t,e,s},Vu=function(i){return{h:(t=lv(i)).h,s:(r=(200-(e=t.s))*(s=t.v)/100)>0&&r<200?e*s/100/(r<=100?r:200-r)*100:0,l:r/2,a:t.a};var t,e,s,r},i7=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,r7=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,n7=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,a7=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,sT={string:[[function(i){var t=s7.exec(i);return t?(i=t[1]).length<=4?{r:parseInt(i[0]+i[0],16),g:parseInt(i[1]+i[1],16),b:parseInt(i[2]+i[2],16),a:i.length===4?Ve(parseInt(i[3]+i[3],16)/255,2):1}:i.length===6||i.length===8?{r:parseInt(i.substr(0,2),16),g:parseInt(i.substr(2,2),16),b:parseInt(i.substr(4,2),16),a:i.length===8?Ve(parseInt(i.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(i){var t=n7.exec(i)||a7.exec(i);return t?t[2]!==t[4]||t[4]!==t[6]?null:mO({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(i){var t=i7.exec(i)||r7.exec(i);if(!t)return null;var e,s,r=EO({h:(e=t[1],s=t[2],s===void 0&&(s="deg"),Number(e)*(e7[s]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return IO(r)},"hsl"]],object:[[function(i){var t=i.r,e=i.g,s=i.b,r=i.a,n=r===void 0?1:r;return or(t)&&or(e)&&or(s)?mO({r:Number(t),g:Number(e),b:Number(s),a:Number(n)}):null},"rgb"],[function(i){var t=i.h,e=i.s,s=i.l,r=i.a,n=r===void 0?1:r;if(!or(t)||!or(e)||!or(s))return null;var a=EO({h:Number(t),s:Number(e),l:Number(s),a:Number(n)});return IO(a)},"hsl"],[function(i){var t=i.h,e=i.s,s=i.v,r=i.a,n=r===void 0?1:r;if(!or(t)||!or(e)||!or(s))return null;var a=function(o){return{h:uv(o.h),s:si(o.s,0,100),v:si(o.v,0,100),a:si(o.a)}}({h:Number(t),s:Number(e),v:Number(s),a:Number(n)});return hv(a)},"hsv"]]},SO=function(i,t){for(var e=0;e<t.length;e++){var s=t[e][0](i);if(s)return[s,t[e][1]]}return[null,void 0]},o7=function(i){return typeof i=="string"?SO(i.trim(),sT.string):typeof i=="object"&&i!==null?SO(i,sT.object):[null,void 0]},uE=function(i,t){var e=Vu(i);return{h:e.h,s:si(e.s+100*t,0,100),l:e.l,a:e.a}},lE=function(i){return(299*i.r+587*i.g+114*i.b)/1e3/255},RO=function(i,t){var e=Vu(i);return{h:e.h,s:e.s,l:si(e.l+100*t,0,100),a:e.a}},iT=function(){function i(t){this.parsed=o7(t)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return i.prototype.isValid=function(){return this.parsed!==null},i.prototype.brightness=function(){return Ve(lE(this.rgba),2)},i.prototype.isDark=function(){return lE(this.rgba)<.5},i.prototype.isLight=function(){return lE(this.rgba)>=.5},i.prototype.toHex=function(){return t=oE(this.rgba),e=t.r,s=t.g,r=t.b,a=(n=t.a)<1?fc(Ve(255*n)):"","#"+fc(e)+fc(s)+fc(r)+a;var t,e,s,r,n,a},i.prototype.toRgb=function(){return oE(this.rgba)},i.prototype.toRgbString=function(){return t=oE(this.rgba),e=t.r,s=t.g,r=t.b,(n=t.a)<1?"rgba("+e+", "+s+", "+r+", "+n+")":"rgb("+e+", "+s+", "+r+")";var t,e,s,r,n},i.prototype.toHsl=function(){return TO(Vu(this.rgba))},i.prototype.toHslString=function(){return t=TO(Vu(this.rgba)),e=t.h,s=t.s,r=t.l,(n=t.a)<1?"hsla("+e+", "+s+"%, "+r+"%, "+n+")":"hsl("+e+", "+s+"%, "+r+"%)";var t,e,s,r,n},i.prototype.toHsv=function(){return t=lv(this.rgba),{h:Ve(t.h),s:Ve(t.s),v:Ve(t.v),a:Ve(t.a,3)};var t},i.prototype.invert=function(){return Ci({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},i.prototype.saturate=function(t){return t===void 0&&(t=.1),Ci(uE(this.rgba,t))},i.prototype.desaturate=function(t){return t===void 0&&(t=.1),Ci(uE(this.rgba,-t))},i.prototype.grayscale=function(){return Ci(uE(this.rgba,-1))},i.prototype.lighten=function(t){return t===void 0&&(t=.1),Ci(RO(this.rgba,t))},i.prototype.darken=function(t){return t===void 0&&(t=.1),Ci(RO(this.rgba,-t))},i.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},i.prototype.alpha=function(t){return typeof t=="number"?Ci({r:(e=this.rgba).r,g:e.g,b:e.b,a:t}):Ve(this.rgba.a,3);var e},i.prototype.hue=function(t){var e=Vu(this.rgba);return typeof t=="number"?Ci({h:t,s:e.s,l:e.l,a:e.a}):Ve(e.h)},i.prototype.isEqual=function(t){return this.toHex()===Ci(t).toHex()},i}(),Ci=function(i){return i instanceof iT?i:new iT(i)},AO=[],u7=function(i){i.forEach(function(t){AO.indexOf(t)<0&&(t(iT,sT),AO.push(t))})};function l7(i,t){var e={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},s={};for(var r in e)s[e[r]]=r;var n={};i.prototype.toName=function(a){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var o,u,l=s[this.toHex()];if(l)return l;if(a!=null&&a.closest){var c=this.toRgb(),h=1/0,_="black";if(!n.length)for(var d in e)n[d]=new i(e[d]).toRgb();for(var f in e){var p=(o=c,u=n[f],Math.pow(o.r-u.r,2)+Math.pow(o.g-u.g,2)+Math.pow(o.b-u.b,2));p<h&&(h=p,_=f)}return _}},t.string.push([function(a){var o=a.toLowerCase(),u=o==="transparent"?"#0000":e[o];return u?new i(u).toRgb():null},"name"])}u7([l7]);const Qo=class Nu{constructor(t=16777215){this._value=null,this._components=new Float32Array(4),this._components.fill(1),this._int=16777215,this.value=t}get red(){return this._components[0]}get green(){return this._components[1]}get blue(){return this._components[2]}get alpha(){return this._components[3]}setValue(t){return this.value=t,this}set value(t){if(t instanceof Nu)this._value=this._cloneSource(t._value),this._int=t._int,this._components.set(t._components);else{if(t===null)throw new Error("Cannot set Color#value to null");(this._value===null||!this._isSourceEqual(this._value,t))&&(this._value=this._cloneSource(t),this._normalize(this._value))}}get value(){return this._value}_cloneSource(t){return typeof t=="string"||typeof t=="number"||t instanceof Number||t===null?t:Array.isArray(t)||ArrayBuffer.isView(t)?t.slice(0):typeof t=="object"&&t!==null?{...t}:t}_isSourceEqual(t,e){const s=typeof t;if(s!==typeof e)return!1;if(s==="number"||s==="string"||t instanceof Number)return t===e;if(Array.isArray(t)&&Array.isArray(e)||ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return t.length!==e.length?!1:t.every((n,a)=>n===e[a]);if(t!==null&&e!==null){const n=Object.keys(t),a=Object.keys(e);return n.length!==a.length?!1:n.every(o=>t[o]===e[o])}return t===e}toRgba(){const[t,e,s,r]=this._components;return{r:t,g:e,b:s,a:r}}toRgb(){const[t,e,s]=this._components;return{r:t,g:e,b:s}}toRgbaString(){const[t,e,s]=this.toUint8RgbArray();return`rgba(${t},${e},${s},${this.alpha})`}toUint8RgbArray(t){const[e,s,r]=this._components;return this._arrayRgb||(this._arrayRgb=[]),t=t||this._arrayRgb,t[0]=Math.round(e*255),t[1]=Math.round(s*255),t[2]=Math.round(r*255),t}toArray(t){this._arrayRgba||(this._arrayRgba=[]),t=t||this._arrayRgba;const[e,s,r,n]=this._components;return t[0]=e,t[1]=s,t[2]=r,t[3]=n,t}toRgbArray(t){this._arrayRgb||(this._arrayRgb=[]),t=t||this._arrayRgb;const[e,s,r]=this._components;return t[0]=e,t[1]=s,t[2]=r,t}toNumber(){return this._int}toBgrNumber(){const[t,e,s]=this.toUint8RgbArray();return(s<<16)+(e<<8)+t}toLittleEndianNumber(){const t=this._int;return(t>>16)+(t&65280)+((t&255)<<16)}multiply(t){const[e,s,r,n]=Nu._temp.setValue(t)._components;return this._components[0]*=e,this._components[1]*=s,this._components[2]*=r,this._components[3]*=n,this._refreshInt(),this._value=null,this}premultiply(t,e=!0){return e&&(this._components[0]*=t,this._components[1]*=t,this._components[2]*=t),this._components[3]=t,this._refreshInt(),this._value=null,this}toPremultiplied(t,e=!0){if(t===1)return(255<<24)+this._int;if(t===0)return e?0:this._int;let s=this._int>>16&255,r=this._int>>8&255,n=this._int&255;return e&&(s=s*t+.5|0,r=r*t+.5|0,n=n*t+.5|0),(t*255<<24)+(s<<16)+(r<<8)+n}toHex(){const t=this._int.toString(16);return`#${"000000".substring(0,6-t.length)+t}`}toHexa(){const e=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-e.length)+e}setAlpha(t){return this._components[3]=this._clamp(t),this}_normalize(t){let e,s,r,n;if((typeof t=="number"||t instanceof Number)&&t>=0&&t<=16777215){const a=t;e=(a>>16&255)/255,s=(a>>8&255)/255,r=(a&255)/255,n=1}else if((Array.isArray(t)||t instanceof Float32Array)&&t.length>=3&&t.length<=4)t=this._clamp(t),[e,s,r,n=1]=t;else if((t instanceof Uint8Array||t instanceof Uint8ClampedArray)&&t.length>=3&&t.length<=4)t=this._clamp(t,0,255),[e,s,r,n=255]=t,e/=255,s/=255,r/=255,n/=255;else if(typeof t=="string"||typeof t=="object"){if(typeof t=="string"){const o=Nu.HEX_PATTERN.exec(t);o&&(t=`#${o[2]}`)}const a=Ci(t);a.isValid()&&({r:e,g:s,b:r,a:n}=a.rgba,e/=255,s/=255,r/=255)}if(e!==void 0)this._components[0]=e,this._components[1]=s,this._components[2]=r,this._components[3]=n,this._refreshInt();else throw new Error(`Unable to convert color ${t}`)}_refreshInt(){this._clamp(this._components);const[t,e,s]=this._components;this._int=(t*255<<16)+(e*255<<8)+(s*255|0)}_clamp(t,e=0,s=1){return typeof t=="number"?Math.min(Math.max(t,e),s):(t.forEach((r,n)=>{t[n]=Math.min(Math.max(r,e),s)}),t)}static isColorLike(t){return typeof t=="number"||typeof t=="string"||t instanceof Number||t instanceof Nu||Array.isArray(t)||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Float32Array||t.r!==void 0&&t.g!==void 0&&t.b!==void 0||t.r!==void 0&&t.g!==void 0&&t.b!==void 0&&t.a!==void 0||t.h!==void 0&&t.s!==void 0&&t.l!==void 0||t.h!==void 0&&t.s!==void 0&&t.l!==void 0&&t.a!==void 0||t.h!==void 0&&t.s!==void 0&&t.v!==void 0||t.h!==void 0&&t.s!==void 0&&t.v!==void 0&&t.a!==void 0}};Qo.shared=new Qo;Qo._temp=new Qo;Qo.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;let Mt=Qo;const h7={cullArea:null,cullable:!1,cullableChildren:!0};class DI{constructor(t,e){this._pool=[],this._count=0,this._index=0,this._classType=t,e&&this.prepopulate(e)}prepopulate(t){for(let e=0;e<t;e++)this._pool[this._index++]=new this._classType;this._count+=t}get(t){var s;let e;return this._index>0?e=this._pool[--this._index]:e=new this._classType,(s=e.init)==null||s.call(e,t),e}return(t){var e;(e=t.reset)==null||e.call(t),this._pool[this._index++]=t}get totalSize(){return this._count}get totalFree(){return this._index}get totalUsed(){return this._count-this._index}clear(){this._pool.length=0,this._index=0}}class c7{constructor(){this._poolsByClass=new Map}prepopulate(t,e){this.getPool(t).prepopulate(e)}get(t,e){return this.getPool(t).get(e)}return(t){this.getPool(t.constructor).return(t)}getPool(t){return this._poolsByClass.has(t)||this._poolsByClass.set(t,new DI(t)),this._poolsByClass.get(t)}stats(){const t={};return this._poolsByClass.forEach(e=>{const s=t[e._classType.name]?e._classType.name+e._classType.ID:e._classType.name;t[s]={free:e.totalFree,used:e.totalUsed,size:e.totalSize}}),t}}const ls=new c7;function cv(i,t,e){const s=i.length;let r;if(t>=s||e===0)return;e=t+e>s?s-t:e;const n=s-e;for(r=t;r<n;++r)i[r]=i[r+e];i.length=n}const _7={allowChildren:!0,removeChildren(i=0,t){const e=t??this.children.length,s=e-i,r=[];if(s>0&&s<=e){for(let a=e-1;a>=i;a--){const o=this.children[a];o&&(r.push(o),o.parent=null)}cv(this.children,i,e);const n=this.renderGroup||this.parentRenderGroup;n&&n.removeChildren(r);for(let a=0;a<r.length;++a)this.emit("childRemoved",r[a],this,a),r[a].emit("removed",this);return r}else if(s===0&&this.children.length===0)return r;throw new RangeError("removeChildren: numeric values are outside the acceptable range.")},removeChildAt(i){const t=this.getChildAt(i);return this.removeChild(t)},getChildAt(i){if(i<0||i>=this.children.length)throw new Error(`getChildAt: Index (${i}) does not exist.`);return this.children[i]},setChildIndex(i,t){if(t<0||t>=this.children.length)throw new Error(`The index ${t} supplied is out of bounds ${this.children.length}`);this.getChildIndex(i),this.addChildAt(i,t)},getChildIndex(i){const t=this.children.indexOf(i);if(t===-1)throw new Error("The supplied Container must be a child of the caller");return t},addChildAt(i,t){this.allowChildren||ct(Te,"addChildAt: Only Containers will be allowed to add children in v8.0.0");const{children:e}=this;if(t<0||t>e.length)throw new Error(`${i}addChildAt: The index ${t} supplied is out of bounds ${e.length}`);if(i.parent){const r=i.parent.children.indexOf(i);if(i.parent===this&&r===t)return i;r!==-1&&i.parent.children.splice(r,1)}t===e.length?e.push(i):e.splice(t,0,i),i.parent=this,i.didChange=!0,i._updateFlags=15;const s=this.renderGroup||this.parentRenderGroup;return s&&s.addChild(i),this.sortableChildren&&(this.sortDirty=!0),this.emit("childAdded",i,this,t),i.emit("added",this),i},swapChildren(i,t){if(i===t)return;const e=this.getChildIndex(i),s=this.getChildIndex(t);this.children[e]=t,this.children[s]=i;const r=this.renderGroup||this.parentRenderGroup;r&&(r.structureDidChange=!0),this._didContainerChangeTick++},removeFromParent(){var i;(i=this.parent)==null||i.removeChild(this)},reparentChild(...i){return i.length===1?this.reparentChildAt(i[0],this.children.length):(i.forEach(t=>this.reparentChildAt(t,this.children.length)),i[0])},reparentChildAt(i,t){if(i.parent===this)return this.setChildIndex(i,t),i;const e=i.worldTransform.clone();i.removeFromParent(),this.addChildAt(i,t);const s=this.worldTransform.clone();return s.invert(),e.prepend(s),i.setFromMatrix(e),i}};class $c{constructor(){this.pipe="filter",this.priority=1}destroy(){for(let t=0;t<this.filters.length;t++)this.filters[t].destroy();this.filters=null,this.filterArea=null}}class d7{constructor(){this._effectClasses=[],this._tests=[],this._initialized=!1}init(){this._initialized||(this._initialized=!0,this._effectClasses.forEach(t=>{this.add({test:t.test,maskClass:t})}))}add(t){this._tests.push(t)}getMaskEffect(t){this._initialized||this.init();for(let e=0;e<this._tests.length;e++){const s=this._tests[e];if(s.test(t))return ls.get(s.maskClass,t)}return t}returnMaskEffect(t){ls.return(t)}}const rT=new d7;fe.handleByList(B.MaskEffect,rT._effectClasses);const f7={_maskEffect:null,_maskOptions:{inverse:!1},_filterEffect:null,effects:[],addEffect(i){if(this.effects.indexOf(i)!==-1)return;this.effects.push(i),this.effects.sort((s,r)=>s.priority-r.priority);const e=this.renderGroup||this.parentRenderGroup;e&&(e.structureDidChange=!0),this._updateIsSimple()},removeEffect(i){const t=this.effects.indexOf(i);t!==-1&&(this.effects.splice(t,1),this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateIsSimple())},set mask(i){const t=this._maskEffect;(t==null?void 0:t.mask)!==i&&(t&&(this.removeEffect(t),rT.returnMaskEffect(t),this._maskEffect=null),i!=null&&(this._maskEffect=rT.getMaskEffect(i),this.addEffect(this._maskEffect)))},setMask(i){this._maskOptions={...this._maskOptions,...i},i.mask&&(this.mask=i.mask)},get mask(){var i;return(i=this._maskEffect)==null?void 0:i.mask},set filters(i){var n;!Array.isArray(i)&&i&&(i=[i]);const t=this._filterEffect||(this._filterEffect=new $c);i=i;const e=(i==null?void 0:i.length)>0,s=((n=t.filters)==null?void 0:n.length)>0,r=e!==s;i=Array.isArray(i)?i.slice(0):i,t.filters=Object.freeze(i),r&&(e?this.addEffect(t):(this.removeEffect(t),t.filters=i??null))},get filters(){var i;return(i=this._filterEffect)==null?void 0:i.filters},set filterArea(i){this._filterEffect||(this._filterEffect=new $c),this._filterEffect.filterArea=i},get filterArea(){var i;return(i=this._filterEffect)==null?void 0:i.filterArea}},g7={label:null,get name(){return ct(Te,"Container.name property has been removed, use Container.label instead"),this.label},set name(i){ct(Te,"Container.name property has been removed, use Container.label instead"),this.label=i},getChildByName(i,t=!1){return this.getChildByLabel(i,t)},getChildByLabel(i,t=!1){const e=this.children;for(let s=0;s<e.length;s++){const r=e[s];if(r.label===i||i instanceof RegExp&&i.test(r.label))return r}if(t)for(let s=0;s<e.length;s++){const n=e[s].getChildByLabel(i,!0);if(n)return n}return null},getChildrenByLabel(i,t=!1,e=[]){const s=this.children;for(let r=0;r<s.length;r++){const n=s[r];(n.label===i||i instanceof RegExp&&i.test(n.label))&&e.push(n)}if(t)for(let r=0;r<s.length;r++)s[r].getChildrenByLabel(i,!0,e);return e}},Fr=new DI(ot),Da=new DI(Bs);function LI(i,t,e){e.clear();let s,r;return i.parent?t?s=i.parent.worldTransform:(r=Fr.get().identity(),s=Qc(i,r)):s=ot.IDENTITY,_v(i,e,s,t),r&&Fr.return(r),e.isValid||e.set(0,0,0,0),e}function _v(i,t,e,s){var o,u;if(!i.visible||!i.measurable)return;let r;s?r=i.worldTransform:(i.updateLocalTransform(),r=Fr.get(),r.appendFrom(i.localTransform,e));const n=t,a=!!i.effects.length;if(a&&(t=Da.get().clear()),i.boundsArea)t.addRect(i.boundsArea,r);else{i.addBounds&&(t.matrix=r,i.addBounds(t));for(let l=0;l<i.children.length;l++)_v(i.children[l],t,r,s)}if(a){for(let l=0;l<i.effects.length;l++)(u=(o=i.effects[l]).addBounds)==null||u.call(o,t);n.addBounds(t,ot.IDENTITY),Da.return(t)}s||Fr.return(r)}function Qc(i,t){const e=i.parent;return e&&(Qc(e,t),e.updateLocalTransform(),t.append(e.localTransform)),t}let hE=0;const OO=500;function le(...i){hE!==OO&&(hE++,hE===OO?console.warn("PixiJS Warning: too many warnings, no more warnings will be reported to the console by PixiJS."):console.warn("PixiJS Warning: ",...i))}function FI(i,t,e){return t.clear(),e||(e=ot.IDENTITY),dv(i,t,e,i,!0),t.isValid||t.set(0,0,0,0),t}function dv(i,t,e,s,r){var u,l;let n;if(r)n=Fr.get(),n=e.copyTo(n);else{if(!i.visible||!i.measurable)return;i.updateLocalTransform();const c=i.localTransform;n=Fr.get(),n.appendFrom(c,e)}const a=t,o=!!i.effects.length;if(o&&(t=Da.get().clear()),i.boundsArea)t.addRect(i.boundsArea,n);else{i.renderPipeId&&(t.matrix=n,i.addBounds(t));const c=i.children;for(let h=0;h<c.length;h++)dv(c[h],t,n,s,!1)}if(o){for(let c=0;c<i.effects.length;c++)(l=(u=i.effects[c]).addLocalBounds)==null||l.call(u,t,s);a.addBounds(t,ot.IDENTITY),Da.return(t)}Fr.return(n)}function fv(i,t){const e=i.children;for(let s=0;s<e.length;s++){const r=e[s],n=r.uid,a=(r._didViewChangeTick&65535)<<16|r._didContainerChangeTick&65535,o=t.index;(t.data[o]!==n||t.data[o+1]!==a)&&(t.data[t.index]=n,t.data[t.index+1]=a,t.didChange=!0),t.index=o+2,r.children.length&&fv(r,t)}return t.didChange}const p7=new ot,m7={_localBoundsCacheId:-1,_localBoundsCacheData:null,_setWidth(i,t){const e=Math.sign(this.scale.x)||1;t!==0?this.scale.x=i/t*e:this.scale.x=e},_setHeight(i,t){const e=Math.sign(this.scale.y)||1;t!==0?this.scale.y=i/t*e:this.scale.y=e},getLocalBounds(){this._localBoundsCacheData||(this._localBoundsCacheData={data:[],index:1,didChange:!1,localBounds:new Bs});const i=this._localBoundsCacheData;return i.index=1,i.didChange=!1,i.data[0]!==this._didViewChangeTick&&(i.didChange=!0,i.data[0]=this._didViewChangeTick),fv(this,i),i.didChange&&FI(this,i.localBounds,p7),i.localBounds},getBounds(i,t){return LI(this,i,t||new Bs)}},E7={_onRender:null,set onRender(i){const t=this.renderGroup||this.parentRenderGroup;if(!i){this._onRender&&(t==null||t.removeOnRender(this)),this._onRender=null;return}this._onRender||t==null||t.addOnRender(this),this._onRender=i},get onRender(){return this._onRender}},T7={_zIndex:0,sortDirty:!1,sortableChildren:!1,get zIndex(){return this._zIndex},set zIndex(i){this._zIndex!==i&&(this._zIndex=i,this.depthOfChildModified())},depthOfChildModified(){this.parent&&(this.parent.sortableChildren=!0,this.parent.sortDirty=!0),this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0)},sortChildren(){this.sortDirty&&(this.sortDirty=!1,this.children.sort(I7))}};function I7(i,t){return i._zIndex-t._zIndex}const S7={getGlobalPosition(i=new st,t=!1){return this.parent?this.parent.toGlobal(this._position,i,t):(i.x=this._position.x,i.y=this._position.y),i},toGlobal(i,t,e=!1){if(!e){this.updateLocalTransform();const s=Qc(this,new ot);return s.append(this.localTransform),s.apply(i,t)}return this.worldTransform.apply(i,t)},toLocal(i,t,e,s){if(t&&(i=t.toGlobal(i,e,s)),!s){this.updateLocalTransform();const r=Qc(this,new ot);return r.append(this.localTransform),r.applyInverse(i,e)}return this.worldTransform.applyInverse(i,e)}};let R7=0;class gv{constructor(){this.uid=Se("instructionSet"),this.instructions=[],this.instructionSize=0,this.renderables=[],this.tick=0}reset(){this.instructionSize=0,this.tick=R7++}add(t){this.instructions[this.instructionSize++]=t}log(){this.instructions.length=this.instructionSize,console.table(this.instructions,["type","action"])}}class A7{constructor(){this.renderPipeId="renderGroup",this.root=null,this.canBundle=!1,this.renderGroupParent=null,this.renderGroupChildren=[],this.worldTransform=new ot,this.worldColorAlpha=4294967295,this.worldColor=16777215,this.worldAlpha=1,this.childrenToUpdate=Object.create(null),this.updateTick=0,this.childrenRenderablesToUpdate={list:[],index:0},this.structureDidChange=!0,this.instructionSet=new gv,this._onRenderContainers=[]}init(t){this.root=t,t._onRender&&this.addOnRender(t),t.didChange=!0;const e=t.children;for(let s=0;s<e.length;s++)this.addChild(e[s])}reset(){this.renderGroupChildren.length=0;for(const t in this.childrenToUpdate){const e=this.childrenToUpdate[t];e.list.fill(null),e.index=0}this.childrenRenderablesToUpdate.index=0,this.childrenRenderablesToUpdate.list.fill(null),this.root=null,this.updateTick=0,this.structureDidChange=!0,this._onRenderContainers.length=0,this.renderGroupParent=null}get localTransform(){return this.root.localTransform}addRenderGroupChild(t){t.renderGroupParent&&t.renderGroupParent._removeRenderGroupChild(t),t.renderGroupParent=this,this.renderGroupChildren.push(t)}_removeRenderGroupChild(t){const e=this.renderGroupChildren.indexOf(t);e>-1&&this.renderGroupChildren.splice(e,1),t.renderGroupParent=null}addChild(t){if(this.structureDidChange=!0,t.parentRenderGroup=this,t.updateTick=-1,t.parent===this.root?t.relativeRenderGroupDepth=1:t.relativeRenderGroupDepth=t.parent.relativeRenderGroupDepth+1,t.didChange=!0,this.onChildUpdate(t),t.renderGroup){this.addRenderGroupChild(t.renderGroup);return}t._onRender&&this.addOnRender(t);const e=t.children;for(let s=0;s<e.length;s++)this.addChild(e[s])}removeChild(t){if(this.structureDidChange=!0,t._onRender&&(t.renderGroup||this.removeOnRender(t)),t.parentRenderGroup=null,t.renderGroup){this._removeRenderGroupChild(t.renderGroup);return}const e=t.children;for(let s=0;s<e.length;s++)this.removeChild(e[s])}removeChildren(t){for(let e=0;e<t.length;e++)this.removeChild(t[e])}onChildUpdate(t){let e=this.childrenToUpdate[t.relativeRenderGroupDepth];e||(e=this.childrenToUpdate[t.relativeRenderGroupDepth]={index:0,list:[]}),e.list[e.index++]=t}updateRenderable(t){t.globalDisplayStatus<7||(this.instructionSet.renderPipes[t.renderPipeId].updateRenderable(t),t.didViewUpdate=!1)}onChildViewUpdate(t){this.childrenRenderablesToUpdate.list[this.childrenRenderablesToUpdate.index++]=t}get isRenderable(){return this.root.localDisplayStatus===7&&this.worldAlpha>0}addOnRender(t){this._onRenderContainers.push(t)}removeOnRender(t){this._onRenderContainers.splice(this._onRenderContainers.indexOf(t),1)}runOnRender(){for(let t=0;t<this._onRenderContainers.length;t++)this._onRenderContainers[t]._onRender()}destroy(){this.renderGroupParent=null,this.root=null,this.childrenRenderablesToUpdate=null,this.childrenToUpdate=null,this.renderGroupChildren=null,this._onRenderContainers=null,this.instructionSet=null}getChildren(t=[]){const e=this.root.children;for(let s=0;s<e.length;s++)this._getChildren(e[s],t);return t}_getChildren(t,e=[]){if(e.push(t),t.renderGroup)return e;const s=t.children;for(let r=0;r<s.length;r++)this._getChildren(s[r],e);return e}}function O7(i,t,e={}){for(const s in t)!e[s]&&t[s]!==void 0&&(i[s]=t[s])}const cE=new Pe(null),_E=new Pe(null),dE=new Pe(null,1,1),Zc=1,wI=2,Hu=4;class $t extends ks{constructor(t={}){var e,s;super(),this.uid=Se("renderable"),this._updateFlags=15,this.renderGroup=null,this.parentRenderGroup=null,this.parentRenderGroupIndex=0,this.didChange=!1,this.didViewUpdate=!1,this.relativeRenderGroupDepth=0,this.children=[],this.parent=null,this.includeInBuild=!0,this.measurable=!0,this.isSimple=!0,this.updateTick=-1,this.localTransform=new ot,this.relativeGroupTransform=new ot,this.groupTransform=this.relativeGroupTransform,this.destroyed=!1,this._position=new Pe(this,0,0),this._scale=dE,this._pivot=_E,this._skew=cE,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._rotation=0,this.localColor=16777215,this.localAlpha=1,this.groupAlpha=1,this.groupColor=16777215,this.groupColorAlpha=4294967295,this.localBlendMode="inherit",this.groupBlendMode="normal",this.localDisplayStatus=7,this.globalDisplayStatus=7,this._didContainerChangeTick=0,this._didViewChangeTick=0,this._didLocalTransformChangeId=-1,this.effects=[],O7(this,t,{children:!0,parent:!0,effects:!0}),(e=t.children)==null||e.forEach(r=>this.addChild(r)),(s=t.parent)==null||s.addChild(this)}static mixin(t){Object.defineProperties($t.prototype,Object.getOwnPropertyDescriptors(t))}set _didChangeId(t){this._didViewChangeTick=t>>12&4095,this._didContainerChangeTick=t&4095}get _didChangeId(){return this._didContainerChangeTick&4095|(this._didViewChangeTick&4095)<<12}addChild(...t){if(this.allowChildren||ct(Te,"addChild: Only Containers will be allowed to add children in v8.0.0"),t.length>1){for(let r=0;r<t.length;r++)this.addChild(t[r]);return t[0]}const e=t[0];if(e.parent===this)return this.children.splice(this.children.indexOf(e),1),this.children.push(e),this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),e;e.parent&&e.parent.removeChild(e),this.children.push(e),this.sortableChildren&&(this.sortDirty=!0),e.parent=this,e.didChange=!0,e._updateFlags=15;const s=this.renderGroup||this.parentRenderGroup;return s&&s.addChild(e),this.emit("childAdded",e,this,this.children.length-1),e.emit("added",this),this._didViewChangeTick++,e._zIndex!==0&&e.depthOfChildModified(),e}removeChild(...t){if(t.length>1){for(let r=0;r<t.length;r++)this.removeChild(t[r]);return t[0]}const e=t[0],s=this.children.indexOf(e);return s>-1&&(this._didViewChangeTick++,this.children.splice(s,1),this.renderGroup?this.renderGroup.removeChild(e):this.parentRenderGroup&&this.parentRenderGroup.removeChild(e),e.parent=null,this.emit("childRemoved",e,this,s),e.emit("removed",this)),e}_onUpdate(t){t&&t===this._skew&&this._updateSkew(),this._didContainerChangeTick++,!this.didChange&&(this.didChange=!0,this.parentRenderGroup&&this.parentRenderGroup.onChildUpdate(this))}set isRenderGroup(t){!!this.renderGroup!==t&&(t?this.enableRenderGroup():this.disableRenderGroup())}get isRenderGroup(){return!!this.renderGroup}enableRenderGroup(){if(this.renderGroup)return;const t=this.parentRenderGroup;t==null||t.removeChild(this),this.renderGroup=ls.get(A7,this),this.groupTransform=ot.IDENTITY,t==null||t.addChild(this),this._updateIsSimple()}disableRenderGroup(){if(!this.renderGroup)return;const t=this.parentRenderGroup;t==null||t.removeChild(this),ls.return(this.renderGroup),this.renderGroup=null,this.groupTransform=this.relativeGroupTransform,t==null||t.addChild(this),this._updateIsSimple()}_updateIsSimple(){this.isSimple=!this.renderGroup&&this.effects.length===0}get worldTransform(){return this._worldTransform||(this._worldTransform=new ot),this.renderGroup?this._worldTransform.copyFrom(this.renderGroup.worldTransform):this.parentRenderGroup&&this._worldTransform.appendFrom(this.relativeGroupTransform,this.parentRenderGroup.worldTransform),this._worldTransform}get x(){return this._position.x}set x(t){this._position.x=t}get y(){return this._position.y}set y(t){this._position.y=t}get position(){return this._position}set position(t){this._position.copyFrom(t)}get rotation(){return this._rotation}set rotation(t){this._rotation!==t&&(this._rotation=t,this._onUpdate(this._skew))}get angle(){return this.rotation*XX}set angle(t){this.rotation=t*$o}get pivot(){return this._pivot===_E&&(this._pivot=new Pe(this,0,0)),this._pivot}set pivot(t){this._pivot===_E&&(this._pivot=new Pe(this,0,0)),typeof t=="number"?this._pivot.set(t):this._pivot.copyFrom(t)}get skew(){return this._skew===cE&&(this._skew=new Pe(this,0,0)),this._skew}set skew(t){this._skew===cE&&(this._skew=new Pe(this,0,0)),this._skew.copyFrom(t)}get scale(){return this._scale===dE&&(this._scale=new Pe(this,1,1)),this._scale}set scale(t){this._scale===dE&&(this._scale=new Pe(this,0,0)),typeof t=="number"?this._scale.set(t):this._scale.copyFrom(t)}get width(){return Math.abs(this.scale.x*this.getLocalBounds().width)}set width(t){const e=this.getLocalBounds().width;this._setWidth(t,e)}get height(){return Math.abs(this.scale.y*this.getLocalBounds().height)}set height(t){const e=this.getLocalBounds().height;this._setHeight(t,e)}getSize(t){t||(t={});const e=this.getLocalBounds();return t.width=Math.abs(this.scale.x*e.width),t.height=Math.abs(this.scale.y*e.height),t}setSize(t,e){const s=this.getLocalBounds();typeof t=="object"?(e=t.height??t.width,t=t.width):e??(e=t),t!==void 0&&this._setWidth(t,s.width),e!==void 0&&this._setHeight(e,s.height)}_updateSkew(){const t=this._rotation,e=this._skew;this._cx=Math.cos(t+e._y),this._sx=Math.sin(t+e._y),this._cy=-Math.sin(t-e._x),this._sy=Math.cos(t-e._x)}updateTransform(t){return this.position.set(typeof t.x=="number"?t.x:this.position.x,typeof t.y=="number"?t.y:this.position.y),this.scale.set(typeof t.scaleX=="number"?t.scaleX||1:this.scale.x,typeof t.scaleY=="number"?t.scaleY||1:this.scale.y),this.rotation=typeof t.rotation=="number"?t.rotation:this.rotation,this.skew.set(typeof t.skewX=="number"?t.skewX:this.skew.x,typeof t.skewY=="number"?t.skewY:this.skew.y),this.pivot.set(typeof t.pivotX=="number"?t.pivotX:this.pivot.x,typeof t.pivotY=="number"?t.pivotY:this.pivot.y),this}setFromMatrix(t){t.decompose(this)}updateLocalTransform(){const t=this._didContainerChangeTick;if(this._didLocalTransformChangeId===t)return;this._didLocalTransformChangeId=t;const e=this.localTransform,s=this._scale,r=this._pivot,n=this._position,a=s._x,o=s._y,u=r._x,l=r._y;e.a=this._cx*a,e.b=this._sx*a,e.c=this._cy*o,e.d=this._sy*o,e.tx=n._x-(u*e.a+l*e.c),e.ty=n._y-(u*e.b+l*e.d)}set alpha(t){t!==this.localAlpha&&(this.localAlpha=t,this._updateFlags|=Zc,this._onUpdate())}get alpha(){return this.localAlpha}set tint(t){const s=Mt.shared.setValue(t??16777215).toBgrNumber();s!==this.localColor&&(this.localColor=s,this._updateFlags|=Zc,this._onUpdate())}get tint(){const t=this.localColor;return((t&255)<<16)+(t&65280)+(t>>16&255)}set blendMode(t){this.localBlendMode!==t&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=wI,this.localBlendMode=t,this._onUpdate())}get blendMode(){return this.localBlendMode}get visible(){return!!(this.localDisplayStatus&2)}set visible(t){const e=t?2:0;(this.localDisplayStatus&2)!==e&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=Hu,this.localDisplayStatus^=2,this._onUpdate())}get culled(){return!(this.localDisplayStatus&4)}set culled(t){const e=t?0:4;(this.localDisplayStatus&4)!==e&&(this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._updateFlags|=Hu,this.localDisplayStatus^=4,this._onUpdate())}get renderable(){return!!(this.localDisplayStatus&1)}set renderable(t){const e=t?1:0;(this.localDisplayStatus&1)!==e&&(this._updateFlags|=Hu,this.localDisplayStatus^=1,this.parentRenderGroup&&(this.parentRenderGroup.structureDidChange=!0),this._onUpdate())}get isRenderable(){return this.localDisplayStatus===7&&this.groupAlpha>0}destroy(t=!1){var r;if(this.destroyed)return;this.destroyed=!0;const e=this.removeChildren(0,this.children.length);if(this.removeFromParent(),this.parent=null,this._maskEffect=null,this._filterEffect=null,this.effects=null,this._position=null,this._scale=null,this._pivot=null,this._skew=null,this.emit("destroyed",this),this.removeAllListeners(),typeof t=="boolean"?t:t==null?void 0:t.children)for(let n=0;n<e.length;++n)e[n].destroy(t);(r=this.renderGroup)==null||r.destroy(),this.renderGroup=null}}$t.mixin(_7);$t.mixin(S7);$t.mixin(E7);$t.mixin(m7);$t.mixin(f7);$t.mixin(g7);$t.mixin(T7);$t.mixin(h7);class fm extends $t{constructor(){super(...arguments),this.canBundle=!0,this.allowChildren=!1,this._roundPixels=0,this._lastUsed=0,this._lastInstructionTick=-1,this._bounds=new Bs(0,1,0,0),this._boundsDirty=!0}_updateBounds(){}get roundPixels(){return!!this._roundPixels}set roundPixels(t){this._roundPixels=t?1:0}containsPoint(t){const e=this.bounds,{x:s,y:r}=t;return s>=e.minX&&s<=e.maxX&&r>=e.minY&&r<=e.maxY}onViewUpdate(){if(this._didViewChangeTick++,this.didViewUpdate)return;this.didViewUpdate=!0;const t=this.renderGroup||this.parentRenderGroup;t&&t.onChildViewUpdate(this)}destroy(t){super.destroy(t),this._bounds=null}}class wt extends fm{constructor(t=W.EMPTY){t instanceof W&&(t={texture:t});const{texture:e=W.EMPTY,anchor:s,roundPixels:r,width:n,height:a,...o}=t;super({label:"Sprite",...o}),this.renderPipeId="sprite",this.batched=!0,this._sourceBounds={minX:0,maxX:1,minY:0,maxY:0},this._sourceBoundsDirty=!0,this._anchor=new Pe({_onUpdate:()=>{this.onViewUpdate()}}),s?this.anchor=s:e.defaultAnchor&&(this.anchor=e.defaultAnchor),this.texture=e,this.allowChildren=!1,this.roundPixels=r??!1,n!==void 0&&(this.width=n),a!==void 0&&(this.height=a)}static from(t,e=!1){return t instanceof W?new wt(t):new wt(W.from(t,e))}set texture(t){t||(t=W.EMPTY);const e=this._texture;e!==t&&(e&&e.dynamic&&e.off("update",this.onViewUpdate,this),t.dynamic&&t.on("update",this.onViewUpdate,this),this._texture=t,this._width&&this._setWidth(this._width,this._texture.orig.width),this._height&&this._setHeight(this._height,this._texture.orig.height),this.onViewUpdate())}get texture(){return this._texture}get bounds(){return this._boundsDirty&&(this._updateBounds(),this._boundsDirty=!1),this._bounds}get sourceBounds(){return this._sourceBoundsDirty&&(this._updateSourceBounds(),this._sourceBoundsDirty=!1),this._sourceBounds}containsPoint(t){const e=this.sourceBounds;return t.x>=e.maxX&&t.x<=e.minX&&t.y>=e.maxY&&t.y<=e.minY}addBounds(t){const e=this._texture.trim?this.sourceBounds:this.bounds;t.addFrame(e.minX,e.minY,e.maxX,e.maxY)}onViewUpdate(){this._sourceBoundsDirty=this._boundsDirty=!0,super.onViewUpdate()}_updateBounds(){ov(this._bounds,this._anchor,this._texture,0)}_updateSourceBounds(){const t=this._anchor,e=this._texture,s=this._sourceBounds,{width:r,height:n}=e.orig;s.maxX=-t._x*r,s.minX=s.maxX+r,s.maxY=-t._y*n,s.minY=s.maxY+n}destroy(t=!1){if(super.destroy(t),typeof t=="boolean"?t:t==null?void 0:t.texture){const s=typeof t=="boolean"?t:t==null?void 0:t.textureSource;this._texture.destroy(s)}this._texture=null,this._bounds=null,this._sourceBounds=null,this._anchor=null}get anchor(){return this._anchor}set anchor(t){typeof t=="number"?this._anchor.set(t):this._anchor.copyFrom(t)}get width(){return Math.abs(this.scale.x)*this._texture.orig.width}set width(t){this._setWidth(t,this._texture.orig.width),this._width=t}get height(){return Math.abs(this.scale.y)*this._texture.orig.height}set height(t){this._setHeight(t,this._texture.orig.height),this._height=t}getSize(t){return t||(t={}),t.width=Math.abs(this.scale.x)*this._texture.orig.width,t.height=Math.abs(this.scale.y)*this._texture.orig.height,t}setSize(t,e){typeof t=="object"?(e=t.height??t.width,t=t.width):e??(e=t),t!==void 0&&this._setWidth(t,this._texture.orig.width),e!==void 0&&this._setHeight(e,this._texture.orig.height)}}const y7=new Bs;function pv(i,t,e){const s=y7;i.measurable=!0,LI(i,e,s),t.addBoundsMask(s),i.measurable=!1}function mv(i,t,e){const s=Da.get();i.measurable=!0;const r=Fr.get().identity(),n=Ev(i,e,r);FI(i,s,n),i.measurable=!1,t.addBoundsMask(s),Fr.return(r),Da.return(s)}function Ev(i,t,e){return i?(i!==t&&(Ev(i.parent,t,e),i.updateLocalTransform(),e.append(i.localTransform)),e):(le("Mask bounds, renderable is not inside the root container"),e)}class Tv{constructor(t){this.priority=0,this.inverse=!1,this.pipe="alphaMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t,this.renderMaskToTexture=!(t instanceof wt),this.mask.renderable=this.renderMaskToTexture,this.mask.includeInBuild=!this.renderMaskToTexture,this.mask.measurable=!1}reset(){this.mask.measurable=!0,this.mask=null}addBounds(t,e){this.inverse||pv(this.mask,t,e)}addLocalBounds(t,e){mv(this.mask,t,e)}containsPoint(t,e){const s=this.mask;return e(s,t)}destroy(){this.reset()}static test(t){return t instanceof wt}}Tv.extension=B.MaskEffect;class Iv{constructor(t){this.priority=0,this.pipe="colorMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t}destroy(){}static test(t){return typeof t=="number"}}Iv.extension=B.MaskEffect;class Sv{constructor(t){this.priority=0,this.pipe="stencilMask",t!=null&&t.mask&&this.init(t.mask)}init(t){this.mask=t,this.mask.includeInBuild=!1,this.mask.measurable=!1}reset(){this.mask.measurable=!0,this.mask.includeInBuild=!0,this.mask=null}addBounds(t,e){pv(this.mask,t,e)}addLocalBounds(t,e){mv(this.mask,t,e)}containsPoint(t,e){const s=this.mask;return e(s,t)}destroy(){this.reset()}static test(t){return t instanceof $t}}Sv.extension=B.MaskEffect;const Rv={createCanvas:(i,t)=>{const e=document.createElement("canvas");return e.width=i,e.height=t,e},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(i,t)=>fetch(i,t),parseXML:i=>new DOMParser().parseFromString(i,"text/xml")};let yO=Rv;const Wt={get(){return yO},set(i){yO=i}};class La extends De{constructor(t){t.resource||(t.resource=Wt.get().createCanvas()),t.width||(t.width=t.resource.width,t.autoDensity||(t.width/=t.resolution)),t.height||(t.height=t.resource.height,t.autoDensity||(t.height/=t.resolution)),super(t),this.uploadMethodId="image",this.autoDensity=t.autoDensity;const e=t.resource;(this.pixelWidth!==e.width||this.pixelWidth!==e.height)&&this.resizeCanvas(),this.transparent=!!t.transparent}resizeCanvas(){this.autoDensity&&(this.resource.style.width=`${this.width}px`,this.resource.style.height=`${this.height}px`),(this.resource.width!==this.pixelWidth||this.resource.height!==this.pixelHeight)&&(this.resource.width=this.pixelWidth,this.resource.height=this.pixelHeight)}resize(t=this.width,e=this.height,s=this._resolution){const r=super.resize(t,e,s);return r&&this.resizeCanvas(),r}static test(t){return globalThis.HTMLCanvasElement&&t instanceof HTMLCanvasElement||globalThis.OffscreenCanvas&&t instanceof OffscreenCanvas}get context2D(){return this._context2D||(this._context2D=this.resource.getContext("2d"))}}La.extension=B.TextureSource;class qa extends De{constructor(t){if(t.resource&&globalThis.HTMLImageElement&&t.resource instanceof HTMLImageElement){const e=Wt.get().createCanvas(t.resource.width,t.resource.height);e.getContext("2d").drawImage(t.resource,0,0,t.resource.width,t.resource.height),t.resource=e,le("ImageSource: Image element passed, converting to canvas. Use CanvasSource instead.")}super(t),this.uploadMethodId="image",this.autoGarbageCollect=!0}static test(t){return globalThis.HTMLImageElement&&t instanceof HTMLImageElement||typeof ImageBitmap<"u"&&t instanceof ImageBitmap||globalThis.VideoFrame&&t instanceof VideoFrame}}qa.extension=B.TextureSource;var Ll=(i=>(i[i.INTERACTION=50]="INTERACTION",i[i.HIGH=25]="HIGH",i[i.NORMAL=0]="NORMAL",i[i.LOW=-25]="LOW",i[i.UTILITY=-50]="UTILITY",i))(Ll||{});class fE{constructor(t,e=null,s=0,r=!1){this.next=null,this.previous=null,this._destroyed=!1,this._fn=t,this._context=e,this.priority=s,this._once=r}match(t,e=null){return this._fn===t&&this._context===e}emit(t){this._fn&&(this._context?this._fn.call(this._context,t):this._fn(t));const e=this.next;return this._once&&this.destroy(!0),this._destroyed&&(this.next=null),e}connect(t){this.previous=t,t.next&&(t.next.previous=this),this.next=t.next,t.next=this}destroy(t=!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 e=this.next;return this.next=t?null:e,this.previous=null,e}}const Av=class Cs{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 fE(null,null,1/0),this.deltaMS=1/Cs.targetFPMS,this.elapsedMS=1/Cs.targetFPMS,this._tick=t=>{this._requestId=null,this.started&&(this.update(t),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(t,e,s=Ll.NORMAL){return this._addListener(new fE(t,e,s))}addOnce(t,e,s=Ll.NORMAL){return this._addListener(new fE(t,e,s,!0))}_addListener(t){let e=this._head.next,s=this._head;if(!e)t.connect(s);else{for(;e;){if(t.priority>e.priority){t.connect(s);break}s=e,e=e.next}t.previous||t.connect(s)}return this._startIfPossible(),this}remove(t,e){let s=this._head.next;for(;s;)s.match(t,e)?s=s.destroy():s=s.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let t=0,e=this._head;for(;e=e.next;)t++;return t}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let t=this._head.next;for(;t;)t=t.destroy(!0);this._head.destroy(),this._head=null}}update(t=performance.now()){let e;if(t>this.lastTime){if(e=this.elapsedMS=t-this.lastTime,e>this._maxElapsedMS&&(e=this._maxElapsedMS),e*=this.speed,this._minElapsedMS){const n=t-this._lastFrame|0;if(n<this._minElapsedMS)return;this._lastFrame=t-n%this._minElapsedMS}this.deltaMS=e,this.deltaTime=this.deltaMS*Cs.targetFPMS;const s=this._head;let r=s.next;for(;r;)r=r.emit(this);s.next||this._cancelIfNeeded()}else this.deltaTime=this.deltaMS=this.elapsedMS=0;this.lastTime=t}get FPS(){return 1e3/this.elapsedMS}get minFPS(){return 1e3/this._maxElapsedMS}set minFPS(t){const e=Math.min(this.maxFPS,t),s=Math.min(Math.max(0,e)/1e3,Cs.targetFPMS);this._maxElapsedMS=1/s}get maxFPS(){return this._minElapsedMS?Math.round(1e3/this._minElapsedMS):0}set maxFPS(t){if(t===0)this._minElapsedMS=0;else{const e=Math.max(this.minFPS,t);this._minElapsedMS=1/(e/1e3)}}static get shared(){if(!Cs._shared){const t=Cs._shared=new Cs;t.autoStart=!0,t._protected=!0}return Cs._shared}static get system(){if(!Cs._system){const t=Cs._system=new Cs;t.autoStart=!0,t._protected=!0}return Cs._system}};Av.targetFPMS=.06;let Ls=Av,gE;async function Ov(){return gE??(gE=(async()=>{var a;const t=document.createElement("canvas").getContext("webgl");if(!t)return"premultiply-alpha-on-upload";const e=await new Promise(o=>{const u=document.createElement("video");u.onloadeddata=()=>o(u),u.onerror=()=>o(null),u.autoplay=!1,u.crossOrigin="anonymous",u.preload="auto",u.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",u.load()});if(!e)return"premultiply-alpha-on-upload";const s=t.createTexture();t.bindTexture(t.TEXTURE_2D,s);const r=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,s,0),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,t.NONE),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e);const n=new Uint8Array(4);return t.readPixels(0,0,1,1,t.RGBA,t.UNSIGNED_BYTE,n),t.deleteFramebuffer(r),t.deleteTexture(s),(a=t.getExtension("WEBGL_lose_context"))==null||a.loseContext(),n[0]<=n[3]?"premultiplied-alpha":"premultiply-alpha-on-upload"})()),gE}const gm=class yv extends De{constructor(t){super(t),this.isReady=!1,this.uploadMethodId="video",t={...yv.defaultOptions,...t},this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=t.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=t.autoPlay!==!1,this.alphaMode=t.alphaMode??"premultiply-alpha-on-upload",this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onCanPlayThrough=this._onCanPlayThrough.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),t.autoLoad!==!1&&this.load()}updateFrame(){if(!this.destroyed){if(this._updateFPS){const t=Ls.shared.elapsedMS*this.resource.playbackRate;this._msToNextUpdate=Math.floor(this._msToNextUpdate-t)}(!this._updateFPS||this._msToNextUpdate<=0)&&(this._msToNextUpdate=this._updateFPS?Math.floor(1e3/this._updateFPS):0),this.isValid&&this.update()}}_videoFrameRequestCallback(){this.updateFrame(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback)}get isValid(){return!!this.resource.videoWidth&&!!this.resource.videoHeight}async load(){if(this._load)return this._load;const t=this.resource,e=this.options;return(t.readyState===t.HAVE_ENOUGH_DATA||t.readyState===t.HAVE_FUTURE_DATA)&&t.width&&t.height&&(t.complete=!0),t.addEventListener("play",this._onPlayStart),t.addEventListener("pause",this._onPlayStop),t.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._mediaReady():(e.preload||t.addEventListener("canplay",this._onCanPlay),t.addEventListener("canplaythrough",this._onCanPlayThrough),t.addEventListener("error",this._onError,!0)),this.alphaMode=await Ov(),this._load=new Promise((s,r)=>{this.isValid?s(this):(this._resolve=s,this._reject=r,e.preloadTimeoutMs!==void 0&&(this._preloadTimeout=setTimeout(()=>{this._onError(new ErrorEvent(`Preload exceeded timeout of ${e.preloadTimeoutMs}ms`))})),t.load())}),this._load}_onError(t){this.resource.removeEventListener("error",this._onError,!0),this.emit("error",t),this._reject&&(this._reject(t),this._reject=null,this._resolve=null)}_isSourcePlaying(){const t=this.resource;return!t.paused&&!t.ended}_isSourceReady(){return this.resource.readyState>2}_onPlayStart(){this.isValid||this._mediaReady(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0)}_onCanPlay(){this.resource.removeEventListener("canplay",this._onCanPlay),this._mediaReady()}_onCanPlayThrough(){this.resource.removeEventListener("canplaythrough",this._onCanPlay),this._preloadTimeout&&(clearTimeout(this._preloadTimeout),this._preloadTimeout=void 0),this._mediaReady()}_mediaReady(){const t=this.resource;this.isValid&&(this.isReady=!0,this.resize(t.videoWidth,t.videoHeight)),this._msToNextUpdate=0,this.updateFrame(),this._msToNextUpdate=0,this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&this.resource.play()}destroy(){this._configureAutoUpdate();const t=this.resource;t&&(t.removeEventListener("play",this._onPlayStart),t.removeEventListener("pause",this._onPlayStop),t.removeEventListener("seeked",this._onSeeked),t.removeEventListener("canplay",this._onCanPlay),t.removeEventListener("canplaythrough",this._onCanPlayThrough),t.removeEventListener("error",this._onError,!0),t.pause(),t.src="",t.load()),super.destroy()}get autoUpdate(){return this._autoUpdate}set autoUpdate(t){t!==this._autoUpdate&&(this._autoUpdate=t,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS(t){t!==this._updateFPS&&(this._updateFPS=t,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.resource.requestVideoFrameCallback?(this._isConnectedToTicker&&(Ls.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.resource.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(Ls.shared.add(this.updateFrame,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.resource.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(Ls.shared.remove(this.updateFrame,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test(t){return globalThis.HTMLVideoElement&&t instanceof HTMLVideoElement}};gm.extension=B.TextureSource;gm.defaultOptions={...De.defaultOptions,autoLoad:!0,autoPlay:!0,updateFPS:0,crossorigin:!0,loop:!1,muted:!0,playsinline:!0,preload:!1};gm.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};let Pc=gm;const mi=(i,t,e=!1)=>(Array.isArray(i)||(i=[i]),t?i.map(s=>typeof s=="string"||e?t(s):s):i);class v7{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(t){return this._cache.has(t)}get(t){const e=this._cache.get(t);return e||le(`[Assets] Asset id ${t} was not found in the Cache`),e}set(t,e){const s=mi(t);let r;for(let u=0;u<this.parsers.length;u++){const l=this.parsers[u];if(l.test(e)){r=l.getCacheableAssets(s,e);break}}const n=new Map(Object.entries(r||{}));r||s.forEach(u=>{n.set(u,e)});const a=[...n.keys()],o={cacheKeys:a,keys:s};s.forEach(u=>{this._cacheMap.set(u,o)}),a.forEach(u=>{const l=r?r[u]:e;this._cache.has(u)&&this._cache.get(u)!==l&&le("[Cache] already has key:",u),this._cache.set(u,n.get(u))})}remove(t){if(!this._cacheMap.has(t)){le(`[Assets] Asset id ${t} was not found in the Cache`);return}const e=this._cacheMap.get(t);e.cacheKeys.forEach(r=>{this._cache.delete(r)}),e.keys.forEach(r=>{this._cacheMap.delete(r)})}get parsers(){return this._parsers}}const de=new v7,nT=[];fe.handleByList(B.TextureSource,nT);function vv(i={}){const t=i&&i.resource,e=t?i.resource:i,s=t?i:{resource:i};for(let r=0;r<nT.length;r++){const n=nT[r];if(n.test(e))return new n(s)}throw new Error(`Could not find a source type for resource: ${s.resource}`)}function C7(i={},t=!1){const e=i&&i.resource,s=e?i.resource:i,r=e?i:{resource:i};if(!t&&de.has(s))return de.get(s);const n=new W({source:vv(r)});return n.on("destroy",()=>{de.has(s)&&de.remove(s)}),t||de.set(s,n),n}function M7(i,t=!1){return typeof i=="string"?de.get(i):i instanceof De?new W({source:i}):C7(i,t)}W.from=M7;De.from=vv;fe.add(Tv,Iv,Sv,Pc,qa,La,dm);var Nn=(i=>(i[i.Low=0]="Low",i[i.Normal=1]="Normal",i[i.High=2]="High",i))(Nn||{});function oi(i){if(typeof i!="string")throw new TypeError(`Path must be a string. Received ${JSON.stringify(i)}`)}function vu(i){return i.split("?")[0].split("#")[0]}function x7(i){return i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function P7(i,t,e){return i.replace(new RegExp(x7(t),"g"),e)}function b7(i,t){let e="",s=0,r=-1,n=0,a=-1;for(let o=0;o<=i.length;++o){if(o<i.length)a=i.charCodeAt(o);else{if(a===47)break;a=47}if(a===47){if(!(r===o-1||n===1))if(r!==o-1&&n===2){if(e.length<2||s!==2||e.charCodeAt(e.length-1)!==46||e.charCodeAt(e.length-2)!==46){if(e.length>2){const u=e.lastIndexOf("/");if(u!==e.length-1){u===-1?(e="",s=0):(e=e.slice(0,u),s=e.length-1-e.lastIndexOf("/")),r=o,n=0;continue}}else if(e.length===2||e.length===1){e="",s=0,r=o,n=0;continue}}}else e.length>0?e+=`/${i.slice(r+1,o)}`:e=i.slice(r+1,o),s=o-r-1;r=o,n=0}else a===46&&n!==-1?++n:n=-1}return e}const Os={toPosix(i){return P7(i,"\\","/")},isUrl(i){return/^https?:/.test(this.toPosix(i))},isDataUrl(i){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(i)},isBlobUrl(i){return i.startsWith("blob:")},hasProtocol(i){return/^[^/:]+:/.test(this.toPosix(i))},getProtocol(i){oi(i),i=this.toPosix(i);const t=/^file:\/\/\//.exec(i);if(t)return t[0];const e=/^[^/:]+:\/{0,2}/.exec(i);return e?e[0]:""},toAbsolute(i,t,e){if(oi(i),this.isDataUrl(i)||this.isBlobUrl(i))return i;const s=vu(this.toPosix(t??Wt.get().getBaseUrl())),r=vu(this.toPosix(e??this.rootname(s)));return i=this.toPosix(i),i.startsWith("/")?Os.join(r,i.slice(1)):this.isAbsolute(i)?i:this.join(s,i)},normalize(i){if(oi(i),i.length===0)return".";if(this.isDataUrl(i)||this.isBlobUrl(i))return i;i=this.toPosix(i);let t="";const e=i.startsWith("/");this.hasProtocol(i)&&(t=this.rootname(i),i=i.slice(t.length));const s=i.endsWith("/");return i=b7(i),i.length>0&&s&&(i+="/"),e?`/${i}`:t+i},isAbsolute(i){return oi(i),i=this.toPosix(i),this.hasProtocol(i)?!0:i.startsWith("/")},join(...i){if(i.length===0)return".";let t;for(let e=0;e<i.length;++e){const s=i[e];if(oi(s),s.length>0)if(t===void 0)t=s;else{const r=i[e-1]??"";this.joinExtensions.includes(this.extname(r).toLowerCase())?t+=`/../${s}`:t+=`/${s}`}}return t===void 0?".":this.normalize(t)},dirname(i){if(oi(i),i.length===0)return".";i=this.toPosix(i);let t=i.charCodeAt(0);const e=t===47;let s=-1,r=!0;const n=this.getProtocol(i),a=i;i=i.slice(n.length);for(let o=i.length-1;o>=1;--o)if(t=i.charCodeAt(o),t===47){if(!r){s=o;break}}else r=!1;return s===-1?e?"/":this.isUrl(a)?n+i:n:e&&s===1?"//":n+i.slice(0,s)},rootname(i){oi(i),i=this.toPosix(i);let t="";if(i.startsWith("/")?t="/":t=this.getProtocol(i),this.isUrl(i)){const e=i.indexOf("/",t.length);e!==-1?t=i.slice(0,e):t=i,t.endsWith("/")||(t+="/")}return t},basename(i,t){oi(i),t&&oi(t),i=vu(this.toPosix(i));let e=0,s=-1,r=!0,n;if(t!==void 0&&t.length>0&&t.length<=i.length){if(t.length===i.length&&t===i)return"";let a=t.length-1,o=-1;for(n=i.length-1;n>=0;--n){const u=i.charCodeAt(n);if(u===47){if(!r){e=n+1;break}}else o===-1&&(r=!1,o=n+1),a>=0&&(u===t.charCodeAt(a)?--a===-1&&(s=n):(a=-1,s=o))}return e===s?s=o:s===-1&&(s=i.length),i.slice(e,s)}for(n=i.length-1;n>=0;--n)if(i.charCodeAt(n)===47){if(!r){e=n+1;break}}else s===-1&&(r=!1,s=n+1);return s===-1?"":i.slice(e,s)},extname(i){oi(i),i=vu(this.toPosix(i));let t=-1,e=0,s=-1,r=!0,n=0;for(let a=i.length-1;a>=0;--a){const o=i.charCodeAt(a);if(o===47){if(!r){e=a+1;break}continue}s===-1&&(r=!1,s=a+1),o===46?t===-1?t=a:n!==1&&(n=1):t!==-1&&(n=-1)}return t===-1||s===-1||n===0||n===1&&t===s-1&&t===e+1?"":i.slice(t,s)},parse(i){oi(i);const t={root:"",dir:"",base:"",ext:"",name:""};if(i.length===0)return t;i=vu(this.toPosix(i));let e=i.charCodeAt(0);const s=this.isAbsolute(i);let r;t.root=this.rootname(i),s||this.hasProtocol(i)?r=1:r=0;let n=-1,a=0,o=-1,u=!0,l=i.length-1,c=0;for(;l>=r;--l){if(e=i.charCodeAt(l),e===47){if(!u){a=l+1;break}continue}o===-1&&(u=!1,o=l+1),e===46?n===-1?n=l:c!==1&&(c=1):n!==-1&&(c=-1)}return n===-1||o===-1||c===0||c===1&&n===o-1&&n===a+1?o!==-1&&(a===0&&s?t.base=t.name=i.slice(1,o):t.base=t.name=i.slice(a,o)):(a===0&&s?(t.name=i.slice(1,n),t.base=i.slice(1,o)):(t.name=i.slice(a,n),t.base=i.slice(a,o)),t.ext=i.slice(n,o)),t.dir=this.dirname(i),t},sep:"/",delimiter:":",joinExtensions:[".html"]};function Cv(i,t,e,s,r){const n=t[e];for(let a=0;a<n.length;a++){const o=n[a];e<t.length-1?Cv(i.replace(s[e],o),t,e+1,s,r):r.push(i.replace(s[e],o))}}function N7(i){const t=/\{(.*?)\}/g,e=i.match(t),s=[];if(e){const r=[];e.forEach(n=>{const a=n.substring(1,n.length-1).split(",");r.push(a)}),Cv(i,r,0,e,s)}else s.push(i);return s}const Jc=i=>!Array.isArray(i);class gu{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(t,e)=>`${t}${this._bundleIdConnector}${e}`,extractAssetIdFromBundle:(t,e)=>e.replace(`${t}${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(t){if(this._bundleIdConnector=t.connector??this._bundleIdConnector,this._createBundleAssetId=t.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=t.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw new Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(...t){t.forEach(e=>{this._preferredOrder.push(e),e.priority||(e.priority=Object.keys(e.params))}),this._resolverHash={}}set basePath(t){this._basePath=t}get basePath(){return this._basePath}set rootPath(t){this._rootPath=t}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(t){if(typeof t=="string")this._defaultSearchParams=t;else{const e=t;this._defaultSearchParams=Object.keys(e).map(s=>`${encodeURIComponent(s)}=${encodeURIComponent(e[s])}`).join("&")}}getAlias(t){const{alias:e,src:s}=t;return mi(e||s,n=>typeof n=="string"?n:Array.isArray(n)?n.map(a=>(a==null?void 0:a.src)??a):n!=null&&n.src?n.src:n,!0)}addManifest(t){this._manifest&&le("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=t,t.bundles.forEach(e=>{this.addBundle(e.name,e.assets)})}addBundle(t,e){const s=[];let r=e;Array.isArray(e)||(r=Object.entries(e).map(([n,a])=>typeof a=="string"||Array.isArray(a)?{alias:n,src:a}:{alias:n,...a})),r.forEach(n=>{const a=n.src,o=n.alias;let u;if(typeof o=="string"){const l=this._createBundleAssetId(t,o);s.push(l),u=[o,l]}else{const l=o.map(c=>this._createBundleAssetId(t,c));s.push(...l),u=[...o,...l]}this.add({...n,alias:u,src:a})}),this._bundles[t]=s}add(t){const e=[];Array.isArray(t)?e.push(...t):e.push(t);let s;s=n=>{this.hasKey(n)&&le(`[Resolver] already has key: ${n} overwriting`)},mi(e).forEach(n=>{const{src:a}=n;let{data:o,format:u,loadParser:l}=n;const c=mi(a).map(d=>typeof d=="string"?N7(d):Array.isArray(d)?d:[d]),h=this.getAlias(n);Array.isArray(h)?h.forEach(s):s(h);const _=[];c.forEach(d=>{d.forEach(f=>{let p={};if(typeof f!="object"){p.src=f;for(let g=0;g<this._parsers.length;g++){const m=this._parsers[g];if(m.test(f)){p=m.parse(f);break}}}else o=f.data??o,u=f.format??u,l=f.loadParser??l,p={...p,...f};if(!h)throw new Error(`[Resolver] alias is undefined for this asset: ${p.src}`);p=this._buildResolvedAsset(p,{aliases:h,data:o,format:u,loadParser:l}),_.push(p)})}),h.forEach(d=>{this._assetMap[d]=_})})}resolveBundle(t){const e=Jc(t);t=mi(t);const s={};return t.forEach(r=>{const n=this._bundles[r];if(n){const a=this.resolve(n),o={};for(const u in a){const l=a[u];o[this._extractAssetIdFromBundle(r,u)]=l}s[r]=o}}),e?s[t[0]]:s}resolveUrl(t){const e=this.resolve(t);if(typeof t!="string"){const s={};for(const r in e)s[r]=e[r].src;return s}return e.src}resolve(t){const e=Jc(t);t=mi(t);const s={};return t.forEach(r=>{if(!this._resolverHash[r])if(this._assetMap[r]){let n=this._assetMap[r];const a=this._getPreferredOrder(n);a==null||a.priority.forEach(o=>{a.params[o].forEach(u=>{const l=n.filter(c=>c[o]?c[o]===u:!1);l.length&&(n=l)})}),this._resolverHash[r]=n[0]}else this._resolverHash[r]=this._buildResolvedAsset({alias:[r],src:r},{});s[r]=this._resolverHash[r]}),e?s[t[0]]:s}hasKey(t){return!!this._assetMap[t]}hasBundle(t){return!!this._bundles[t]}_getPreferredOrder(t){for(let e=0;e<t.length;e++){const s=t[0],r=this._preferredOrder.find(n=>n.params.format.includes(s.format));if(r)return r}return this._preferredOrder[0]}_appendDefaultSearchParams(t){if(!this._defaultSearchParams)return t;const e=/\?/.test(t)?"&":"?";return`${t}${e}${this._defaultSearchParams}`}_buildResolvedAsset(t,e){const{aliases:s,data:r,loadParser:n,format:a}=e;return(this._basePath||this._rootPath)&&(t.src=Os.toAbsolute(t.src,this._basePath,this._rootPath)),t.alias=s??t.alias??[t.src],t.src=this._appendDefaultSearchParams(t.src),t.data={...r||{},...t.data},t.loadParser=n??t.loadParser,t.format=a??t.format??U7(t.src),t}}gu.RETINA_PREFIX=/@([0-9\.]+)x/;function U7(i){return i.split(".").pop().split("?").shift().split("#").shift()}const aT=(i,t)=>{const e=t.split("?")[1];return e&&(i+=`?${e}`),i},Mv=class Uu{constructor(t,e){this.linkedSheets=[],this._texture=t instanceof W?t:null,this.textureSource=t.source,this.textures={},this.animations={},this.data=e;const s=parseFloat(e.meta.scale);s?(this.resolution=s,t.source.resolution=this.resolution):this.resolution=t.source._resolution,this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}parse(){return new Promise(t=>{this._callback=t,this._batchIndex=0,this._frameKeys.length<=Uu.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames(t){let e=t;const s=Uu.BATCH_SIZE;for(;e-t<s&&e<this._frameKeys.length;){const r=this._frameKeys[e],n=this._frames[r],a=n.frame;if(a){let o=null,u=null;const l=n.trimmed!==!1&&n.sourceSize?n.sourceSize:n.frame,c=new Kt(0,0,Math.floor(l.w)/this.resolution,Math.floor(l.h)/this.resolution);n.rotated?o=new Kt(Math.floor(a.x)/this.resolution,Math.floor(a.y)/this.resolution,Math.floor(a.h)/this.resolution,Math.floor(a.w)/this.resolution):o=new Kt(Math.floor(a.x)/this.resolution,Math.floor(a.y)/this.resolution,Math.floor(a.w)/this.resolution,Math.floor(a.h)/this.resolution),n.trimmed!==!1&&n.spriteSourceSize&&(u=new Kt(Math.floor(n.spriteSourceSize.x)/this.resolution,Math.floor(n.spriteSourceSize.y)/this.resolution,Math.floor(a.w)/this.resolution,Math.floor(a.h)/this.resolution)),this.textures[r]=new W({source:this.textureSource,frame:o,orig:c,trim:u,rotate:n.rotated?2:0,defaultAnchor:n.anchor,defaultBorders:n.borders,label:r.toString()})}e++}}_processAnimations(){const t=this.data.animations||{};for(const e in t){this.animations[e]=[];for(let s=0;s<t[e].length;s++){const r=t[e][s];this.animations[e].push(this.textures[r])}}}_parseComplete(){const t=this._callback;this._callback=null,this._batchIndex=0,t.call(this,this.textures)}_nextBatch(){this._processFrames(this._batchIndex*Uu.BATCH_SIZE),this._batchIndex++,setTimeout(()=>{this._batchIndex*Uu.BATCH_SIZE<this._frameKeys.length?this._nextBatch():(this._processAnimations(),this._parseComplete())},0)}destroy(t=!1){var e;for(const s in this.textures)this.textures[s].destroy();this._frames=null,this._frameKeys=null,this.data=null,this.textures=null,t&&((e=this._texture)==null||e.destroy(),this.textureSource.destroy()),this._texture=null,this.textureSource=null,this.linkedSheets=[]}};Mv.BATCH_SIZE=1e3;let oT=Mv;const D7=["jpg","png","jpeg","avif","webp","basis","etc2","bc7","bc6h","bc5","bc4","bc3","bc2","bc1","eac","astc"];function xv(i,t,e){const s={};if(i.forEach(r=>{s[r]=t}),Object.keys(t.textures).forEach(r=>{s[r]=t.textures[r]}),!e){const r=Os.dirname(i[0]);t.linkedSheets.forEach((n,a)=>{const o=xv([`${r}/${t.data.meta.related_multi_packs[a]}`],n,!0);Object.assign(s,o)})}return s}const L7={extension:B.Asset,cache:{test:i=>i instanceof oT,getCacheableAssets:(i,t)=>xv(i,t,!1)},resolver:{extension:{type:B.ResolveParser,name:"resolveSpritesheet"},test:i=>{const e=i.split("?")[0].split("."),s=e.pop(),r=e.pop();return s==="json"&&D7.includes(r)},parse:i=>{var e;const t=i.split(".");return{resolution:parseFloat(((e=gu.RETINA_PREFIX.exec(i))==null?void 0:e[1])??"1"),format:t[t.length-2],src:i}}},loader:{name:"spritesheetLoader",extension:{type:B.LoadParser,priority:Nn.Normal,name:"spritesheetLoader"},async testParse(i,t){return Os.extname(t.src).toLowerCase()===".json"&&!!i.frames},async parse(i,t,e){var l,c;const{texture:s,imageFilename:r}=(t==null?void 0:t.data)??{};let n=Os.dirname(t.src);n&&n.lastIndexOf("/")!==n.length-1&&(n+="/");let a;if(s instanceof W)a=s;else{const h=aT(n+(r??i.meta.image),t.src);a=(await e.load([h]))[h]}const o=new oT(a.source,i);await o.parse();const u=(l=i==null?void 0:i.meta)==null?void 0:l.related_multi_packs;if(Array.isArray(u)){const h=[];for(const d of u){if(typeof d!="string")continue;let f=n+d;(c=t.data)!=null&&c.ignoreMultiPack||(f=aT(f,t.src),h.push(e.load({src:f,data:{ignoreMultiPack:!0}})))}const _=await Promise.all(h);o.linkedSheets=_,_.forEach(d=>{d.linkedSheets=[o].concat(o.linkedSheets.filter(f=>f!==d))})}return o},async unload(i,t,e){await e.unload(i.textureSource._sourceOrigin),i.destroy(!1)}}};fe.add(L7);const pE=Object.create(null),vO=Object.create(null);function Fl(i,t){let e=vO[i];return e===void 0&&(pE[t]===void 0&&(pE[t]=1),vO[i]=e=pE[t]++),e}let eo;function Pv(){return(!eo||eo!=null&&eo.isContextLost())&&(eo=Wt.get().createCanvas().getContext("webgl",{})),eo}let gc;function F7(){if(!gc){gc="mediump";const i=Pv();i&&i.getShaderPrecisionFormat&&(gc=i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).precision?"highp":"mediump")}return gc}function w7(i,t,e){return t?i:e?(i=i.replace("out vec4 finalColor;",""),`
#ifdef GL_ES // This checks if it is WebGL1
#define in varying
#define finalColor gl_FragColor
#define texture texture2D
#endif
${i}
`):`
#ifdef GL_ES // This checks if it is WebGL1
#define in attribute
#define out varying
#endif
${i}
`}function G7(i,t,e){const s=e?t.maxSupportedFragmentPrecision:t.maxSupportedVertexPrecision;if(i.substring(0,9)!=="precision"){let r=e?t.requestedFragmentPrecision:t.requestedVertexPrecision;return r==="highp"&&s!=="highp"&&(r="mediump"),`precision ${r} float;
${i}`}else if(s!=="highp"&&i.substring(0,15)==="precision highp")return i.replace("precision highp","precision mediump");return i}function B7(i,t){return t?`#version 300 es
${i}`:i}const k7={},z7={};function V7(i,{name:t="pixi-program"},e=!0){t=t.replace(/\s+/g,"-"),t+=e?"-fragment":"-vertex";const s=e?k7:z7;return s[t]?(s[t]++,t+=`-${s[t]}`):s[t]=1,i.indexOf("#define SHADER_NAME")!==-1?i:`${`#define SHADER_NAME ${t}`}
${i}`}function H7(i,t){return t?i.replace("#version 300 es",""):i}const mE={stripVersion:H7,ensurePrecision:G7,addProgramDefines:w7,setProgramName:V7,insertVersion:B7},EE=Object.create(null),bv=class uT{constructor(t){t={...uT.defaultOptions,...t};const e=t.fragment.indexOf("#version 300 es")!==-1,s={stripVersion:e,ensurePrecision:{requestedFragmentPrecision:t.preferredFragmentPrecision,requestedVertexPrecision:t.preferredVertexPrecision,maxSupportedVertexPrecision:"highp",maxSupportedFragmentPrecision:F7()},setProgramName:{name:t.name},addProgramDefines:e,insertVersion:e};let r=t.fragment,n=t.vertex;Object.keys(mE).forEach(a=>{const o=s[a];r=mE[a](r,o,!0),n=mE[a](n,o,!1)}),this.fragment=r,this.vertex=n,this._key=Fl(`${this.vertex}:${this.fragment}`,"gl-program")}destroy(){this.fragment=null,this.vertex=null,this._attributeData=null,this._uniformData=null,this._uniformBlockData=null,this.transformFeedbackVaryings=null}static from(t){const e=`${t.vertex}:${t.fragment}`;return EE[e]||(EE[e]=new uT(t)),EE[e]}};bv.defaultOptions={preferredVertexPrecision:"highp",preferredFragmentPrecision:"mediump"};let Tt=bv;const CO={uint8x2:{size:2,stride:2,normalised:!1},uint8x4:{size:4,stride:4,normalised:!1},sint8x2:{size:2,stride:2,normalised:!1},sint8x4:{size:4,stride:4,normalised:!1},unorm8x2:{size:2,stride:2,normalised:!0},unorm8x4:{size:4,stride:4,normalised:!0},snorm8x2:{size:2,stride:2,normalised:!0},snorm8x4:{size:4,stride:4,normalised:!0},uint16x2:{size:2,stride:4,normalised:!1},uint16x4:{size:4,stride:8,normalised:!1},sint16x2:{size:2,stride:4,normalised:!1},sint16x4:{size:4,stride:8,normalised:!1},unorm16x2:{size:2,stride:4,normalised:!0},unorm16x4:{size:4,stride:8,normalised:!0},snorm16x2:{size:2,stride:4,normalised:!0},snorm16x4:{size:4,stride:8,normalised:!0},float16x2:{size:2,stride:4,normalised:!1},float16x4:{size:4,stride:8,normalised:!1},float32:{size:1,stride:4,normalised:!1},float32x2:{size:2,stride:8,normalised:!1},float32x3:{size:3,stride:12,normalised:!1},float32x4:{size:4,stride:16,normalised:!1},uint32:{size:1,stride:4,normalised:!1},uint32x2:{size:2,stride:8,normalised:!1},uint32x3:{size:3,stride:12,normalised:!1},uint32x4:{size:4,stride:16,normalised:!1},sint32:{size:1,stride:4,normalised:!1},sint32x2:{size:2,stride:8,normalised:!1},sint32x3:{size:3,stride:12,normalised:!1},sint32x4:{size:4,stride:16,normalised:!1}};function t_(i){return CO[i]??CO.float32}const Y7={f32:"float32","vec2<f32>":"float32x2","vec3<f32>":"float32x3","vec4<f32>":"float32x4",vec2f:"float32x2",vec3f:"float32x3",vec4f:"float32x4",i32:"sint32","vec2<i32>":"sint32x2","vec3<i32>":"sint32x3","vec4<i32>":"sint32x4",u32:"uint32","vec2<u32>":"uint32x2","vec3<u32>":"uint32x3","vec4<u32>":"uint32x4",bool:"uint32","vec2<bool>":"uint32x2","vec3<bool>":"uint32x3","vec4<bool>":"uint32x4"};function W7({source:i,entryPoint:t}){const e={},s=i.indexOf(`fn ${t}`);if(s!==-1){const r=i.indexOf("->",s);if(r!==-1){const n=i.substring(s,r),a=/@location\((\d+)\)\s+([a-zA-Z0-9_]+)\s*:\s*([a-zA-Z0-9_<>]+)(?:,|\s|$)/g;let o;for(;(o=a.exec(n))!==null;){const u=Y7[o[3]]??"float32";e[o[2]]={location:parseInt(o[1],10),format:u,stride:t_(u).stride,offset:0,instance:!1,start:0}}}}return e}function TE(i){var h,_;const t=/(^|[^/])@(group|binding)\(\d+\)[^;]+;/g,e=/@group\((\d+)\)/,s=/@binding\((\d+)\)/,r=/var(<[^>]+>)? (\w+)/,n=/:\s*(\w+)/,a=/struct\s+(\w+)\s*{([^}]+)}/g,o=/(\w+)\s*:\s*([\w\<\>]+)/g,u=/struct\s+(\w+)/,l=(h=i.match(t))==null?void 0:h.map(d=>({group:parseInt(d.match(e)[1],10),binding:parseInt(d.match(s)[1],10),name:d.match(r)[2],isUniform:d.match(r)[1]==="<uniform>",type:d.match(n)[1]}));if(!l)return{groups:[],structs:[]};const c=((_=i.match(a))==null?void 0:_.map(d=>{const f=d.match(u)[1],p=d.match(o).reduce((g,m)=>{const[O,y]=m.split(":");return g[O.trim()]=y.trim(),g},{});return p?{name:f,members:p}:null}).filter(({name:d})=>l.some(f=>f.type===d)))??[];return{groups:l,structs:c}}var Du=(i=>(i[i.VERTEX=1]="VERTEX",i[i.FRAGMENT=2]="FRAGMENT",i[i.COMPUTE=4]="COMPUTE",i))(Du||{});function j7({groups:i}){const t=[];for(let e=0;e<i.length;e++){const s=i[e];t[s.group]||(t[s.group]=[]),s.isUniform?t[s.group].push({binding:s.binding,visibility:Du.VERTEX|Du.FRAGMENT,buffer:{type:"uniform"}}):s.type==="sampler"?t[s.group].push({binding:s.binding,visibility:Du.FRAGMENT,sampler:{type:"filtering"}}):s.type==="texture_2d"&&t[s.group].push({binding:s.binding,visibility:Du.FRAGMENT,texture:{sampleType:"float",viewDimension:"2d",multisampled:!1}})}return t}function K7({groups:i}){const t=[];for(let e=0;e<i.length;e++){const s=i[e];t[s.group]||(t[s.group]={}),t[s.group][s.name]=s.binding}return t}function X7(i,t){const e=new Set,s=new Set,r=[...i.structs,...t.structs].filter(a=>e.has(a.name)?!1:(e.add(a.name),!0)),n=[...i.groups,...t.groups].filter(a=>{const o=`${a.name}-${a.binding}`;return s.has(o)?!1:(s.add(o),!0)});return{structs:r,groups:n}}const IE=Object.create(null);class At{constructor(t){var o,u;this._layoutKey=0,this._attributeLocationsKey=0;const{fragment:e,vertex:s,layout:r,gpuLayout:n,name:a}=t;if(this.name=a,this.fragment=e,this.vertex=s,e.source===s.source){const l=TE(e.source);this.structsAndGroups=l}else{const l=TE(s.source),c=TE(e.source);this.structsAndGroups=X7(l,c)}this.layout=r??K7(this.structsAndGroups),this.gpuLayout=n??j7(this.structsAndGroups),this.autoAssignGlobalUniforms=((o=this.layout[0])==null?void 0:o.globalUniforms)!==void 0,this.autoAssignLocalUniforms=((u=this.layout[1])==null?void 0:u.localUniforms)!==void 0,this._generateProgramKey()}_generateProgramKey(){const{vertex:t,fragment:e}=this,s=t.source+e.source+t.entryPoint+e.entryPoint;this._layoutKey=Fl(s,"program")}get attributeData(){return this._attributeData??(this._attributeData=W7(this.vertex)),this._attributeData}destroy(){this.gpuLayout=null,this.layout=null,this.structsAndGroups=null,this.fragment=null,this.vertex=null}static from(t){const e=`${t.vertex.source}:${t.fragment.source}:${t.fragment.entryPoint}:${t.vertex.entryPoint}`;return IE[e]||(IE[e]=new At(t)),IE[e]}}const Nv=["f32","i32","vec2<f32>","vec3<f32>","vec4<f32>","mat2x2<f32>","mat3x3<f32>","mat4x4<f32>","mat3x2<f32>","mat4x2<f32>","mat2x3<f32>","mat4x3<f32>","mat2x4<f32>","mat3x4<f32>"],q7=Nv.reduce((i,t)=>(i[t]=!0,i),{});function $7(i,t){switch(i){case"f32":return 0;case"vec2<f32>":return new Float32Array(2*t);case"vec3<f32>":return new Float32Array(3*t);case"vec4<f32>":return new Float32Array(4*t);case"mat2x2<f32>":return new Float32Array([1,0,0,1]);case"mat3x3<f32>":return new Float32Array([1,0,0,0,1,0,0,0,1]);case"mat4x4<f32>":return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}return null}const Uv=class Dv{constructor(t,e){this._touched=0,this.uid=Se("uniform"),this._resourceType="uniformGroup",this._resourceId=Se("resource"),this.isUniformGroup=!0,this._dirtyId=0,this.destroyed=!1,e={...Dv.defaultOptions,...e},this.uniformStructures=t;const s={};for(const r in t){const n=t[r];if(n.name=r,n.size=n.size??1,!q7[n.type])throw new Error(`Uniform type ${n.type} is not supported. Supported uniform types are: ${Nv.join(", ")}`);n.value??(n.value=$7(n.type,n.size)),s[r]=n.value}this.uniforms=s,this._dirtyId=1,this.ubo=e.ubo,this.isStatic=e.isStatic,this._signature=Fl(Object.keys(s).map(r=>`${r}-${t[r].type}`).join("-"),"uniform-group")}update(){this._dirtyId++}};Uv.defaultOptions={ubo:!1,isStatic:!1};let Yr=Uv;class Sn{constructor(t){this.resources=Object.create(null),this._dirty=!0;let e=0;for(const s in t){const r=t[s];this.setResource(r,e++)}this._updateKey()}_updateKey(){if(!this._dirty)return;this._dirty=!1;const t=[];let e=0;for(const s in this.resources)t[e++]=this.resources[s]._resourceId;this._key=t.join("|")}setResource(t,e){var r,n;const s=this.resources[e];t!==s&&(s&&((r=t.off)==null||r.call(t,"change",this.onResourceChange,this)),(n=t.on)==null||n.call(t,"change",this.onResourceChange,this),this.resources[e]=t,this._dirty=!0)}getResource(t){return this.resources[t]}_touch(t){const e=this.resources;for(const s in e)e[s]._touched=t}destroy(){var e;const t=this.resources;for(const s in t){const r=t[s];(e=r.off)==null||e.call(r,"change",this.onResourceChange,this)}this.resources=null}onResourceChange(t){if(this._dirty=!0,t.destroyed){const e=this.resources;for(const s in e)e[s]===t&&(e[s]=null)}else this._updateKey()}}var ir=(i=>(i[i.WEBGL=1]="WEBGL",i[i.WEBGPU=2]="WEBGPU",i[i.BOTH=3]="BOTH",i))(ir||{});class $a extends ks{constructor(t){super(),this._uniformBindMap=Object.create(null),this._ownedBindGroups=[];let{gpuProgram:e,glProgram:s,groups:r,resources:n,compatibleRenderers:a,groupMap:o}=t;this.gpuProgram=e,this.glProgram=s,a===void 0&&(a=0,e&&(a|=ir.WEBGPU),s&&(a|=ir.WEBGL)),this.compatibleRenderers=a;const u={};if(!n&&!r&&(n={}),n&&r)throw new Error("[Shader] Cannot have both resources and groups");if(!e&&r&&!o)throw new Error("[Shader] No group map or WebGPU shader provided - consider using resources instead.");if(!e&&r&&o)for(const l in o)for(const c in o[l]){const h=o[l][c];u[h]={group:l,binding:c,name:h}}else if(e&&r&&!o){const l=e.structsAndGroups.groups;o={},l.forEach(c=>{o[c.group]=o[c.group]||{},o[c.group][c.binding]=c.name,u[c.name]=c})}else if(n){r={},o={},e&&e.structsAndGroups.groups.forEach(h=>{o[h.group]=o[h.group]||{},o[h.group][h.binding]=h.name,u[h.name]=h});let l=0;for(const c in n)u[c]||(r[99]||(r[99]=new Sn,this._ownedBindGroups.push(r[99])),u[c]={group:99,binding:l,name:c},o[99]=o[99]||{},o[99][l]=c,l++);for(const c in n){const h=c;let _=n[c];!_.source&&!_._resourceType&&(_=new Yr(_));const d=u[h];d&&(r[d.group]||(r[d.group]=new Sn,this._ownedBindGroups.push(r[d.group])),r[d.group].setResource(_,d.binding))}}this.groups=r,this._uniformBindMap=o,this.resources=this._buildResourceAccessor(r,u)}addResource(t,e,s){var r,n;(r=this._uniformBindMap)[e]||(r[e]={}),(n=this._uniformBindMap[e])[s]||(n[s]=t),this.groups[e]||(this.groups[e]=new Sn,this._ownedBindGroups.push(this.groups[e]))}_buildResourceAccessor(t,e){const s={};for(const r in e){const n=e[r];Object.defineProperty(s,n.name,{get(){return t[n.group].getResource(n.binding)},set(a){t[n.group].setResource(a,n.binding)}})}return s}destroy(t=!1){var e,s;this.emit("destroy",this),t&&((e=this.gpuProgram)==null||e.destroy(),(s=this.glProgram)==null||s.destroy()),this.gpuProgram=null,this.glProgram=null,this.removeAllListeners(),this._uniformBindMap=null,this._ownedBindGroups.forEach(r=>{r.destroy()}),this._ownedBindGroups=null,this.resources=null,this.groups=null}static from(t){const{gpu:e,gl:s,...r}=t;let n,a;return e&&(n=At.from(e)),s&&(a=Tt.from(s)),new $a({gpuProgram:n,glProgram:a,...r})}}const Q7={normal:0,add:1,multiply:2,screen:3,overlay:4,erase:5,"normal-npm":6,"add-npm":7,"screen-npm":8,min:9,max:10},SE=0,RE=1,AE=2,OE=3,yE=4,vE=5,lT=class Lv{constructor(){this.data=0,this.blendMode="normal",this.polygonOffset=0,this.blend=!0,this.depthMask=!0}get blend(){return!!(this.data&1<<SE)}set blend(t){!!(this.data&1<<SE)!==t&&(this.data^=1<<SE)}get offsets(){return!!(this.data&1<<RE)}set offsets(t){!!(this.data&1<<RE)!==t&&(this.data^=1<<RE)}set cullMode(t){if(t==="none"){this.culling=!1;return}this.culling=!0,this.clockwiseFrontFace=t==="front"}get cullMode(){return this.culling?this.clockwiseFrontFace?"front":"back":"none"}get culling(){return!!(this.data&1<<AE)}set culling(t){!!(this.data&1<<AE)!==t&&(this.data^=1<<AE)}get depthTest(){return!!(this.data&1<<OE)}set depthTest(t){!!(this.data&1<<OE)!==t&&(this.data^=1<<OE)}get depthMask(){return!!(this.data&1<<vE)}set depthMask(t){!!(this.data&1<<vE)!==t&&(this.data^=1<<vE)}get clockwiseFrontFace(){return!!(this.data&1<<yE)}set clockwiseFrontFace(t){!!(this.data&1<<yE)!==t&&(this.data^=1<<yE)}get blendMode(){return this._blendMode}set blendMode(t){this.blend=t!=="none",this._blendMode=t,this._blendModeId=Q7[t]||0}get polygonOffset(){return this._polygonOffset}set polygonOffset(t){this.offsets=!!t,this._polygonOffset=t}toString(){return`[pixi.js/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`}static for2d(){const t=new Lv;return t.depthTest=!1,t.blend=!0,t}};lT.default2d=lT.for2d();let Qh=lT;const Fv=class hT extends $a{constructor(t){t={...hT.defaultOptions,...t},super(t),this.enabled=!0,this._state=Qh.for2d(),this.blendMode=t.blendMode,this.padding=t.padding,typeof t.antialias=="boolean"?this.antialias=t.antialias?"on":"off":this.antialias=t.antialias,this.resolution=t.resolution,this.blendRequired=t.blendRequired,this.clipToViewport=t.clipToViewport,this.addResource("uTexture",0,1)}apply(t,e,s,r){t.applyFilter(this,e,s,r)}get blendMode(){return this._state.blendMode}set blendMode(t){this._state.blendMode=t}static from(t){const{gpu:e,gl:s,...r}=t;let n,a;return e&&(n=At.from(e)),s&&(a=Tt.from(s)),new hT({gpuProgram:n,glProgram:a,...r})}};Fv.defaultOptions={blendMode:"normal",resolution:1,padding:0,antialias:"off",blendRequired:!1,clipToViewport:!0};let xt=Fv;const cT=[];fe.handleByNamedList(B.Environment,cT);async function Z7(i){if(!i)for(let t=0;t<cT.length;t++){const e=cT[t];if(e.value.test()){await e.value.load();return}}}let Cu;function wv(){if(typeof Cu=="boolean")return Cu;try{Cu=new Function("param1","param2","param3","return param1[param2] === param3;")({a:"b"},"a","b")===!0}catch{Cu=!1}return Cu}var GI={exports:{}};GI.exports=pm;GI.exports.default=pm;function pm(i,t,e){e=e||2;var s=t&&t.length,r=s?t[0]*e:i.length,n=Gv(i,0,r,e,!0),a=[];if(!n||n.next===n.prev)return a;var o,u,l,c,h,_,d;if(s&&(n=i9(i,t,n,e)),i.length>80*e){o=l=i[0],u=c=i[1];for(var f=e;f<r;f+=e)h=i[f],_=i[f+1],h<o&&(o=h),_<u&&(u=_),h>l&&(l=h),_>c&&(c=_);d=Math.max(l-o,c-u),d=d!==0?32767/d:0}return wl(n,a,e,o,u,d,0),a}function Gv(i,t,e,s,r){var n,a;if(r===fT(i,t,e,s)>0)for(n=t;n<e;n+=s)a=MO(n,i[n],i[n+1],a);else for(n=e-s;n>=t;n-=s)a=MO(n,i[n],i[n+1],a);return a&&mm(a,a.next)&&(Bl(a),a=a.next),a}function Fa(i,t){if(!i)return i;t||(t=i);var e=i,s;do if(s=!1,!e.steiner&&(mm(e,e.next)||Ie(e.prev,e,e.next)===0)){if(Bl(e),e=t=e.prev,e===e.next)break;s=!0}else e=e.next;while(s||e!==t);return t}function wl(i,t,e,s,r,n,a){if(i){!a&&n&&u9(i,s,r,n);for(var o=i,u,l;i.prev!==i.next;){if(u=i.prev,l=i.next,n?t9(i,s,r,n):J7(i)){t.push(u.i/e|0),t.push(i.i/e|0),t.push(l.i/e|0),Bl(i),i=l.next,o=l.next;continue}if(i=l,i===o){a?a===1?(i=e9(Fa(i),t,e),wl(i,t,e,s,r,n,2)):a===2&&s9(i,t,e,s,r,n):wl(Fa(i),t,e,s,r,n,1);break}}}}function J7(i){var t=i.prev,e=i,s=i.next;if(Ie(t,e,s)>=0)return!1;for(var r=t.x,n=e.x,a=s.x,o=t.y,u=e.y,l=s.y,c=r<n?r<a?r:a:n<a?n:a,h=o<u?o<l?o:l:u<l?u:l,_=r>n?r>a?r:a:n>a?n:a,d=o>u?o>l?o:l:u>l?u:l,f=s.next;f!==t;){if(f.x>=c&&f.x<=_&&f.y>=h&&f.y<=d&&co(r,o,n,u,a,l,f.x,f.y)&&Ie(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function t9(i,t,e,s){var r=i.prev,n=i,a=i.next;if(Ie(r,n,a)>=0)return!1;for(var o=r.x,u=n.x,l=a.x,c=r.y,h=n.y,_=a.y,d=o<u?o<l?o:l:u<l?u:l,f=c<h?c<_?c:_:h<_?h:_,p=o>u?o>l?o:l:u>l?u:l,g=c>h?c>_?c:_:h>_?h:_,m=_T(d,f,t,e,s),O=_T(p,g,t,e,s),y=i.prevZ,C=i.nextZ;y&&y.z>=m&&C&&C.z<=O;){if(y.x>=d&&y.x<=p&&y.y>=f&&y.y<=g&&y!==r&&y!==a&&co(o,c,u,h,l,_,y.x,y.y)&&Ie(y.prev,y,y.next)>=0||(y=y.prevZ,C.x>=d&&C.x<=p&&C.y>=f&&C.y<=g&&C!==r&&C!==a&&co(o,c,u,h,l,_,C.x,C.y)&&Ie(C.prev,C,C.next)>=0))return!1;C=C.nextZ}for(;y&&y.z>=m;){if(y.x>=d&&y.x<=p&&y.y>=f&&y.y<=g&&y!==r&&y!==a&&co(o,c,u,h,l,_,y.x,y.y)&&Ie(y.prev,y,y.next)>=0)return!1;y=y.prevZ}for(;C&&C.z<=O;){if(C.x>=d&&C.x<=p&&C.y>=f&&C.y<=g&&C!==r&&C!==a&&co(o,c,u,h,l,_,C.x,C.y)&&Ie(C.prev,C,C.next)>=0)return!1;C=C.nextZ}return!0}function e9(i,t,e){var s=i;do{var r=s.prev,n=s.next.next;!mm(r,n)&&Bv(r,s,s.next,n)&&Gl(r,n)&&Gl(n,r)&&(t.push(r.i/e|0),t.push(s.i/e|0),t.push(n.i/e|0),Bl(s),Bl(s.next),s=i=n),s=s.next}while(s!==i);return Fa(s)}function s9(i,t,e,s,r,n){var a=i;do{for(var o=a.next.next;o!==a.prev;){if(a.i!==o.i&&c9(a,o)){var u=kv(a,o);a=Fa(a,a.next),u=Fa(u,u.next),wl(a,t,e,s,r,n,0),wl(u,t,e,s,r,n,0);return}o=o.next}a=a.next}while(a!==i)}function i9(i,t,e,s){var r=[],n,a,o,u,l;for(n=0,a=t.length;n<a;n++)o=t[n]*s,u=n<a-1?t[n+1]*s:i.length,l=Gv(i,o,u,s,!1),l===l.next&&(l.steiner=!0),r.push(h9(l));for(r.sort(r9),n=0;n<r.length;n++)e=n9(r[n],e);return e}function r9(i,t){return i.x-t.x}function n9(i,t){var e=a9(i,t);if(!e)return t;var s=kv(e,i);return Fa(s,s.next),Fa(e,e.next)}function a9(i,t){var e=t,s=i.x,r=i.y,n=-1/0,a;do{if(r<=e.y&&r>=e.next.y&&e.next.y!==e.y){var o=e.x+(r-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(o<=s&&o>n&&(n=o,a=e.x<e.next.x?e:e.next,o===s))return a}e=e.next}while(e!==t);if(!a)return null;var u=a,l=a.x,c=a.y,h=1/0,_;e=a;do s>=e.x&&e.x>=l&&s!==e.x&&co(r<c?s:n,r,l,c,r<c?n:s,r,e.x,e.y)&&(_=Math.abs(r-e.y)/(s-e.x),Gl(e,i)&&(_<h||_===h&&(e.x>a.x||e.x===a.x&&o9(a,e)))&&(a=e,h=_)),e=e.next;while(e!==u);return a}function o9(i,t){return Ie(i.prev,i,t.prev)<0&&Ie(t.next,i,i.next)<0}function u9(i,t,e,s){var r=i;do r.z===0&&(r.z=_T(r.x,r.y,t,e,s)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==i);r.prevZ.nextZ=null,r.prevZ=null,l9(r)}function l9(i){var t,e,s,r,n,a,o,u,l=1;do{for(e=i,i=null,n=null,a=0;e;){for(a++,s=e,o=0,t=0;t<l&&(o++,s=s.nextZ,!!s);t++);for(u=l;o>0||u>0&&s;)o!==0&&(u===0||!s||e.z<=s.z)?(r=e,e=e.nextZ,o--):(r=s,s=s.nextZ,u--),n?n.nextZ=r:i=r,r.prevZ=n,n=r;e=s}n.nextZ=null,l*=2}while(a>1);return i}function _T(i,t,e,s,r){return i=(i-e)*r|0,t=(t-s)*r|0,i=(i|i<<8)&16711935,i=(i|i<<4)&252645135,i=(i|i<<2)&858993459,i=(i|i<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,i|t<<1}function h9(i){var t=i,e=i;do(t.x<e.x||t.x===e.x&&t.y<e.y)&&(e=t),t=t.next;while(t!==i);return e}function co(i,t,e,s,r,n,a,o){return(r-a)*(t-o)>=(i-a)*(n-o)&&(i-a)*(s-o)>=(e-a)*(t-o)&&(e-a)*(n-o)>=(r-a)*(s-o)}function c9(i,t){return i.next.i!==t.i&&i.prev.i!==t.i&&!_9(i,t)&&(Gl(i,t)&&Gl(t,i)&&d9(i,t)&&(Ie(i.prev,i,t.prev)||Ie(i,t.prev,t))||mm(i,t)&&Ie(i.prev,i,i.next)>0&&Ie(t.prev,t,t.next)>0)}function Ie(i,t,e){return(t.y-i.y)*(e.x-t.x)-(t.x-i.x)*(e.y-t.y)}function mm(i,t){return i.x===t.x&&i.y===t.y}function Bv(i,t,e,s){var r=mc(Ie(i,t,e)),n=mc(Ie(i,t,s)),a=mc(Ie(e,s,i)),o=mc(Ie(e,s,t));return!!(r!==n&&a!==o||r===0&&pc(i,e,t)||n===0&&pc(i,s,t)||a===0&&pc(e,i,s)||o===0&&pc(e,t,s))}function pc(i,t,e){return t.x<=Math.max(i.x,e.x)&&t.x>=Math.min(i.x,e.x)&&t.y<=Math.max(i.y,e.y)&&t.y>=Math.min(i.y,e.y)}function mc(i){return i>0?1:i<0?-1:0}function _9(i,t){var e=i;do{if(e.i!==i.i&&e.next.i!==i.i&&e.i!==t.i&&e.next.i!==t.i&&Bv(e,e.next,i,t))return!0;e=e.next}while(e!==i);return!1}function Gl(i,t){return Ie(i.prev,i,i.next)<0?Ie(i,t,i.next)>=0&&Ie(i,i.prev,t)>=0:Ie(i,t,i.prev)<0||Ie(i,i.next,t)<0}function d9(i,t){var e=i,s=!1,r=(i.x+t.x)/2,n=(i.y+t.y)/2;do e.y>n!=e.next.y>n&&e.next.y!==e.y&&r<(e.next.x-e.x)*(n-e.y)/(e.next.y-e.y)+e.x&&(s=!s),e=e.next;while(e!==i);return s}function kv(i,t){var e=new dT(i.i,i.x,i.y),s=new dT(t.i,t.x,t.y),r=i.next,n=t.prev;return i.next=t,t.prev=i,e.next=r,r.prev=e,s.next=e,e.prev=s,n.next=s,s.prev=n,s}function MO(i,t,e,s){var r=new dT(i,t,e);return s?(r.next=s.next,r.prev=s,s.next.prev=r,s.next=r):(r.prev=r,r.next=r),r}function Bl(i){i.next.prev=i.prev,i.prev.next=i.next,i.prevZ&&(i.prevZ.nextZ=i.nextZ),i.nextZ&&(i.nextZ.prevZ=i.prevZ)}function dT(i,t,e){this.i=i,this.x=t,this.y=e,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}pm.deviation=function(i,t,e,s){var r=t&&t.length,n=r?t[0]*e:i.length,a=Math.abs(fT(i,0,n,e));if(r)for(var o=0,u=t.length;o<u;o++){var l=t[o]*e,c=o<u-1?t[o+1]*e:i.length;a-=Math.abs(fT(i,l,c,e))}var h=0;for(o=0;o<s.length;o+=3){var _=s[o]*e,d=s[o+1]*e,f=s[o+2]*e;h+=Math.abs((i[_]-i[f])*(i[d+1]-i[_+1])-(i[_]-i[d])*(i[f+1]-i[_+1]))}return a===0&&h===0?0:Math.abs((h-a)/a)};function fT(i,t,e,s){for(var r=0,n=t,a=e-s;n<e;n+=s)r+=(i[a]-i[n])*(i[n+1]+i[a+1]),a=n;return r}pm.flatten=function(i){for(var t=i[0][0].length,e={vertices:[],holes:[],dimensions:t},s=0,r=0;r<i.length;r++){for(var n=0;n<i[r].length;n++)for(var a=0;a<t;a++)e.vertices.push(i[r][n][a]);r>0&&(s+=i[r-1].length,e.holes.push(s))}return e};var f9=GI.exports;const g9=UI(f9);var Ei=(i=>(i[i.NONE=0]="NONE",i[i.COLOR=16384]="COLOR",i[i.STENCIL=1024]="STENCIL",i[i.DEPTH=256]="DEPTH",i[i.COLOR_DEPTH=16640]="COLOR_DEPTH",i[i.COLOR_STENCIL=17408]="COLOR_STENCIL",i[i.DEPTH_STENCIL=1280]="DEPTH_STENCIL",i[i.ALL=17664]="ALL",i))(Ei||{});class zv{constructor(t){this.items=[],this._name=t}emit(t,e,s,r,n,a,o,u){const{name:l,items:c}=this;for(let h=0,_=c.length;h<_;h++)c[h][l](t,e,s,r,n,a,o,u);return this}add(t){return t[this._name]&&(this.remove(t),this.items.push(t)),this}remove(t){const e=this.items.indexOf(t);return e!==-1&&this.items.splice(e,1),this}contains(t){return this.items.indexOf(t)!==-1}removeAll(){return this.items.length=0,this}destroy(){this.removeAll(),this.items=null,this._name=null}get empty(){return this.items.length===0}get name(){return this._name}}const p9=["init","destroy","contextChange","resolutionChange","reset","renderEnd","renderStart","render","update","postrender","prerender"],Vv=class Hv extends ks{constructor(t){super(),this.runners=Object.create(null),this.renderPipes=Object.create(null),this._initOptions={},this._systemsHash=Object.create(null),this.type=t.type,this.name=t.name,this.config=t;const e=[...p9,...this.config.runners??[]];this._addRunners(...e),this._unsafeEvalCheck()}async init(t={}){const e=t.skipExtensionImports===!0?!0:t.manageImports===!1;await Z7(e),this._addSystems(this.config.systems),this._addPipes(this.config.renderPipes,this.config.renderPipeAdaptors);for(const s in this._systemsHash)t={...this._systemsHash[s].constructor.defaultOptions,...t};t={...Hv.defaultOptions,...t},this._roundPixels=t.roundPixels?1:0;for(let s=0;s<this.runners.init.items.length;s++)await this.runners.init.items[s].init(t);this._initOptions=t}render(t,e){let s=t;if(s instanceof $t&&(s={container:s},e&&(ct(Te,"passing a second argument is deprecated, please use render options instead"),s.target=e.renderTexture)),s.target||(s.target=this.view.renderTarget),s.target===this.view.renderTarget&&(this._lastObjectRendered=s.container,s.clearColor=this.background.colorRgba),s.clearColor){const r=Array.isArray(s.clearColor)&&s.clearColor.length===4;s.clearColor=r?s.clearColor:Mt.shared.setValue(s.clearColor).toArray()}s.transform||(s.container.updateLocalTransform(),s.transform=s.container.localTransform),this.runners.prerender.emit(s),this.runners.renderStart.emit(s),this.runners.render.emit(s),this.runners.renderEnd.emit(s),this.runners.postrender.emit(s)}resize(t,e,s){const r=this.view.resolution;this.view.resize(t,e,s),this.emit("resize",this.view.screen.width,this.view.screen.height,this.view.resolution),s!==void 0&&s!==r&&this.runners.resolutionChange.emit(s)}clear(t={}){const e=this;t.target||(t.target=e.renderTarget.renderTarget),t.clearColor||(t.clearColor=this.background.colorRgba),t.clear??(t.clear=Ei.ALL);const{clear:s,clearColor:r,target:n}=t;Mt.shared.setValue(r??this.background.colorRgba),e.renderTarget.clear(n,s,Mt.shared.toArray())}get resolution(){return this.view.resolution}set resolution(t){this.view.resolution=t,this.runners.resolutionChange.emit(t)}get width(){return this.view.texture.frame.width}get height(){return this.view.texture.frame.height}get canvas(){return this.view.canvas}get lastObjectRendered(){return this._lastObjectRendered}get renderingToScreen(){return this.renderTarget.renderingToScreen}get screen(){return this.view.screen}_addRunners(...t){t.forEach(e=>{this.runners[e]=new zv(e)})}_addSystems(t){let e;for(e in t){const s=t[e];this._addSystem(s.value,s.name)}}_addSystem(t,e){const s=new t(this);if(this[e])throw new Error(`Whoops! The name "${e}" is already in use`);this[e]=s,this._systemsHash[e]=s;for(const r in this.runners)this.runners[r].add(s);return this}_addPipes(t,e){const s=e.reduce((r,n)=>(r[n.name]=n.value,r),{});t.forEach(r=>{const n=r.value,a=r.name,o=s[a];this.renderPipes[a]=new n(this,o?new o:null)})}destroy(t=!1){this.runners.destroy.items.reverse(),this.runners.destroy.emit(t),Object.values(this.runners).forEach(e=>{e.destroy()}),this._systemsHash=null,this.renderPipes=null}generateTexture(t){return this.textureGenerator.generateTexture(t)}get roundPixels(){return!!this._roundPixels}_unsafeEvalCheck(){if(!wv())throw new Error("Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.")}};Vv.defaultOptions={resolution:1,failIfMajorPerformanceCaveat:!1,roundPixels:!1};let Em=Vv,Ec;function m9(i){return Ec!==void 0||(Ec=(()=>{var e;const t={stencil:!0,failIfMajorPerformanceCaveat:i??Em.defaultOptions.failIfMajorPerformanceCaveat};try{if(!Wt.get().getWebGLRenderingContext())return!1;let r=Wt.get().createCanvas().getContext("webgl",t);const n=!!((e=r==null?void 0:r.getContextAttributes())!=null&&e.stencil);if(r){const a=r.getExtension("WEBGL_lose_context");a&&a.loseContext()}return r=null,n}catch{return!1}})()),Ec}let Tc;async function E9(i={}){return Tc!==void 0||(Tc=await(async()=>{const t=Wt.get().getNavigator().gpu;if(!t)return!1;try{return await(await t.requestAdapter(i)).requestDevice(),!0}catch{return!1}})()),Tc}const xO=["webgl","webgpu","canvas"];async function Yv(i){let t=[];i.preference?(t.push(i.preference),xO.forEach(n=>{n!==i.preference&&t.push(n)})):t=xO.slice();let e,s={};for(let n=0;n<t.length;n++){const a=t[n];if(a==="webgpu"&&await E9()){const{WebGPURenderer:o}=await Promise.resolve().then(()=>eZ);e=o,s={...i,...i.webgpu};break}else if(a==="webgl"&&m9(i.failIfMajorPerformanceCaveat??Em.defaultOptions.failIfMajorPerformanceCaveat)){const{WebGLRenderer:o}=await Promise.resolve().then(()=>require("./WebGLRenderer-Cth-VZkt.cjs"));e=o,s={...i,...i.webgl};break}else if(a==="canvas")throw s={...i},new Error("CanvasRenderer is not yet implemented")}if(delete s.webgpu,delete s.webgl,!e)throw new Error("No available renderer for the current environment");const r=new e;return await r.init(s),r}const e_="8.5.1";class Wv{static init(){var t;(t=globalThis.__PIXI_APP_INIT__)==null||t.call(globalThis,this,e_)}static destroy(){}}Wv.extension=B.Application;class jv{constructor(t){this._renderer=t}init(){var t;(t=globalThis.__PIXI_RENDERER_INIT__)==null||t.call(globalThis,this._renderer,e_)}destroy(){this._renderer=null}}jv.extension={type:[B.WebGLSystem,B.WebGPUSystem],name:"initHook",priority:-10};const Kv=class gT{constructor(...t){this.stage=new $t,t[0]!==void 0&&ct(Te,"Application constructor options are deprecated, please use Application.init() instead.")}async init(t){t={...t},this.renderer=await Yv(t),gT._plugins.forEach(e=>{e.init.call(this,t)})}render(){this.renderer.render({container:this.stage})}get canvas(){return this.renderer.canvas}get view(){return ct(Te,"Application.view is deprecated, please use Application.canvas instead."),this.renderer.canvas}get screen(){return this.renderer.screen}destroy(t=!1,e=!1){const s=gT._plugins.slice(0);s.reverse(),s.forEach(r=>{r.destroy.call(this)}),this.stage.destroy(e),this.stage=null,this.renderer.destroy(t),this.renderer=null}};Kv._plugins=[];let Xv=Kv;fe.handleByList(B.Application,Xv._plugins);fe.add(Wv);class qv extends ks{constructor(){super(...arguments),this.chars=Object.create(null),this.lineHeight=0,this.fontFamily="",this.fontMetrics={fontSize:0,ascent:0,descent:0},this.baseLineOffset=0,this.distanceField={type:"none",range:0},this.pages=[],this.applyFillAsTint=!0,this.baseMeasurementFontSize=100,this.baseRenderedFontSize=100}get font(){return ct(Te,"BitmapFont.font is deprecated, please use BitmapFont.fontFamily instead."),this.fontFamily}get pageTextures(){return ct(Te,"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead."),this.pages}get size(){return ct(Te,"BitmapFont.size is deprecated, please use BitmapFont.fontMetrics.fontSize instead."),this.fontMetrics.fontSize}get distanceFieldRange(){return ct(Te,"BitmapFont.distanceFieldRange is deprecated, please use BitmapFont.distanceField.range instead."),this.distanceField.range}get distanceFieldType(){return ct(Te,"BitmapFont.distanceFieldType is deprecated, please use BitmapFont.distanceField.type instead."),this.distanceField.type}destroy(t=!1){var e;this.emit("destroy",this),this.removeAllListeners();for(const s in this.chars)(e=this.chars[s].texture)==null||e.destroy();this.chars=null,t&&(this.pages.forEach(s=>s.texture.destroy(!0)),this.pages=null)}}const $v=class pT{constructor(t,e,s,r){this.uid=Se("fillGradient"),this.type="linear",this.gradientStops=[],this._styleKey=null,this.x0=t,this.y0=e,this.x1=s,this.y1=r}addColorStop(t,e){return this.gradientStops.push({offset:t,color:Mt.shared.setValue(e).toHexa()}),this._styleKey=null,this}buildLinearGradient(){const t=pT.defaultTextureSize,{gradientStops:e}=this,s=Wt.get().createCanvas();s.width=t,s.height=t;const r=s.getContext("2d"),n=r.createLinearGradient(0,0,pT.defaultTextureSize,1);for(let p=0;p<e.length;p++){const g=e[p];n.addColorStop(g.offset,g.color)}r.fillStyle=n,r.fillRect(0,0,t,t),this.texture=new W({source:new qa({resource:s,addressModeU:"clamp-to-edge",addressModeV:"repeat"})});const{x0:a,y0:o,x1:u,y1:l}=this,c=new ot,h=u-a,_=l-o,d=Math.sqrt(h*h+_*_),f=Math.atan2(_,h);c.translate(-a,-o),c.scale(1/t,1/t),c.rotate(-f),c.scale(256/d,1),this.transform=c,this._styleKey=null}get styleKey(){if(this._styleKey)return this._styleKey;const t=this.gradientStops.map(r=>`${r.offset}-${r.color}`).join("-"),e=this.texture.uid,s=this.transform.toArray().join("-");return`fill-gradient-${this.uid}-${t}-${e}-${s}-${this.x0}-${this.y0}-${this.x1}-${this.y1}`}};$v.defaultTextureSize=256;let kl=$v;const PO={repeat:{addressModeU:"repeat",addressModeV:"repeat"},"repeat-x":{addressModeU:"repeat",addressModeV:"clamp-to-edge"},"repeat-y":{addressModeU:"clamp-to-edge",addressModeV:"repeat"},"no-repeat":{addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}};class Tm{constructor(t,e){this.uid=Se("fillPattern"),this.transform=new ot,this._styleKey=null,this.texture=t,this.transform.scale(1/t.frame.width,1/t.frame.height),e&&(t.source.style.addressModeU=PO[e].addressModeU,t.source.style.addressModeV=PO[e].addressModeV)}setTransform(t){const e=this.texture;this.transform.copyFrom(t),this.transform.invert(),this.transform.scale(1/e.frame.width,1/e.frame.height),this._styleKey=null}get styleKey(){return this._styleKey?this._styleKey:(this._styleKey=`fill-pattern-${this.uid}-${this.texture.uid}-${this.transform.toArray().join("-")}`,this._styleKey)}}var T9=S9,CE={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},I9=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function S9(i){var t=[];return i.replace(I9,function(e,s,r){var n=s.toLowerCase();for(r=A9(r),n=="m"&&r.length>2&&(t.push([s].concat(r.splice(0,2))),n="l",s=s=="m"?"l":"L");;){if(r.length==CE[n])return r.unshift(s),t.push(r);if(r.length<CE[n])throw new Error("malformed path data");t.push([s].concat(r.splice(0,CE[n])))}}),t}var R9=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/ig;function A9(i){var t=i.match(R9);return t?t.map(Number):[]}const O9=UI(T9);function y9(i,t){const e=O9(i),s=[];let r=null,n=0,a=0;for(let o=0;o<e.length;o++){const u=e[o],l=u[0],c=u;switch(l){case"M":n=c[1],a=c[2],t.moveTo(n,a);break;case"m":n+=c[1],a+=c[2],t.moveTo(n,a);break;case"H":n=c[1],t.lineTo(n,a);break;case"h":n+=c[1],t.lineTo(n,a);break;case"V":a=c[1],t.lineTo(n,a);break;case"v":a+=c[1],t.lineTo(n,a);break;case"L":n=c[1],a=c[2],t.lineTo(n,a);break;case"l":n+=c[1],a+=c[2],t.lineTo(n,a);break;case"C":n=c[5],a=c[6],t.bezierCurveTo(c[1],c[2],c[3],c[4],n,a);break;case"c":t.bezierCurveTo(n+c[1],a+c[2],n+c[3],a+c[4],n+c[5],a+c[6]),n+=c[5],a+=c[6];break;case"S":n=c[3],a=c[4],t.bezierCurveToShort(c[1],c[2],n,a);break;case"s":t.bezierCurveToShort(n+c[1],a+c[2],n+c[3],a+c[4]),n+=c[3],a+=c[4];break;case"Q":n=c[3],a=c[4],t.quadraticCurveTo(c[1],c[2],n,a);break;case"q":t.quadraticCurveTo(n+c[1],a+c[2],n+c[3],a+c[4]),n+=c[3],a+=c[4];break;case"T":n=c[1],a=c[2],t.quadraticCurveToShort(n,a);break;case"t":n+=c[1],a+=c[2],t.quadraticCurveToShort(n,a);break;case"A":n=c[6],a=c[7],t.arcToSvg(c[1],c[2],c[3],c[4],c[5],n,a);break;case"a":n+=c[6],a+=c[7],t.arcToSvg(c[1],c[2],c[3],c[4],c[5],n,a);break;case"Z":case"z":t.closePath(),s.length>0&&(r=s.pop(),r?(n=r.startX,a=r.startY):(n=0,a=0)),r=null;break;default:le(`Unknown SVG path command: ${l}`)}l!=="Z"&&l!=="z"&&r===null&&(r={startX:n,startY:a},s.push(r))}return t}class BI{constructor(t=0,e=0,s=0){this.type="circle",this.x=t,this.y=e,this.radius=s}clone(){return new BI(this.x,this.y,this.radius)}contains(t,e){if(this.radius<=0)return!1;const s=this.radius*this.radius;let r=this.x-t,n=this.y-e;return r*=r,n*=n,r+n<=s}strokeContains(t,e,s){if(this.radius===0)return!1;const r=this.x-t,n=this.y-e,a=this.radius,o=s/2,u=Math.sqrt(r*r+n*n);return u<a+o&&u>a-o}getBounds(t){return t=t||new Kt,t.x=this.x-this.radius,t.y=this.y-this.radius,t.width=this.radius*2,t.height=this.radius*2,t}copyFrom(t){return this.x=t.x,this.y=t.y,this.radius=t.radius,this}copyTo(t){return t.copyFrom(this),t}toString(){return`[pixi.js/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`}}class kI{constructor(t=0,e=0,s=0,r=0){this.type="ellipse",this.x=t,this.y=e,this.halfWidth=s,this.halfHeight=r}clone(){return new kI(this.x,this.y,this.halfWidth,this.halfHeight)}contains(t,e){if(this.halfWidth<=0||this.halfHeight<=0)return!1;let s=(t-this.x)/this.halfWidth,r=(e-this.y)/this.halfHeight;return s*=s,r*=r,s+r<=1}strokeContains(t,e,s){const{halfWidth:r,halfHeight:n}=this;if(r<=0||n<=0)return!1;const a=s/2,o=r-a,u=n-a,l=r+a,c=n+a,h=t-this.x,_=e-this.y,d=h*h/(o*o)+_*_/(u*u),f=h*h/(l*l)+_*_/(c*c);return d>1&&f<=1}getBounds(t){return t=t||new Kt,t.x=this.x-this.halfWidth,t.y=this.y-this.halfHeight,t.width=this.halfWidth*2,t.height=this.halfHeight*2,t}copyFrom(t){return this.x=t.x,this.y=t.y,this.halfWidth=t.halfWidth,this.halfHeight=t.halfHeight,this}copyTo(t){return t.copyFrom(this),t}toString(){return`[pixi.js/math:Ellipse x=${this.x} y=${this.y} halfWidth=${this.halfWidth} halfHeight=${this.halfHeight}]`}}function v9(i,t,e,s,r,n){const a=i-e,o=t-s,u=r-e,l=n-s,c=a*u+o*l,h=u*u+l*l;let _=-1;h!==0&&(_=c/h);let d,f;_<0?(d=e,f=s):_>1?(d=r,f=n):(d=e+_*u,f=s+_*l);const p=i-d,g=t-f;return p*p+g*g}class Yu{constructor(...t){this.type="polygon";let e=Array.isArray(t[0])?t[0]:t;if(typeof e[0]!="number"){const s=[];for(let r=0,n=e.length;r<n;r++)s.push(e[r].x,e[r].y);e=s}this.points=e,this.closePath=!0}clone(){const t=this.points.slice(),e=new Yu(t);return e.closePath=this.closePath,e}contains(t,e){let s=!1;const r=this.points.length/2;for(let n=0,a=r-1;n<r;a=n++){const o=this.points[n*2],u=this.points[n*2+1],l=this.points[a*2],c=this.points[a*2+1];u>e!=c>e&&t<(l-o)*((e-u)/(c-u))+o&&(s=!s)}return s}strokeContains(t,e,s){const r=s/2,n=r*r,{points:a}=this,o=a.length-(this.closePath?0:2);for(let u=0;u<o;u+=2){const l=a[u],c=a[u+1],h=a[(u+2)%a.length],_=a[(u+3)%a.length];if(v9(t,e,l,c,h,_)<=n)return!0}return!1}getBounds(t){t=t||new Kt;const e=this.points;let s=1/0,r=-1/0,n=1/0,a=-1/0;for(let o=0,u=e.length;o<u;o+=2){const l=e[o],c=e[o+1];s=l<s?l:s,r=l>r?l:r,n=c<n?c:n,a=c>a?c:a}return t.x=s,t.width=r-s,t.y=n,t.height=a-n,t}copyFrom(t){return this.points=t.points.slice(),this.closePath=t.closePath,this}copyTo(t){return t.copyFrom(this),t}toString(){return`[pixi.js/math:PolygoncloseStroke=${this.closePath}points=${this.points.reduce((t,e)=>`${t}, ${e}`,"")}]`}get lastX(){return this.points[this.points.length-2]}get lastY(){return this.points[this.points.length-1]}get x(){return this.points[this.points.length-2]}get y(){return this.points[this.points.length-1]}}const Ic=(i,t,e,s,r,n)=>{const a=i-e,o=t-s,u=Math.sqrt(a*a+o*o);return u>=r-n&&u<=r+n};class zI{constructor(t=0,e=0,s=0,r=0,n=20){this.type="roundedRectangle",this.x=t,this.y=e,this.width=s,this.height=r,this.radius=n}getBounds(t){return t=t||new Kt,t.x=this.x,t.y=this.y,t.width=this.width,t.height=this.height,t}clone(){return new zI(this.x,this.y,this.width,this.height,this.radius)}copyFrom(t){return this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height,this}copyTo(t){return t.copyFrom(this),t}contains(t,e){if(this.width<=0||this.height<=0)return!1;if(t>=this.x&&t<=this.x+this.width&&e>=this.y&&e<=this.y+this.height){const s=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if(e>=this.y+s&&e<=this.y+this.height-s||t>=this.x+s&&t<=this.x+this.width-s)return!0;let r=t-(this.x+s),n=e-(this.y+s);const a=s*s;if(r*r+n*n<=a||(r=t-(this.x+this.width-s),r*r+n*n<=a)||(n=e-(this.y+this.height-s),r*r+n*n<=a)||(r=t-(this.x+s),r*r+n*n<=a))return!0}return!1}strokeContains(t,e,s){const{x:r,y:n,width:a,height:o,radius:u}=this,l=s/2,c=r+u,h=n+u,_=a-u*2,d=o-u*2,f=r+a,p=n+o;return(t>=r-l&&t<=r+l||t>=f-l&&t<=f+l)&&e>=h&&e<=h+d||(e>=n-l&&e<=n+l||e>=p-l&&e<=p+l)&&t>=c&&t<=c+_?!0:t<c&&e<h&&Ic(t,e,c,h,u,l)||t>f-u&&e<h&&Ic(t,e,f-u,h,u,l)||t>f-u&&e>p-u&&Ic(t,e,f-u,p-u,u,l)||t<c&&e>p-u&&Ic(t,e,c,p-u,u,l)}toString(){return`[pixi.js/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`}}const C9=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(`
`);function M9(i){let t="";for(let e=0;e<i;++e)e>0&&(t+=`
else `),e<i-1&&(t+=`if(test == ${e}.0){}`);return t}function x9(i,t){if(i===0)throw new Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`");const e=t.createShader(t.FRAGMENT_SHADER);try{for(;;){const s=C9.replace(/%forloop%/gi,M9(i));if(t.shaderSource(e,s),t.compileShader(e),!t.getShaderParameter(e,t.COMPILE_STATUS))i=i/2|0;else break}}finally{t.deleteShader(e)}return i}let so=null;function Im(){var t;if(so)return so;const i=Pv();return so=i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS),so=x9(so,i),(t=i.getExtension("WEBGL_lose_context"))==null||t.loseContext(),so}const Qv={};function VI(i,t){let e=2166136261;for(let s=0;s<t;s++)e^=i[s].uid,e=Math.imul(e,16777619),e>>>=0;return Qv[e]||P9(i,t,e)}let ME=0;function P9(i,t,e){const s={};let r=0;ME||(ME=Im());for(let a=0;a<ME;a++){const o=a<t?i[a]:W.EMPTY.source;s[r++]=o.source,s[r++]=o.style}const n=new Sn(s);return Qv[e]=n,n}class mT{constructor(t){typeof t=="number"?this.rawBinaryData=new ArrayBuffer(t):t instanceof Uint8Array?this.rawBinaryData=t.buffer:this.rawBinaryData=t,this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData),this.size=this.rawBinaryData.byteLength}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 int32View(){return this._int32View||(this._int32View=new Int32Array(this.rawBinaryData)),this._int32View}get float64View(){return this._float64Array||(this._float64Array=new Float64Array(this.rawBinaryData)),this._float64Array}get bigUint64View(){return this._bigUint64Array||(this._bigUint64Array=new BigUint64Array(this.rawBinaryData)),this._bigUint64Array}view(t){return this[`${t}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(t){switch(t){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw new Error(`${t} isn't a valid view type`)}}}function ET(i,t){const e=i.byteLength/8|0,s=new Float64Array(i,0,e);new Float64Array(t,0,e).set(s);const n=i.byteLength-e*8;if(n>0){const a=new Uint8Array(i,e*8,n);new Uint8Array(t,e*8,n).set(a)}}const b9={normal:"normal-npm",add:"add-npm",screen:"screen-npm"};var He=(i=>(i[i.DISABLED=0]="DISABLED",i[i.RENDERING_MASK_ADD=1]="RENDERING_MASK_ADD",i[i.MASK_ACTIVE=2]="MASK_ACTIVE",i[i.INVERSE_MASK_ACTIVE=3]="INVERSE_MASK_ACTIVE",i[i.RENDERING_MASK_REMOVE=4]="RENDERING_MASK_REMOVE",i[i.NONE=5]="NONE",i))(He||{});function TT(i,t){return t.alphaMode==="no-premultiply-alpha"&&b9[i]||i}class N9{constructor(){this.ids=Object.create(null),this.textures=[],this.count=0}clear(){for(let t=0;t<this.count;t++){const e=this.textures[t];this.textures[t]=null,this.ids[e.uid]=null}this.count=0}}class U9{constructor(){this.renderPipeId="batch",this.action="startBatch",this.start=0,this.size=0,this.textures=new N9,this.blendMode="normal",this.canBundle=!0}destroy(){this.textures=null,this.gpuBindGroup=null,this.bindGroup=null,this.batcher=null}}const Zv=[];let IT=0;function bO(){return IT>0?Zv[--IT]:new U9}function NO(i){Zv[IT++]=i}let Mu=0;const Jv=class bc{constructor(t={}){this.uid=Se("batcher"),this.dirty=!0,this.batchIndex=0,this.batches=[],this._elements=[],bc.defaultOptions.maxTextures=bc.defaultOptions.maxTextures??Im(),t={...bc.defaultOptions,...t};const{maxTextures:e,attributesInitialSize:s,indicesInitialSize:r}=t;this.attributeBuffer=new mT(s*4),this.indexBuffer=new Uint16Array(r),this.maxTextures=e}begin(){this.elementSize=0,this.elementStart=0,this.indexSize=0,this.attributeSize=0;for(let t=0;t<this.batchIndex;t++)NO(this.batches[t]);this.batchIndex=0,this._batchIndexStart=0,this._batchIndexSize=0,this.dirty=!0}add(t){this._elements[this.elementSize++]=t,t._indexStart=this.indexSize,t._attributeStart=this.attributeSize,t._batcher=this,this.indexSize+=t.indexSize,this.attributeSize+=t.attributeSize*this.vertexSize}checkAndUpdateTexture(t,e){const s=t._batch.textures.ids[e._source.uid];return!s&&s!==0?!1:(t._textureId=s,t.texture=e,!0)}updateElement(t){this.dirty=!0;const e=this.attributeBuffer;t.packAsQuad?this.packQuadAttributes(t,e.float32View,e.uint32View,t._attributeStart,t._textureId):this.packAttributes(t,e.float32View,e.uint32View,t._attributeStart,t._textureId)}break(t){const e=this._elements;if(!e[this.elementStart])return;let s=bO(),r=s.textures;r.clear();const n=e[this.elementStart];let a=TT(n.blendMode,n.texture._source);this.attributeSize*4>this.attributeBuffer.size&&this._resizeAttributeBuffer(this.attributeSize*4),this.indexSize>this.indexBuffer.length&&this._resizeIndexBuffer(this.indexSize);const o=this.attributeBuffer.float32View,u=this.attributeBuffer.uint32View,l=this.indexBuffer;let c=this._batchIndexSize,h=this._batchIndexStart,_="startBatch";const d=this.maxTextures;for(let f=this.elementStart;f<this.elementSize;++f){const p=e[f];e[f]=null;const m=p.texture._source,O=TT(p.blendMode,m),y=a!==O;if(m._batchTick===Mu&&!y){p._textureId=m._textureBindLocation,c+=p.indexSize,p.packAsQuad?(this.packQuadAttributes(p,o,u,p._attributeStart,p._textureId),this.packQuadIndex(l,p._indexStart,p._attributeStart/this.vertexSize)):(this.packAttributes(p,o,u,p._attributeStart,p._textureId),this.packIndex(p,l,p._indexStart,p._attributeStart/this.vertexSize)),p._batch=s;continue}m._batchTick=Mu,(r.count>=d||y)&&(this._finishBatch(s,h,c-h,r,a,t,_),_="renderBatch",h=c,a=O,s=bO(),r=s.textures,r.clear(),++Mu),p._textureId=m._textureBindLocation=r.count,r.ids[m.uid]=r.count,r.textures[r.count++]=m,p._batch=s,c+=p.indexSize,p.packAsQuad?(this.packQuadAttributes(p,o,u,p._attributeStart,p._textureId),this.packQuadIndex(l,p._indexStart,p._attributeStart/this.vertexSize)):(this.packAttributes(p,o,u,p._attributeStart,p._textureId),this.packIndex(p,l,p._indexStart,p._attributeStart/this.vertexSize))}r.count>0&&(this._finishBatch(s,h,c-h,r,a,t,_),h=c,++Mu),this.elementStart=this.elementSize,this._batchIndexStart=h,this._batchIndexSize=c}_finishBatch(t,e,s,r,n,a,o){t.gpuBindGroup=null,t.bindGroup=null,t.action=o,t.batcher=this,t.textures=r,t.blendMode=n,t.start=e,t.size=s,++Mu,this.batches[this.batchIndex++]=t,a.add(t)}finish(t){this.break(t)}ensureAttributeBuffer(t){t*4<=this.attributeBuffer.size||this._resizeAttributeBuffer(t*4)}ensureIndexBuffer(t){t<=this.indexBuffer.length||this._resizeIndexBuffer(t)}_resizeAttributeBuffer(t){const e=Math.max(t,this.attributeBuffer.size*2),s=new mT(e);ET(this.attributeBuffer.rawBinaryData,s.rawBinaryData),this.attributeBuffer=s}_resizeIndexBuffer(t){const e=this.indexBuffer;let s=Math.max(t,e.length*1.5);s+=s%2;const r=s>65535?new Uint32Array(s):new Uint16Array(s);if(r.BYTES_PER_ELEMENT!==e.BYTES_PER_ELEMENT)for(let n=0;n<e.length;n++)r[n]=e[n];else ET(e.buffer,r.buffer);this.indexBuffer=r}packQuadIndex(t,e,s){t[e]=s+0,t[e+1]=s+1,t[e+2]=s+2,t[e+3]=s+0,t[e+4]=s+2,t[e+5]=s+3}packIndex(t,e,s,r){const n=t.indices,a=t.indexSize,o=t.indexOffset,u=t.attributeOffset;for(let l=0;l<a;l++)e[s++]=r+n[l+o]-u}destroy(){for(let t=0;t<this.batches.length;t++)NO(this.batches[t]);this.batches=null;for(let t=0;t<this._elements.length;t++)this._elements[t]._batch=null;this._elements=null,this.indexBuffer=null,this.attributeBuffer.destroy(),this.attributeBuffer=null}};Jv.defaultOptions={maxTextures:null,attributesInitialSize:4,indicesInitialSize:6};let D9=Jv;var Oe=(i=>(i[i.MAP_READ=1]="MAP_READ",i[i.MAP_WRITE=2]="MAP_WRITE",i[i.COPY_SRC=4]="COPY_SRC",i[i.COPY_DST=8]="COPY_DST",i[i.INDEX=16]="INDEX",i[i.VERTEX=32]="VERTEX",i[i.UNIFORM=64]="UNIFORM",i[i.STORAGE=128]="STORAGE",i[i.INDIRECT=256]="INDIRECT",i[i.QUERY_RESOLVE=512]="QUERY_RESOLVE",i[i.STATIC=1024]="STATIC",i))(Oe||{});class Hr extends ks{constructor(t){let{data:e,size:s}=t;const{usage:r,label:n,shrinkToFit:a}=t;super(),this.uid=Se("buffer"),this._resourceType="buffer",this._resourceId=Se("resource"),this._touched=0,this._updateID=1,this.shrinkToFit=!0,this.destroyed=!1,e instanceof Array&&(e=new Float32Array(e)),this._data=e,s=s??(e==null?void 0:e.byteLength);const o=!!e;this.descriptor={size:s,usage:r,mappedAtCreation:o,label:n},this.shrinkToFit=a??!0}get data(){return this._data}set data(t){this.setDataWithSize(t,t.length,!0)}get static(){return!!(this.descriptor.usage&Oe.STATIC)}set static(t){t?this.descriptor.usage|=Oe.STATIC:this.descriptor.usage&=~Oe.STATIC}setDataWithSize(t,e,s){if(this._updateID++,this._updateSize=e*t.BYTES_PER_ELEMENT,this._data===t){s&&this.emit("update",this);return}const r=this._data;if(this._data=t,r.length!==t.length){!this.shrinkToFit&&t.byteLength<r.byteLength?s&&this.emit("update",this):(this.descriptor.size=t.byteLength,this._resourceId=Se("resource"),this.emit("change",this));return}s&&this.emit("update",this)}update(t){this._updateSize=t??this._updateSize,this._updateID++,this.emit("update",this)}destroy(){this.destroyed=!0,this.emit("destroy",this),this.emit("change",this),this._data=null,this.descriptor=null,this.removeAllListeners()}}function tC(i,t){if(!(i instanceof Hr)){let e=t?Oe.INDEX:Oe.VERTEX;i instanceof Array&&(t?(i=new Uint32Array(i),e=Oe.INDEX|Oe.COPY_DST):(i=new Float32Array(i),e=Oe.VERTEX|Oe.COPY_DST)),i=new Hr({data:i,label:t?"index-mesh-buffer":"vertex-mesh-buffer",usage:e})}return i}function L9(i,t,e){const s=i.getAttribute(t);if(!s)return e.minX=0,e.minY=0,e.maxX=0,e.maxY=0,e;const r=s.buffer.data;let n=1/0,a=1/0,o=-1/0,u=-1/0;const l=r.BYTES_PER_ELEMENT,c=(s.offset||0)/l,h=(s.stride||2*4)/l;for(let _=c;_<r.length;_+=h){const d=r[_],f=r[_+1];d>o&&(o=d),f>u&&(u=f),d<n&&(n=d),f<a&&(a=f)}return e.minX=n,e.minY=a,e.maxX=o,e.maxY=u,e}function F9(i){return(i instanceof Hr||Array.isArray(i)||i.BYTES_PER_ELEMENT)&&(i={buffer:i}),i.buffer=tC(i.buffer,!1),i}class eC extends ks{constructor(t={}){super(),this.uid=Se("geometry"),this._layoutKey=0,this.instanceCount=1,this._bounds=new Bs,this._boundsDirty=!0;const{attributes:e,indexBuffer:s,topology:r}=t;if(this.buffers=[],this.attributes={},e)for(const n in e)this.addAttribute(n,e[n]);this.instanceCount=t.instanceCount||1,s&&this.addIndex(s),this.topology=r||"triangle-list"}onBufferUpdate(){this._boundsDirty=!0,this.emit("update",this)}getAttribute(t){return this.attributes[t]}getIndex(){return this.indexBuffer}getBuffer(t){return this.getAttribute(t).buffer}getSize(){for(const t in this.attributes){const e=this.attributes[t];return e.buffer.data.length/(e.stride/4||e.size)}return 0}addAttribute(t,e){const s=F9(e);this.buffers.indexOf(s.buffer)===-1&&(this.buffers.push(s.buffer),s.buffer.on("update",this.onBufferUpdate,this),s.buffer.on("change",this.onBufferUpdate,this)),this.attributes[t]=s}addIndex(t){this.indexBuffer=tC(t,!0),this.buffers.push(this.indexBuffer)}get bounds(){return this._boundsDirty?(this._boundsDirty=!1,L9(this,"aPosition",this._bounds)):this._bounds}destroy(t=!1){this.emit("destroy",this),this.removeAllListeners(),t&&this.buffers.forEach(e=>e.destroy()),this.attributes=null,this.buffers=null,this.indexBuffer=null,this._bounds=null}}const w9=new Float32Array(1),G9=new Uint32Array(1);class B9 extends eC{constructor(){const e=new Hr({data:w9,label:"attribute-batch-buffer",usage:Oe.VERTEX|Oe.COPY_DST,shrinkToFit:!1}),s=new Hr({data:G9,label:"index-batch-buffer",usage:Oe.INDEX|Oe.COPY_DST,shrinkToFit:!1}),r=6*4;super({attributes:{aPosition:{buffer:e,format:"float32x2",stride:r,offset:0},aUV:{buffer:e,format:"float32x2",stride:r,offset:2*4},aColor:{buffer:e,format:"unorm8x4",stride:r,offset:4*4},aTextureIdAndRound:{buffer:e,format:"uint16x2",stride:r,offset:5*4}},indexBuffer:s})}}function UO(i,t,e){if(i)for(const s in i){const r=s.toLocaleLowerCase(),n=t[r];if(n){let a=i[s];s==="header"&&(a=a.replace(/@in\s+[^;]+;\s*/g,"").replace(/@out\s+[^;]+;\s*/g,"")),e&&n.push(`//----${e}----//`),n.push(a)}else le(`${s} placement hook does not exist in shader`)}}const k9=/\{\{(.*?)\}\}/g;function DO(i){var s;const t={};return(((s=i.match(k9))==null?void 0:s.map(r=>r.replace(/[{()}]/g,"")))??[]).forEach(r=>{t[r]=[]}),t}function LO(i,t){let e;const s=/@in\s+([^;]+);/g;for(;(e=s.exec(i))!==null;)t.push(e[1])}function FO(i,t,e=!1){const s=[];LO(t,s),i.forEach(o=>{o.header&&LO(o.header,s)});const r=s;e&&r.sort();const n=r.map((o,u)=>` @location(${u}) ${o},`).join(`
`);let a=t.replace(/@in\s+[^;]+;\s*/g,"");return a=a.replace("{{in}}",`
${n}
`),a}function wO(i,t){let e;const s=/@out\s+([^;]+);/g;for(;(e=s.exec(i))!==null;)t.push(e[1])}function z9(i){const e=/\b(\w+)\s*:/g.exec(i);return e?e[1]:""}function V9(i){const t=/@.*?\s+/g;return i.replace(t,"")}function H9(i,t){const e=[];wO(t,e),i.forEach(u=>{u.header&&wO(u.header,e)});let s=0;const r=e.sort().map(u=>u.indexOf("builtin")>-1?u:`@location(${s++}) ${u}`).join(`,
`),n=e.sort().map(u=>` var ${V9(u)};`).join(`
`),a=`return VSOutput(
${e.sort().map(u=>` ${z9(u)}`).join(`,
`)});`;let o=t.replace(/@out\s+[^;]+;\s*/g,"");return o=o.replace("{{struct}}",`
${r}
`),o=o.replace("{{start}}",`
${n}
`),o=o.replace("{{return}}",`
${a}
`),o}function GO(i,t){let e=i;for(const s in t){const r=t[s];r.join(`
`).length?e=e.replace(`{{${s}}}`,`//-----${s} START-----//
${r.join(`
`)}
//----${s} FINISH----//`):e=e.replace(`{{${s}}}`,"")}return e}const En=Object.create(null),xE=new Map;let Y9=0;function W9({template:i,bits:t}){const e=sC(i,t);if(En[e])return En[e];const{vertex:s,fragment:r}=K9(i,t);return En[e]=iC(s,r,t),En[e]}function j9({template:i,bits:t}){const e=sC(i,t);return En[e]||(En[e]=iC(i.vertex,i.fragment,t)),En[e]}function K9(i,t){const e=t.map(a=>a.vertex).filter(a=>!!a),s=t.map(a=>a.fragment).filter(a=>!!a);let r=FO(e,i.vertex,!0);r=H9(e,r);const n=FO(s,i.fragment,!0);return{vertex:r,fragment:n}}function sC(i,t){return t.map(e=>(xE.has(e)||xE.set(e,Y9++),xE.get(e))).sort((e,s)=>e-s).join("-")+i.vertex+i.fragment}function iC(i,t,e){const s=DO(i),r=DO(t);return e.forEach(n=>{UO(n.vertex,s,n.name),UO(n.fragment,r,n.name)}),{vertex:GO(i,s),fragment:GO(t,r)}}const X9=`
@in aPosition: vec2<f32>;
@in aUV: vec2<f32>;
@out @builtin(position) vPosition: vec4<f32>;
@out vUV : vec2<f32>;
@out vColor : vec4<f32>;
{{header}}
struct VSOutput {
{{struct}}
};
@vertex
fn main( {{in}} ) -> VSOutput {
var worldTransformMatrix = globalUniforms.uWorldTransformMatrix;
var modelMatrix = mat3x3<f32>(
1.0, 0.0, 0.0,
0.0, 1.0, 0.0,
0.0, 0.0, 1.0
);
var position = aPosition;
var uv = aUV;
{{start}}
vColor = vec4<f32>(1., 1., 1., 1.);
{{main}}
vUV = uv;
var modelViewProjectionMatrix = globalUniforms.uProjectionMatrix * worldTransformMatrix * modelMatrix;
vPosition = vec4<f32>((modelViewProjectionMatrix * vec3<f32>(position, 1.0)).xy, 0.0, 1.0);
vColor *= globalUniforms.uWorldColorAlpha;
{{end}}
{{return}}
};
`,q9=`
@in vUV : vec2<f32>;
@in vColor : vec4<f32>;
{{header}}
@fragment
fn main(
{{in}}
) -> @location(0) vec4<f32> {
{{start}}
var outColor:vec4<f32>;
{{main}}
var finalColor:vec4<f32> = outColor * vColor;
{{end}}
return finalColor;
};
`,$9=`
in vec2 aPosition;
in vec2 aUV;
out vec4 vColor;
out vec2 vUV;
{{header}}
void main(void){
mat3 worldTransformMatrix = uWorldTransformMatrix;
mat3 modelMatrix = mat3(
1.0, 0.0, 0.0,
0.0, 1.0, 0.0,
0.0, 0.0, 1.0
);
vec2 position = aPosition;
vec2 uv = aUV;
{{start}}
vColor = vec4(1.);
{{main}}
vUV = uv;
mat3 modelViewProjectionMatrix = uProjectionMatrix * worldTransformMatrix * modelMatrix;
gl_Position = vec4((modelViewProjectionMatrix * vec3(position, 1.0)).xy, 0.0, 1.0);
vColor *= uWorldColorAlpha;
{{end}}
}
`,Q9=`
in vec4 vColor;
in vec2 vUV;
out vec4 finalColor;
{{header}}
void main(void) {
{{start}}
vec4 outColor;
{{main}}
finalColor = outColor * vColor;
{{end}}
}
`,Z9={name:"global-uniforms-bit",vertex:{header:`
struct GlobalUniforms {
uProjectionMatrix:mat3x3<f32>,
uWorldTransformMatrix:mat3x3<f32>,
uWorldColorAlpha: vec4<f32>,
uResolution: vec2<f32>,
}
@group(0) @binding(0) var<uniform> globalUniforms : GlobalUniforms;
`}},J9={name:"global-uniforms-bit",vertex:{header:`
uniform mat3 uProjectionMatrix;
uniform mat3 uWorldTransformMatrix;
uniform vec4 uWorldColorAlpha;
uniform vec2 uResolution;
`}};function Sm({bits:i,name:t}){const e=W9({template:{fragment:q9,vertex:X9},bits:[Z9,...i]});return At.from({name:t,vertex:{source:e.vertex,entryPoint:"main"},fragment:{source:e.fragment,entryPoint:"main"}})}function rC({bits:i,name:t}){return new Tt({name:t,...j9({template:{vertex:$9,fragment:Q9},bits:[J9,...i]})})}const HI={name:"color-bit",vertex:{header:`
@in aColor: vec4<f32>;
`,main:`
vColor *= vec4<f32>(aColor.rgb * aColor.a, aColor.a);
`}},nC={name:"color-bit",vertex:{header:`
in vec4 aColor;
`,main:`
vColor *= vec4(aColor.rgb * aColor.a, aColor.a);
`}},PE={};function tq(i){const t=[];if(i===1)t.push("@group(1) @binding(0) var textureSource1: texture_2d<f32>;"),t.push("@group(1) @binding(1) var textureSampler1: sampler;");else{let e=0;for(let s=0;s<i;s++)t.push(`@group(1) @binding(${e++}) var textureSource${s+1}: texture_2d<f32>;`),t.push(`@group(1) @binding(${e++}) var textureSampler${s+1}: sampler;`)}return t.join(`
`)}function eq(i){const t=[];if(i===1)t.push("outColor = textureSampleGrad(textureSource1, textureSampler1, vUV, uvDx, uvDy);");else{t.push("switch vTextureId {");for(let e=0;e<i;e++)e===i-1?t.push(" default:{"):t.push(` case ${e}:{`),t.push(` outColor = textureSampleGrad(textureSource${e+1}, textureSampler${e+1}, vUV, uvDx, uvDy);`),t.push(" break;}");t.push("}")}return t.join(`
`)}function YI(i){return PE[i]||(PE[i]={name:"texture-batch-bit",vertex:{header:`
@in aTextureIdAndRound: vec2<u32>;
@out @interpolate(flat) vTextureId : u32;
`,main:`
vTextureId = aTextureIdAndRound.y;
`,end:`
if(aTextureIdAndRound.x == 1)
{
vPosition = vec4<f32>(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
}
`},fragment:{header:`
@in @interpolate(flat) vTextureId: u32;
${tq(i)}
`,main:`
var uvDx = dpdx(vUV);
var uvDy = dpdy(vUV);
${eq(i)}
`}}),PE[i]}const bE={};function sq(i){const t=[];for(let e=0;e<i;e++)e>0&&t.push("else"),e<i-1&&t.push(`if(vTextureId < ${e}.5)`),t.push("{"),t.push(` outColor = texture(uTextures[${e}], vUV);`),t.push("}");return t.join(`
`)}function aC(i){return bE[i]||(bE[i]={name:"texture-batch-bit",vertex:{header:`
in vec2 aTextureIdAndRound;
out float vTextureId;
`,main:`
vTextureId = aTextureIdAndRound.y;
`,end:`
if(aTextureIdAndRound.x == 1.)
{
gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
}
`},fragment:{header:`
in float vTextureId;
uniform sampler2D uTextures[${i}];
`,main:`
${sq(i)}
`}}),bE[i]}const Rm={name:"round-pixels-bit",vertex:{header:`
fn roundPixels(position: vec2<f32>, targetSize: vec2<f32>) -> vec2<f32>
{
return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
}
`}},oC={name:"round-pixels-bit",vertex:{header:`
vec2 roundPixels(vec2 position, vec2 targetSize)
{
return (floor(((position * 0.5 + 0.5) * targetSize) + 0.5) / targetSize) * 2.0 - 1.0;
}
`}},BO={};function uC(i){let t=BO[i];if(t)return t;const e=new Int32Array(i);for(let s=0;s<i;s++)e[s]=s;return t=BO[i]=new Yr({uTextures:{value:e,type:"i32",size:i}},{isStatic:!0}),t}class iq extends $a{constructor(t){const e=rC({name:"batch",bits:[nC,aC(t),oC]}),s=Sm({name:"batch",bits:[HI,YI(t),Rm]});super({glProgram:e,gpuProgram:s,resources:{batchSamplers:uC(t)}})}}let kO=null;const lC=class hC extends D9{constructor(){super(...arguments),this.geometry=new B9,this.shader=kO||(kO=new iq(this.maxTextures)),this.name=hC.extension.name,this.vertexSize=6}packAttributes(t,e,s,r,n){const a=n<<16|t.roundPixels&65535,o=t.transform,u=o.a,l=o.b,c=o.c,h=o.d,_=o.tx,d=o.ty,{positions:f,uvs:p}=t,g=t.color,m=t.attributeOffset,O=m+t.attributeSize;for(let y=m;y<O;y++){const C=y*2,P=f[C],L=f[C+1];e[r++]=u*P+c*L+_,e[r++]=h*L+l*P+d,e[r++]=p[C],e[r++]=p[C+1],s[r++]=g,s[r++]=a}}packQuadAttributes(t,e,s,r,n){const a=t.texture,o=t.transform,u=o.a,l=o.b,c=o.c,h=o.d,_=o.tx,d=o.ty,f=t.bounds,p=f.maxX,g=f.minX,m=f.maxY,O=f.minY,y=a.uvs,C=t.color,P=n<<16|t.roundPixels&65535;e[r+0]=u*g+c*O+_,e[r+1]=h*O+l*g+d,e[r+2]=y.x0,e[r+3]=y.y0,s[r+4]=C,s[r+5]=P,e[r+6]=u*p+c*O+_,e[r+7]=h*O+l*p+d,e[r+8]=y.x1,e[r+9]=y.y1,s[r+10]=C,s[r+11]=P,e[r+12]=u*p+c*m+_,e[r+13]=h*m+l*p+d,e[r+14]=y.x2,e[r+15]=y.y2,s[r+16]=C,s[r+17]=P,e[r+18]=u*g+c*m+_,e[r+19]=h*m+l*g+d,e[r+20]=y.x3,e[r+21]=y.y3,s[r+22]=C,s[r+23]=P}};lC.extension={type:[B.Batcher],name:"default"};let WI=lC;function rq(i,t,e,s,r,n,a,o=null){let u=0;e*=t,r*=n;const l=o.a,c=o.b,h=o.c,_=o.d,d=o.tx,f=o.ty;for(;u<a;){const p=i[e],g=i[e+1];s[r]=l*p+h*g+d,s[r+1]=c*p+_*g+f,r+=n,e+=t,u++}}function nq(i,t,e,s){let r=0;for(t*=e;r<s;)i[t]=0,i[t+1]=0,t+=e,r++}function cC(i,t,e,s,r){const n=t.a,a=t.b,o=t.c,u=t.d,l=t.tx,c=t.ty;e=e||0,s=s||2,r=r||i.length/s-e;let h=e*s;for(let _=0;_<r;_++){const d=i[h],f=i[h+1];i[h]=n*d+o*f+l,i[h+1]=a*d+u*f+c,h+=s}}function aq(i,t){if(i===16777215||!t)return t;if(t===16777215||!i)return i;const e=i>>16&255,s=i>>8&255,r=i&255,n=t>>16&255,a=t>>8&255,o=t&255,u=e*n/255,l=s*a/255,c=r*o/255;return(u<<16)+(l<<8)+c}const oq=new ot;class jI{constructor(){this.packAsQuad=!1,this.batcherName="default",this.applyTransform=!0,this.roundPixels=0,this._batcher=null,this._batch=null}get uvs(){return this.geometryData.uvs}get positions(){return this.geometryData.vertices}get indices(){return this.geometryData.indices}get blendMode(){return this.applyTransform?this.renderable.groupBlendMode:"normal"}get color(){const t=this.baseColor,e=t>>16|t&65280|(t&255)<<16,s=this.renderable;return s?aq(e,s.groupColor)+(this.alpha*s.groupAlpha*255<<24):e+(this.alpha*255<<24)}get transform(){var t;return((t=this.renderable)==null?void 0:t.groupTransform)||oq}copyTo(t){t.indexOffset=this.indexOffset,t.indexSize=this.indexSize,t.attributeOffset=this.attributeOffset,t.attributeSize=this.attributeSize,t.baseColor=this.baseColor,t.alpha=this.alpha,t.texture=this.texture,t.geometryData=this.geometryData}reset(){this.applyTransform=!0,this.renderable=null}}const zl={extension:{type:B.ShapeBuilder,name:"circle"},build(i,t){let e,s,r,n,a,o;if(i.type==="circle"){const C=i;e=C.x,s=C.y,a=o=C.radius,r=n=0}else if(i.type==="ellipse"){const C=i;e=C.x,s=C.y,a=C.halfWidth,o=C.halfHeight,r=n=0}else{const C=i,P=C.width/2,L=C.height/2;e=C.x+P,s=C.y+L,a=o=Math.max(0,Math.min(C.radius,Math.min(P,L))),r=P-a,n=L-o}if(!(a>=0&&o>=0&&r>=0&&n>=0))return t;const u=Math.ceil(2.3*Math.sqrt(a+o)),l=u*8+(r?4:0)+(n?4:0);if(l===0)return t;if(u===0)return t[0]=t[6]=e+r,t[1]=t[3]=s+n,t[2]=t[4]=e-r,t[5]=t[7]=s-n,t;let c=0,h=u*4+(r?2:0)+2,_=h,d=l,f=r+a,p=n,g=e+f,m=e-f,O=s+p;if(t[c++]=g,t[c++]=O,t[--h]=O,t[--h]=m,n){const C=s-p;t[_++]=m,t[_++]=C,t[--d]=C,t[--d]=g}for(let C=1;C<u;C++){const P=Math.PI/2*(C/u),L=r+Math.cos(P)*a,N=n+Math.sin(P)*o,F=e+L,x=e-L,U=s+N,k=s-N;t[c++]=F,t[c++]=U,t[--h]=U,t[--h]=x,t[_++]=x,t[_++]=k,t[--d]=k,t[--d]=F}f=r,p=n+o,g=e+f,m=e-f,O=s+p;const y=s-p;return t[c++]=g,t[c++]=O,t[--d]=y,t[--d]=g,r&&(t[c++]=m,t[c++]=O,t[--d]=y,t[--d]=m),t},triangulate(i,t,e,s,r,n){if(i.length===0)return;let a=0,o=0;for(let c=0;c<i.length;c+=2)a+=i[c],o+=i[c+1];a/=i.length/2,o/=i.length/2;let u=s;t[u*e]=a,t[u*e+1]=o;const l=u++;for(let c=0;c<i.length;c+=2)t[u*e]=i[c],t[u*e+1]=i[c+1],c>0&&(r[n++]=u,r[n++]=l,r[n++]=u-1),u++;r[n++]=l+1,r[n++]=l,r[n++]=u-1}},uq={...zl,extension:{...zl.extension,name:"ellipse"}},lq={...zl,extension:{...zl.extension,name:"roundedRectangle"}},hq=1e-4,zO=1e-4;function cq(i){const t=i.length;if(t<6)return 1;let e=0;for(let s=0,r=i[t-2],n=i[t-1];s<t;s+=2){const a=i[s],o=i[s+1];e+=(a-r)*(o+n),r=a,n=o}return e<0?-1:1}function VO(i,t,e,s,r,n,a,o){const u=i-e*r,l=t-s*r,c=i+e*n,h=t+s*n;let _,d;a?(_=s,d=-e):(_=-s,d=e);const f=u+_,p=l+d,g=c+_,m=h+d;return o.push(f,p),o.push(g,m),2}function kn(i,t,e,s,r,n,a,o){const u=e-i,l=s-t;let c=Math.atan2(u,l),h=Math.atan2(r-i,n-t);o&&c<h?c+=Math.PI*2:!o&&c>h&&(h+=Math.PI*2);let _=c;const d=h-c,f=Math.abs(d),p=Math.sqrt(u*u+l*l),g=(15*f*Math.sqrt(p)/Math.PI>>0)+1,m=d/g;if(_+=m,o){a.push(i,t),a.push(e,s);for(let O=1,y=_;O<g;O++,y+=m)a.push(i,t),a.push(i+Math.sin(y)*p,t+Math.cos(y)*p);a.push(i,t),a.push(r,n)}else{a.push(e,s),a.push(i,t);for(let O=1,y=_;O<g;O++,y+=m)a.push(i+Math.sin(y)*p,t+Math.cos(y)*p),a.push(i,t);a.push(r,n),a.push(i,t)}return g*2}function _q(i,t,e,s,r,n,a,o,u){const l=hq;if(i.length===0)return;const c=t;let h=c.alignment;if(t.alignment!==.5){let re=cq(i);h=(h-.5)*re+.5}const _=new st(i[0],i[1]),d=new st(i[i.length-2],i[i.length-1]),f=s,p=Math.abs(_.x-d.x)<l&&Math.abs(_.y-d.y)<l;if(f){i=i.slice(),p&&(i.pop(),i.pop(),d.set(i[i.length-2],i[i.length-1]));const re=(_.x+d.x)*.5,nr=(d.y+_.y)*.5;i.unshift(re,nr),i.push(re,nr)}const g=r,m=i.length/2;let O=i.length;const y=g.length/2,C=c.width/2,P=C*C,L=c.miterLimit*c.miterLimit;let N=i[0],F=i[1],x=i[2],U=i[3],k=0,gt=0,X=-(F-U),Y=N-x,lt=0,Gt=0,V=Math.sqrt(X*X+Y*Y);X/=V,Y/=V,X*=C,Y*=C;const Pt=h,K=(1-Pt)*2,ut=Pt*2;f||(c.cap==="round"?O+=kn(N-X*(K-ut)*.5,F-Y*(K-ut)*.5,N-X*K,F-Y*K,N+X*ut,F+Y*ut,g,!0)+2:c.cap==="square"&&(O+=VO(N,F,X,Y,K,ut,!0,g))),g.push(N-X*K,F-Y*K),g.push(N+X*ut,F+Y*ut);for(let re=1;re<m-1;++re){N=i[(re-1)*2],F=i[(re-1)*2+1],x=i[re*2],U=i[re*2+1],k=i[(re+1)*2],gt=i[(re+1)*2+1],X=-(F-U),Y=N-x,V=Math.sqrt(X*X+Y*Y),X/=V,Y/=V,X*=C,Y*=C,lt=-(U-gt),Gt=x-k,V=Math.sqrt(lt*lt+Gt*Gt),lt/=V,Gt/=V,lt*=C,Gt*=C;const nr=x-N,Vs=F-U,vs=x-k,yi=gt-U,Ou=nr*vs+Vs*yi,Ln=Vs*vs-yi*nr,ar=Ln<0;if(Math.abs(Ln)<.001*Math.abs(Ou)){g.push(x-X*K,U-Y*K),g.push(x+X*ut,U+Y*ut),Ou>=0&&(c.join==="round"?O+=kn(x,U,x-X*K,U-Y*K,x-lt*K,U-Gt*K,g,!1)+4:O+=2,g.push(x-lt*ut,U-Gt*ut),g.push(x+lt*K,U+Gt*K));continue}const to=(-X+N)*(-Y+U)-(-X+x)*(-Y+F),hO=(-lt+k)*(-Gt+U)-(-lt+x)*(-Gt+gt),lc=(nr*hO-vs*to)/Ln,hc=(yi*to-Vs*hO)/Ln,rE=(lc-x)*(lc-x)+(hc-U)*(hc-U),Fn=x+(lc-x)*K,wn=U+(hc-U)*K,Gn=x-(lc-x)*ut,Bn=U-(hc-U)*ut,VX=Math.min(nr*nr+Vs*Vs,vs*vs+yi*yi),cO=ar?K:ut,HX=VX+cO*cO*P;rE<=HX?c.join==="bevel"||rE/P>L?(ar?(g.push(Fn,wn),g.push(x+X*ut,U+Y*ut),g.push(Fn,wn),g.push(x+lt*ut,U+Gt*ut)):(g.push(x-X*K,U-Y*K),g.push(Gn,Bn),g.push(x-lt*K,U-Gt*K),g.push(Gn,Bn)),O+=2):c.join==="round"?ar?(g.push(Fn,wn),g.push(x+X*ut,U+Y*ut),O+=kn(x,U,x+X*ut,U+Y*ut,x+lt*ut,U+Gt*ut,g,!0)+4,g.push(Fn,wn),g.push(x+lt*ut,U+Gt*ut)):(g.push(x-X*K,U-Y*K),g.push(Gn,Bn),O+=kn(x,U,x-X*K,U-Y*K,x-lt*K,U-Gt*K,g,!1)+4,g.push(x-lt*K,U-Gt*K),g.push(Gn,Bn)):(g.push(Fn,wn),g.push(Gn,Bn)):(g.push(x-X*K,U-Y*K),g.push(x+X*ut,U+Y*ut),c.join==="round"?ar?O+=kn(x,U,x+X*ut,U+Y*ut,x+lt*ut,U+Gt*ut,g,!0)+2:O+=kn(x,U,x-X*K,U-Y*K,x-lt*K,U-Gt*K,g,!1)+2:c.join==="miter"&&rE/P<=L&&(ar?(g.push(Gn,Bn),g.push(Gn,Bn)):(g.push(Fn,wn),g.push(Fn,wn)),O+=2),g.push(x-lt*K,U-Gt*K),g.push(x+lt*ut,U+Gt*ut),O+=2)}N=i[(m-2)*2],F=i[(m-2)*2+1],x=i[(m-1)*2],U=i[(m-1)*2+1],X=-(F-U),Y=N-x,V=Math.sqrt(X*X+Y*Y),X/=V,Y/=V,X*=C,Y*=C,g.push(x-X*K,U-Y*K),g.push(x+X*ut,U+Y*ut),f||(c.cap==="round"?O+=kn(x-X*(K-ut)*.5,U-Y*(K-ut)*.5,x-X*K,U-Y*K,x+X*ut,U+Y*ut,g,!1)+2:c.cap==="square"&&(O+=VO(x,U,X,Y,K,ut,!1,g)));const Kr=zO*zO;for(let re=y;re<O+y-2;++re)N=g[re*2],F=g[re*2+1],x=g[(re+1)*2],U=g[(re+1)*2+1],k=g[(re+2)*2],gt=g[(re+2)*2+1],!(Math.abs(N*(U-gt)+x*(gt-F)+k*(F-U))<Kr)&&o.push(re,re+1,re+2)}function _C(i,t,e,s,r,n,a){const o=g9(i,t,2);if(!o)return;for(let l=0;l<o.length;l+=3)n[a++]=o[l]+r,n[a++]=o[l+1]+r,n[a++]=o[l+2]+r;let u=r*s;for(let l=0;l<i.length;l+=2)e[u]=i[l],e[u+1]=i[l+1],u+=s}const dq=[],fq={extension:{type:B.ShapeBuilder,name:"polygon"},build(i,t){for(let e=0;e<i.points.length;e++)t[e]=i.points[e];return t},triangulate(i,t,e,s,r,n){_C(i,dq,t,e,s,r,n)}},gq={extension:{type:B.ShapeBuilder,name:"rectangle"},build(i,t){const e=i,s=e.x,r=e.y,n=e.width,a=e.height;return n>=0&&a>=0&&(t[0]=s,t[1]=r,t[2]=s+n,t[3]=r,t[4]=s+n,t[5]=r+a,t[6]=s,t[7]=r+a),t},triangulate(i,t,e,s,r,n){let a=0;s*=e,t[s+a]=i[0],t[s+a+1]=i[1],a+=e,t[s+a]=i[2],t[s+a+1]=i[3],a+=e,t[s+a]=i[6],t[s+a+1]=i[7],a+=e,t[s+a]=i[4],t[s+a+1]=i[5],a+=e;const o=s/e;r[n++]=o,r[n++]=o+1,r[n++]=o+2,r[n++]=o+1,r[n++]=o+3,r[n++]=o+2}},pq={extension:{type:B.ShapeBuilder,name:"triangle"},build(i,t){return t[0]=i.x,t[1]=i.y,t[2]=i.x2,t[3]=i.y2,t[4]=i.x3,t[5]=i.y3,t},triangulate(i,t,e,s,r,n){let a=0;s*=e,t[s+a]=i[0],t[s+a+1]=i[1],a+=e,t[s+a]=i[2],t[s+a+1]=i[3],a+=e,t[s+a]=i[4],t[s+a+1]=i[5];const o=s/e;r[n++]=o,r[n++]=o+1,r[n++]=o+2}},Am={};fe.handleByMap(B.ShapeBuilder,Am);fe.add(gq,fq,pq,zl,uq,lq);const mq=new Kt;function Eq(i,t){const{geometryData:e,batches:s}=t;s.length=0,e.indices.length=0,e.vertices.length=0,e.uvs.length=0;for(let r=0;r<i.instructions.length;r++){const n=i.instructions[r];if(n.action==="texture")Tq(n.data,s,e);else if(n.action==="fill"||n.action==="stroke"){const a=n.action==="stroke",o=n.data.path.shapePath,u=n.data.style,l=n.data.hole;a&&l&&HO(l.shapePath,u,null,!0,s,e),HO(o,u,l,a,s,e)}}}function Tq(i,t,e){const{vertices:s,uvs:r,indices:n}=e,a=n.length,o=s.length/2,u=[],l=Am.rectangle,c=mq,h=i.image;c.x=i.dx,c.y=i.dy,c.width=i.dw,c.height=i.dh;const _=i.transform;l.build(c,u),_&&cC(u,_),l.triangulate(u,s,2,o,n,a);const d=h.uvs;r.push(d.x0,d.y0,d.x1,d.y1,d.x3,d.y3,d.x2,d.y2);const f=ls.get(jI);f.indexOffset=a,f.indexSize=n.length-a,f.attributeOffset=o,f.attributeSize=s.length/2-o,f.baseColor=i.style,f.alpha=i.alpha,f.texture=h,f.geometryData=e,t.push(f)}function HO(i,t,e,s,r,n){const{vertices:a,uvs:o,indices:u}=n,l=i.shapePrimitives.length-1;i.shapePrimitives.forEach(({shape:c,transform:h},_)=>{const d=u.length,f=a.length/2,p=[],g=Am[c.type];if(g.build(c,p),h&&cC(p,h),s){const C=c.closePath??!0;_q(p,t,!1,C,a,2,f,u)}else if(e&&l===_){l!==0&&console.warn("[Pixi Graphics] only the last shape have be cut out");const C=[],P=p.slice();Iq(e.shapePath).forEach(N=>{C.push(P.length/2),P.push(...N)}),_C(P,C,a,2,f,u,d)}else g.triangulate(p,a,2,f,u,d);const m=o.length/2,O=t.texture;if(O!==W.WHITE){const C=t.matrix;C&&(h&&C.append(h.clone().invert()),rq(a,2,f,o,m,2,a.length/2-f,C))}else nq(o,m,2,a.length/2-f);const y=ls.get(jI);y.indexOffset=d,y.indexSize=u.length-d,y.attributeOffset=f,y.attributeSize=a.length/2-f,y.baseColor=t.color,y.alpha=t.alpha,y.texture=O,y.geometryData=n,r.push(y)})}function Iq(i){if(!i)return[];const t=i.shapePrimitives,e=[];for(let s=0;s<t.length;s++){const r=t[s].shape,n=[];Am[r.type].build(r,n),e.push(n)}return e}class Sq{constructor(){this.batches=[],this.geometryData={vertices:[],uvs:[],indices:[]}}}class Rq{constructor(){this.batcher=new WI,this.instructions=new gv}init(){this.instructions.reset()}get geometry(){return ct(ZX,"GraphicsContextRenderData#geometry is deprecated, please use batcher.geometry instead."),this.batcher.geometry}}const KI=class ST{constructor(t){this._gpuContextHash={},this._graphicsDataContextHash=Object.create(null),t.renderableGC.addManagedHash(this,"_gpuContextHash"),t.renderableGC.addManagedHash(this,"_graphicsDataContextHash")}init(t){ST.defaultOptions.bezierSmoothness=(t==null?void 0:t.bezierSmoothness)??ST.defaultOptions.bezierSmoothness}getContextRenderData(t){return this._graphicsDataContextHash[t.uid]||this._initContextRenderData(t)}updateGpuContext(t){let e=this._gpuContextHash[t.uid]||this._initContext(t);if(t.dirty){e?this._cleanGraphicsContextData(t):e=this._initContext(t),Eq(t,e);const s=t.batchMode;t.customShader||s==="no-batch"?e.isBatchable=!1:s==="auto"&&(e.isBatchable=e.geometryData.vertices.length<400),t.dirty=!1}return e}getGpuContext(t){return this._gpuContextHash[t.uid]||this._initContext(t)}_initContextRenderData(t){const e=ls.get(Rq),{batches:s,geometryData:r}=this._gpuContextHash[t.uid],n=r.vertices.length,a=r.indices.length;for(let c=0;c<s.length;c++)s[c].applyTransform=!1;const o=e.batcher;o.ensureAttributeBuffer(n),o.ensureIndexBuffer(a),o.begin();for(let c=0;c<s.length;c++){const h=s[c];o.add(h)}o.finish(e.instructions);const u=o.geometry;u.indexBuffer.setDataWithSize(o.indexBuffer,o.indexSize,!0),u.buffers[0].setDataWithSize(o.attributeBuffer.float32View,o.attributeSize,!0);const l=o.batches;for(let c=0;c<l.length;c++){const h=l[c];h.bindGroup=VI(h.textures.textures,h.textures.count)}return this._graphicsDataContextHash[t.uid]=e,e}_initContext(t){const e=new Sq;return e.context=t,this._gpuContextHash[t.uid]=e,t.on("destroy",this.onGraphicsContextDestroy,this),this._gpuContextHash[t.uid]}onGraphicsContextDestroy(t){this._cleanGraphicsContextData(t),t.off("destroy",this.onGraphicsContextDestroy,this),this._gpuContextHash[t.uid]=null}_cleanGraphicsContextData(t){const e=this._gpuContextHash[t.uid];e.isBatchable||this._graphicsDataContextHash[t.uid]&&(ls.return(this.getContextRenderData(t)),this._graphicsDataContextHash[t.uid]=null),e.batches&&e.batches.forEach(s=>{ls.return(s)})}destroy(){for(const t in this._gpuContextHash)this._gpuContextHash[t]&&this.onGraphicsContextDestroy(this._gpuContextHash[t].context)}};KI.extension={type:[B.WebGLSystem,B.WebGPUSystem,B.CanvasSystem],name:"graphicsContext"};KI.defaultOptions={bezierSmoothness:.5};let XI=KI;const Aq=8,Sc=11920929e-14,Oq=1;function dC(i,t,e,s,r,n,a,o,u,l){const h=Math.min(.99,Math.max(0,l??XI.defaultOptions.bezierSmoothness));let _=(Oq-h)/1;return _*=_,yq(t,e,s,r,n,a,o,u,i,_),i}function yq(i,t,e,s,r,n,a,o,u,l){RT(i,t,e,s,r,n,a,o,u,l,0),u.push(a,o)}function RT(i,t,e,s,r,n,a,o,u,l,c){if(c>Aq)return;const h=(i+e)/2,_=(t+s)/2,d=(e+r)/2,f=(s+n)/2,p=(r+a)/2,g=(n+o)/2,m=(h+d)/2,O=(_+f)/2,y=(d+p)/2,C=(f+g)/2,P=(m+y)/2,L=(O+C)/2;if(c>0){let N=a-i,F=o-t;const x=Math.abs((e-a)*F-(s-o)*N),U=Math.abs((r-a)*F-(n-o)*N);if(x>Sc&&U>Sc){if((x+U)*(x+U)<=l*(N*N+F*F)){u.push(P,L);return}}else if(x>Sc){if(x*x<=l*(N*N+F*F)){u.push(P,L);return}}else if(U>Sc){if(U*U<=l*(N*N+F*F)){u.push(P,L);return}}else if(N=P-(i+a)/2,F=L-(t+o)/2,N*N+F*F<=l){u.push(P,L);return}}RT(i,t,h,_,m,O,P,L,u,l,c+1),RT(P,L,y,C,p,g,a,o,u,l,c+1)}const vq=8,Cq=11920929e-14,Mq=1;function xq(i,t,e,s,r,n,a,o){const l=Math.min(.99,Math.max(0,o??XI.defaultOptions.bezierSmoothness));let c=(Mq-l)/1;return c*=c,Pq(t,e,s,r,n,a,i,c),i}function Pq(i,t,e,s,r,n,a,o){AT(a,i,t,e,s,r,n,o,0),a.push(r,n)}function AT(i,t,e,s,r,n,a,o,u){if(u>vq)return;const l=(t+s)/2,c=(e+r)/2,h=(s+n)/2,_=(r+a)/2,d=(l+h)/2,f=(c+_)/2;let p=n-t,g=a-e;const m=Math.abs((s-n)*g-(r-a)*p);if(m>Cq){if(m*m<=o*(p*p+g*g)){i.push(d,f);return}}else if(p=d-(t+n)/2,g=f-(e+a)/2,p*p+g*g<=o){i.push(d,f);return}AT(i,t,e,l,c,d,f,o,u+1),AT(i,d,f,h,_,n,a,o,u+1)}function fC(i,t,e,s,r,n,a,o){let u=Math.abs(r-n);(!a&&r>n||a&&n>r)&&(u=2*Math.PI-u),o=o||Math.max(6,Math.floor(6*Math.pow(s,1/3)*(u/Math.PI))),o=Math.max(o,3);let l=u/o,c=r;l*=a?-1:1;for(let h=0;h<o+1;h++){const _=Math.cos(c),d=Math.sin(c),f=t+_*s,p=e+d*s;i.push(f,p),c+=l}}function bq(i,t,e,s,r,n){const a=i[i.length-2],u=i[i.length-1]-e,l=a-t,c=r-e,h=s-t,_=Math.abs(u*h-l*c);if(_<1e-8||n===0){(i[i.length-2]!==t||i[i.length-1]!==e)&&i.push(t,e);return}const d=u*u+l*l,f=c*c+h*h,p=u*c+l*h,g=n*Math.sqrt(d)/_,m=n*Math.sqrt(f)/_,O=g*p/d,y=m*p/f,C=g*h+m*l,P=g*c+m*u,L=l*(m+O),N=u*(m+O),F=h*(g+y),x=c*(g+y),U=Math.atan2(N-P,L-C),k=Math.atan2(x-P,F-C);fC(i,C+t,P+e,n,U,k,l*c>h*u)}const Wu=Math.PI*2,NE={centerX:0,centerY:0,ang1:0,ang2:0},UE=({x:i,y:t},e,s,r,n,a,o,u)=>{i*=e,t*=s;const l=r*i-n*t,c=n*i+r*t;return u.x=l+a,u.y=c+o,u};function Nq(i,t){const e=t===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(t/4),s=t===1.5707963267948966?.551915024494:e,r=Math.cos(i),n=Math.sin(i),a=Math.cos(i+t),o=Math.sin(i+t);return[{x:r-n*s,y:n+r*s},{x:a+o*s,y:o-a*s},{x:a,y:o}]}const YO=(i,t,e,s)=>{const r=i*s-t*e<0?-1:1;let n=i*e+t*s;return n>1&&(n=1),n<-1&&(n=-1),r*Math.acos(n)},Uq=(i,t,e,s,r,n,a,o,u,l,c,h,_)=>{const d=Math.pow(r,2),f=Math.pow(n,2),p=Math.pow(c,2),g=Math.pow(h,2);let m=d*f-d*g-f*p;m<0&&(m=0),m/=d*g+f*p,m=Math.sqrt(m)*(a===o?-1:1);const O=m*r/n*h,y=m*-n/r*c,C=l*O-u*y+(i+e)/2,P=u*O+l*y+(t+s)/2,L=(c-O)/r,N=(h-y)/n,F=(-c-O)/r,x=(-h-y)/n,U=YO(1,0,L,N);let k=YO(L,N,F,x);o===0&&k>0&&(k-=Wu),o===1&&k<0&&(k+=Wu),_.centerX=C,_.centerY=P,_.ang1=U,_.ang2=k};function Dq(i,t,e,s,r,n,a,o=0,u=0,l=0){if(n===0||a===0)return;const c=Math.sin(o*Wu/360),h=Math.cos(o*Wu/360),_=h*(t-s)/2+c*(e-r)/2,d=-c*(t-s)/2+h*(e-r)/2;if(_===0&&d===0)return;n=Math.abs(n),a=Math.abs(a);const f=Math.pow(_,2)/Math.pow(n,2)+Math.pow(d,2)/Math.pow(a,2);f>1&&(n*=Math.sqrt(f),a*=Math.sqrt(f)),Uq(t,e,s,r,n,a,u,l,c,h,_,d,NE);let{ang1:p,ang2:g}=NE;const{centerX:m,centerY:O}=NE;let y=Math.abs(g)/(Wu/4);Math.abs(1-y)<1e-7&&(y=1);const C=Math.max(Math.ceil(y),1);g/=C;let P=i[i.length-2],L=i[i.length-1];const N={x:0,y:0};for(let F=0;F<C;F++){const x=Nq(p,g),{x:U,y:k}=UE(x[0],n,a,h,c,m,O,N),{x:gt,y:X}=UE(x[1],n,a,h,c,m,O,N),{x:Y,y:lt}=UE(x[2],n,a,h,c,m,O,N);dC(i,P,L,U,k,gt,X,Y,lt),P=Y,L=lt,p+=g}}function Lq(i,t,e){const s=(a,o)=>{const u=o.x-a.x,l=o.y-a.y,c=Math.sqrt(u*u+l*l),h=u/c,_=l/c;return{len:c,nx:h,ny:_}},r=(a,o)=>{a===0?i.moveTo(o.x,o.y):i.lineTo(o.x,o.y)};let n=t[t.length-1];for(let a=0;a<t.length;a++){const o=t[a%t.length],u=o.radius??e;if(u<=0){r(a,o),n=o;continue}const l=t[(a+1)%t.length],c=s(o,n),h=s(o,l);if(c.len<1e-4||h.len<1e-4){r(a,o),n=o;continue}let _=Math.asin(c.nx*h.ny-c.ny*h.nx),d=1,f=!1;c.nx*h.nx-c.ny*-h.ny<0?_<0?_=Math.PI+_:(_=Math.PI-_,d=-1,f=!0):_>0&&(d=-1,f=!0);const p=_/2;let g,m=Math.abs(Math.cos(p)*u/Math.sin(p));m>Math.min(c.len/2,h.len/2)?(m=Math.min(c.len/2,h.len/2),g=Math.abs(m*Math.sin(p)/Math.cos(p))):g=u;const O=o.x+h.nx*m+-h.ny*g*d,y=o.y+h.ny*m+h.nx*g*d,C=Math.atan2(c.ny,c.nx)+Math.PI/2*d,P=Math.atan2(h.ny,h.nx)-Math.PI/2*d;a===0&&i.moveTo(O+Math.cos(C)*g,y+Math.sin(C)*g),i.arc(O,y,g,C,P,f),n=o}}function Fq(i,t,e,s){const r=(o,u)=>Math.sqrt((o.x-u.x)**2+(o.y-u.y)**2),n=(o,u,l)=>({x:o.x+(u.x-o.x)*l,y:o.y+(u.y-o.y)*l}),a=t.length;for(let o=0;o<a;o++){const u=t[(o+1)%a],l=u.radius??e;if(l<=0){o===0?i.moveTo(u.x,u.y):i.lineTo(u.x,u.y);continue}const c=t[o],h=t[(o+2)%a],_=r(c,u);let d;if(_<1e-4)d=u;else{const g=Math.min(_/2,l);d=n(u,c,g/_)}const f=r(h,u);let p;if(f<1e-4)p=u;else{const g=Math.min(f/2,l);p=n(u,h,g/f)}o===0?i.moveTo(d.x,d.y):i.lineTo(d.x,d.y),i.quadraticCurveTo(u.x,u.y,p.x,p.y,s)}}const wq=new Kt;class Gq{constructor(t){this.shapePrimitives=[],this._currentPoly=null,this._bounds=new Bs,this._graphicsPath2D=t}moveTo(t,e){return this.startPoly(t,e),this}lineTo(t,e){this._ensurePoly();const s=this._currentPoly.points,r=s[s.length-2],n=s[s.length-1];return(r!==t||n!==e)&&s.push(t,e),this}arc(t,e,s,r,n,a){this._ensurePoly(!1);const o=this._currentPoly.points;return fC(o,t,e,s,r,n,a),this}arcTo(t,e,s,r,n){this._ensurePoly();const a=this._currentPoly.points;return bq(a,t,e,s,r,n),this}arcToSvg(t,e,s,r,n,a,o){const u=this._currentPoly.points;return Dq(u,this._currentPoly.lastX,this._currentPoly.lastY,a,o,t,e,s,r,n),this}bezierCurveTo(t,e,s,r,n,a,o){this._ensurePoly();const u=this._currentPoly;return dC(this._currentPoly.points,u.lastX,u.lastY,t,e,s,r,n,a,o),this}quadraticCurveTo(t,e,s,r,n){this._ensurePoly();const a=this._currentPoly;return xq(this._currentPoly.points,a.lastX,a.lastY,t,e,s,r,n),this}closePath(){return this.endPoly(!0),this}addPath(t,e){this.endPoly(),e&&!e.isIdentity()&&(t=t.clone(!0),t.transform(e));for(let s=0;s<t.instructions.length;s++){const r=t.instructions[s];this[r.action](...r.data)}return this}finish(t=!1){this.endPoly(t)}rect(t,e,s,r,n){return this.drawShape(new Kt(t,e,s,r),n),this}circle(t,e,s,r){return this.drawShape(new BI(t,e,s),r),this}poly(t,e,s){const r=new Yu(t);return r.closePath=e,this.drawShape(r,s),this}regularPoly(t,e,s,r,n=0,a){r=Math.max(r|0,3);const o=-1*Math.PI/2+n,u=Math.PI*2/r,l=[];for(let c=0;c<r;c++){const h=c*u+o;l.push(t+s*Math.cos(h),e+s*Math.sin(h))}return this.poly(l,!0,a),this}roundPoly(t,e,s,r,n,a=0,o){if(r=Math.max(r|0,3),n<=0)return this.regularPoly(t,e,s,r,a);const u=s*Math.sin(Math.PI/r)-.001;n=Math.min(n,u);const l=-1*Math.PI/2+a,c=Math.PI*2/r,h=(r-2)*Math.PI/r/2;for(let _=0;_<r;_++){const d=_*c+l,f=t+s*Math.cos(d),p=e+s*Math.sin(d),g=d+Math.PI+h,m=d-Math.PI-h,O=f+n*Math.cos(g),y=p+n*Math.sin(g),C=f+n*Math.cos(m),P=p+n*Math.sin(m);_===0?this.moveTo(O,y):this.lineTo(O,y),this.quadraticCurveTo(f,p,C,P,o)}return this.closePath()}roundShape(t,e,s=!1,r){return t.length<3?this:(s?Fq(this,t,e,r):Lq(this,t,e),this.closePath())}filletRect(t,e,s,r,n){if(n===0)return this.rect(t,e,s,r);const a=Math.min(s,r)/2,o=Math.min(a,Math.max(-a,n)),u=t+s,l=e+r,c=o<0?-o:0,h=Math.abs(o);return this.moveTo(t,e+h).arcTo(t+c,e+c,t+h,e,h).lineTo(u-h,e).arcTo(u-c,e+c,u,e+h,h).lineTo(u,l-h).arcTo(u-c,l-c,t+s-h,l,h).lineTo(t+h,l).arcTo(t+c,l-c,t,l-h,h).closePath()}chamferRect(t,e,s,r,n,a){if(n<=0)return this.rect(t,e,s,r);const o=Math.min(n,Math.min(s,r)/2),u=t+s,l=e+r,c=[t+o,e,u-o,e,u,e+o,u,l-o,u-o,l,t+o,l,t,l-o,t,e+o];for(let h=c.length-1;h>=2;h-=2)c[h]===c[h-2]&&c[h-1]===c[h-3]&&c.splice(h-1,2);return this.poly(c,!0,a)}ellipse(t,e,s,r,n){return this.drawShape(new kI(t,e,s,r),n),this}roundRect(t,e,s,r,n,a){return this.drawShape(new zI(t,e,s,r,n),a),this}drawShape(t,e){return this.endPoly(),this.shapePrimitives.push({shape:t,transform:e}),this}startPoly(t,e){let s=this._currentPoly;return s&&this.endPoly(),s=new Yu,s.points.push(t,e),this._currentPoly=s,this}endPoly(t=!1){const e=this._currentPoly;return e&&e.points.length>2&&(e.closePath=t,this.shapePrimitives.push({shape:e})),this._currentPoly=null,this}_ensurePoly(t=!0){if(!this._currentPoly&&(this._currentPoly=new Yu,t)){const e=this.shapePrimitives[this.shapePrimitives.length-1];if(e){let s=e.shape.x,r=e.shape.y;if(e.transform&&!e.transform.isIdentity()){const n=e.transform,a=s;s=n.a*s+n.c*r+n.tx,r=n.b*a+n.d*r+n.ty}this._currentPoly.points.push(s,r)}else this._currentPoly.points.push(0,0)}}buildPath(){const t=this._graphicsPath2D;this.shapePrimitives.length=0,this._currentPoly=null;for(let e=0;e<t.instructions.length;e++){const s=t.instructions[e];this[s.action](...s.data)}this.finish()}get bounds(){const t=this._bounds;t.clear();const e=this.shapePrimitives;for(let s=0;s<e.length;s++){const r=e[s],n=r.shape.getBounds(wq);r.transform?t.addRect(n,r.transform):t.addRect(n)}return t}}class Zo{constructor(t){this.instructions=[],this.uid=Se("graphicsPath"),this._dirty=!0,typeof t=="string"?y9(t,this):this.instructions=(t==null?void 0:t.slice())??[]}get shapePath(){return this._shapePath||(this._shapePath=new Gq(this)),this._dirty&&(this._dirty=!1,this._shapePath.buildPath()),this._shapePath}addPath(t,e){return t=t.clone(),this.instructions.push({action:"addPath",data:[t,e]}),this._dirty=!0,this}arc(...t){return this.instructions.push({action:"arc",data:t}),this._dirty=!0,this}arcTo(...t){return this.instructions.push({action:"arcTo",data:t}),this._dirty=!0,this}arcToSvg(...t){return this.instructions.push({action:"arcToSvg",data:t}),this._dirty=!0,this}bezierCurveTo(...t){return this.instructions.push({action:"bezierCurveTo",data:t}),this._dirty=!0,this}bezierCurveToShort(t,e,s,r,n){const a=this.instructions[this.instructions.length-1],o=this.getLastPoint(st.shared);let u=0,l=0;if(!a||a.action!=="bezierCurveTo")u=o.x,l=o.y;else{u=a.data[2],l=a.data[3];const c=o.x,h=o.y;u=c+(c-u),l=h+(h-l)}return this.instructions.push({action:"bezierCurveTo",data:[u,l,t,e,s,r,n]}),this._dirty=!0,this}closePath(){return this.instructions.push({action:"closePath",data:[]}),this._dirty=!0,this}ellipse(...t){return this.instructions.push({action:"ellipse",data:t}),this._dirty=!0,this}lineTo(...t){return this.instructions.push({action:"lineTo",data:t}),this._dirty=!0,this}moveTo(...t){return this.instructions.push({action:"moveTo",data:t}),this}quadraticCurveTo(...t){return this.instructions.push({action:"quadraticCurveTo",data:t}),this._dirty=!0,this}quadraticCurveToShort(t,e,s){const r=this.instructions[this.instructions.length-1],n=this.getLastPoint(st.shared);let a=0,o=0;if(!r||r.action!=="quadraticCurveTo")a=n.x,o=n.y;else{a=r.data[0],o=r.data[1];const u=n.x,l=n.y;a=u+(u-a),o=l+(l-o)}return this.instructions.push({action:"quadraticCurveTo",data:[a,o,t,e,s]}),this._dirty=!0,this}rect(t,e,s,r,n){return this.instructions.push({action:"rect",data:[t,e,s,r,n]}),this._dirty=!0,this}circle(t,e,s,r){return this.instructions.push({action:"circle",data:[t,e,s,r]}),this._dirty=!0,this}roundRect(...t){return this.instructions.push({action:"roundRect",data:t}),this._dirty=!0,this}poly(...t){return this.instructions.push({action:"poly",data:t}),this._dirty=!0,this}regularPoly(...t){return this.instructions.push({action:"regularPoly",data:t}),this._dirty=!0,this}roundPoly(...t){return this.instructions.push({action:"roundPoly",data:t}),this._dirty=!0,this}roundShape(...t){return this.instructions.push({action:"roundShape",data:t}),this._dirty=!0,this}filletRect(...t){return this.instructions.push({action:"filletRect",data:t}),this._dirty=!0,this}chamferRect(...t){return this.instructions.push({action:"chamferRect",data:t}),this._dirty=!0,this}star(t,e,s,r,n,a,o){n=n||r/2;const u=-1*Math.PI/2+a,l=s*2,c=Math.PI*2/l,h=[];for(let _=0;_<l;_++){const d=_%2?n:r,f=_*c+u;h.push(t+d*Math.cos(f),e+d*Math.sin(f))}return this.poly(h,!0,o),this}clone(t=!1){const e=new Zo;if(!t)e.instructions=this.instructions.slice();else for(let s=0;s<this.instructions.length;s++){const r=this.instructions[s];e.instructions.push({action:r.action,data:r.data.slice()})}return e}clear(){return this.instructions.length=0,this._dirty=!0,this}transform(t){if(t.isIdentity())return this;const e=t.a,s=t.b,r=t.c,n=t.d,a=t.tx,o=t.ty;let u=0,l=0,c=0,h=0,_=0,d=0,f=0,p=0;for(let g=0;g<this.instructions.length;g++){const m=this.instructions[g],O=m.data;switch(m.action){case"moveTo":case"lineTo":u=O[0],l=O[1],O[0]=e*u+r*l+a,O[1]=s*u+n*l+o;break;case"bezierCurveTo":c=O[0],h=O[1],_=O[2],d=O[3],u=O[4],l=O[5],O[0]=e*c+r*h+a,O[1]=s*c+n*h+o,O[2]=e*_+r*d+a,O[3]=s*_+n*d+o,O[4]=e*u+r*l+a,O[5]=s*u+n*l+o;break;case"quadraticCurveTo":c=O[0],h=O[1],u=O[2],l=O[3],O[0]=e*c+r*h+a,O[1]=s*c+n*h+o,O[2]=e*u+r*l+a,O[3]=s*u+n*l+o;break;case"arcToSvg":u=O[5],l=O[6],f=O[0],p=O[1],O[0]=e*f+r*p,O[1]=s*f+n*p,O[5]=e*u+r*l+a,O[6]=s*u+n*l+o;break;case"circle":O[4]=xu(O[3],t);break;case"rect":O[4]=xu(O[4],t);break;case"ellipse":O[8]=xu(O[8],t);break;case"roundRect":O[5]=xu(O[5],t);break;case"addPath":O[0].transform(t);break;case"poly":O[2]=xu(O[2],t);break;default:le("unknown transform action",m.action);break}}return this._dirty=!0,this}get bounds(){return this.shapePath.bounds}getLastPoint(t){let e=this.instructions.length-1,s=this.instructions[e];if(!s)return t.x=0,t.y=0,t;for(;s.action==="closePath";){if(e--,e<0)return t.x=0,t.y=0,t;s=this.instructions[e]}switch(s.action){case"moveTo":case"lineTo":t.x=s.data[0],t.y=s.data[1];break;case"quadraticCurveTo":t.x=s.data[2],t.y=s.data[3];break;case"bezierCurveTo":t.x=s.data[4],t.y=s.data[5];break;case"arc":case"arcToSvg":t.x=s.data[5],t.y=s.data[6];break;case"addPath":s.data[0].getLastPoint(t);break}return t}}function xu(i,t){return i?i.prepend(t):t.clone()}function Bq(i,t){if(typeof i=="string"){const s=document.createElement("div");s.innerHTML=i.trim(),i=s.querySelector("svg")}const e={context:t,path:new Zo};return gC(i,e,null,null),t}function gC(i,t,e,s){const r=i.children,{fillStyle:n,strokeStyle:a}=kq(i);n&&e?e={...e,...n}:n&&(e=n),a&&s?s={...s,...a}:a&&(s=a),t.context.fillStyle=e,t.context.strokeStyle=s;let o,u,l,c,h,_,d,f,p,g,m,O,y,C,P,L,N;switch(i.nodeName.toLowerCase()){case"path":C=i.getAttribute("d"),P=new Zo(C),t.context.path(P),e&&t.context.fill(),s&&t.context.stroke();break;case"circle":d=Le(i,"cx",0),f=Le(i,"cy",0),p=Le(i,"r",0),t.context.ellipse(d,f,p,p),e&&t.context.fill(),s&&t.context.stroke();break;case"rect":o=Le(i,"x",0),u=Le(i,"y",0),L=Le(i,"width",0),N=Le(i,"height",0),g=Le(i,"rx",0),m=Le(i,"ry",0),g||m?t.context.roundRect(o,u,L,N,g||m):t.context.rect(o,u,L,N),e&&t.context.fill(),s&&t.context.stroke();break;case"ellipse":d=Le(i,"cx",0),f=Le(i,"cy",0),g=Le(i,"rx",0),m=Le(i,"ry",0),t.context.beginPath(),t.context.ellipse(d,f,g,m),e&&t.context.fill(),s&&t.context.stroke();break;case"line":l=Le(i,"x1",0),c=Le(i,"y1",0),h=Le(i,"x2",0),_=Le(i,"y2",0),t.context.beginPath(),t.context.moveTo(l,c),t.context.lineTo(h,_),s&&t.context.stroke();break;case"polygon":y=i.getAttribute("points"),O=y.match(/\d+/g).map(F=>parseInt(F,10)),t.context.poly(O,!0),e&&t.context.fill(),s&&t.context.stroke();break;case"polyline":y=i.getAttribute("points"),O=y.match(/\d+/g).map(F=>parseInt(F,10)),t.context.poly(O,!1),s&&t.context.stroke();break;case"g":case"svg":break;default:{console.info(`[SVG parser] <${i.nodeName}> elements unsupported`);break}}for(let F=0;F<r.length;F++)gC(r[F],t,e,s)}function Le(i,t,e){const s=i.getAttribute(t);return s?Number(s):e}function kq(i){const t=i.getAttribute("style"),e={},s={};let r=!1,n=!1;if(t){const a=t.split(";");for(let o=0;o<a.length;o++){const u=a[o],[l,c]=u.split(":");switch(l){case"stroke":c!=="none"&&(e.color=Mt.shared.setValue(c).toNumber(),n=!0);break;case"stroke-width":e.width=Number(c);break;case"fill":c!=="none"&&(r=!0,s.color=Mt.shared.setValue(c).toNumber());break;case"fill-opacity":s.alpha=Number(c);break;case"stroke-opacity":e.alpha=Number(c);break;case"opacity":s.alpha=Number(c),e.alpha=Number(c);break}}}else{const a=i.getAttribute("stroke");a&&a!=="none"&&(n=!0,e.color=Mt.shared.setValue(a).toNumber(),e.width=Le(i,"stroke-width",1));const o=i.getAttribute("fill");o&&o!=="none"&&(r=!0,s.color=Mt.shared.setValue(o).toNumber())}return{strokeStyle:n?e:null,fillStyle:r?s:null}}function zq(i){return Mt.isColorLike(i)}function WO(i){return i instanceof Tm}function jO(i){return i instanceof kl}function Vq(i,t,e){const s=Mt.shared.setValue(t??0);return i.color=s.toNumber(),i.alpha=s.alpha===1?e.alpha:s.alpha,i.texture=W.WHITE,{...e,...i}}function KO(i,t,e){return i.fill=t,i.color=16777215,i.texture=t.texture,i.matrix=t.transform,{...e,...i}}function XO(i,t,e){return t.buildLinearGradient(),i.fill=t,i.color=16777215,i.texture=t.texture,i.matrix=t.transform,{...e,...i}}function Hq(i,t){var r;const e={...t,...i};if(e.texture){if(e.texture!==W.WHITE){const a=((r=e.matrix)==null?void 0:r.invert())||new ot;a.translate(e.texture.frame.x,e.texture.frame.y),a.scale(1/e.texture.source.width,1/e.texture.source.height),e.matrix=a}const n=e.texture.source.style;n.addressMode==="clamp-to-edge"&&(n.addressMode="repeat",n.update())}const s=Mt.shared.setValue(e.color);return e.alpha*=s.alpha,e.color=s.toNumber(),e.matrix=e.matrix?e.matrix.clone():null,e}function pa(i,t){if(i==null)return null;const e={},s=i;return zq(i)?Vq(e,i,t):WO(i)?KO(e,i,t):jO(i)?XO(e,i,t):s.fill&&WO(s.fill)?KO(s,s.fill,t):s.fill&&jO(s.fill)?XO(s,s.fill,t):Hq(s,t)}function s_(i,t){const{width:e,alignment:s,miterLimit:r,cap:n,join:a,...o}=t,u=pa(i,o);return u?{width:e,alignment:s,miterLimit:r,cap:n,join:a,...u}:null}const Yq=new st,qO=new ot,qI=class Mi extends ks{constructor(){super(...arguments),this.uid=Se("graphicsContext"),this.dirty=!0,this.batchMode="auto",this.instructions=[],this._activePath=new Zo,this._transform=new ot,this._fillStyle={...Mi.defaultFillStyle},this._strokeStyle={...Mi.defaultStrokeStyle},this._stateStack=[],this._tick=0,this._bounds=new Bs,this._boundsDirty=!0}clone(){const t=new Mi;return t.batchMode=this.batchMode,t.instructions=this.instructions.slice(),t._activePath=this._activePath.clone(),t._transform=this._transform.clone(),t._fillStyle={...this._fillStyle},t._strokeStyle={...this._strokeStyle},t._stateStack=this._stateStack.slice(),t._bounds=this._bounds.clone(),t._boundsDirty=!0,t}get fillStyle(){return this._fillStyle}set fillStyle(t){this._fillStyle=pa(t,Mi.defaultFillStyle)}get strokeStyle(){return this._strokeStyle}set strokeStyle(t){this._strokeStyle=s_(t,Mi.defaultStrokeStyle)}setFillStyle(t){return this._fillStyle=pa(t,Mi.defaultFillStyle),this}setStrokeStyle(t){return this._strokeStyle=pa(t,Mi.defaultStrokeStyle),this}texture(t,e,s,r,n,a){return this.instructions.push({action:"texture",data:{image:t,dx:s||0,dy:r||0,dw:n||t.frame.width,dh:a||t.frame.height,transform:this._transform.clone(),alpha:this._fillStyle.alpha,style:e?Mt.shared.setValue(e).toNumber():16777215}}),this.onUpdate(),this}beginPath(){return this._activePath=new Zo,this}fill(t,e){let s;const r=this.instructions[this.instructions.length-1];return this._tick===0&&r&&r.action==="stroke"?s=r.data.path:s=this._activePath.clone(),s?(t!=null&&(e!==void 0&&typeof t=="number"&&(ct(Te,"GraphicsContext.fill(color, alpha) is deprecated, use GraphicsContext.fill({ color, alpha }) instead"),t={color:t,alpha:e}),this._fillStyle=pa(t,Mi.defaultFillStyle)),this.instructions.push({action:"fill",data:{style:this.fillStyle,path:s}}),this.onUpdate(),this._initNextPathLocation(),this._tick=0,this):this}_initNextPathLocation(){const{x:t,y:e}=this._activePath.getLastPoint(st.shared);this._activePath.clear(),this._activePath.moveTo(t,e)}stroke(t){let e;const s=this.instructions[this.instructions.length-1];return this._tick===0&&s&&s.action==="fill"?e=s.data.path:e=this._activePath.clone(),e?(t!=null&&(this._strokeStyle=s_(t,Mi.defaultStrokeStyle)),this.instructions.push({action:"stroke",data:{style:this.strokeStyle,path:e}}),this.onUpdate(),this._initNextPathLocation(),this._tick=0,this):this}cut(){for(let t=0;t<2;t++){const e=this.instructions[this.instructions.length-1-t],s=this._activePath.clone();if(e&&(e.action==="stroke"||e.action==="fill"))if(e.data.hole)e.data.hole.addPath(s);else{e.data.hole=s;break}}return this._initNextPathLocation(),this}arc(t,e,s,r,n,a){this._tick++;const o=this._transform;return this._activePath.arc(o.a*t+o.c*e+o.tx,o.b*t+o.d*e+o.ty,s,r,n,a),this}arcTo(t,e,s,r,n){this._tick++;const a=this._transform;return this._activePath.arcTo(a.a*t+a.c*e+a.tx,a.b*t+a.d*e+a.ty,a.a*s+a.c*r+a.tx,a.b*s+a.d*r+a.ty,n),this}arcToSvg(t,e,s,r,n,a,o){this._tick++;const u=this._transform;return this._activePath.arcToSvg(t,e,s,r,n,u.a*a+u.c*o+u.tx,u.b*a+u.d*o+u.ty),this}bezierCurveTo(t,e,s,r,n,a,o){this._tick++;const u=this._transform;return this._activePath.bezierCurveTo(u.a*t+u.c*e+u.tx,u.b*t+u.d*e+u.ty,u.a*s+u.c*r+u.tx,u.b*s+u.d*r+u.ty,u.a*n+u.c*a+u.tx,u.b*n+u.d*a+u.ty,o),this}closePath(){var t;return this._tick++,(t=this._activePath)==null||t.closePath(),this}ellipse(t,e,s,r){return this._tick++,this._activePath.ellipse(t,e,s,r,this._transform.clone()),this}circle(t,e,s){return this._tick++,this._activePath.circle(t,e,s,this._transform.clone()),this}path(t){return this._tick++,this._activePath.addPath(t,this._transform.clone()),this}lineTo(t,e){this._tick++;const s=this._transform;return this._activePath.lineTo(s.a*t+s.c*e+s.tx,s.b*t+s.d*e+s.ty),this}moveTo(t,e){this._tick++;const s=this._transform,r=this._activePath.instructions,n=s.a*t+s.c*e+s.tx,a=s.b*t+s.d*e+s.ty;return r.length===1&&r[0].action==="moveTo"?(r[0].data[0]=n,r[0].data[1]=a,this):(this._activePath.moveTo(n,a),this)}quadraticCurveTo(t,e,s,r,n){this._tick++;const a=this._transform;return this._activePath.quadraticCurveTo(a.a*t+a.c*e+a.tx,a.b*t+a.d*e+a.ty,a.a*s+a.c*r+a.tx,a.b*s+a.d*r+a.ty,n),this}rect(t,e,s,r){return this._tick++,this._activePath.rect(t,e,s,r,this._transform.clone()),this}roundRect(t,e,s,r,n){return this._tick++,this._activePath.roundRect(t,e,s,r,n,this._transform.clone()),this}poly(t,e){return this._tick++,this._activePath.poly(t,e,this._transform.clone()),this}regularPoly(t,e,s,r,n=0,a){return this._tick++,this._activePath.regularPoly(t,e,s,r,n,a),this}roundPoly(t,e,s,r,n,a){return this._tick++,this._activePath.roundPoly(t,e,s,r,n,a),this}roundShape(t,e,s,r){return this._tick++,this._activePath.roundShape(t,e,s,r),this}filletRect(t,e,s,r,n){return this._tick++,this._activePath.filletRect(t,e,s,r,n),this}chamferRect(t,e,s,r,n,a){return this._tick++,this._activePath.chamferRect(t,e,s,r,n,a),this}star(t,e,s,r,n=0,a=0){return this._tick++,this._activePath.star(t,e,s,r,n,a,this._transform.clone()),this}svg(t){return this._tick++,Bq(t,this),this}restore(){const t=this._stateStack.pop();return t&&(this._transform=t.transform,this._fillStyle=t.fillStyle,this._strokeStyle=t.strokeStyle),this}save(){return this._stateStack.push({transform:this._transform.clone(),fillStyle:{...this._fillStyle},strokeStyle:{...this._strokeStyle}}),this}getTransform(){return this._transform}resetTransform(){return this._transform.identity(),this}rotate(t){return this._transform.rotate(t),this}scale(t,e=t){return this._transform.scale(t,e),this}setTransform(t,e,s,r,n,a){return t instanceof ot?(this._transform.set(t.a,t.b,t.c,t.d,t.tx,t.ty),this):(this._transform.set(t,e,s,r,n,a),this)}transform(t,e,s,r,n,a){return t instanceof ot?(this._transform.append(t),this):(qO.set(t,e,s,r,n,a),this._transform.append(qO),this)}translate(t,e=t){return this._transform.translate(t,e),this}clear(){return this._activePath.clear(),this.instructions.length=0,this.resetTransform(),this.onUpdate(),this}onUpdate(){this.dirty||(this.emit("update",this,16),this.dirty=!0,this._boundsDirty=!0)}get bounds(){if(!this._boundsDirty)return this._bounds;const t=this._bounds;t.clear();for(let e=0;e<this.instructions.length;e++){const s=this.instructions[e],r=s.action;if(r==="fill"){const n=s.data;t.addBounds(n.path.bounds)}else if(r==="texture"){const n=s.data;t.addFrame(n.dx,n.dy,n.dx+n.dw,n.dy+n.dh,n.transform)}if(r==="stroke"){const n=s.data,a=n.style.width/2,o=n.path.bounds;t.addFrame(o.minX-a,o.minY-a,o.maxX+a,o.maxY+a)}}return t}containsPoint(t){var r;if(!this.bounds.containsPoint(t.x,t.y))return!1;const e=this.instructions;let s=!1;for(let n=0;n<e.length;n++){const a=e[n],o=a.data,u=o.path;if(!a.action||!u)continue;const l=o.style,c=u.shapePath.shapePrimitives;for(let h=0;h<c.length;h++){const _=c[h].shape;if(!l||!_)continue;const d=c[h].transform,f=d?d.applyInverse(t,Yq):t;a.action==="fill"?s=_.contains(f.x,f.y):s=_.strokeContains(f.x,f.y,l.width);const p=o.hole;if(p){const g=(r=p.shapePath)==null?void 0:r.shapePrimitives;if(g)for(let m=0;m<g.length;m++)g[m].shape.contains(f.x,f.y)&&(s=!1)}if(s)return!0}}return s}destroy(t=!1){if(this._stateStack.length=0,this._transform=null,this.emit("destroy",this),this.removeAllListeners(),typeof t=="boolean"?t:t==null?void 0:t.texture){const s=typeof t=="boolean"?t:t==null?void 0:t.textureSource;this._fillStyle.texture&&this._fillStyle.texture.destroy(s),this._strokeStyle.texture&&this._strokeStyle.texture.destroy(s)}this._fillStyle=null,this._strokeStyle=null,this.instructions=null,this._activePath=null,this._bounds=null,this._stateStack=null,this.customShader=null,this._transform=null}};qI.defaultFillStyle={color:16777215,alpha:1,texture:W.WHITE,matrix:null,fill:null};qI.defaultStrokeStyle={width:1,color:16777215,alpha:1,alignment:.5,miterLimit:10,cap:"butt",join:"miter",texture:W.WHITE,matrix:null,fill:null};let qr=qI;const $O=["align","breakWords","cssOverrides","fontVariant","fontWeight","leading","letterSpacing","lineHeight","padding","textBaseline","trim","whiteSpace","wordWrap","wordWrapWidth","fontFamily","fontStyle","fontSize"];function pC(i){const t=[];let e=0;for(let s=0;s<$O.length;s++){const r=`_${$O[s]}`;t[e++]=i[r]}return e=mC(i._fill,t,e),e=Wq(i._stroke,t,e),e=jq(i.dropShadow,t,e),t.join("-")}function mC(i,t,e){var s;return i&&(t[e++]=i.color,t[e++]=i.alpha,t[e++]=(s=i.fill)==null?void 0:s.styleKey),e}function Wq(i,t,e){return i&&(e=mC(i,t,e),t[e++]=i.width,t[e++]=i.alignment,t[e++]=i.cap,t[e++]=i.join,t[e++]=i.miterLimit),e}function jq(i,t,e){return i&&(t[e++]=i.alpha,t[e++]=i.angle,t[e++]=i.blur,t[e++]=i.distance,t[e++]=Mt.shared.setValue(i.color).toNumber()),e}const $I=class ao extends ks{constructor(t={}){super(),Kq(t);const e={...ao.defaultTextStyle,...t};for(const s in e){const r=s;this[r]=e[s]}this.update()}get align(){return this._align}set align(t){this._align=t,this.update()}get breakWords(){return this._breakWords}set breakWords(t){this._breakWords=t,this.update()}get dropShadow(){return this._dropShadow}set dropShadow(t){t!==null&&typeof t=="object"?this._dropShadow=this._createProxy({...ao.defaultDropShadow,...t}):this._dropShadow=t?this._createProxy({...ao.defaultDropShadow}):null,this.update()}get fontFamily(){return this._fontFamily}set fontFamily(t){this._fontFamily=t,this.update()}get fontSize(){return this._fontSize}set fontSize(t){typeof t=="string"?this._fontSize=parseInt(t,10):this._fontSize=t,this.update()}get fontStyle(){return this._fontStyle}set fontStyle(t){this._fontStyle=t.toLowerCase(),this.update()}get fontVariant(){return this._fontVariant}set fontVariant(t){this._fontVariant=t,this.update()}get fontWeight(){return this._fontWeight}set fontWeight(t){this._fontWeight=t,this.update()}get leading(){return this._leading}set leading(t){this._leading=t,this.update()}get letterSpacing(){return this._letterSpacing}set letterSpacing(t){this._letterSpacing=t,this.update()}get lineHeight(){return this._lineHeight}set lineHeight(t){this._lineHeight=t,this.update()}get padding(){return this._padding}set padding(t){this._padding=t,this.update()}get trim(){return this._trim}set trim(t){this._trim=t,this.update()}get textBaseline(){return this._textBaseline}set textBaseline(t){this._textBaseline=t,this.update()}get whiteSpace(){return this._whiteSpace}set whiteSpace(t){this._whiteSpace=t,this.update()}get wordWrap(){return this._wordWrap}set wordWrap(t){this._wordWrap=t,this.update()}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth(t){this._wordWrapWidth=t,this.update()}get fill(){return this._originalFill}set fill(t){t!==this._originalFill&&(this._originalFill=t,this._isFillStyle(t)&&(this._originalFill=this._createProxy({...qr.defaultFillStyle,...t},()=>{this._fill=pa({...this._originalFill},qr.defaultFillStyle)})),this._fill=pa(t===0?"black":t,qr.defaultFillStyle),this.update())}get stroke(){return this._originalStroke}set stroke(t){t!==this._originalStroke&&(this._originalStroke=t,this._isFillStyle(t)&&(this._originalStroke=this._createProxy({...qr.defaultStrokeStyle,...t},()=>{this._stroke=s_({...this._originalStroke},qr.defaultStrokeStyle)})),this._stroke=s_(t,qr.defaultStrokeStyle),this.update())}_generateKey(){return this._styleKey=pC(this),this._styleKey}update(){this._styleKey=null,this.emit("update",this)}reset(){const t=ao.defaultTextStyle;for(const e in t)this[e]=t[e]}get styleKey(){return this._styleKey||this._generateKey()}clone(){return new ao({align:this.align,breakWords:this.breakWords,dropShadow:this._dropShadow?{...this._dropShadow}:null,fill:this._fill,fontFamily:this.fontFamily,fontSize:this.fontSize,fontStyle:this.fontStyle,fontVariant:this.fontVariant,fontWeight:this.fontWeight,leading:this.leading,letterSpacing:this.letterSpacing,lineHeight:this.lineHeight,padding:this.padding,stroke:this._stroke,textBaseline:this.textBaseline,whiteSpace:this.whiteSpace,wordWrap:this.wordWrap,wordWrapWidth:this.wordWrapWidth})}destroy(t=!1){var s,r,n,a;if(this.removeAllListeners(),typeof t=="boolean"?t:t==null?void 0:t.texture){const o=typeof t=="boolean"?t:t==null?void 0:t.textureSource;(s=this._fill)!=null&&s.texture&&this._fill.texture.destroy(o),(r=this._originalFill)!=null&&r.texture&&this._originalFill.texture.destroy(o),(n=this._stroke)!=null&&n.texture&&this._stroke.texture.destroy(o),(a=this._originalStroke)!=null&&a.texture&&this._originalStroke.texture.destroy(o)}this._fill=null,this._stroke=null,this.dropShadow=null,this._originalStroke=null,this._originalFill=null}_createProxy(t,e){return new Proxy(t,{set:(s,r,n)=>(s[r]=n,e==null||e(r,n),this.update(),!0)})}_isFillStyle(t){return(t??null)!==null&&!(Mt.isColorLike(t)||t instanceof kl||t instanceof Tm)}};$I.defaultDropShadow={alpha:1,angle:Math.PI/6,blur:0,color:"black",distance:5};$I.defaultTextStyle={align:"left",breakWords:!1,dropShadow:null,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,padding:0,stroke:null,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};let vn=$I;function Kq(i){const t=i;if(typeof t.dropShadow=="boolean"&&t.dropShadow){const e=vn.defaultDropShadow;i.dropShadow={alpha:t.dropShadowAlpha??e.alpha,angle:t.dropShadowAngle??e.angle,blur:t.dropShadowBlur??e.blur,color:t.dropShadowColor??e.color,distance:t.dropShadowDistance??e.distance}}if(t.strokeThickness!==void 0){ct(Te,"strokeThickness is now a part of stroke");const e=t.stroke;let s={};if(Mt.isColorLike(e))s.color=e;else if(e instanceof kl||e instanceof Tm)s.fill=e;else if(Object.hasOwnProperty.call(e,"color")||Object.hasOwnProperty.call(e,"fill"))s=e;else throw new Error("Invalid stroke value.");i.stroke={...s,width:t.strokeThickness}}if(Array.isArray(t.fillGradientStops)){ct(Te,"gradient fill is now a fill pattern: `new FillGradient(...)`");let e;i.fontSize==null?i.fontSize=vn.defaultTextStyle.fontSize:typeof i.fontSize=="string"?e=parseInt(i.fontSize,10):e=i.fontSize;const s=new kl(0,0,0,e*1.7),r=t.fillGradientStops.map(n=>Mt.shared.setValue(n).toNumber());r.forEach((n,a)=>{const o=a/(r.length-1);s.addColorStop(o,n)}),i.fill={fill:s}}}class Xq{constructor(t){this._canvasPool=Object.create(null),this.canvasOptions=t||{},this.enableFullScreen=!1}_createCanvasAndContext(t,e){const s=Wt.get().createCanvas();s.width=t,s.height=e;const r=s.getContext("2d");return{canvas:s,context:r}}getOptimalCanvasAndContext(t,e,s=1){t=Math.ceil(t*s-1e-6),e=Math.ceil(e*s-1e-6),t=Dl(t),e=Dl(e);const r=(t<<17)+(e<<1);this._canvasPool[r]||(this._canvasPool[r]=[]);let n=this._canvasPool[r].pop();return n||(n=this._createCanvasAndContext(t,e)),n}returnCanvasAndContext(t){const e=t.canvas,{width:s,height:r}=e,n=(s<<17)+(r<<1);t.context.clearRect(0,0,s,r),this._canvasPool[n].push(t)}clear(){this._canvasPool={}}}const Vl=new Xq,qq=["serif","sans-serif","monospace","cursive","fantasy","system-ui"];function i_(i){const t=typeof i.fontSize=="number"?`${i.fontSize}px`:i.fontSize;let e=i.fontFamily;Array.isArray(i.fontFamily)||(e=i.fontFamily.split(","));for(let s=e.length-1;s>=0;s--){let r=e[s].trim();!/([\"\'])[^\'\"]+\1/.test(r)&&!qq.includes(r)&&(r=`"${r}"`),e[s]=r}return`${i.fontStyle} ${i.fontVariant} ${i.fontWeight} ${t} ${e.join(",")}`}const DE={willReadFrequently:!0},Oi=class rt{static get experimentalLetterSpacingSupported(){let t=rt._experimentalLetterSpacingSupported;if(t!==void 0){const e=Wt.get().getCanvasRenderingContext2D().prototype;t=rt._experimentalLetterSpacingSupported="letterSpacing"in e||"textLetterSpacing"in e}return t}constructor(t,e,s,r,n,a,o,u,l){this.text=t,this.style=e,this.width=s,this.height=r,this.lines=n,this.lineWidths=a,this.lineHeight=o,this.maxLineWidth=u,this.fontProperties=l}static measureText(t=" ",e,s=rt._canvas,r=e.wordWrap){var O;const n=`${t}:${e.styleKey}`;if(rt._measurementCache[n])return rt._measurementCache[n];const a=i_(e),o=rt.measureFont(a);o.fontSize===0&&(o.fontSize=e.fontSize,o.ascent=e.fontSize);const u=rt.__context;u.font=a;const c=(r?rt._wordWrap(t,e,s):t).split(/(?:\r\n|\r|\n)/),h=new Array(c.length);let _=0;for(let y=0;y<c.length;y++){const C=rt._measureText(c[y],e.letterSpacing,u);h[y]=C,_=Math.max(_,C)}const d=((O=e._stroke)==null?void 0:O.width)||0;let f=_+d;e.dropShadow&&(f+=e.dropShadow.distance);const p=e.lineHeight||o.fontSize;let g=Math.max(p,o.fontSize+d)+(c.length-1)*(p+e.leading);return e.dropShadow&&(g+=e.dropShadow.distance),new rt(t,e,f,g,c,h,p+e.leading,_,o)}static _measureText(t,e,s){let r=!1;rt.experimentalLetterSpacingSupported&&(rt.experimentalLetterSpacing?(s.letterSpacing=`${e}px`,s.textLetterSpacing=`${e}px`,r=!0):(s.letterSpacing="0px",s.textLetterSpacing="0px"));const n=s.measureText(t);let a=n.width;const o=-n.actualBoundingBoxLeft;let l=n.actualBoundingBoxRight-o;if(a>0)if(r)a-=e,l-=e;else{const c=(rt.graphemeSegmenter(t).length-1)*e;a+=c,l+=c}return Math.max(a,l)}static _wordWrap(t,e,s=rt._canvas){const r=s.getContext("2d",DE);let n=0,a="",o="";const u=Object.create(null),{letterSpacing:l,whiteSpace:c}=e,h=rt._collapseSpaces(c),_=rt._collapseNewlines(c);let d=!h;const f=e.wordWrapWidth+l,p=rt._tokenize(t);for(let g=0;g<p.length;g++){let m=p[g];if(rt._isNewline(m)){if(!_){o+=rt._addLine(a),d=!h,a="",n=0;continue}m=" "}if(h){const y=rt.isBreakingSpace(m),C=rt.isBreakingSpace(a[a.length-1]);if(y&&C)continue}const O=rt._getFromCache(m,l,u,r);if(O>f)if(a!==""&&(o+=rt._addLine(a),a="",n=0),rt.canBreakWords(m,e.breakWords)){const y=rt.wordWrapSplit(m);for(let C=0;C<y.length;C++){let P=y[C],L=P,N=1;for(;y[C+N];){const x=y[C+N];if(!rt.canBreakChars(L,x,m,C,e.breakWords))P+=x;else break;L=x,N++}C+=N-1;const F=rt._getFromCache(P,l,u,r);F+n>f&&(o+=rt._addLine(a),d=!1,a="",n=0),a+=P,n+=F}}else{a.length>0&&(o+=rt._addLine(a),a="",n=0);const y=g===p.length-1;o+=rt._addLine(m,!y),d=!1,a="",n=0}else O+n>f&&(d=!1,o+=rt._addLine(a),a="",n=0),(a.length>0||!rt.isBreakingSpace(m)||d)&&(a+=m,n+=O)}return o+=rt._addLine(a,!1),o}static _addLine(t,e=!0){return t=rt._trimRight(t),t=e?`${t}
`:t,t}static _getFromCache(t,e,s,r){let n=s[t];return typeof n!="number"&&(n=rt._measureText(t,e,r)+e,s[t]=n),n}static _collapseSpaces(t){return t==="normal"||t==="pre-line"}static _collapseNewlines(t){return t==="normal"}static _trimRight(t){if(typeof t!="string")return"";for(let e=t.length-1;e>=0;e--){const s=t[e];if(!rt.isBreakingSpace(s))break;t=t.slice(0,-1)}return t}static _isNewline(t){return typeof t!="string"?!1:rt._newlines.includes(t.charCodeAt(0))}static isBreakingSpace(t,e){return typeof t!="string"?!1:rt._breakingSpaces.includes(t.charCodeAt(0))}static _tokenize(t){const e=[];let s="";if(typeof t!="string")return e;for(let r=0;r<t.length;r++){const n=t[r],a=t[r+1];if(rt.isBreakingSpace(n,a)||rt._isNewline(n)){s!==""&&(e.push(s),s=""),e.push(n);continue}s+=n}return s!==""&&e.push(s),e}static canBreakWords(t,e){return e}static canBreakChars(t,e,s,r,n){return!0}static wordWrapSplit(t){return rt.graphemeSegmenter(t)}static measureFont(t){if(rt._fonts[t])return rt._fonts[t];const e=rt._context;e.font=t;const s=e.measureText(rt.METRICS_STRING+rt.BASELINE_SYMBOL),r={ascent:s.actualBoundingBoxAscent,descent:s.actualBoundingBoxDescent,fontSize:s.actualBoundingBoxAscent+s.actualBoundingBoxDescent};return rt._fonts[t]=r,r}static clearMetrics(t=""){t?delete rt._fonts[t]:rt._fonts={}}static get _canvas(){if(!rt.__canvas){let t;try{const e=new OffscreenCanvas(0,0),s=e.getContext("2d",DE);if(s!=null&&s.measureText)return rt.__canvas=e,e;t=Wt.get().createCanvas()}catch{t=Wt.get().createCanvas()}t.width=t.height=10,rt.__canvas=t}return rt.__canvas}static get _context(){return rt.__context||(rt.__context=rt._canvas.getContext("2d",DE)),rt.__context}};Oi.METRICS_STRING="|ÉqÅ";Oi.BASELINE_SYMBOL="M";Oi.BASELINE_MULTIPLIER=1.4;Oi.HEIGHT_MULTIPLIER=2;Oi.graphemeSegmenter=(()=>{if(typeof(Intl==null?void 0:Intl.Segmenter)=="function"){const i=new Intl.Segmenter;return t=>[...i.segment(t)].map(e=>e.segment)}return i=>[...i]})();Oi.experimentalLetterSpacing=!1;Oi._fonts={};Oi._newlines=[10,13];Oi._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];Oi._measurementCache={};let r_=Oi;function OT(i,t){if(i.texture===W.WHITE&&!i.fill)return Mt.shared.setValue(i.color).setAlpha(i.alpha??1).toHexa();if(i.fill){if(i.fill instanceof Tm){const e=i.fill,s=t.createPattern(e.texture.source.resource,"repeat"),r=e.transform.copyTo(ot.shared);return r.scale(e.texture.frame.width,e.texture.frame.height),s.setTransform(r),s}else if(i.fill instanceof kl){const e=i.fill;if(e.type==="linear"){const s=t.createLinearGradient(e.x0,e.y0,e.x1,e.y1);return e.gradientStops.forEach(r=>{s.addColorStop(r.offset,Mt.shared.setValue(r.color).toHex())}),s}}}else{const e=t.createPattern(i.texture.source.resource,"repeat"),s=i.matrix.copyTo(ot.shared);return s.scale(i.texture.frame.width,i.texture.frame.height),e.setTransform(s),e}return le("FillStyle not recognised",i),"red"}function EC(i){if(i==="")return[];typeof i=="string"&&(i=[i]);const t=[];for(let e=0,s=i.length;e<s;e++){const r=i[e];if(Array.isArray(r)){if(r.length!==2)throw new Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${r.length}.`);if(r[0].length===0||r[1].length===0)throw new Error("[BitmapFont]: Invalid character delimiter.");const n=r[0].charCodeAt(0),a=r[1].charCodeAt(0);if(a<n)throw new Error("[BitmapFont]: Invalid character range.");for(let o=n,u=a;o<=u;o++)t.push(String.fromCharCode(o))}else t.push(...Array.from(r))}if(t.length===0)throw new Error("[BitmapFont]: Empty set when resolving characters.");return t}const TC=class IC extends qv{constructor(t){super(),this.resolution=1,this.pages=[],this._padding=0,this._measureCache=Object.create(null),this._currentChars=[],this._currentX=0,this._currentY=0,this._currentPageIndex=-1,this._skipKerning=!1;const e={...IC.defaultOptions,...t};this._textureSize=e.textureSize,this._mipmap=e.mipmap;const s=e.style.clone();e.overrideFill&&(s._fill.color=16777215,s._fill.alpha=1,s._fill.texture=W.WHITE,s._fill.fill=null),this.applyFillAsTint=e.overrideFill;const r=s.fontSize;s.fontSize=this.baseMeasurementFontSize;const n=i_(s);e.overrideSize?s._stroke&&(s._stroke.width*=this.baseRenderedFontSize/r):s.fontSize=this.baseRenderedFontSize=r,this._style=s,this._skipKerning=e.skipKerning??!1,this.resolution=e.resolution??1,this._padding=e.padding??4,this.fontMetrics=r_.measureFont(n),this.lineHeight=s.lineHeight||this.fontMetrics.fontSize||s.fontSize}ensureCharacters(t){var f,p;const e=EC(t).filter(g=>!this._currentChars.includes(g)).filter((g,m,O)=>O.indexOf(g)===m);if(!e.length)return;this._currentChars=[...this._currentChars,...e];let s;this._currentPageIndex===-1?s=this._nextPage():s=this.pages[this._currentPageIndex];let{canvas:r,context:n}=s.canvasAndContext,a=s.texture.source;const o=this._style;let u=this._currentX,l=this._currentY;const c=this.baseRenderedFontSize/this.baseMeasurementFontSize,h=this._padding*c;let _=0,d=!1;for(let g=0;g<e.length;g++){const m=e[g],O=r_.measureText(m,o,r,!1),y=Math.ceil((o.fontStyle==="italic"?2:1)*O.width);O.lineHeight=O.height;const C=O.width*c,P=O.height*c,L=y+h*2,N=P+h*2;if(d=!1,m!==`
`&&m!=="\r"&&m!==" "&&m!==" "&&(d=!0,_=Math.ceil(Math.max(N,_))),u+L>this._textureSize&&(l+=_,_=N,u=0,l+_>this._textureSize)){a.update();const x=this._nextPage();r=x.canvasAndContext.canvas,n=x.canvasAndContext.context,a=x.texture.source,l=0}const F=C/c-(((f=o.dropShadow)==null?void 0:f.distance)??0)-(((p=o._stroke)==null?void 0:p.width)??0);if(this.chars[m]={id:m.codePointAt(0),xOffset:-this._padding,yOffset:-this._padding,xAdvance:F,kerning:{}},d){this._drawGlyph(n,O,u+h,l+h,c,o);const x=a.width*c,U=a.height*c,k=new Kt(u/x*a.width,l/U*a.height,L/x*a.width,N/U*a.height);this.chars[m].texture=new W({source:a,frame:k}),u+=Math.ceil(L)}}a.update(),this._currentX=u,this._currentY=l,this._skipKerning&&this._applyKerning(e,n)}get pageTextures(){return ct(Te,"BitmapFont.pageTextures is deprecated, please use BitmapFont.pages instead."),this.pages}_applyKerning(t,e){const s=this._measureCache;for(let r=0;r<t.length;r++){const n=t[r];for(let a=0;a<this._currentChars.length;a++){const o=this._currentChars[a];let u=s[n];u||(u=s[n]=e.measureText(n).width);let l=s[o];l||(l=s[o]=e.measureText(o).width);let c=e.measureText(n+o).width,h=c-(u+l);h&&(this.chars[n].kerning[o]=h),c=e.measureText(n+o).width,h=c-(u+l),h&&(this.chars[o].kerning[n]=h)}}}_nextPage(){this._currentPageIndex++;const t=this.resolution,e=Vl.getOptimalCanvasAndContext(this._textureSize,this._textureSize,t);this._setupContext(e.context,this._style,t);const s=t*(this.baseRenderedFontSize/this.baseMeasurementFontSize),r=new W({source:new qa({resource:e.canvas,resolution:s,alphaMode:"premultiply-alpha-on-upload",autoGenerateMipmaps:this._mipmap})}),n={canvasAndContext:e,texture:r};return this.pages[this._currentPageIndex]=n,n}_setupContext(t,e,s){e.fontSize=this.baseRenderedFontSize,t.scale(s,s),t.font=i_(e),e.fontSize=this.baseMeasurementFontSize,t.textBaseline=e.textBaseline;const r=e._stroke,n=(r==null?void 0:r.width)??0;if(r&&(t.lineWidth=n,t.lineJoin=r.join,t.miterLimit=r.miterLimit,t.strokeStyle=OT(r,t)),e._fill&&(t.fillStyle=OT(e._fill,t)),e.dropShadow){const a=e.dropShadow,o=Mt.shared.setValue(a.color).toArray(),u=a.blur*s,l=a.distance*s;t.shadowColor=`rgba(${o[0]*255},${o[1]*255},${o[2]*255},${a.alpha})`,t.shadowBlur=u,t.shadowOffsetX=Math.cos(a.angle)*l,t.shadowOffsetY=Math.sin(a.angle)*l}else t.shadowColor="black",t.shadowBlur=0,t.shadowOffsetX=0,t.shadowOffsetY=0}_drawGlyph(t,e,s,r,n,a){const o=e.text,u=e.fontProperties,l=a._stroke,c=((l==null?void 0:l.width)??0)*n,h=s+c/2,_=r-c/2,d=u.descent*n,f=e.lineHeight*n;a.stroke&&c&&t.strokeText(o,h,_+f-d),a._fill&&t.fillText(o,h,_+f-d)}destroy(){super.destroy();for(let t=0;t<this.pages.length;t++){const{canvasAndContext:e,texture:s}=this.pages[t];Vl.returnCanvasAndContext(e),s.destroy(!0)}this.pages=null}};TC.defaultOptions={textureSize:512,style:new vn,mipmap:!0};let QO=TC;function SC(i,t,e,s){const r={width:0,height:0,offsetY:0,scale:t.fontSize/e.baseMeasurementFontSize,lines:[{width:0,charPositions:[],spaceWidth:0,spacesIndex:[],chars:[]}]};r.offsetY=e.baseLineOffset;let n=r.lines[0],a=null,o=!0;const u={spaceWord:!1,width:0,start:0,index:0,positions:[],chars:[]},l=f=>{const p=n.width;for(let g=0;g<u.index;g++){const m=f.positions[g];n.chars.push(f.chars[g]),n.charPositions.push(m+p)}n.width+=f.width,o=!1,u.width=0,u.index=0,u.chars.length=0},c=()=>{let f=n.chars.length-1;if(s){let p=n.chars[f];for(;p===" ";)n.width-=e.chars[p].xAdvance,p=n.chars[--f]}r.width=Math.max(r.width,n.width),n={width:0,charPositions:[],chars:[],spaceWidth:0,spacesIndex:[]},o=!0,r.lines.push(n),r.height+=e.lineHeight},h=e.baseMeasurementFontSize/t.fontSize,_=t.letterSpacing*h,d=t.wordWrapWidth*h;for(let f=0;f<i.length+1;f++){let p;const g=f===i.length;g||(p=i[f]);const m=e.chars[p]||e.chars[" "];if(/(?:\s)/.test(p)||p==="\r"||p===`
`||g){if(!o&&t.wordWrap&&n.width+u.width-_>d?(c(),l(u),g||n.charPositions.push(0)):(u.start=n.width,l(u),g||n.charPositions.push(0)),p==="\r"||p===`
`)n.width!==0&&c();else if(!g){const P=m.xAdvance+(m.kerning[a]||0)+_;n.width+=P,n.spaceWidth=P,n.spacesIndex.push(n.charPositions.length),n.chars.push(p)}}else{const C=m.kerning[a]||0,P=m.xAdvance+C+_;u.positions[u.index++]=u.width+C,u.chars.push(p),u.width+=P}a=p}return c(),t.align==="center"?$q(r):t.align==="right"?Qq(r):t.align==="justify"&&Zq(r),r}function $q(i){for(let t=0;t<i.lines.length;t++){const e=i.lines[t],s=i.width/2-e.width/2;for(let r=0;r<e.charPositions.length;r++)e.charPositions[r]+=s}}function Qq(i){for(let t=0;t<i.lines.length;t++){const e=i.lines[t],s=i.width-e.width;for(let r=0;r<e.charPositions.length;r++)e.charPositions[r]+=s}}function Zq(i){const t=i.width;for(let e=0;e<i.lines.length;e++){const s=i.lines[e];let r=0,n=s.spacesIndex[r++],a=0;const o=s.spacesIndex.length,l=(t-s.width)/o;for(let c=0;c<s.charPositions.length;c++)c===n&&(n=s.spacesIndex[r++],a+=l),s.charPositions[c]+=a}}let Rc=0;class Jq{constructor(){this.ALPHA=[["a","z"],["A","Z"]," "],this.NUMERIC=[["0","9"]],this.ALPHANUMERIC=[["a","z"],["A","Z"],["0","9"]," "],this.ASCII=[[" ","~"]],this.defaultOptions={chars:this.ALPHANUMERIC,resolution:1,padding:4,skipKerning:!1}}getFont(t,e){var a;let s=`${e.fontFamily}-bitmap`,r=!0;if(e._fill.fill&&!e._stroke)s+=e._fill.fill.styleKey,r=!1;else if(e._stroke||e.dropShadow){let o=e.styleKey;o=o.substring(0,o.lastIndexOf("-")),s=`${o}-bitmap`,r=!1}if(!de.has(s)){const o=new QO({style:e,overrideFill:r,overrideSize:!0,...this.defaultOptions});Rc++,Rc>50&&le("BitmapText",`You have dynamically created ${Rc} bitmap fonts, this can be inefficient. Try pre installing your font styles using \`BitmapFont.install({name:"style1", style})\``),o.once("destroy",()=>{Rc--,de.remove(s)}),de.set(s,o)}const n=de.get(s);return(a=n.ensureCharacters)==null||a.call(n,t),n}getLayout(t,e,s=!0){const r=this.getFont(t,e);return SC([...t],e,r,s)}measureText(t,e,s=!0){return this.getLayout(t,e,s)}install(...t){var l,c,h,_;let e=t[0];typeof e=="string"&&(e={name:e,style:t[1],chars:(l=t[2])==null?void 0:l.chars,resolution:(c=t[2])==null?void 0:c.resolution,padding:(h=t[2])==null?void 0:h.padding,skipKerning:(_=t[2])==null?void 0:_.skipKerning},ct(Te,"BitmapFontManager.install(name, style, options) is deprecated, use BitmapFontManager.install({name, style, ...options})"));const s=e==null?void 0:e.name;if(!s)throw new Error("[BitmapFontManager] Property `name` is required.");e={...this.defaultOptions,...e};const r=e.style,n=r instanceof vn?r:new vn(r),a=n._fill.fill!==null&&n._fill.fill!==void 0,o=new QO({style:n,overrideFill:a,skipKerning:e.skipKerning,padding:e.padding,resolution:e.resolution,overrideSize:!1}),u=EC(e.chars);return o.ensureCharacters(u.join("")),de.set(`${s}-bitmap`,o),o.once("destroy",()=>de.remove(`${s}-bitmap`)),o}uninstall(t){const e=`${t}-bitmap`,s=de.get(e);s&&s.destroy()}}const yT=new Jq;class RC extends qv{constructor(t,e){super();const{textures:s,data:r}=t;Object.keys(r.pages).forEach(n=>{const a=r.pages[parseInt(n,10)],o=s[a.id];this.pages.push({texture:o})}),Object.keys(r.chars).forEach(n=>{const a=r.chars[n],{frame:o,source:u}=s[a.page],l=new Kt(a.x+o.x,a.y+o.y,a.width,a.height),c=new W({source:u,frame:l});this.chars[n]={id:n.codePointAt(0),xOffset:a.xOffset,yOffset:a.yOffset,xAdvance:a.xAdvance,kerning:a.kerning??{},texture:c}}),this.baseRenderedFontSize=r.fontSize,this.baseMeasurementFontSize=r.fontSize,this.fontMetrics={ascent:0,descent:0,fontSize:r.fontSize},this.baseLineOffset=r.baseLineOffset,this.lineHeight=r.lineHeight,this.fontFamily=r.fontFamily,this.distanceField=r.distanceField??{type:"none",range:0},this.url=e}destroy(){super.destroy();for(let t=0;t<this.pages.length;t++){const{texture:e}=this.pages[t];e.destroy(!0)}this.pages=null}static install(t){yT.install(t)}static uninstall(t){yT.uninstall(t)}}const LE={test(i){return typeof i=="string"&&i.startsWith("info face=")},parse(i){const t=i.match(/^[a-z]+\s+.+$/gm),e={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(const h in t){const _=t[h].match(/^[a-z]+/gm)[0],d=t[h].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),f={};for(const p in d){const g=d[p].split("="),m=g[0],O=g[1].replace(/"/gm,""),y=parseFloat(O),C=isNaN(y)?O:y;f[m]=C}e[_].push(f)}const s={chars:{},pages:[],lineHeight:0,fontSize:0,fontFamily:"",distanceField:null,baseLineOffset:0},[r]=e.info,[n]=e.common,[a]=e.distanceField??[];a&&(s.distanceField={range:parseInt(a.distanceRange,10),type:a.fieldType}),s.fontSize=parseInt(r.size,10),s.fontFamily=r.face,s.lineHeight=parseInt(n.lineHeight,10);const o=e.page;for(let h=0;h<o.length;h++)s.pages.push({id:parseInt(o[h].id,10)||0,file:o[h].file});const u={};s.baseLineOffset=s.lineHeight-parseInt(n.base,10);const l=e.char;for(let h=0;h<l.length;h++){const _=l[h],d=parseInt(_.id,10);let f=_.letter??_.char??String.fromCharCode(d);f==="space"&&(f=" "),u[d]=f,s.chars[f]={id:d,page:parseInt(_.page,10)||0,x:parseInt(_.x,10),y:parseInt(_.y,10),width:parseInt(_.width,10),height:parseInt(_.height,10),xOffset:parseInt(_.xoffset,10),yOffset:parseInt(_.yoffset,10),xAdvance:parseInt(_.xadvance,10),kerning:{}}}const c=e.kerning||[];for(let h=0;h<c.length;h++){const _=parseInt(c[h].first,10),d=parseInt(c[h].second,10),f=parseInt(c[h].amount,10);s.chars[u[d]].kerning[u[_]]=f}return s}},ZO={test(i){const t=i;return typeof t!="string"&&"getElementsByTagName"in t&&t.getElementsByTagName("page").length&&t.getElementsByTagName("info")[0].getAttribute("face")!==null},parse(i){const t={chars:{},pages:[],lineHeight:0,fontSize:0,fontFamily:"",distanceField:null,baseLineOffset:0},e=i.getElementsByTagName("info")[0],s=i.getElementsByTagName("common")[0],r=i.getElementsByTagName("distanceField")[0];r&&(t.distanceField={type:r.getAttribute("fieldType"),range:parseInt(r.getAttribute("distanceRange"),10)});const n=i.getElementsByTagName("page"),a=i.getElementsByTagName("char"),o=i.getElementsByTagName("kerning");t.fontSize=parseInt(e.getAttribute("size"),10),t.fontFamily=e.getAttribute("face"),t.lineHeight=parseInt(s.getAttribute("lineHeight"),10);for(let l=0;l<n.length;l++)t.pages.push({id:parseInt(n[l].getAttribute("id"),10)||0,file:n[l].getAttribute("file")});const u={};t.baseLineOffset=t.lineHeight-parseInt(s.getAttribute("base"),10);for(let l=0;l<a.length;l++){const c=a[l],h=parseInt(c.getAttribute("id"),10);let _=c.getAttribute("letter")??c.getAttribute("char")??String.fromCharCode(h);_==="space"&&(_=" "),u[h]=_,t.chars[_]={id:h,page:parseInt(c.getAttribute("page"),10)||0,x:parseInt(c.getAttribute("x"),10),y:parseInt(c.getAttribute("y"),10),width:parseInt(c.getAttribute("width"),10),height:parseInt(c.getAttribute("height"),10),xOffset:parseInt(c.getAttribute("xoffset"),10),yOffset:parseInt(c.getAttribute("yoffset"),10),xAdvance:parseInt(c.getAttribute("xadvance"),10),kerning:{}}}for(let l=0;l<o.length;l++){const c=parseInt(o[l].getAttribute("first"),10),h=parseInt(o[l].getAttribute("second"),10),_=parseInt(o[l].getAttribute("amount"),10);t.chars[u[h]].kerning[u[c]]=_}return t}},JO={test(i){return typeof i=="string"&&i.includes("<font>")?ZO.test(Wt.get().parseXML(i)):!1},parse(i){return ZO.parse(Wt.get().parseXML(i))}},t$=[".xml",".fnt"],e$={extension:{type:B.CacheParser,name:"cacheBitmapFont"},test:i=>i instanceof RC,getCacheableAssets(i,t){const e={};return i.forEach(s=>{e[s]=t,e[`${s}-bitmap`]=t}),e[`${t.fontFamily}-bitmap`]=t,e}},s$={extension:{type:B.LoadParser,priority:Nn.Normal},name:"loadBitmapFont",test(i){return t$.includes(Os.extname(i).toLowerCase())},async testParse(i){return LE.test(i)||JO.test(i)},async parse(i,t,e){const s=LE.test(i)?LE.parse(i):JO.parse(i),{src:r}=t,{pages:n}=s,a=[],o=s.distanceField?{scaleMode:"linear",alphaMode:"premultiply-alpha-on-upload",autoGenerateMipmaps:!1,resolution:1}:{};for(let h=0;h<n.length;++h){const _=n[h].file;let d=Os.join(Os.dirname(r),_);d=aT(d,r),a.push({src:d,data:o})}const u=await e.load(a),l=a.map(h=>u[h.src]);return new RC({data:s,textures:l},r)},async load(i,t){return await(await Wt.get().fetch(i)).text()},async unload(i,t,e){await Promise.all(i.pages.map(s=>e.unload(s.texture.source._sourceOrigin))),i.destroy()}};class i${constructor(t,e=!1){this._loader=t,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=e}add(t){t.forEach(e=>{this._assetList.push(e)}),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 t=[],e=Math.min(this._assetList.length,this._maxConcurrent);for(let s=0;s<e;s++)t.push(this._assetList.pop());await this._loader.load(t),this._isLoading=!1,this._next()}}get active(){return this._isActive}set active(t){this._isActive!==t&&(this._isActive=t,t&&!this._isLoading&&this._next())}}const r$={extension:{type:B.CacheParser,name:"cacheTextureArray"},test:i=>Array.isArray(i)&&i.every(t=>t instanceof W),getCacheableAssets:(i,t)=>{const e={};return i.forEach(s=>{t.forEach((r,n)=>{e[s+(n===0?"":n+1)]=r})}),e}};async function AC(i){if("Image"in globalThis)return new Promise(t=>{const e=new Image;e.onload=()=>{t(!0)},e.onerror=()=>{t(!1)},e.src=i});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{const t=await(await fetch(i)).blob();await createImageBitmap(t)}catch{return!1}return!0}return!1}const n$={extension:{type:B.DetectionParser,priority:1},test:async()=>AC("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async i=>[...i,"avif"],remove:async i=>i.filter(t=>t!=="avif")},ty=["png","jpg","jpeg"],a$={extension:{type:B.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async i=>[...i,...ty],remove:async i=>i.filter(t=>!ty.includes(t))},o$="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function QI(i){return o$?!1:document.createElement("video").canPlayType(i)!==""}const u$={extension:{type:B.DetectionParser,priority:0},test:async()=>QI("video/mp4"),add:async i=>[...i,"mp4","m4v"],remove:async i=>i.filter(t=>t!=="mp4"&&t!=="m4v")},l$={extension:{type:B.DetectionParser,priority:0},test:async()=>QI("video/ogg"),add:async i=>[...i,"ogv"],remove:async i=>i.filter(t=>t!=="ogv")},h$={extension:{type:B.DetectionParser,priority:0},test:async()=>QI("video/webm"),add:async i=>[...i,"webm"],remove:async i=>i.filter(t=>t!=="webm")},c$={extension:{type:B.DetectionParser,priority:0},test:async()=>AC("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async i=>[...i,"webp"],remove:async i=>i.filter(t=>t!=="webp")};class _${constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(t,e,s)=>(this._parsersValidated=!1,t[e]=s,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(t,e){const s={promise:null,parser:null};return s.promise=(async()=>{var a,o;let r=null,n=null;if(e.loadParser&&(n=this._parserHash[e.loadParser],n||le(`[Assets] specified load parser "${e.loadParser}" not found while loading ${t}`)),!n){for(let u=0;u<this.parsers.length;u++){const l=this.parsers[u];if(l.load&&((a=l.test)!=null&&a.call(l,t,e,this))){n=l;break}}if(!n)return le(`[Assets] ${t} could not be loaded as we don't know how to parse it, ensure the correct parser has been added`),null}r=await n.load(t,e,this),s.parser=n;for(let u=0;u<this.parsers.length;u++){const l=this.parsers[u];l.parse&&l.parse&&await((o=l.testParse)==null?void 0:o.call(l,r,e,this))&&(r=await l.parse(r,e,this)||r,s.parser=l)}return r})(),s}async load(t,e){this._parsersValidated||this._validateParsers();let s=0;const r={},n=Jc(t),a=mi(t,l=>({alias:[l],src:l,data:{}})),o=a.length,u=a.map(async l=>{const c=Os.toAbsolute(l.src);if(!r[l.src])try{this.promiseCache[c]||(this.promiseCache[c]=this._getLoadPromiseAndParser(c,l)),r[l.src]=await this.promiseCache[c].promise,e&&e(++s/o)}catch(h){throw delete this.promiseCache[c],delete r[l.src],new Error(`[Loader.load] Failed to load ${c}.
${h}`)}});return await Promise.all(u),n?r[a[0].src]:r}async unload(t){const s=mi(t,r=>({alias:[r],src:r})).map(async r=>{var o,u;const n=Os.toAbsolute(r.src),a=this.promiseCache[n];if(a){const l=await a.promise;delete this.promiseCache[n],await((u=(o=a.parser)==null?void 0:o.unload)==null?void 0:u.call(o,l,r,this))}});await Promise.all(s)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter(t=>t.name).reduce((t,e)=>(e.name?t[e.name]&&le(`[Assets] loadParser name conflict "${e.name}"`):le("[Assets] loadParser should have a name"),{...t,[e.name]:e}),{})}}function pu(i,t){if(Array.isArray(t)){for(const e of t)if(i.startsWith(`data:${e}`))return!0;return!1}return i.startsWith(`data:${t}`)}function mu(i,t){const e=i.split("?")[0],s=Os.extname(e).toLowerCase();return Array.isArray(t)?t.includes(s):s===t}const d$=".json",f$="application/json",g$={extension:{type:B.LoadParser,priority:Nn.Low},name:"loadJson",test(i){return pu(i,f$)||mu(i,d$)},async load(i){return await(await Wt.get().fetch(i)).json()}},p$=".txt",m$="text/plain",E$={name:"loadTxt",extension:{type:B.LoadParser,priority:Nn.Low,name:"loadTxt"},test(i){return pu(i,m$)||mu(i,p$)},async load(i){return await(await Wt.get().fetch(i)).text()}},T$=["normal","bold","100","200","300","400","500","600","700","800","900"],I$=[".ttf",".otf",".woff",".woff2"],S$=["font/ttf","font/otf","font/woff","font/woff2"],R$=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function A$(i){const t=Os.extname(i),r=Os.basename(i,t).replace(/(-|_)/g," ").toLowerCase().split(" ").map(o=>o.charAt(0).toUpperCase()+o.slice(1));let n=r.length>0;for(const o of r)if(!o.match(R$)){n=!1;break}let a=r.join(" ");return n||(a=`"${a.replace(/[\\"]/g,"\\$&")}"`),a}const O$=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function y$(i){return O$.test(i)?i:encodeURI(i)}const v$={extension:{type:B.LoadParser,priority:Nn.Low},name:"loadWebFont",test(i){return pu(i,S$)||mu(i,I$)},async load(i,t){var s,r,n;const e=Wt.get().getFontFaceSet();if(e){const a=[],o=((s=t.data)==null?void 0:s.family)??A$(i),u=((n=(r=t.data)==null?void 0:r.weights)==null?void 0:n.filter(c=>T$.includes(c)))??["normal"],l=t.data??{};for(let c=0;c<u.length;c++){const h=u[c],_=new FontFace(o,`url(${y$(i)})`,{...l,weight:h});await _.load(),e.add(_),a.push(_)}return de.set(`${o}-and-url`,{url:i,fontFaces:a}),a.length===1?a[0]:a}return le("[loadWebFont] FontFace API is not supported. Skipping loading font"),null},unload(i){(Array.isArray(i)?i:[i]).forEach(t=>{de.remove(t.family),Wt.get().getFontFaceSet().delete(t)})}};function ZI(i,t=1){var s;const e=(s=gu.RETINA_PREFIX)==null?void 0:s.exec(i);return e?parseFloat(e[1]):t}function JI(i,t,e){i.label=e,i._sourceOrigin=e;const s=new W({source:i,label:e}),r=()=>{delete t.promiseCache[e],de.has(e)&&de.remove(e)};return s.source.once("destroy",()=>{t.promiseCache[e]&&(le("[Assets] A TextureSource managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the TextureSource."),r())}),s.once("destroy",()=>{i.destroyed||(le("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),r())}),s}const C$=".svg",M$="image/svg+xml",x$={extension:{type:B.LoadParser,priority:Nn.Low,name:"loadSVG"},name:"loadSVG",config:{crossOrigin:"anonymous",parseAsGraphicsContext:!1},test(i){return pu(i,M$)||mu(i,C$)},async load(i,t,e){return t.data.parseAsGraphicsContext??this.config.parseAsGraphicsContext?b$(i):P$(i,t,e,this.config.crossOrigin)},unload(i){i.destroy(!0)}};async function P$(i,t,e,s){var g,m,O;const n=await(await Wt.get().fetch(i)).blob(),a=URL.createObjectURL(n),o=new Image;o.src=a,o.crossOrigin=s,await o.decode(),URL.revokeObjectURL(a);const u=document.createElement("canvas"),l=u.getContext("2d"),c=((g=t.data)==null?void 0:g.resolution)||ZI(i),h=((m=t.data)==null?void 0:m.width)??o.width,_=((O=t.data)==null?void 0:O.height)??o.height;u.width=h*c,u.height=_*c,l.drawImage(o,0,0,h*c,_*c);const{parseAsGraphicsContext:d,...f}=t.data,p=new qa({resource:u,alphaMode:"premultiply-alpha-on-upload",resolution:c,...f});return JI(p,e,i)}async function b$(i){const e=await(await Wt.get().fetch(i)).text(),s=new qr;return s.svg(e),s}const N$=`(function () {
'use strict';
const WHITE_PNG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=";
async function checkImageBitmap() {
try {
if (typeof createImageBitmap !== "function")
return false;
const response = await fetch(WHITE_PNG);
const imageBlob = await response.blob();
const imageBitmap = await createImageBitmap(imageBlob);
return imageBitmap.width === 1 && imageBitmap.height === 1;
} catch (e) {
return false;
}
}
void checkImageBitmap().then((result) => {
self.postMessage(result);
});
})();
`;let Vo=null,vT=class{constructor(){Vo||(Vo=URL.createObjectURL(new Blob([N$],{type:"application/javascript"}))),this.worker=new Worker(Vo)}};vT.revokeObjectURL=function(){Vo&&(URL.revokeObjectURL(Vo),Vo=null)};const U$=`(function () {
'use strict';
async function loadImageBitmap(url, alphaMode) {
const response = await fetch(url);
if (!response.ok) {
throw new Error(\`[WorkerManager.loadImageBitmap] Failed to fetch \${url}: \${response.status} \${response.statusText}\`);
}
const imageBlob = await response.blob();
return alphaMode === "premultiplied-alpha" ? createImageBitmap(imageBlob, { premultiplyAlpha: "none" }) : createImageBitmap(imageBlob);
}
self.onmessage = async (event) => {
try {
const imageBitmap = await loadImageBitmap(event.data.data[0], event.data.data[1]);
self.postMessage({
data: imageBitmap,
uuid: event.data.uuid,
id: event.data.id
}, [imageBitmap]);
} catch (e) {
self.postMessage({
error: e,
uuid: event.data.uuid,
id: event.data.id
});
}
};
})();
`;let Ho=null;class OC{constructor(){Ho||(Ho=URL.createObjectURL(new Blob([U$],{type:"application/javascript"}))),this.worker=new Worker(Ho)}}OC.revokeObjectURL=function(){Ho&&(URL.revokeObjectURL(Ho),Ho=null)};let ey=0,FE;class D${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(t=>{const{worker:e}=new vT;e.addEventListener("message",s=>{e.terminate(),vT.revokeObjectURL(),t(s.data)})}),this._isImageBitmapSupported)}loadImageBitmap(t,e){var s;return this._run("loadImageBitmap",[t,(s=e==null?void 0:e.data)==null?void 0:s.alphaMode])}async _initWorkers(){this._initialized||(this._initialized=!0)}_getWorker(){FE===void 0&&(FE=navigator.hardwareConcurrency||4);let t=this._workerPool.pop();return!t&&this._createdWorkers<FE&&(this._createdWorkers++,t=new OC().worker,t.addEventListener("message",e=>{this._complete(e.data),this._returnWorker(e.target),this._next()})),t}_returnWorker(t){this._workerPool.push(t)}_complete(t){t.error!==void 0?this._resolveHash[t.uuid].reject(t.error):this._resolveHash[t.uuid].resolve(t.data),this._resolveHash[t.uuid]=null}async _run(t,e){await this._initWorkers();const s=new Promise((r,n)=>{this._queue.push({id:t,arguments:e,resolve:r,reject:n})});return this._next(),s}_next(){if(!this._queue.length)return;const t=this._getWorker();if(!t)return;const e=this._queue.pop(),s=e.id;this._resolveHash[ey]={resolve:e.resolve,reject:e.reject},t.postMessage({data:e.arguments,uuid:ey++,id:s})}}const sy=new D$,L$=[".jpeg",".jpg",".png",".webp",".avif"],F$=["image/jpeg","image/png","image/webp","image/avif"];async function w$(i,t){var r;const e=await Wt.get().fetch(i);if(!e.ok)throw new Error(`[loadImageBitmap] Failed to fetch ${i}: ${e.status} ${e.statusText}`);const s=await e.blob();return((r=t==null?void 0:t.data)==null?void 0:r.alphaMode)==="premultiplied-alpha"?createImageBitmap(s,{premultiplyAlpha:"none"}):createImageBitmap(s)}const yC={name:"loadTextures",extension:{type:B.LoadParser,priority:Nn.High,name:"loadTextures"},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(i){return pu(i,F$)||mu(i,L$)},async load(i,t,e){var n;let s=null;globalThis.createImageBitmap&&this.config.preferCreateImageBitmap?this.config.preferWorkers&&await sy.isImageBitmapSupported()?s=await sy.loadImageBitmap(i,t):s=await w$(i,t):s=await new Promise(a=>{s=new Image,s.crossOrigin=this.config.crossOrigin,s.src=i,s.complete?a(s):s.onload=()=>{a(s)}});const r=new qa({resource:s,alphaMode:"premultiply-alpha-on-upload",resolution:((n=t.data)==null?void 0:n.resolution)||ZI(i),...t.data});return JI(r,e,i)},unload(i){i.destroy(!0)}},vC=[".mp4",".m4v",".webm",".ogg",".ogv",".h264",".avi",".mov"],G$=vC.map(i=>`video/${i.substring(1)}`);function B$(i,t,e){e===void 0&&!t.startsWith("data:")?i.crossOrigin=z$(t):e!==!1&&(i.crossOrigin=typeof e=="string"?e:"anonymous")}function k$(i){return new Promise((t,e)=>{i.addEventListener("canplaythrough",s),i.addEventListener("error",r),i.load();function s(){n(),t()}function r(a){n(),e(a)}function n(){i.removeEventListener("canplaythrough",s),i.removeEventListener("error",r)}})}function z$(i,t=globalThis.location){if(i.startsWith("data:"))return"";t=t||globalThis.location;const e=new URL(i,document.baseURI);return e.hostname!==t.hostname||e.port!==t.port||e.protocol!==t.protocol?"anonymous":""}const V$={name:"loadVideo",extension:{type:B.LoadParser,name:"loadVideo"},test(i){const t=pu(i,G$),e=mu(i,vC);return t||e},async load(i,t,e){var u,l;const s={...Pc.defaultOptions,resolution:((u=t.data)==null?void 0:u.resolution)||ZI(i),alphaMode:((l=t.data)==null?void 0:l.alphaMode)||await Ov(),...t.data},r=document.createElement("video"),n={preload:s.autoLoad!==!1?"auto":void 0,"webkit-playsinline":s.playsinline!==!1?"":void 0,playsinline:s.playsinline!==!1?"":void 0,muted:s.muted===!0?"":void 0,loop:s.loop===!0?"":void 0,autoplay:s.autoPlay!==!1?"":void 0};Object.keys(n).forEach(c=>{const h=n[c];h!==void 0&&r.setAttribute(c,h)}),s.muted===!0&&(r.muted=!0),B$(r,i,s.crossorigin);const a=document.createElement("source");let o;if(i.startsWith("data:"))o=i.slice(5,i.indexOf(";"));else if(!i.startsWith("blob:")){const c=i.split("?")[0].slice(i.lastIndexOf(".")+1).toLowerCase();o=Pc.MIME_TYPES[c]||`video/${c}`}return a.src=i,o&&(a.type=o),new Promise(c=>{const h=async()=>{const _=new Pc({...s,resource:r});r.removeEventListener("canplay",h),t.data.preload&&await k$(r),c(JI(_,e,i))};r.addEventListener("canplay",h),r.appendChild(a)})},unload(i){i.destroy(!0)}},CC={extension:{type:B.ResolveParser,name:"resolveTexture"},test:yC.test,parse:i=>{var t;return{resolution:parseFloat(((t=gu.RETINA_PREFIX.exec(i))==null?void 0:t[1])??"1"),format:i.split(".").pop(),src:i}}},H$={extension:{type:B.ResolveParser,priority:-2,name:"resolveJson"},test:i=>gu.RETINA_PREFIX.test(i)&&i.endsWith(".json"),parse:CC.parse};class Y${constructor(){this._detections=[],this._initialized=!1,this.resolver=new gu,this.loader=new _$,this.cache=de,this._backgroundLoader=new i$(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(t={}){var n,a;if(this._initialized){le("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");return}if(this._initialized=!0,t.defaultSearchParams&&this.resolver.setDefaultSearchParams(t.defaultSearchParams),t.basePath&&(this.resolver.basePath=t.basePath),t.bundleIdentifier&&this.resolver.setBundleIdentifier(t.bundleIdentifier),t.manifest){let o=t.manifest;typeof o=="string"&&(o=await this.load(o)),this.resolver.addManifest(o)}const e=((n=t.texturePreference)==null?void 0:n.resolution)??1,s=typeof e=="number"?[e]:e,r=await this._detectFormats({preferredFormats:(a=t.texturePreference)==null?void 0:a.format,skipDetections:t.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:r,resolution:s}}),t.preferences&&this.setPreferences(t.preferences)}add(t){this.resolver.add(t)}async load(t,e){this._initialized||await this.init();const s=Jc(t),r=mi(t).map(o=>{if(typeof o!="string"){const u=this.resolver.getAlias(o);return u.some(l=>!this.resolver.hasKey(l))&&this.add(o),Array.isArray(u)?u[0]:u}return this.resolver.hasKey(o)||this.add({alias:o,src:o}),o}),n=this.resolver.resolve(r),a=await this._mapLoadToResolve(n,e);return s?a[r[0]]:a}addBundle(t,e){this.resolver.addBundle(t,e)}async loadBundle(t,e){this._initialized||await this.init();let s=!1;typeof t=="string"&&(s=!0,t=[t]);const r=this.resolver.resolveBundle(t),n={},a=Object.keys(r);let o=0,u=0;const l=()=>{e==null||e(++o/u)},c=a.map(h=>{const _=r[h];return u+=Object.keys(_).length,this._mapLoadToResolve(_,l).then(d=>{n[h]=d})});return await Promise.all(c),s?n[t[0]]:n}async backgroundLoad(t){this._initialized||await this.init(),typeof t=="string"&&(t=[t]);const e=this.resolver.resolve(t);this._backgroundLoader.add(Object.values(e))}async backgroundLoadBundle(t){this._initialized||await this.init(),typeof t=="string"&&(t=[t]);const e=this.resolver.resolveBundle(t);Object.values(e).forEach(s=>{this._backgroundLoader.add(Object.values(s))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(t){if(typeof t=="string")return de.get(t);const e={};for(let s=0;s<t.length;s++)e[s]=de.get(t[s]);return e}async _mapLoadToResolve(t,e){const s=[...new Set(Object.values(t))];this._backgroundLoader.active=!1;const r=await this.loader.load(s,e);this._backgroundLoader.active=!0;const n={};return s.forEach(a=>{const o=r[a.src],u=[a.src];a.alias&&u.push(...a.alias),u.forEach(l=>{n[l]=o}),de.set(u,o)}),n}async unload(t){this._initialized||await this.init();const e=mi(t).map(r=>typeof r!="string"?r.src:r),s=this.resolver.resolve(e);await this._unloadFromResolved(s)}async unloadBundle(t){this._initialized||await this.init(),t=mi(t);const e=this.resolver.resolveBundle(t),s=Object.keys(e).map(r=>this._unloadFromResolved(e[r]));await Promise.all(s)}async _unloadFromResolved(t){const e=Object.values(t);e.forEach(s=>{de.remove(s.src)}),await this.loader.unload(e)}async _detectFormats(t){let e=[];t.preferredFormats&&(e=Array.isArray(t.preferredFormats)?t.preferredFormats:[t.preferredFormats]);for(const s of t.detections)t.skipDetections||await s.test()?e=await s.add(e):t.skipDetections||(e=await s.remove(e));return e=e.filter((s,r)=>e.indexOf(s)===r),e}get detections(){return this._detections}setPreferences(t){this.loader.parsers.forEach(e=>{e.config&&Object.keys(e.config).filter(s=>s in t).forEach(s=>{e.config[s]=t[s]})})}}const ma=new Y$;fe.handleByList(B.LoadParser,ma.loader.parsers).handleByList(B.ResolveParser,ma.resolver.parsers).handleByList(B.CacheParser,ma.cache.parsers).handleByList(B.DetectionParser,ma.detections);fe.add(r$,a$,n$,c$,u$,l$,h$,g$,E$,v$,x$,yC,V$,s$,e$,CC,H$);const iy={loader:B.LoadParser,resolver:B.ResolveParser,cache:B.CacheParser,detection:B.DetectionParser};fe.handle(B.Asset,i=>{const t=i.ref;Object.entries(iy).filter(([e])=>!!t[e]).forEach(([e,s])=>fe.add(Object.assign(t[e],{extension:t[e].extension??s})))},i=>{const t=i.ref;Object.keys(iy).filter(e=>!!t[e]).forEach(e=>fe.remove(t[e]))});var MC=`in vec2 aPosition;
out vec2 vTextureCoord;
uniform vec4 uInputSize;
uniform vec4 uOutputFrame;
uniform vec4 uOutputTexture;
vec4 filterVertexPosition( void )
{
vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
vec2 filterTextureCoord( void )
{
return aPosition * (uOutputFrame.zw * uInputSize.zw);
}
void main(void)
{
gl_Position = filterVertexPosition();
vTextureCoord = filterTextureCoord();
}
`,W$=`
in vec2 vTextureCoord;
out vec4 finalColor;
uniform float uAlpha;
uniform sampler2D uTexture;
void main()
{
finalColor = texture(uTexture, vTextureCoord) * uAlpha;
}
`,ry=`struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
struct AlphaUniforms {
uAlpha:f32,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler : sampler;
@group(1) @binding(0) var<uniform> alphaUniforms : AlphaUniforms;
struct VSOutput {
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
};
fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
{
var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
{
return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
}
fn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
{
return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw);
}
fn getSize() -> vec2<f32>
{
return gfu.uGlobalFrame.zw;
}
@vertex
fn mainVertex(
@location(0) aPosition : vec2<f32>,
) -> VSOutput {
return VSOutput(
filterVertexPosition(aPosition),
filterTextureCoord(aPosition)
);
}
@fragment
fn mainFragment(
@location(0) uv: vec2<f32>,
@builtin(position) position: vec4<f32>
) -> @location(0) vec4<f32> {
var sample = textureSample(uTexture, uSampler, uv);
return sample * alphaUniforms.uAlpha;
}`;const xC=class PC extends xt{constructor(t){t={...PC.defaultOptions,...t};const e=At.from({vertex:{source:ry,entryPoint:"mainVertex"},fragment:{source:ry,entryPoint:"mainFragment"}}),s=Tt.from({vertex:MC,fragment:W$,name:"alpha-filter"}),{alpha:r,...n}=t,a=new Yr({uAlpha:{value:r,type:"f32"}});super({...n,gpuProgram:e,glProgram:s,resources:{alphaUniforms:a}})}get alpha(){return this.resources.alphaUniforms.uniforms.uAlpha}set alpha(t){this.resources.alphaUniforms.uniforms.uAlpha=t}};xC.defaultOptions={alpha:1};let n_=xC,j$=0;class K${constructor(t){this._poolKeyHash=Object.create(null),this._texturePool={},this.textureOptions=t||{},this.enableFullScreen=!1}createTexture(t,e,s){const r=new De({...this.textureOptions,width:t,height:e,resolution:1,antialias:s,autoGarbageCollect:!0});return new W({source:r,label:`texturePool_${j$++}`})}getOptimalTexture(t,e,s=1,r){let n=Math.ceil(t*s-1e-6),a=Math.ceil(e*s-1e-6);n=Dl(n),a=Dl(a);const o=(n<<17)+(a<<1)+(r?1:0);this._texturePool[o]||(this._texturePool[o]=[]);let u=this._texturePool[o].pop();return u||(u=this.createTexture(n,a,r)),u.source._resolution=s,u.source.width=n/s,u.source.height=a/s,u.source.pixelWidth=n,u.source.pixelHeight=a,u.frame.x=0,u.frame.y=0,u.frame.width=t,u.frame.height=e,u.updateUvs(),this._poolKeyHash[u.uid]=o,u}getSameSizeTexture(t,e=!1){const s=t.source;return this.getOptimalTexture(t.width,t.height,s._resolution,e)}returnTexture(t){const e=this._poolKeyHash[t.uid];this._texturePool[e].push(t)}clear(t){if(t=t!==!1,t)for(const e in this._texturePool){const s=this._texturePool[e];if(s)for(let r=0;r<s.length;r++)s[r].destroy(!0)}this._texturePool={}}}const os=new K$,bC={5:[.153388,.221461,.250301],7:[.071303,.131514,.189879,.214607],9:[.028532,.067234,.124009,.179044,.20236],11:[.0093,.028002,.065984,.121703,.175713,.198596],13:[.002406,.009255,.027867,.065666,.121117,.174868,.197641],15:[489e-6,.002403,.009246,.02784,.065602,.120999,.174697,.197448]},X$=["in vec2 vBlurTexCoords[%size%];","uniform sampler2D uTexture;","out vec4 finalColor;","void main(void)","{"," finalColor = vec4(0.0);"," %blur%","}"].join(`
`);function q$(i){const t=bC[i],e=t.length;let s=X$,r="";const n="finalColor += texture(uTexture, vBlurTexCoords[%index%]) * %value%;";let a;for(let o=0;o<i;o++){let u=n.replace("%index%",o.toString());a=o,o>=e&&(a=i-o-1),u=u.replace("%value%",t[a].toString()),r+=u,r+=`
`}return s=s.replace("%blur%",r),s=s.replace("%size%",i.toString()),s}const $$=`
in vec2 aPosition;
uniform float uStrength;
out vec2 vBlurTexCoords[%size%];
uniform vec4 uInputSize;
uniform vec4 uOutputFrame;
uniform vec4 uOutputTexture;
vec4 filterVertexPosition( void )
{
vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
vec2 filterTextureCoord( void )
{
return aPosition * (uOutputFrame.zw * uInputSize.zw);
}
void main(void)
{
gl_Position = filterVertexPosition();
float pixelStrength = uInputSize.%dimension% * uStrength;
vec2 textureCoord = filterTextureCoord();
%blur%
}`;function Q$(i,t){const e=Math.ceil(i/2);let s=$$,r="",n;t?n="vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * pixelStrength, 0.0);":n="vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * pixelStrength);";for(let a=0;a<i;a++){let o=n.replace("%index%",a.toString());o=o.replace("%sampleIndex%",`${a-(e-1)}.0`),r+=o,r+=`
`}return s=s.replace("%blur%",r),s=s.replace("%size%",i.toString()),s=s.replace("%dimension%",t?"z":"w"),s}function Z$(i,t){const e=Q$(t,i),s=q$(t);return Tt.from({vertex:e,fragment:s,name:`blur-${i?"horizontal":"vertical"}-pass-filter`})}var J$=`
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
struct BlurUniforms {
uStrength:f32,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler : sampler;
@group(1) @binding(0) var<uniform> blurUniforms : BlurUniforms;
struct VSOutput {
@builtin(position) position: vec4<f32>,
%blur-struct%
};
fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
{
var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
{
return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
}
fn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
{
return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw);
}
fn getSize() -> vec2<f32>
{
return gfu.uGlobalFrame.zw;
}
@vertex
fn mainVertex(
@location(0) aPosition : vec2<f32>,
) -> VSOutput {
let filteredCord = filterTextureCoord(aPosition);
let pixelStrength = gfu.uInputSize.%dimension% * blurUniforms.uStrength;
return VSOutput(
filterVertexPosition(aPosition),
%blur-vertex-out%
);
}
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
%blur-fragment-in%
) -> @location(0) vec4<f32> {
var finalColor = vec4(0.0);
%blur-sampling%
return finalColor;
}`;function tQ(i,t){const e=bC[t],s=e.length,r=[],n=[],a=[];for(let h=0;h<t;h++){r[h]=`@location(${h}) offset${h}: vec2<f32>,`,i?n[h]=`filteredCord + vec2(${h-s+1} * pixelStrength, 0.0),`:n[h]=`filteredCord + vec2(0.0, ${h-s+1} * pixelStrength),`;const _=h<s?h:t-h-1,d=e[_].toString();a[h]=`finalColor += textureSample(uTexture, uSampler, offset${h}) * ${d};`}const o=r.join(`
`),u=n.join(`
`),l=a.join(`
`),c=J$.replace("%blur-struct%",o).replace("%blur-vertex-out%",u).replace("%blur-fragment-in%",o).replace("%blur-sampling%",l).replace("%dimension%",i?"z":"w");return At.from({vertex:{source:c,entryPoint:"mainVertex"},fragment:{source:c,entryPoint:"mainFragment"}})}const NC=class UC extends xt{constructor(t){t={...UC.defaultOptions,...t};const e=Z$(t.horizontal,t.kernelSize),s=tQ(t.horizontal,t.kernelSize);super({glProgram:e,gpuProgram:s,resources:{blurUniforms:{uStrength:{value:0,type:"f32"}}},...t}),this.horizontal=t.horizontal,this._quality=0,this.quality=t.quality,this.blur=t.strength,this._uniforms=this.resources.blurUniforms.uniforms}apply(t,e,s,r){if(this._uniforms.uStrength=this.strength/this.passes,this.passes===1)t.applyFilter(this,e,s,r);else{const n=os.getSameSizeTexture(e);let a=e,o=n;this._state.blend=!1;const u=t.renderer.type===ir.WEBGPU;for(let l=0;l<this.passes-1;l++){t.applyFilter(this,a,o,l===0?!0:u);const c=o;o=a,a=c}this._state.blend=!0,t.applyFilter(this,a,s,r),os.returnTexture(n)}}get blur(){return this.strength}set blur(t){this.padding=1+Math.abs(t)*2,this.strength=t}get quality(){return this._quality}set quality(t){this._quality=t,this.passes=t}};NC.defaultOptions={strength:8,quality:4,kernelSize:5};let ny=NC;var eQ=`
in vec2 vTextureCoord;
in vec4 vColor;
out vec4 finalColor;
uniform float uColorMatrix[20];
uniform float uAlpha;
uniform sampler2D uTexture;
float rand(vec2 co)
{
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
}
void main()
{
vec4 color = texture(uTexture, vTextureCoord);
float randomValue = rand(gl_FragCoord.xy * 0.2);
float diff = (randomValue - 0.5) * 0.5;
if (uAlpha == 0.0) {
finalColor = color;
return;
}
if (color.a > 0.0) {
color.rgb /= color.a;
}
vec4 result;
result.r = (uColorMatrix[0] * color.r);
result.r += (uColorMatrix[1] * color.g);
result.r += (uColorMatrix[2] * color.b);
result.r += (uColorMatrix[3] * color.a);
result.r += uColorMatrix[4];
result.g = (uColorMatrix[5] * color.r);
result.g += (uColorMatrix[6] * color.g);
result.g += (uColorMatrix[7] * color.b);
result.g += (uColorMatrix[8] * color.a);
result.g += uColorMatrix[9];
result.b = (uColorMatrix[10] * color.r);
result.b += (uColorMatrix[11] * color.g);
result.b += (uColorMatrix[12] * color.b);
result.b += (uColorMatrix[13] * color.a);
result.b += uColorMatrix[14];
result.a = (uColorMatrix[15] * color.r);
result.a += (uColorMatrix[16] * color.g);
result.a += (uColorMatrix[17] * color.b);
result.a += (uColorMatrix[18] * color.a);
result.a += uColorMatrix[19];
vec3 rgb = mix(color.rgb, result.rgb, uAlpha);
// Premultiply alpha again.
rgb *= result.a;
finalColor = vec4(rgb, result.a);
}
`,ay=`struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
struct ColorMatrixUniforms {
uColorMatrix:array<vec4<f32>, 5>,
uAlpha:f32,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler : sampler;
@group(1) @binding(0) var<uniform> colorMatrixUniforms : ColorMatrixUniforms;
struct VSOutput {
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>,
};
fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
{
var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
{
return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
}
@vertex
fn mainVertex(
@location(0) aPosition : vec2<f32>,
) -> VSOutput {
return VSOutput(
filterVertexPosition(aPosition),
filterTextureCoord(aPosition),
);
}
@fragment
fn mainFragment(
@location(0) uv: vec2<f32>,
) -> @location(0) vec4<f32> {
var c = textureSample(uTexture, uSampler, uv);
if (colorMatrixUniforms.uAlpha == 0.0) {
return c;
}
// Un-premultiply alpha before applying the color matrix. See issue #3539.
if (c.a > 0.0) {
c.r /= c.a;
c.g /= c.a;
c.b /= c.a;
}
var cm = colorMatrixUniforms.uColorMatrix;
var result = vec4<f32>(0.);
result.r = (cm[0][0] * c.r);
result.r += (cm[0][1] * c.g);
result.r += (cm[0][2] * c.b);
result.r += (cm[0][3] * c.a);
result.r += cm[1][0];
result.g = (cm[1][1] * c.r);
result.g += (cm[1][2] * c.g);
result.g += (cm[1][3] * c.b);
result.g += (cm[2][0] * c.a);
result.g += cm[2][1];
result.b = (cm[2][2] * c.r);
result.b += (cm[2][3] * c.g);
result.b += (cm[3][0] * c.b);
result.b += (cm[3][1] * c.a);
result.b += cm[3][2];
result.a = (cm[3][3] * c.r);
result.a += (cm[4][0] * c.g);
result.a += (cm[4][1] * c.b);
result.a += (cm[4][2] * c.a);
result.a += cm[4][3];
var rgb = mix(c.rgb, result.rgb, colorMatrixUniforms.uAlpha);
rgb.r *= result.a;
rgb.g *= result.a;
rgb.b *= result.a;
return vec4(rgb, result.a);
}`;class ju extends xt{constructor(t={}){const e=new Yr({uColorMatrix:{value:[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],type:"f32",size:20},uAlpha:{value:1,type:"f32"}}),s=At.from({vertex:{source:ay,entryPoint:"mainVertex"},fragment:{source:ay,entryPoint:"mainFragment"}}),r=Tt.from({vertex:MC,fragment:eQ,name:"color-matrix-filter"});super({...t,gpuProgram:s,glProgram:r,resources:{colorMatrixUniforms:e}}),this.alpha=1}_loadMatrix(t,e=!1){let s=t;e&&(this._multiply(s,this.matrix,t),s=this._colorMatrix(s)),this.resources.colorMatrixUniforms.uniforms.uColorMatrix=s,this.resources.colorMatrixUniforms.update()}_multiply(t,e,s){return t[0]=e[0]*s[0]+e[1]*s[5]+e[2]*s[10]+e[3]*s[15],t[1]=e[0]*s[1]+e[1]*s[6]+e[2]*s[11]+e[3]*s[16],t[2]=e[0]*s[2]+e[1]*s[7]+e[2]*s[12]+e[3]*s[17],t[3]=e[0]*s[3]+e[1]*s[8]+e[2]*s[13]+e[3]*s[18],t[4]=e[0]*s[4]+e[1]*s[9]+e[2]*s[14]+e[3]*s[19]+e[4],t[5]=e[5]*s[0]+e[6]*s[5]+e[7]*s[10]+e[8]*s[15],t[6]=e[5]*s[1]+e[6]*s[6]+e[7]*s[11]+e[8]*s[16],t[7]=e[5]*s[2]+e[6]*s[7]+e[7]*s[12]+e[8]*s[17],t[8]=e[5]*s[3]+e[6]*s[8]+e[7]*s[13]+e[8]*s[18],t[9]=e[5]*s[4]+e[6]*s[9]+e[7]*s[14]+e[8]*s[19]+e[9],t[10]=e[10]*s[0]+e[11]*s[5]+e[12]*s[10]+e[13]*s[15],t[11]=e[10]*s[1]+e[11]*s[6]+e[12]*s[11]+e[13]*s[16],t[12]=e[10]*s[2]+e[11]*s[7]+e[12]*s[12]+e[13]*s[17],t[13]=e[10]*s[3]+e[11]*s[8]+e[12]*s[13]+e[13]*s[18],t[14]=e[10]*s[4]+e[11]*s[9]+e[12]*s[14]+e[13]*s[19]+e[14],t[15]=e[15]*s[0]+e[16]*s[5]+e[17]*s[10]+e[18]*s[15],t[16]=e[15]*s[1]+e[16]*s[6]+e[17]*s[11]+e[18]*s[16],t[17]=e[15]*s[2]+e[16]*s[7]+e[17]*s[12]+e[18]*s[17],t[18]=e[15]*s[3]+e[16]*s[8]+e[17]*s[13]+e[18]*s[18],t[19]=e[15]*s[4]+e[16]*s[9]+e[17]*s[14]+e[18]*s[19]+e[19],t}_colorMatrix(t){const e=new Float32Array(t);return e[4]/=255,e[9]/=255,e[14]/=255,e[19]/=255,e}brightness(t,e){const s=[t,0,0,0,0,0,t,0,0,0,0,0,t,0,0,0,0,0,1,0];this._loadMatrix(s,e)}tint(t,e){const[s,r,n]=Mt.shared.setValue(t).toArray(),a=[s,0,0,0,0,0,r,0,0,0,0,0,n,0,0,0,0,0,1,0];this._loadMatrix(a,e)}greyscale(t,e){const s=[t,t,t,0,0,t,t,t,0,0,t,t,t,0,0,0,0,0,1,0];this._loadMatrix(s,e)}grayscale(t,e){this.greyscale(t,e)}blackAndWhite(t){const e=[.3,.6,.1,0,0,.3,.6,.1,0,0,.3,.6,.1,0,0,0,0,0,1,0];this._loadMatrix(e,t)}hue(t,e){t=(t||0)/180*Math.PI;const s=Math.cos(t),r=Math.sin(t),n=Math.sqrt,a=1/3,o=n(a),u=s+(1-s)*a,l=a*(1-s)-o*r,c=a*(1-s)+o*r,h=a*(1-s)+o*r,_=s+a*(1-s),d=a*(1-s)-o*r,f=a*(1-s)-o*r,p=a*(1-s)+o*r,g=s+a*(1-s),m=[u,l,c,0,0,h,_,d,0,0,f,p,g,0,0,0,0,0,1,0];this._loadMatrix(m,e)}contrast(t,e){const s=(t||0)+1,r=-.5*(s-1),n=[s,0,0,0,r,0,s,0,0,r,0,0,s,0,r,0,0,0,1,0];this._loadMatrix(n,e)}saturate(t=0,e){const s=t*2/3+1,r=(s-1)*-.5,n=[s,r,r,0,0,r,s,r,0,0,r,r,s,0,0,0,0,0,1,0];this._loadMatrix(n,e)}desaturate(){this.saturate(-1)}negative(t){const e=[-1,0,0,1,0,0,-1,0,1,0,0,0,-1,1,0,0,0,0,1,0];this._loadMatrix(e,t)}sepia(t){const e=[.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0];this._loadMatrix(e,t)}technicolor(t){const e=[1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0];this._loadMatrix(e,t)}polaroid(t){const e=[1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0];this._loadMatrix(e,t)}toBGR(t){const e=[0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0];this._loadMatrix(e,t)}kodachrome(t){const e=[1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0];this._loadMatrix(e,t)}browni(t){const e=[.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0];this._loadMatrix(e,t)}vintage(t){const e=[.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0];this._loadMatrix(e,t)}colorTone(t,e,s,r,n){t=t||.2,e=e||.15,s=s||16770432,r=r||3375104;const a=Mt.shared,[o,u,l]=a.setValue(s).toArray(),[c,h,_]=a.setValue(r).toArray(),d=[.3,.59,.11,0,0,o,u,l,t,0,c,h,_,e,0,o-c,u-h,l-_,0,0];this._loadMatrix(d,n)}night(t,e){t=t||.1;const s=[t*-2,-t,0,0,0,-t,0,t,0,0,0,t,t*2,0,0,0,0,0,1,0];this._loadMatrix(s,e)}predator(t,e){const s=[11.224130630493164*t,-4.794486999511719*t,-2.8746118545532227*t,0*t,.40342438220977783*t,-3.6330697536468506*t,9.193157196044922*t,-2.951810836791992*t,0*t,-1.316135048866272*t,-3.2184197902679443*t,-4.2375030517578125*t,7.476448059082031*t,0*t,.8044459223747253*t,0,0,0,1,0];this._loadMatrix(s,e)}lsd(t){const e=[2,-.4,.5,0,0,-.5,2,-.4,0,0,-.4,-.5,3,0,0,0,0,0,1,0];this._loadMatrix(e,t)}reset(){const t=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0];this._loadMatrix(t,!1)}get matrix(){return this.resources.colorMatrixUniforms.uniforms.uColorMatrix}set matrix(t){this.resources.colorMatrixUniforms.uniforms.uColorMatrix=t}get alpha(){return this.resources.colorMatrixUniforms.uniforms.uAlpha}set alpha(t){this.resources.colorMatrixUniforms.uniforms.uAlpha=t}}var sQ=`in vec2 vMaskCoord;
in vec2 vTextureCoord;
uniform sampler2D uTexture;
uniform sampler2D uMaskTexture;
uniform float uAlpha;
uniform vec4 uMaskClamp;
uniform float uInverse;
out vec4 finalColor;
void main(void)
{
float clip = step(3.5,
step(uMaskClamp.x, vMaskCoord.x) +
step(uMaskClamp.y, vMaskCoord.y) +
step(vMaskCoord.x, uMaskClamp.z) +
step(vMaskCoord.y, uMaskClamp.w));
// TODO look into why this is needed
float npmAlpha = uAlpha;
vec4 original = texture(uTexture, vTextureCoord);
vec4 masky = texture(uMaskTexture, vMaskCoord);
float alphaMul = 1.0 - npmAlpha * (1.0 - masky.a);
float a = alphaMul * masky.r * npmAlpha * clip;
if (uInverse == 1.0) {
a = 1.0 - a;
}
finalColor = original * a;
}
`,iQ=`in vec2 aPosition;
out vec2 vTextureCoord;
out vec2 vMaskCoord;
uniform vec4 uInputSize;
uniform vec4 uOutputFrame;
uniform vec4 uOutputTexture;
uniform mat3 uFilterMatrix;
vec4 filterVertexPosition( vec2 aPosition )
{
vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
vec2 filterTextureCoord( vec2 aPosition )
{
return aPosition * (uOutputFrame.zw * uInputSize.zw);
}
vec2 getFilterCoord( vec2 aPosition )
{
return ( uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;
}
void main(void)
{
gl_Position = filterVertexPosition(aPosition);
vTextureCoord = filterTextureCoord(aPosition);
vMaskCoord = getFilterCoord(aPosition);
}
`,oy=`struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
struct MaskUniforms {
uFilterMatrix:mat3x3<f32>,
uMaskClamp:vec4<f32>,
uAlpha:f32,
uInverse:f32,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler : sampler;
@group(1) @binding(0) var<uniform> filterUniforms : MaskUniforms;
@group(1) @binding(1) var uMaskTexture: texture_2d<f32>;
struct VSOutput {
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>,
@location(1) filterUv : vec2<f32>,
};
fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
{
var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
{
return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
}
fn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
{
return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw);
}
fn getFilterCoord(aPosition:vec2<f32> ) -> vec2<f32>
{
return ( filterUniforms.uFilterMatrix * vec3( filterTextureCoord(aPosition), 1.0) ).xy;
}
fn getSize() -> vec2<f32>
{
return gfu.uGlobalFrame.zw;
}
@vertex
fn mainVertex(
@location(0) aPosition : vec2<f32>,
) -> VSOutput {
return VSOutput(
filterVertexPosition(aPosition),
filterTextureCoord(aPosition),
getFilterCoord(aPosition)
);
}
@fragment
fn mainFragment(
@location(0) uv: vec2<f32>,
@location(1) filterUv: vec2<f32>,
@builtin(position) position: vec4<f32>
) -> @location(0) vec4<f32> {
var maskClamp = filterUniforms.uMaskClamp;
var uAlpha = filterUniforms.uAlpha;
var clip = step(3.5,
step(maskClamp.x, filterUv.x) +
step(maskClamp.y, filterUv.y) +
step(filterUv.x, maskClamp.z) +
step(filterUv.y, maskClamp.w));
var mask = textureSample(uMaskTexture, uSampler, filterUv);
var source = textureSample(uTexture, uSampler, uv);
var alphaMul = 1.0 - uAlpha * (1.0 - mask.a);
var a: f32 = alphaMul * mask.r * uAlpha * clip;
if (filterUniforms.uInverse == 1.0) {
a = 1.0 - a;
}
return source * a;
}
`;class rQ extends xt{constructor(t){const{sprite:e,...s}=t,r=new av(e.texture),n=new Yr({uFilterMatrix:{value:new ot,type:"mat3x3<f32>"},uMaskClamp:{value:r.uClampFrame,type:"vec4<f32>"},uAlpha:{value:1,type:"f32"},uInverse:{value:t.inverse?1:0,type:"f32"}}),a=At.from({vertex:{source:oy,entryPoint:"mainVertex"},fragment:{source:oy,entryPoint:"mainFragment"}}),o=Tt.from({vertex:iQ,fragment:sQ,name:"mask-filter"});super({...s,gpuProgram:a,glProgram:o,resources:{filterUniforms:n,uMaskTexture:e.texture.source}}),this.sprite=e,this._textureMatrix=r}set inverse(t){this.resources.filterUniforms.uniforms.uInverse=t?1:0}get inverse(){return this.resources.filterUniforms.uniforms.uInverse===1}apply(t,e,s,r){this._textureMatrix.texture=this.sprite.texture,t.calculateSpriteMatrix(this.resources.filterUniforms.uniforms.uFilterMatrix,this.sprite).prepend(this._textureMatrix.mapCoord),this.resources.uMaskTexture=this.sprite.texture.source,t.applyFilter(this,e,s,r)}}class nQ{constructor({matrix:t,observer:e}={}){this.dirty=!0,this._matrix=t??new ot,this.observer=e,this.position=new Pe(this,0,0),this.scale=new Pe(this,1,1),this.pivot=new Pe(this,0,0),this.skew=new Pe(this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1}get matrix(){const t=this._matrix;return this.dirty&&(t.a=this._cx*this.scale.x,t.b=this._sx*this.scale.x,t.c=this._cy*this.scale.y,t.d=this._sy*this.scale.y,t.tx=this.position.x-(this.pivot.x*t.a+this.pivot.y*t.c),t.ty=this.position.y-(this.pivot.x*t.b+this.pivot.y*t.d),this.dirty=!1),t}_onUpdate(t){var e;this.dirty=!0,t===this.skew&&this.updateSkew(),(e=this.observer)==null||e._onUpdate(this)}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.dirty=!0}toString(){return`[pixi.js/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}) ]`}setFromMatrix(t){t.decompose(this),this.dirty=!0}get rotation(){return this._rotation}set rotation(t){this._rotation!==t&&(this._rotation=t,this._onUpdate(this.skew))}}const DC=class Nc extends fm{constructor(...t){let e=t[0]||{};e instanceof W&&(e={texture:e}),t.length>1&&(ct(Te,"use new TilingSprite({ texture, width:100, height:100 }) instead"),e.width=t[1],e.height=t[2]),e={...Nc.defaultOptions,...e};const{texture:s,anchor:r,tilePosition:n,tileScale:a,tileRotation:o,width:u,height:l,applyAnchorToTexture:c,roundPixels:h,..._}=e??{};super({label:"TilingSprite",..._}),this.renderPipeId="tilingSprite",this.batched=!0,this.allowChildren=!1,this._anchor=new Pe({_onUpdate:()=>{this.onViewUpdate()}}),this._applyAnchorToTexture=c,this.texture=s,this._width=u??s.width,this._height=l??s.height,this._tileTransform=new nQ({observer:{_onUpdate:()=>this.onViewUpdate()}}),r&&(this.anchor=r),this.tilePosition=n,this.tileScale=a,this.tileRotation=o,this.roundPixels=h??!1}static from(t,e={}){return typeof t=="string"?new Nc({texture:de.get(t),...e}):new Nc({texture:t,...e})}get clampMargin(){return this._texture.textureMatrix.clampMargin}set clampMargin(t){this._texture.textureMatrix.clampMargin=t}get anchor(){return this._anchor}set anchor(t){typeof t=="number"?this._anchor.set(t):this._anchor.copyFrom(t)}get tilePosition(){return this._tileTransform.position}set tilePosition(t){this._tileTransform.position.copyFrom(t)}get tileScale(){return this._tileTransform.scale}set tileScale(t){typeof t=="number"?this._tileTransform.scale.set(t):this._tileTransform.scale.copyFrom(t)}set tileRotation(t){this._tileTransform.rotation=t}get tileRotation(){return this._tileTransform.rotation}get tileTransform(){return this._tileTransform}get bounds(){return this._boundsDirty&&(this._updateBounds(),this._boundsDirty=!1),this._bounds}set texture(t){t||(t=W.EMPTY);const e=this._texture;e!==t&&(e&&e.dynamic&&e.off("update",this.onViewUpdate,this),t.dynamic&&t.on("update",this.onViewUpdate,this),this._texture=t,this.onViewUpdate())}get texture(){return this._texture}set width(t){this._width=t,this.onViewUpdate()}get width(){return this._width}set height(t){this._height=t,this.onViewUpdate()}get height(){return this._height}setSize(t,e){typeof t=="object"&&(e=t.height??t.width,t=t.width),this._width=t,this._height=e??t,this.onViewUpdate()}getSize(t){return t||(t={}),t.width=this._width,t.height=this._height,t}_updateBounds(){const t=this._bounds,e=this._anchor,s=this._width,r=this._height;t.maxX=-e._x*s,t.minX=t.maxX+s,t.maxY=-e._y*r,t.minY=t.maxY+r}addBounds(t){const e=this.bounds;t.addFrame(e.minX,e.minY,e.maxX,e.maxY)}containsPoint(t){const e=this._width,s=this._height,r=-e*this._anchor._x;let n=0;return t.x>=r&&t.x<=r+e&&(n=-s*this._anchor._y,t.y>=n&&t.y<=n+s)}onViewUpdate(){this._boundsDirty=!0,super.onViewUpdate()}destroy(t=!1){if(super.destroy(t),this._anchor=null,this._tileTransform=null,this._bounds=null,typeof t=="boolean"?t:t==null?void 0:t.texture){const s=typeof t=="boolean"?t:t==null?void 0:t.textureSource;this._texture.destroy(s)}this._texture=null}};DC.defaultOptions={texture:W.EMPTY,anchor:{x:0,y:0},tilePosition:{x:0,y:0},tileScale:{x:1,y:1},tileRotation:0,applyAnchorToTexture:!1};let Ac=DC;class aQ extends fm{constructor(t,e){const{text:s,resolution:r,style:n,anchor:a,width:o,height:u,roundPixels:l,...c}=t;super({...c}),this.batched=!0,this._resolution=null,this._autoResolution=!0,this._didTextUpdate=!0,this._styleClass=e,this.text=s??"",this.style=n,this.resolution=r??null,this.allowChildren=!1,this._anchor=new Pe({_onUpdate:()=>{this.onViewUpdate()}}),a&&(this.anchor=a),this.roundPixels=l??!1,o!==void 0&&(this.width=o),u!==void 0&&(this.height=u)}get anchor(){return this._anchor}set anchor(t){typeof t=="number"?this._anchor.set(t):this._anchor.copyFrom(t)}set text(t){t=t.toString(),this._text!==t&&(this._text=t,this.onViewUpdate())}get text(){return this._text}set resolution(t){this._autoResolution=t===null,this._resolution=t,this.onViewUpdate()}get resolution(){return this._resolution}get style(){return this._style}set style(t){var e;t=t||{},(e=this._style)==null||e.off("update",this.onViewUpdate,this),t instanceof this._styleClass?this._style=t:this._style=new this._styleClass(t),this._style.on("update",this.onViewUpdate,this),this.onViewUpdate()}get bounds(){return this._boundsDirty&&(this._updateBounds(),this._boundsDirty=!1),this._bounds}get width(){return Math.abs(this.scale.x)*this.bounds.width}set width(t){this._setWidth(t,this.bounds.width)}get height(){return Math.abs(this.scale.y)*this.bounds.height}set height(t){this._setHeight(t,this.bounds.height)}getSize(t){return t||(t={}),t.width=Math.abs(this.scale.x)*this.bounds.width,t.height=Math.abs(this.scale.y)*this.bounds.height,t}setSize(t,e){typeof t=="object"?(e=t.height??t.width,t=t.width):e??(e=t),t!==void 0&&this._setWidth(t,this.bounds.width),e!==void 0&&this._setHeight(e,this.bounds.height)}addBounds(t){const e=this.bounds;t.addFrame(e.minX,e.minY,e.maxX,e.maxY)}containsPoint(t){const e=this.bounds.width,s=this.bounds.height,r=-e*this.anchor.x;let n=0;return t.x>=r&&t.x<=r+e&&(n=-s*this.anchor.y,t.y>=n&&t.y<=n+s)}onViewUpdate(){this._boundsDirty=!0,this.didViewUpdate||(this._didTextUpdate=!0),super.onViewUpdate()}_getKey(){return`${this.text}:${this._style.styleKey}:${this._resolution}`}destroy(t=!1){super.destroy(t),this.owner=null,this._bounds=null,this._anchor=null,(typeof t=="boolean"?t:t!=null&&t.style)&&this._style.destroy(t),this._style=null,this._text=null}}function oQ(i,t){let e=i[0]??{};return(typeof e=="string"||i[1])&&(ct(Te,`use new ${t}({ text: "hi!", style }) instead`),e={text:e,style:i[1]}),e}class uQ extends aQ{constructor(...t){const e=oQ(t,"Text");super(e,vn),this.renderPipeId="text"}_updateBounds(){const t=this._bounds,e=this._anchor,s=r_.measureText(this._text,this._style),{width:r,height:n}=s;t.minX=-e._x*r,t.maxX=t.minX+r,t.minY=-e._y*n,t.maxY=t.minY+n}}const Oc=Qh.for2d();class LC{start(t,e,s){const r=t.renderer,n=r.encoder,a=s.gpuProgram;this._shader=s,this._geometry=e,n.setGeometry(e,a),Oc.blendMode="normal",r.pipeline.getPipeline(e,a,Oc);const o=r.globalUniforms.bindGroup;n.resetBindGroup(1),n.setBindGroup(0,o,a)}execute(t,e){const s=this._shader.gpuProgram,r=t.renderer,n=r.encoder;if(!e.bindGroup){const u=e.textures;e.bindGroup=VI(u.textures,u.count)}Oc.blendMode=e.blendMode;const a=r.bindGroup.getBindGroup(e.bindGroup,s,1),o=r.pipeline.getPipeline(this._geometry,s,Oc);e.bindGroup._touch(r.textureGC.count),n.setPipeline(o),n.renderPassEncoder.setBindGroup(1,a),n.renderPassEncoder.drawIndexed(e.size,1,e.start)}}LC.extension={type:[B.WebGPUPipesAdaptor],name:"batch"};const tS=class FC{constructor(t,e){var s,r;this.state=Qh.for2d(),this._batchersByInstructionSet=Object.create(null),this._activeBatches=Object.create(null),this.renderer=t,this._adaptor=e,(r=(s=this._adaptor).init)==null||r.call(s,this)}static getBatcher(t){return new this._availableBatchers[t]}buildStart(t){let e=this._batchersByInstructionSet[t.uid];e||(e=this._batchersByInstructionSet[t.uid]=Object.create(null),e.default||(e.default=new WI)),this._activeBatches=e,this._activeBatch=this._activeBatches.default;for(const s in this._activeBatches)this._activeBatches[s].begin()}addToBatch(t,e){if(this._activeBatch.name!==t.batcherName){this._activeBatch.break(e);let s=this._activeBatches[t.batcherName];s||(s=this._activeBatches[t.batcherName]=FC.getBatcher(t.batcherName),s.begin()),this._activeBatch=s}this._activeBatch.add(t)}break(t){this._activeBatch.break(t)}buildEnd(t){this._activeBatch.break(t);const e=this._activeBatches;for(const s in e){const r=e[s],n=r.geometry;n.indexBuffer.setDataWithSize(r.indexBuffer,r.indexSize,!0),n.buffers[0].setDataWithSize(r.attributeBuffer.float32View,r.attributeSize,!1)}}upload(t){const e=this._batchersByInstructionSet[t.uid];for(const s in e){const r=e[s],n=r.geometry;r.dirty&&(r.dirty=!1,n.buffers[0].update(r.attributeSize*4))}}execute(t){if(t.action==="startBatch"){const e=t.batcher,s=e.geometry,r=e.shader;this._adaptor.start(this,s,r)}this._adaptor.execute(this,t)}destroy(){this.state=null,this.renderer=null,this._adaptor=null;for(const t in this._activeBatches)this._activeBatches[t].destroy();this._activeBatches=null}};tS.extension={type:[B.WebGLPipes,B.WebGPUPipes,B.CanvasPipes],name:"batch"};tS._availableBatchers=Object.create(null);let wC=tS;fe.handleByMap(B.Batcher,wC._availableBatchers);fe.add(WI);const Ku={name:"local-uniform-bit",vertex:{header:`
struct LocalUniforms {
uTransformMatrix:mat3x3<f32>,
uColor:vec4<f32>,
uRound:f32,
}
@group(1) @binding(0) var<uniform> localUniforms : LocalUniforms;
`,main:`
vColor *= localUniforms.uColor;
modelMatrix *= localUniforms.uTransformMatrix;
`,end:`
if(localUniforms.uRound == 1)
{
vPosition = vec4(roundPixels(vPosition.xy, globalUniforms.uResolution), vPosition.zw);
}
`}},lQ={...Ku,vertex:{...Ku.vertex,header:Ku.vertex.header.replace("group(1)","group(2)")}},hQ={name:"local-uniform-bit",vertex:{header:`
uniform mat3 uTransformMatrix;
uniform vec4 uColor;
uniform float uRound;
`,main:`
vColor *= uColor;
modelMatrix = uTransformMatrix;
`,end:`
if(uRound == 1.)
{
gl_Position.xy = roundPixels(gl_Position.xy, uResolution);
}
`}},cQ={name:"texture-bit",vertex:{header:`
struct TextureUniforms {
uTextureMatrix:mat3x3<f32>,
}
@group(2) @binding(2) var<uniform> textureUniforms : TextureUniforms;
`,main:`
uv = (textureUniforms.uTextureMatrix * vec3(uv, 1.0)).xy;
`},fragment:{header:`
@group(2) @binding(0) var uTexture: texture_2d<f32>;
@group(2) @binding(1) var uSampler: sampler;
`,main:`
outColor = textureSample(uTexture, uSampler, vUV);
`}},_Q={name:"texture-bit",vertex:{header:`
uniform mat3 uTextureMatrix;
`,main:`
uv = (uTextureMatrix * vec3(uv, 1.0)).xy;
`},fragment:{header:`
uniform sampler2D uTexture;
`,main:`
outColor = texture(uTexture, vUV);
`}};function dQ(i,t){const e=i.root,s=i.instructionSet;s.reset();const r=t.renderPipes?t:t.batch.renderer,n=r.renderPipes;n.batch.buildStart(s),n.blendMode.buildStart(),n.colorMask.buildStart(),e.sortableChildren&&e.sortChildren(),GC(e,s,r,!0),n.batch.buildEnd(s),n.blendMode.buildEnd(s)}function Om(i,t,e){const s=e.renderPipes?e:e.batch.renderer;i.globalDisplayStatus<7||!i.includeInBuild||(i.sortableChildren&&i.sortChildren(),i.isSimple?fQ(i,t,s):GC(i,t,s,!1))}function fQ(i,t,e){if(i.renderPipeId){const s=i,{renderPipes:r,renderableGC:n}=e;r.blendMode.setBlendMode(s,i.groupBlendMode,t),r[s.renderPipeId].addRenderable(s,t),n.addRenderable(s,t),s.didViewUpdate=!1}if(!i.renderGroup){const s=i.children,r=s.length;for(let n=0;n<r;n++)Om(s[n],t,e)}}function GC(i,t,e,s){const{renderPipes:r,renderableGC:n}=e;if(!s&&i.renderGroup)r.renderGroup.addRenderGroup(i.renderGroup,t);else{for(let l=0;l<i.effects.length;l++){const c=i.effects[l];r[c.pipe].push(c,i,t)}const a=i,o=a.renderPipeId;o&&(r.blendMode.setBlendMode(a,a.groupBlendMode,t),r[o].addRenderable(a,t),n.addRenderable(a,t),a.didViewUpdate=!1);const u=i.children;if(u.length)for(let l=0;l<u.length;l++)Om(u[l],t,e);for(let l=i.effects.length-1;l>=0;l--){const c=i.effects[l];r[c.pipe].pop(c,i,t)}}}const gQ=new Bs;class pQ extends $c{constructor(){super(),this.filters=[new rQ({sprite:new wt(W.EMPTY),inverse:!1,resolution:"inherit",antialias:"inherit"})]}get sprite(){return this.filters[0].sprite}set sprite(t){this.filters[0].sprite=t}get inverse(){return this.filters[0].inverse}set inverse(t){this.filters[0].inverse=t}}class BC{constructor(t){this._activeMaskStage=[],this._renderer=t}push(t,e,s){const r=this._renderer;if(r.renderPipes.batch.break(s),s.add({renderPipeId:"alphaMask",action:"pushMaskBegin",mask:t,inverse:e._maskOptions.inverse,canBundle:!1,maskedContainer:e}),t.inverse=e._maskOptions.inverse,t.renderMaskToTexture){const n=t.mask;n.includeInBuild=!0,Om(n,s,r),n.includeInBuild=!1}r.renderPipes.batch.break(s),s.add({renderPipeId:"alphaMask",action:"pushMaskEnd",mask:t,maskedContainer:e,inverse:e._maskOptions.inverse,canBundle:!1})}pop(t,e,s){this._renderer.renderPipes.batch.break(s),s.add({renderPipeId:"alphaMask",action:"popMaskEnd",mask:t,inverse:e._maskOptions.inverse,canBundle:!1})}execute(t){const e=this._renderer,s=t.mask.renderMaskToTexture;if(t.action==="pushMaskBegin"){const r=ls.get(pQ);if(r.inverse=t.inverse,s){t.mask.mask.measurable=!0;const n=LI(t.mask.mask,!0,gQ);t.mask.mask.measurable=!1,n.ceil();const a=e.renderTarget.renderTarget.colorTexture.source,o=os.getOptimalTexture(n.width,n.height,a._resolution,a.antialias);e.renderTarget.push(o,!0),e.globalUniforms.push({offset:n,worldColor:4294967295});const u=r.sprite;u.texture=o,u.worldTransform.tx=n.minX,u.worldTransform.ty=n.minY,this._activeMaskStage.push({filterEffect:r,maskedContainer:t.maskedContainer,filterTexture:o})}else r.sprite=t.mask.mask,this._activeMaskStage.push({filterEffect:r,maskedContainer:t.maskedContainer})}else if(t.action==="pushMaskEnd"){const r=this._activeMaskStage[this._activeMaskStage.length-1];s&&(e.type===ir.WEBGL&&e.renderTarget.finishRenderPass(),e.renderTarget.pop(),e.globalUniforms.pop()),e.filter.push({renderPipeId:"filter",action:"pushFilter",container:r.maskedContainer,filterEffect:r.filterEffect,canBundle:!1})}else if(t.action==="popMaskEnd"){e.filter.pop();const r=this._activeMaskStage.pop();s&&os.returnTexture(r.filterTexture),ls.return(r.filterEffect)}}destroy(){this._renderer=null,this._activeMaskStage=null}}BC.extension={type:[B.WebGLPipes,B.WebGPUPipes,B.CanvasPipes],name:"alphaMask"};class kC{constructor(t){this._colorStack=[],this._colorStackIndex=0,this._currentColor=0,this._renderer=t}buildStart(){this._colorStack[0]=15,this._colorStackIndex=1,this._currentColor=15}push(t,e,s){this._renderer.renderPipes.batch.break(s);const n=this._colorStack;n[this._colorStackIndex]=n[this._colorStackIndex-1]&t.mask;const a=this._colorStack[this._colorStackIndex];a!==this._currentColor&&(this._currentColor=a,s.add({renderPipeId:"colorMask",colorMask:a,canBundle:!1})),this._colorStackIndex++}pop(t,e,s){this._renderer.renderPipes.batch.break(s);const n=this._colorStack;this._colorStackIndex--;const a=n[this._colorStackIndex-1];a!==this._currentColor&&(this._currentColor=a,s.add({renderPipeId:"colorMask",colorMask:a,canBundle:!1}))}execute(t){this._renderer.colorMask.setMask(t.colorMask)}destroy(){this._colorStack=null}}kC.extension={type:[B.WebGLPipes,B.WebGPUPipes,B.CanvasPipes],name:"colorMask"};class zC{constructor(t){this._maskStackHash={},this._maskHash=new WeakMap,this._renderer=t}push(t,e,s){var r;const n=t,a=this._renderer;a.renderPipes.batch.break(s),a.renderPipes.blendMode.setBlendMode(n.mask,"none",s),s.add({renderPipeId:"stencilMask",action:"pushMaskBegin",mask:t,inverse:e._maskOptions.inverse,canBundle:!1});const o=n.mask;o.includeInBuild=!0,this._maskHash.has(n)||this._maskHash.set(n,{instructionsStart:0,instructionsLength:0});const u=this._maskHash.get(n);u.instructionsStart=s.instructionSize,Om(o,s,a),o.includeInBuild=!1,a.renderPipes.batch.break(s),s.add({renderPipeId:"stencilMask",action:"pushMaskEnd",mask:t,inverse:e._maskOptions.inverse,canBundle:!1});const l=s.instructionSize-u.instructionsStart-1;u.instructionsLength=l;const c=a.renderTarget.renderTarget.uid;(r=this._maskStackHash)[c]??(r[c]=0)}pop(t,e,s){const r=t,n=this._renderer;n.renderPipes.batch.break(s),n.renderPipes.blendMode.setBlendMode(r.mask,"none",s),s.add({renderPipeId:"stencilMask",action:"popMaskBegin",inverse:e._maskOptions.inverse,canBundle:!1});const a=this._maskHash.get(t);for(let o=0;o<a.instructionsLength;o++)s.instructions[s.instructionSize++]=s.instructions[a.instructionsStart++];s.add({renderPipeId:"stencilMask",action:"popMaskEnd",canBundle:!1})}execute(t){var e;const s=this._renderer,r=s.renderTarget.renderTarget.uid;let n=(e=this._maskStackHash)[r]??(e[r]=0);t.action==="pushMaskBegin"?(s.renderTarget.ensureDepthStencil(),s.stencil.setStencilMode(He.RENDERING_MASK_ADD,n),n++,s.colorMask.setMask(0)):t.action==="pushMaskEnd"?(t.inverse?s.stencil.setStencilMode(He.INVERSE_MASK_ACTIVE,n):s.stencil.setStencilMode(He.MASK_ACTIVE,n),s.colorMask.setMask(15)):t.action==="popMaskBegin"?(s.colorMask.setMask(0),n!==0?s.stencil.setStencilMode(He.RENDERING_MASK_REMOVE,n):(s.renderTarget.clear(null,Ei.STENCIL),s.stencil.setStencilMode(He.DISABLED,n)),n--):t.action==="popMaskEnd"&&(t.inverse?s.stencil.setStencilMode(He.INVERSE_MASK_ACTIVE,n):s.stencil.setStencilMode(He.MASK_ACTIVE,n),s.colorMask.setMask(15)),this._maskStackHash[r]=n}destroy(){this._renderer=null,this._maskStackHash=null,this._maskHash=null}}zC.extension={type:[B.WebGLPipes,B.WebGPUPipes,B.CanvasPipes],name:"stencilMask"};function VC(i,t){for(const e in i.attributes){const s=i.attributes[e],r=t[e];r?(s.format??(s.format=r.format),s.offset??(s.offset=r.offset),s.instance??(s.instance=r.instance)):le(`Attribute ${e} is not present in the shader, but is present in the geometry. Unable to infer attribute details.`)}mQ(i)}function mQ(i){const{buffers:t,attributes:e}=i,s={},r={};for(const n in t){const a=t[n];s[a.uid]=0,r[a.uid]=0}for(const n in e){const a=e[n];s[a.buffer.uid]+=t_(a.format).stride}for(const n in e){const a=e[n];a.stride??(a.stride=s[a.buffer.uid]),a.start??(a.start=r[a.buffer.uid]),r[a.buffer.uid]+=t_(a.format).stride}}const Un=[];Un[He.NONE]=void 0;Un[He.DISABLED]={stencilWriteMask:0,stencilReadMask:0};Un[He.RENDERING_MASK_ADD]={stencilFront:{compare:"equal",passOp:"increment-clamp"},stencilBack:{compare:"equal",passOp:"increment-clamp"}};Un[He.RENDERING_MASK_REMOVE]={stencilFront:{compare:"equal",passOp:"decrement-clamp"},stencilBack:{compare:"equal",passOp:"decrement-clamp"}};Un[He.MASK_ACTIVE]={stencilWriteMask:0,stencilFront:{compare:"equal",passOp:"keep"},stencilBack:{compare:"equal",passOp:"keep"}};Un[He.INVERSE_MASK_ACTIVE]={stencilWriteMask:0,stencilFront:{compare:"not-equal",passOp:"replace"},stencilBack:{compare:"not-equal",passOp:"replace"}};class HC{constructor(t){this._syncFunctionHash=Object.create(null),this._adaptor=t,this._systemCheck()}_systemCheck(){if(!wv())throw new Error("Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.")}ensureUniformGroup(t){const e=this.getUniformGroupData(t);t.buffer||(t.buffer=new Hr({data:new Float32Array(e.layout.size/4),usage:Oe.UNIFORM|Oe.COPY_DST}))}getUniformGroupData(t){return this._syncFunctionHash[t._signature]||this._initUniformGroup(t)}_initUniformGroup(t){const e=t._signature;let s=this._syncFunctionHash[e];if(!s){const r=Object.keys(t.uniformStructures).map(o=>t.uniformStructures[o]),n=this._adaptor.createUboElements(r),a=this._generateUboSync(n.uboElements);s=this._syncFunctionHash[e]={layout:n,syncFunction:a}}return this._syncFunctionHash[e]}_generateUboSync(t){return this._adaptor.generateUboSync(t)}syncUniformGroup(t,e,s){const r=this.getUniformGroupData(t);return t.buffer||(t.buffer=new Hr({data:new Float32Array(r.layout.size/4),usage:Oe.UNIFORM|Oe.COPY_DST})),e||(e=t.buffer.data),s||(s=0),r.syncFunction(t.uniforms,e,s),!0}updateUniformGroup(t){if(t.isStatic&&!t._dirtyId)return!1;t._dirtyId=0;const e=this.syncUniformGroup(t);return t.buffer.update(),e}destroy(){this._syncFunctionHash=null}}const Lu=[{type:"mat3x3<f32>",test:i=>i.value.a!==void 0,ubo:`
var matrix = uv[name].toArray(true);
data[offset] = matrix[0];
data[offset + 1] = matrix[1];
data[offset + 2] = matrix[2];
data[offset + 4] = matrix[3];
data[offset + 5] = matrix[4];
data[offset + 6] = matrix[5];
data[offset + 8] = matrix[6];
data[offset + 9] = matrix[7];
data[offset + 10] = matrix[8];
`,uniform:`
gl.uniformMatrix3fv(ud[name].location, false, uv[name].toArray(true));
`},{type:"vec4<f32>",test:i=>i.type==="vec4<f32>"&&i.size===1&&i.value.width!==void 0,ubo:`
v = uv[name];
data[offset] = v.x;
data[offset + 1] = v.y;
data[offset + 2] = v.width;
data[offset + 3] = v.height;
`,uniform:`
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.x || cv[1] !== v.y || cv[2] !== v.width || cv[3] !== v.height) {
cv[0] = v.x;
cv[1] = v.y;
cv[2] = v.width;
cv[3] = v.height;
gl.uniform4f(ud[name].location, v.x, v.y, v.width, v.height);
}
`},{type:"vec2<f32>",test:i=>i.type==="vec2<f32>"&&i.size===1&&i.value.x!==void 0,ubo:`
v = uv[name];
data[offset] = v.x;
data[offset + 1] = v.y;
`,uniform:`
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.x || cv[1] !== v.y) {
cv[0] = v.x;
cv[1] = v.y;
gl.uniform2f(ud[name].location, v.x, v.y);
}
`},{type:"vec4<f32>",test:i=>i.type==="vec4<f32>"&&i.size===1&&i.value.red!==void 0,ubo:`
v = uv[name];
data[offset] = v.red;
data[offset + 1] = v.green;
data[offset + 2] = v.blue;
data[offset + 3] = v.alpha;
`,uniform:`
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue || cv[3] !== v.alpha) {
cv[0] = v.red;
cv[1] = v.green;
cv[2] = v.blue;
cv[3] = v.alpha;
gl.uniform4f(ud[name].location, v.red, v.green, v.blue, v.alpha);
}
`},{type:"vec3<f32>",test:i=>i.type==="vec3<f32>"&&i.size===1&&i.value.red!==void 0,ubo:`
v = uv[name];
data[offset] = v.red;
data[offset + 1] = v.green;
data[offset + 2] = v.blue;
`,uniform:`
cv = ud[name].value;
v = uv[name];
if (cv[0] !== v.red || cv[1] !== v.green || cv[2] !== v.blue) {
cv[0] = v.red;
cv[1] = v.green;
cv[2] = v.blue;
gl.uniform3f(ud[name].location, v.red, v.green, v.blue);
}
`}];function YC(i,t,e,s){const r=[`
var v = null;
var v2 = null;
var t = 0;
var index = 0;
var name = null;
var arrayOffset = null;
`];let n=0;for(let o=0;o<i.length;o++){const u=i[o],l=u.data.name;let c=!1,h=0;for(let _=0;_<Lu.length;_++)if(Lu[_].test(u.data)){h=u.offset/4,r.push(`name = "${l}";`,`offset += ${h-n};`,Lu[_][t]||Lu[_].ubo),c=!0;break}if(!c)if(u.data.size>1)h=u.offset/4,r.push(e(u,h-n));else{const _=s[u.data.type];h=u.offset/4,r.push(`
v = uv.${l};
offset += ${h-n};
${_};
`)}n=h}const a=r.join(`
`);return new Function("uv","data","offset",a)}function io(i,t){return`
for (let i = 0; i < ${i*t}; i++) {
data[offset + (((i / ${i})|0) * 4) + (i % ${i})] = v[i];
}
`}const WC={f32:`
data[offset] = v;`,i32:`
data[offset] = v;`,"vec2<f32>":`
data[offset] = v[0];
data[offset + 1] = v[1];`,"vec3<f32>":`
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];`,"vec4<f32>":`
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];
data[offset + 3] = v[3];`,"mat2x2<f32>":`
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 4] = v[2];
data[offset + 5] = v[3];`,"mat3x3<f32>":`
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];
data[offset + 4] = v[3];
data[offset + 5] = v[4];
data[offset + 6] = v[5];
data[offset + 8] = v[6];
data[offset + 9] = v[7];
data[offset + 10] = v[8];`,"mat4x4<f32>":`
for (let i = 0; i < 16; i++) {
data[offset + i] = v[i];
}`,"mat3x2<f32>":io(3,2),"mat4x2<f32>":io(4,2),"mat2x3<f32>":io(2,3),"mat4x3<f32>":io(4,3),"mat2x4<f32>":io(2,4),"mat3x4<f32>":io(3,4)},EQ={...WC,"mat2x2<f32>":`
data[offset] = v[0];
data[offset + 1] = v[1];
data[offset + 2] = v[2];
data[offset + 3] = v[3];
`};function TQ(i,t,e,s,r,n){const a=n?1:-1;return i.identity(),i.a=1/s*2,i.d=a*(1/r*2),i.tx=-1-t*i.a,i.ty=-a-e*i.d,i}const Pu=new Map;function jC(i,t){if(!Pu.has(i)){const e=new W({source:new La({resource:i,...t})}),s=()=>{Pu.get(i)===e&&Pu.delete(i)};e.once("destroy",s),e.source.once("destroy",s),Pu.set(i,e)}return Pu.get(i)}function IQ(i){const t=i.colorTexture.source.resource;return globalThis.HTMLCanvasElement&&t instanceof HTMLCanvasElement&&document.body.contains(t)}const KC=class XC{constructor(t={}){if(this.uid=Se("renderTarget"),this.colorTextures=[],this.dirtyId=0,this.isRoot=!1,this._size=new Float32Array(2),this._managedColorTextures=!1,t={...XC.defaultOptions,...t},this.stencil=t.stencil,this.depth=t.depth,this.isRoot=t.isRoot,typeof t.colorTextures=="number"){this._managedColorTextures=!0;for(let e=0;e<t.colorTextures;e++)this.colorTextures.push(new De({width:t.width,height:t.height,resolution:t.resolution,antialias:t.antialias}))}else{this.colorTextures=[...t.colorTextures.map(s=>s.source)];const e=this.colorTexture.source;this.resize(e.width,e.height,e._resolution)}this.colorTexture.source.on("resize",this.onSourceResize,this),(t.depthStencilTexture||this.stencil)&&(t.depthStencilTexture instanceof W||t.depthStencilTexture instanceof De?this.depthStencilTexture=t.depthStencilTexture.source:this.ensureDepthStencilTexture())}get size(){const t=this._size;return t[0]=this.pixelWidth,t[1]=this.pixelHeight,t}get width(){return this.colorTexture.source.width}get height(){return this.colorTexture.source.height}get pixelWidth(){return this.colorTexture.source.pixelWidth}get pixelHeight(){return this.colorTexture.source.pixelHeight}get resolution(){return this.colorTexture.source._resolution}get colorTexture(){return this.colorTextures[0]}onSourceResize(t){this.resize(t.width,t.height,t._resolution,!0)}ensureDepthStencilTexture(){this.depthStencilTexture||(this.depthStencilTexture=new De({width:this.width,height:this.height,resolution:this.resolution,format:"depth24plus-stencil8",autoGenerateMipmaps:!1,antialias:!1,mipLevelCount:1}))}resize(t,e,s=this.resolution,r=!1){this.dirtyId++,this.colorTextures.forEach((n,a)=>{r&&a===0||n.source.resize(t,e,s)}),this.depthStencilTexture&&this.depthStencilTexture.source.resize(t,e,s)}destroy(){this.colorTexture.source.off("resize",this.onSourceResize,this),this._managedColorTextures&&this.colorTextures.forEach(t=>{t.destroy()}),this.depthStencilTexture&&(this.depthStencilTexture.destroy(),delete this.depthStencilTexture)}};KC.defaultOptions={width:0,height:0,resolution:1,colorTextures:1,stencil:!1,depth:!1,antialias:!1,isRoot:!1};let CT=KC;class qC{constructor(t){this.rootViewPort=new Kt,this.viewport=new Kt,this.onRenderTargetChange=new zv("onRenderTargetChange"),this.projectionMatrix=new ot,this.defaultClearColor=[0,0,0,0],this._renderSurfaceToRenderTargetHash=new Map,this._gpuRenderTargetHash=Object.create(null),this._renderTargetStack=[],this._renderer=t,t.renderableGC.addManagedHash(this,"_gpuRenderTargetHash")}finishRenderPass(){this.adaptor.finishRenderPass(this.renderTarget)}renderStart({target:t,clear:e,clearColor:s,frame:r}){this._renderTargetStack.length=0,this.push(t,e,s,r),this.rootViewPort.copyFrom(this.viewport),this.rootRenderTarget=this.renderTarget,this.renderingToScreen=IQ(this.rootRenderTarget)}postrender(){var t,e;(e=(t=this.adaptor).postrender)==null||e.call(t,this.rootRenderTarget)}bind(t,e=!0,s,r){const n=this.getRenderTarget(t),a=this.renderTarget!==n;this.renderTarget=n,this.renderSurface=t;const o=this.getGpuRenderTarget(n);(n.pixelWidth!==o.width||n.pixelHeight!==o.height)&&(this.adaptor.resizeGpuRenderTarget(n),o.width=n.pixelWidth,o.height=n.pixelHeight);const u=n.colorTexture,l=this.viewport,c=u.pixelWidth,h=u.pixelHeight;if(!r&&t instanceof W&&(r=t.frame),r){const _=u._resolution;l.x=r.x*_+.5|0,l.y=r.y*_+.5|0,l.width=r.width*_+.5|0,l.height=r.height*_+.5|0}else l.x=0,l.y=0,l.width=c,l.height=h;return TQ(this.projectionMatrix,0,0,l.width/u.resolution,l.height/u.resolution,!n.isRoot),this.adaptor.startRenderPass(n,e,s,l),a&&this.onRenderTargetChange.emit(n),n}clear(t,e=Ei.ALL,s){e&&(t&&(t=this.getRenderTarget(t)),this.adaptor.clear(t||this.renderTarget,e,s,this.viewport))}contextChange(){this._gpuRenderTargetHash=Object.create(null)}push(t,e=Ei.ALL,s,r){const n=this.bind(t,e,s,r);return this._renderTargetStack.push({renderTarget:n,frame:r}),n}pop(){this._renderTargetStack.pop();const t=this._renderTargetStack[this._renderTargetStack.length-1];this.bind(t.renderTarget,!1,null,t.frame)}getRenderTarget(t){return t.isTexture&&(t=t.source),this._renderSurfaceToRenderTargetHash.get(t)??this._initRenderTarget(t)}copyToTexture(t,e,s,r,n){s.x<0&&(r.width+=s.x,n.x-=s.x,s.x=0),s.y<0&&(r.height+=s.y,n.y-=s.y,s.y=0);const{pixelWidth:a,pixelHeight:o}=t;return r.width=Math.min(r.width,a-s.x),r.height=Math.min(r.height,o-s.y),this.adaptor.copyToTexture(t,e,s,r,n)}ensureDepthStencil(){this.renderTarget.stencil||(this.renderTarget.stencil=!0,this.adaptor.startRenderPass(this.renderTarget,!1,null,this.viewport))}destroy(){this._renderer=null,this._renderSurfaceToRenderTargetHash.forEach((t,e)=>{t!==e&&t.destroy()}),this._renderSurfaceToRenderTargetHash.clear(),this._gpuRenderTargetHash=Object.create(null)}_initRenderTarget(t){let e=null;return La.test(t)&&(t=jC(t).source),t instanceof CT?e=t:t instanceof De&&(e=new CT({colorTextures:[t]}),La.test(t.source.resource)&&(e.isRoot=!0),t.once("destroy",()=>{e.destroy(),this._renderSurfaceToRenderTargetHash.delete(t);const s=this._gpuRenderTargetHash[e.uid];s&&(this._gpuRenderTargetHash[e.uid]=null,this.adaptor.destroyGpuRenderTarget(s))})),this._renderSurfaceToRenderTargetHash.set(t,e),e}getGpuRenderTarget(t){return this._gpuRenderTargetHash[t.uid]||(this._gpuRenderTargetHash[t.uid]=this.adaptor.initGpuRenderTarget(t))}}class $C extends ks{constructor({buffer:t,offset:e,size:s}){super(),this.uid=Se("buffer"),this._resourceType="bufferResource",this._touched=0,this._resourceId=Se("resource"),this._bufferResource=!0,this.destroyed=!1,this.buffer=t,this.offset=e|0,this.size=s,this.buffer.on("change",this.onBufferChange,this)}onBufferChange(){this._resourceId=Se("resource"),this.emit("change",this)}destroy(t=!1){this.destroyed=!0,t&&this.buffer.destroy(),this.emit("change",this),this.buffer=null}}class QC{constructor(t){this._renderer=t}updateRenderable(){}destroyRenderable(){}validateRenderable(){return!1}addRenderable(t,e){this._renderer.renderPipes.batch.break(e),e.add(t)}execute(t){t.isRenderable&&t.render(this._renderer)}destroy(){this._renderer=null}}QC.extension={type:[B.WebGLPipes,B.WebGPUPipes,B.CanvasPipes],name:"customRender"};function ZC(i,t){const e=i.instructionSet,s=e.instructions;for(let r=0;r<e.instructionSize;r++){const n=s[r];t[n.renderPipeId].execute(n)}}class JC{constructor(t){this._renderer=t}addRenderGroup(t,e){this._renderer.renderPipes.batch.break(e),e.add(t)}execute(t){t.isRenderable&&(this._renderer.globalUniforms.push({worldTransformMatrix:t.worldTransform,worldColor:t.worldColorAlpha}),ZC(t,this._renderer.renderPipes),this._renderer.globalUniforms.pop())}destroy(){this._renderer=null}}JC.extension={type:[B.WebGLPipes,B.WebGPUPipes,B.CanvasPipes],name:"renderGroup"};function eS(i,t){t||(t=0);for(let e=t;e<i.length&&i[e];e++)i[e]=null}function tM(i,t=[]){t.push(i);for(let e=0;e<i.renderGroupChildren.length;e++)tM(i.renderGroupChildren[e],t);return t}function SQ(i,t,e){const s=i>>16&255,r=i>>8&255,n=i&255,a=t>>16&255,o=t>>8&255,u=t&255,l=s+(a-s)*e,c=r+(o-r)*e,h=n+(u-n)*e;return(l<<16)+(c<<8)+h}const wE=16777215;function eM(i,t){return i===wE||t===wE?i+t-wE:SQ(i,t,.5)}const RQ=new $t,uy=Hu|Zc|wI;function sM(i,t=!1){AQ(i);const e=i.childrenToUpdate,s=i.updateTick++;for(const r in e){const n=Number(r),a=e[r],o=a.list,u=a.index;for(let l=0;l<u;l++){const c=o[l];c.parentRenderGroup===i&&c.relativeRenderGroupDepth===n&&iM(c,s,0)}eS(o,u),a.index=0}if(t)for(let r=0;r<i.renderGroupChildren.length;r++)sM(i.renderGroupChildren[r],t)}function AQ(i){const t=i.root;let e;if(i.renderGroupParent){const s=i.renderGroupParent;i.worldTransform.appendFrom(t.relativeGroupTransform,s.worldTransform),i.worldColor=eM(t.groupColor,s.worldColor),e=t.groupAlpha*s.worldAlpha}else i.worldTransform.copyFrom(t.localTransform),i.worldColor=t.localColor,e=t.localAlpha;e=e<0?0:e>1?1:e,i.worldAlpha=e,i.worldColorAlpha=i.worldColor+((e*255|0)<<24)}function iM(i,t,e){if(t===i.updateTick)return;i.updateTick=t,i.didChange=!1;const s=i.localTransform;i.updateLocalTransform();const r=i.parent;if(r&&!r.renderGroup?(e=e|i._updateFlags,i.relativeGroupTransform.appendFrom(s,r.relativeGroupTransform),e&uy&&ly(i,r,e)):(e=i._updateFlags,i.relativeGroupTransform.copyFrom(s),e&uy&&ly(i,RQ,e)),!i.renderGroup){const n=i.children,a=n.length;for(let l=0;l<a;l++)iM(n[l],t,e);const o=i.parentRenderGroup,u=i;u.renderPipeId&&!o.structureDidChange&&o.updateRenderable(u)}}function ly(i,t,e){if(e&Zc){i.groupColor=eM(i.localColor,t.groupColor);let s=i.localAlpha*t.groupAlpha;s=s<0?0:s>1?1:s,i.groupAlpha=s,i.groupColorAlpha=i.groupColor+((s*255|0)<<24)}e&wI&&(i.groupBlendMode=i.localBlendMode==="inherit"?t.groupBlendMode:i.localBlendMode),e&Hu&&(i.globalDisplayStatus=i.localDisplayStatus&t.globalDisplayStatus),i._updateFlags=0}function OQ(i,t){const{list:e,index:s}=i.childrenRenderablesToUpdate;let r=!1;for(let n=0;n<s;n++){const a=e[n];if(r=t[a.renderPipeId].validateRenderable(a),r)break}return i.structureDidChange=r,r}const yQ=new ot;class rM{constructor(t){this._renderer=t}render({container:t,transform:e}){t.isRenderGroup=!0;const s=t.parent,r=t.renderGroup.renderGroupParent;t.parent=null,t.renderGroup.renderGroupParent=null;const n=this._renderer,a=tM(t.renderGroup,[]);let o=yQ;e&&(o=o.copyFrom(t.renderGroup.localTransform),t.renderGroup.localTransform.copyFrom(e));const u=n.renderPipes;for(let l=0;l<a.length;l++){const c=a[l];c.runOnRender(),c.instructionSet.renderPipes=u,c.structureDidChange?eS(c.childrenRenderablesToUpdate.list,0):OQ(c,u),sM(c),c.structureDidChange?(c.structureDidChange=!1,dQ(c,n)):vQ(c),c.childrenRenderablesToUpdate.index=0,n.renderPipes.batch.upload(c.instructionSet)}n.globalUniforms.start({worldTransformMatrix:e?t.renderGroup.localTransform:t.renderGroup.worldTransform,worldColor:t.renderGroup.worldColorAlpha}),ZC(t.renderGroup,u),u.uniformBatch&&u.uniformBatch.renderEnd(),e&&t.renderGroup.localTransform.copyFrom(o),t.parent=s,t.renderGroup.renderGroupParent=r}destroy(){this._renderer=null}}rM.extension={type:[B.WebGLSystem,B.WebGPUSystem,B.CanvasSystem],name:"renderGroup"};function vQ(i){const{list:t,index:e}=i.childrenRenderablesToUpdate;for(let s=0;s<e;s++){const r=t[s];r.didViewUpdate&&i.updateRenderable(r)}eS(t,e)}class nM{constructor(){this.batcherName="default",this.attributeSize=4,this.indexSize=6,this.packAsQuad=!0,this.roundPixels=0,this._attributeStart=0,this._batcher=null,this._batch=null}get blendMode(){return this.renderable.groupBlendMode}get color(){return this.renderable.groupColorAlpha}reset(){this.renderable=null,this.texture=null,this._batcher=null,this._batch=null,this.bounds=null}}class aM{constructor(t){this._gpuSpriteHash=Object.create(null),this._destroyRenderableBound=this.destroyRenderable.bind(this),this._renderer=t,this._renderer.renderableGC.addManagedHash(this,"_gpuSpriteHash")}addRenderable(t,e){const s=this._getGpuSprite(t);t.didViewUpdate&&this._updateBatchableSprite(t,s),this._renderer.renderPipes.batch.addToBatch(s,e)}updateRenderable(t){const e=this._gpuSpriteHash[t.uid];t.didViewUpdate&&this._updateBatchableSprite(t,e),e._batcher.updateElement(e)}validateRenderable(t){const e=t._texture,s=this._getGpuSprite(t);return s.texture._source!==e._source?!s._batcher.checkAndUpdateTexture(s,e):!1}destroyRenderable(t){const e=this._gpuSpriteHash[t.uid];ls.return(e),this._gpuSpriteHash[t.uid]=null,t.off("destroyed",this._destroyRenderableBound)}_updateBatchableSprite(t,e){e.bounds=t.bounds,e.texture=t._texture}_getGpuSprite(t){return this._gpuSpriteHash[t.uid]||this._initGPUSprite(t)}_initGPUSprite(t){const e=ls.get(nM);return e.renderable=t,e.transform=t.groupTransform,e.texture=t._texture,e.bounds=t.bounds,e.roundPixels=this._renderer._roundPixels|t._roundPixels,this._gpuSpriteHash[t.uid]=e,t.on("destroyed",this._destroyRenderableBound),e}destroy(){for(const t in this._gpuSpriteHash)ls.return(this._gpuSpriteHash[t]);this._gpuSpriteHash=null,this._renderer=null}}aM.extension={type:[B.WebGLPipes,B.WebGPUPipes,B.CanvasPipes],name:"sprite"};const sS=class oM{constructor(){this.clearBeforeRender=!0,this._backgroundColor=new Mt(0),this.color=this._backgroundColor,this.alpha=1}init(t){t={...oM.defaultOptions,...t},this.clearBeforeRender=t.clearBeforeRender,this.color=t.background||t.backgroundColor||this._backgroundColor,this.alpha=t.backgroundAlpha,this._backgroundColor.setAlpha(t.backgroundAlpha)}get color(){return this._backgroundColor}set color(t){this._backgroundColor.setValue(t)}get alpha(){return this._backgroundColor.alpha}set alpha(t){this._backgroundColor.setAlpha(t)}get colorRgba(){return this._backgroundColor.toArray()}destroy(){}};sS.extension={type:[B.WebGLSystem,B.WebGPUSystem,B.CanvasSystem],name:"background",priority:0};sS.defaultOptions={backgroundAlpha:1,backgroundColor:0,clearBeforeRender:!0};let CQ=sS;const Xu={};fe.handle(B.BlendMode,i=>{if(!i.name)throw new Error("BlendMode extension must have a name property");Xu[i.name]=i.ref},i=>{delete Xu[i.name]});class uM{constructor(t){this._isAdvanced=!1,this._filterHash=Object.create(null),this._renderer=t}setBlendMode(t,e,s){if(this._activeBlendMode===e){this._isAdvanced&&this._renderableList.push(t);return}this._activeBlendMode=e,this._isAdvanced&&this._endAdvancedBlendMode(s),this._isAdvanced=!!Xu[e],this._isAdvanced&&(this._beginAdvancedBlendMode(s),this._renderableList.push(t))}_beginAdvancedBlendMode(t){this._renderer.renderPipes.batch.break(t);const e=this._activeBlendMode;if(!Xu[e]){le(`Unable to assign BlendMode: '${e}'. You may want to include: import 'pixi.js/advanced-blend-modes'`);return}let s=this._filterHash[e];s||(s=this._filterHash[e]=new $c,s.filters=[new Xu[e]]);const r={renderPipeId:"filter",action:"pushFilter",renderables:[],filterEffect:s,canBundle:!1};this._renderableList=r.renderables,t.add(r)}_endAdvancedBlendMode(t){this._renderableList=null,this._renderer.renderPipes.batch.break(t),t.add({renderPipeId:"filter",action:"popFilter",canBundle:!1})}buildStart(){this._isAdvanced=!1}buildEnd(t){this._isAdvanced&&this._endAdvancedBlendMode(t)}destroy(){this._renderer=null,this._renderableList=null;for(const t in this._filterHash)this._filterHash[t].destroy();this._filterHash=null}}uM.extension={type:[B.WebGLPipes,B.WebGPUPipes,B.CanvasPipes],name:"blendMode"};const GE={png:"image/png",jpg:"image/jpeg",webp:"image/webp"},iS=class lM{constructor(t){this._renderer=t}_normalizeOptions(t,e={}){return t instanceof $t||t instanceof W?{target:t,...e}:{...e,...t}}async image(t){const e=new Image;return e.src=await this.base64(t),e}async base64(t){t=this._normalizeOptions(t,lM.defaultImageOptions);const{format:e,quality:s}=t,r=this.canvas(t);if(r.toBlob!==void 0)return new Promise((n,a)=>{r.toBlob(o=>{if(!o){a(new Error("ICanvas.toBlob failed!"));return}const u=new FileReader;u.onload=()=>n(u.result),u.onerror=a,u.readAsDataURL(o)},GE[e],s)});if(r.toDataURL!==void 0)return r.toDataURL(GE[e],s);if(r.convertToBlob!==void 0){const n=await r.convertToBlob({type:GE[e],quality:s});return new Promise((a,o)=>{const u=new FileReader;u.onload=()=>a(u.result),u.onerror=o,u.readAsDataURL(n)})}throw new Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas(t){t=this._normalizeOptions(t);const e=t.target,s=this._renderer;if(e instanceof W)return s.texture.generateCanvas(e);const r=s.textureGenerator.generateTexture(t),n=s.texture.generateCanvas(r);return r.destroy(),n}pixels(t){t=this._normalizeOptions(t);const e=t.target,s=this._renderer,r=e instanceof W?e:s.textureGenerator.generateTexture(t),n=s.texture.getPixels(r);return e instanceof $t&&r.destroy(),n}texture(t){return t=this._normalizeOptions(t),t.target instanceof W?t.target:this._renderer.textureGenerator.generateTexture(t)}download(t){t=this._normalizeOptions(t);const e=this.canvas(t),s=document.createElement("a");s.download=t.filename??"image.png",s.href=e.toDataURL("image/png"),document.body.appendChild(s),s.click(),document.body.removeChild(s)}log(t){const e=t.width??200;t=this._normalizeOptions(t);const s=this.canvas(t),r=s.toDataURL();console.log(`[Pixi Texture] ${s.width}px ${s.height}px`);const n=["font-size: 1px;",`padding: ${e}px 300px;`,`background: url(${r}) no-repeat;`,"background-size: contain;"].join(" ");console.log("%c ",n)}destroy(){this._renderer=null}};iS.extension={type:[B.WebGLSystem,B.WebGPUSystem],name:"extract"};iS.defaultImageOptions={format:"png",quality:1};let MQ=iS;class Zh extends W{static create(t){return new Zh({source:new De(t)})}resize(t,e,s){return this.source.resize(t,e,s),this}}const xQ=new Kt,PQ=new Bs,bQ=[0,0,0,0];class hM{constructor(t){this._renderer=t}generateTexture(t){var l;t instanceof $t&&(t={target:t,frame:void 0,textureSourceOptions:{},resolution:void 0});const e=t.resolution||this._renderer.resolution,s=t.antialias||this._renderer.view.antialias,r=t.target;let n=t.clearColor;n?n=Array.isArray(n)&&n.length===4?n:Mt.shared.setValue(n).toArray():n=bQ;const a=((l=t.frame)==null?void 0:l.copyTo(xQ))||FI(r,PQ).rectangle;a.width=Math.max(a.width,1/e)|0,a.height=Math.max(a.height,1/e)|0;const o=Zh.create({...t.textureSourceOptions,width:a.width,height:a.height,resolution:e,antialias:s}),u=ot.shared.translate(-a.x,-a.y);return this._renderer.render({container:r,transform:u,target:o,clearColor:n}),o.source.updateMipmaps(),o}destroy(){this._renderer=null}}hM.extension={type:[B.WebGLSystem,B.WebGPUSystem],name:"textureGenerator"};function cM(i,t,e){const s=(i>>24&255)/255;t[e++]=(i&255)/255*s,t[e++]=(i>>8&255)/255*s,t[e++]=(i>>16&255)/255*s,t[e++]=s}class _M{constructor(t){this._stackIndex=0,this._globalUniformDataStack=[],this._uniformsPool=[],this._activeUniforms=[],this._bindGroupPool=[],this._activeBindGroups=[],this._renderer=t}reset(){this._stackIndex=0;for(let t=0;t<this._activeUniforms.length;t++)this._uniformsPool.push(this._activeUniforms[t]);for(let t=0;t<this._activeBindGroups.length;t++)this._bindGroupPool.push(this._activeBindGroups[t]);this._activeUniforms.length=0,this._activeBindGroups.length=0}start(t){this.reset(),this.push(t)}bind({size:t,projectionMatrix:e,worldTransformMatrix:s,worldColor:r,offset:n}){const a=this._renderer.renderTarget.renderTarget,o=this._stackIndex?this._globalUniformDataStack[this._stackIndex-1]:{projectionData:a,worldTransformMatrix:new ot,worldColor:4294967295,offset:new st},u={projectionMatrix:e||this._renderer.renderTarget.projectionMatrix,resolution:t||a.size,worldTransformMatrix:s||o.worldTransformMatrix,worldColor:r||o.worldColor,offset:n||o.offset,bindGroup:null},l=this._uniformsPool.pop()||this._createUniforms();this._activeUniforms.push(l);const c=l.uniforms;c.uProjectionMatrix=u.projectionMatrix,c.uResolution=u.resolution,c.uWorldTransformMatrix.copyFrom(u.worldTransformMatrix),c.uWorldTransformMatrix.tx-=u.offset.x,c.uWorldTransformMatrix.ty-=u.offset.y,cM(u.worldColor,c.uWorldColorAlpha,0),l.update();let h;this._renderer.renderPipes.uniformBatch?h=this._renderer.renderPipes.uniformBatch.getUniformBindGroup(l,!1):(h=this._bindGroupPool.pop()||new Sn,this._activeBindGroups.push(h),h.setResource(l,0)),u.bindGroup=h,this._currentGlobalUniformData=u}push(t){this.bind(t),this._globalUniformDataStack[this._stackIndex++]=this._currentGlobalUniformData}pop(){this._currentGlobalUniformData=this._globalUniformDataStack[--this._stackIndex-1],this._renderer.type===ir.WEBGL&&this._currentGlobalUniformData.bindGroup.resources[0].update()}get bindGroup(){return this._currentGlobalUniformData.bindGroup}get globalUniformData(){return this._currentGlobalUniformData}get uniformGroup(){return this._currentGlobalUniformData.bindGroup.resources[0]}_createUniforms(){return new Yr({uProjectionMatrix:{value:new ot,type:"mat3x3<f32>"},uWorldTransformMatrix:{value:new ot,type:"mat3x3<f32>"},uWorldColorAlpha:{value:new Float32Array(4),type:"vec4<f32>"},uResolution:{value:[0,0],type:"vec2<f32>"}},{isStatic:!0})}destroy(){this._renderer=null}}_M.extension={type:[B.WebGLSystem,B.WebGPUSystem,B.CanvasSystem],name:"globalUniforms"};let NQ=1;class dM{constructor(){this._tasks=[],this._offset=0}init(){Ls.system.add(this._update,this)}repeat(t,e,s=!0){const r=NQ++;let n=0;return s&&(this._offset+=1e3,n=this._offset),this._tasks.push({func:t,duration:e,start:performance.now(),offset:n,last:performance.now(),repeat:!0,id:r}),r}cancel(t){for(let e=0;e<this._tasks.length;e++)if(this._tasks[e].id===t){this._tasks.splice(e,1);return}}_update(){const t=performance.now();for(let e=0;e<this._tasks.length;e++){const s=this._tasks[e];if(t-s.offset-s.last>=s.duration){const r=t-s.start;s.func(r),s.last=t}}}destroy(){Ls.system.remove(this._update,this),this._tasks.length=0}}dM.extension={type:[B.WebGLSystem,B.WebGPUSystem,B.CanvasSystem],name:"scheduler",priority:0};let hy=!1;function UQ(i){if(!hy){if(Wt.get().getNavigator().userAgent.toLowerCase().indexOf("chrome")>-1){const t=[`%c %c %c %c %c PixiJS %c v${e_} (${i}) http://www.pixijs.com/
`,"background: #E72264; padding:5px 0;","background: #6CA2EA; padding:5px 0;","background: #B5D33D; padding:5px 0;","background: #FED23F; padding:5px 0;","color: #FFFFFF; background: #E72264; padding:5px 0;","color: #E72264; background: #FFFFFF; padding:5px 0;"];globalThis.console.log(...t)}else globalThis.console&&globalThis.console.log(`PixiJS ${e_} - ${i} - http://www.pixijs.com/`);hy=!0}}class ym{constructor(t){this._renderer=t}init(t){if(t.hello){let e=this._renderer.name;this._renderer.type===ir.WEBGL&&(e+=` ${this._renderer.context.webGLVersion}`),UQ(e)}}}ym.extension={type:[B.WebGLSystem,B.WebGPUSystem,B.CanvasSystem],name:"hello",priority:-2};ym.defaultOptions={hello:!1};function DQ(i){let t=!1;for(const s in i)if(i[s]==null){t=!0;break}if(!t)return i;const e=Object.create(null);for(const s in i){const r=i[s];r&&(e[s]=r)}return e}function LQ(i){let t=0;for(let e=0;e<i.length;e++)i[e]==null?t++:i[e-t]=i[e];return i.length=i.length-t,i}const rS=class fM{constructor(t){this._managedRenderables=[],this._managedHashes=[],this._managedArrays=[],this._renderer=t}init(t){t={...fM.defaultOptions,...t},this.maxUnusedTime=t.renderableGCMaxUnusedTime,this._frequency=t.renderableGCFrequency,this.enabled=t.renderableGCActive}get enabled(){return!!this._handler}set enabled(t){this.enabled!==t&&(t?(this._handler=this._renderer.scheduler.repeat(()=>this.run(),this._frequency,!1),this._hashHandler=this._renderer.scheduler.repeat(()=>{for(const e of this._managedHashes)e.context[e.hash]=DQ(e.context[e.hash])},this._frequency),this._arrayHandler=this._renderer.scheduler.repeat(()=>{for(const e of this._managedArrays)LQ(e.context[e.hash])},this._frequency)):(this._renderer.scheduler.cancel(this._handler),this._renderer.scheduler.cancel(this._hashHandler),this._renderer.scheduler.cancel(this._arrayHandler)))}addManagedHash(t,e){this._managedHashes.push({context:t,hash:e})}addManagedArray(t,e){this._managedArrays.push({context:t,hash:e})}prerender(){this._now=performance.now()}addRenderable(t,e){this.enabled&&(t._lastUsed=this._now,t._lastInstructionTick===-1&&(this._managedRenderables.push(t),t.once("destroyed",this._removeRenderable,this)),t._lastInstructionTick=e.tick)}run(){var n;const t=performance.now(),e=this._managedRenderables,s=this._renderer.renderPipes;let r=0;for(let a=0;a<e.length;a++){const o=e[a];if(o===null){r++;continue}const u=o.renderGroup??o.parentRenderGroup,l=((n=u==null?void 0:u.instructionSet)==null?void 0:n.tick)??-1;o._lastInstructionTick!==l&&t-o._lastUsed>this.maxUnusedTime?(o.destroyed||s[o.renderPipeId].destroyRenderable(o),o._lastInstructionTick=-1,r++,o.off("destroyed",this._removeRenderable,this)):e[a-r]=o}e.length=e.length-r}destroy(){this.enabled=!1,this._renderer=null,this._managedRenderables.length=0,this._managedHashes.length=0,this._managedArrays.length=0}_removeRenderable(t){const e=this._managedRenderables.indexOf(t);e>=0&&(t.off("destroyed",this._removeRenderable,this),this._managedRenderables[e]=null)}};rS.extension={type:[B.WebGLSystem,B.WebGPUSystem],name:"renderableGC",priority:0};rS.defaultOptions={renderableGCActive:!0,renderableGCMaxUnusedTime:6e4,renderableGCFrequency:3e4};let FQ=rS;const nS=class gM{constructor(t){this._renderer=t,this.count=0,this.checkCount=0}init(t){t={...gM.defaultOptions,...t},this.checkCountMax=t.textureGCCheckCountMax,this.maxIdle=t.textureGCAMaxIdle??t.textureGCMaxIdle,this.active=t.textureGCActive}postrender(){this._renderer.renderingToScreen&&(this.count++,this.active&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){const t=this._renderer.texture.managedTextures;for(let e=0;e<t.length;e++){const s=t[e];s.autoGarbageCollect&&s.resource&&s._touched>-1&&this.count-s._touched>this.maxIdle&&(s._touched=-1,s.unload())}}destroy(){this._renderer=null}};nS.extension={type:[B.WebGLSystem,B.WebGPUSystem],name:"textureGC"};nS.defaultOptions={textureGCActive:!0,textureGCAMaxIdle:null,textureGCMaxIdle:60*60,textureGCCheckCountMax:600};let wQ=nS;const aS=class pM{get autoDensity(){return this.texture.source.autoDensity}set autoDensity(t){this.texture.source.autoDensity=t}get resolution(){return this.texture.source._resolution}set resolution(t){this.texture.source.resize(this.texture.source.width,this.texture.source.height,t)}init(t){t={...pM.defaultOptions,...t},t.view&&(ct(Te,"ViewSystem.view has been renamed to ViewSystem.canvas"),t.canvas=t.view),this.screen=new Kt(0,0,t.width,t.height),this.canvas=t.canvas||Wt.get().createCanvas(),this.antialias=!!t.antialias,this.texture=jC(this.canvas,t),this.renderTarget=new CT({colorTextures:[this.texture],depth:!!t.depth,isRoot:!0}),this.texture.source.transparent=t.backgroundAlpha<1,this.resolution=t.resolution}resize(t,e,s){this.texture.source.resize(t,e,s),this.screen.width=this.texture.frame.width,this.screen.height=this.texture.frame.height}destroy(t=!1){(typeof t=="boolean"?t:!!(t!=null&&t.removeView))&&this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas)}};aS.extension={type:[B.WebGLSystem,B.WebGPUSystem,B.CanvasSystem],name:"view",priority:0};aS.defaultOptions={width:800,height:600,autoDensity:!1,antialias:!1};let mM=aS;const EM=[CQ,_M,ym,mM,rM,wQ,hM,MQ,jv,FQ,dM],TM=[uM,wC,aM,JC,BC,zC,kC,QC];class IM{constructor(t){this._hash=Object.create(null),this._renderer=t,this._renderer.renderableGC.addManagedHash(this,"_hash")}contextChange(t){this._gpu=t}getBindGroup(t,e,s){return t._updateKey(),this._hash[t._key]||this._createBindGroup(t,e,s)}_createBindGroup(t,e,s){const r=this._gpu.device,n=e.layout[s],a=[],o=this._renderer;for(const c in n){const h=t.resources[c]??t.resources[n[c]];let _;if(h._resourceType==="uniformGroup"){const d=h;o.ubo.updateUniformGroup(d);const f=d.buffer;_={buffer:o.buffer.getGPUBuffer(f),offset:0,size:f.descriptor.size}}else if(h._resourceType==="buffer"){const d=h;_={buffer:o.buffer.getGPUBuffer(d),offset:0,size:d.descriptor.size}}else if(h._resourceType==="bufferResource"){const d=h;_={buffer:o.buffer.getGPUBuffer(d.buffer),offset:d.offset,size:d.size}}else if(h._resourceType==="textureSampler"){const d=h;_=o.texture.getGpuSampler(d)}else if(h._resourceType==="textureSource"){const d=h;_=o.texture.getGpuSource(d).createView({})}a.push({binding:n[c],resource:_})}const u=o.shader.getProgramData(e).bindGroups[s],l=r.createBindGroup({layout:u,entries:a});return this._hash[t._key]=l,l}destroy(){for(const t of Object.keys(this._hash))this._hash[t]=null;this._hash=null,this._renderer=null}}IM.extension={type:[B.WebGPUSystem],name:"bindGroup"};class SM{constructor(t){this._gpuBuffers=Object.create(null),this._managedBuffers=[],t.renderableGC.addManagedHash(this,"_gpuBuffers")}contextChange(t){this._gpu=t}getGPUBuffer(t){return this._gpuBuffers[t.uid]||this.createGPUBuffer(t)}updateBuffer(t){const e=this._gpuBuffers[t.uid]||this.createGPUBuffer(t),s=t.data;return t._updateID&&s&&(t._updateID=0,this._gpu.device.queue.writeBuffer(e,0,s.buffer,0,(t._updateSize||s.byteLength)+3&-4)),e}destroyAll(){for(const t in this._gpuBuffers)this._gpuBuffers[t].destroy();this._gpuBuffers={}}createGPUBuffer(t){this._gpuBuffers[t.uid]||(t.on("update",this.updateBuffer,this),t.on("change",this.onBufferChange,this),t.on("destroy",this.onBufferDestroy,this),this._managedBuffers.push(t));const e=this._gpu.device.createBuffer(t.descriptor);return t._updateID=0,t.data&&(ET(t.data.buffer,e.getMappedRange()),e.unmap()),this._gpuBuffers[t.uid]=e,e}onBufferChange(t){this._gpuBuffers[t.uid].destroy(),t._updateID=0,this._gpuBuffers[t.uid]=this.createGPUBuffer(t)}onBufferDestroy(t){this._managedBuffers.splice(this._managedBuffers.indexOf(t),1),this._destroyBuffer(t)}destroy(){this._managedBuffers.forEach(t=>this._destroyBuffer(t)),this._managedBuffers=null,this._gpuBuffers=null}_destroyBuffer(t){this._gpuBuffers[t.uid].destroy(),t.off("update",this.updateBuffer,this),t.off("change",this.onBufferChange,this),t.off("destroy",this.onBufferDestroy,this),this._gpuBuffers[t.uid]=null}}SM.extension={type:[B.WebGPUSystem],name:"buffer"};class GQ{constructor({minUniformOffsetAlignment:t}){this._minUniformOffsetAlignment=256,this.byteIndex=0,this._minUniformOffsetAlignment=t,this.data=new Float32Array(65535)}clear(){this.byteIndex=0}addEmptyGroup(t){if(t>this._minUniformOffsetAlignment/4)throw new Error(`UniformBufferBatch: array is too large: ${t*4}`);const e=this.byteIndex;let s=e+t*4;if(s=Math.ceil(s/this._minUniformOffsetAlignment)*this._minUniformOffsetAlignment,s>this.data.length*4)throw new Error("UniformBufferBatch: ubo batch got too big");return this.byteIndex=s,e}addGroup(t){const e=this.addEmptyGroup(t.length);for(let s=0;s<t.length;s++)this.data[e/4+s]=t[s];return e}destroy(){this._buffer.destroy(),this._buffer=null,this.data=null}}class RM{constructor(t){this._colorMaskCache=15,this._renderer=t}setMask(t){this._colorMaskCache!==t&&(this._colorMaskCache=t,this._renderer.pipeline.setColorMask(t))}destroy(){this._renderer=null,this._colorMaskCache=null}}RM.extension={type:[B.WebGPUSystem],name:"colorMask"};class oS{constructor(t){this._renderer=t}async init(t){return this._initPromise?this._initPromise:(this._initPromise=this._createDeviceAndAdaptor(t).then(e=>{this.gpu=e,this._renderer.runners.contextChange.emit(this.gpu)}),this._initPromise)}contextChange(t){this._renderer.gpu=t}async _createDeviceAndAdaptor(t){const e=await Wt.get().getNavigator().gpu.requestAdapter({powerPreference:t.powerPreference,forceFallbackAdapter:t.forceFallbackAdapter}),s=["texture-compression-bc","texture-compression-astc","texture-compression-etc2"].filter(n=>e.features.has(n)),r=await e.requestDevice({requiredFeatures:s});return{adapter:e,device:r}}destroy(){this.gpu=null,this._renderer=null}}oS.extension={type:[B.WebGPUSystem],name:"device"};oS.defaultOptions={powerPreference:void 0,forceFallbackAdapter:!1};class AM{constructor(t){this._boundBindGroup=Object.create(null),this._boundVertexBuffer=Object.create(null),this._renderer=t}renderStart(){this.commandFinished=new Promise(t=>{this._resolveCommandFinished=t}),this.commandEncoder=this._renderer.gpu.device.createCommandEncoder()}beginRenderPass(t){this.endRenderPass(),this._clearCache(),this.renderPassEncoder=this.commandEncoder.beginRenderPass(t.descriptor)}endRenderPass(){this.renderPassEncoder&&this.renderPassEncoder.end(),this.renderPassEncoder=null}setViewport(t){this.renderPassEncoder.setViewport(t.x,t.y,t.width,t.height,0,1)}setPipelineFromGeometryProgramAndState(t,e,s,r){const n=this._renderer.pipeline.getPipeline(t,e,s,r);this.setPipeline(n)}setPipeline(t){this._boundPipeline!==t&&(this._boundPipeline=t,this.renderPassEncoder.setPipeline(t))}_setVertexBuffer(t,e){this._boundVertexBuffer[t]!==e&&(this._boundVertexBuffer[t]=e,this.renderPassEncoder.setVertexBuffer(t,this._renderer.buffer.updateBuffer(e)))}_setIndexBuffer(t){if(this._boundIndexBuffer===t)return;this._boundIndexBuffer=t;const e=t.data.BYTES_PER_ELEMENT===2?"uint16":"uint32";this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(t),e)}resetBindGroup(t){this._boundBindGroup[t]=null}setBindGroup(t,e,s){if(this._boundBindGroup[t]===e)return;this._boundBindGroup[t]=e,e._touch(this._renderer.textureGC.count);const r=this._renderer.bindGroup.getBindGroup(e,s,t);this.renderPassEncoder.setBindGroup(t,r)}setGeometry(t,e){const s=this._renderer.pipeline.getBufferNamesToBind(t,e);for(const r in s)this._setVertexBuffer(r,t.attributes[s[r]].buffer);t.indexBuffer&&this._setIndexBuffer(t.indexBuffer)}_setShaderBindGroups(t,e){for(const s in t.groups){const r=t.groups[s];e||this._syncBindGroup(r),this.setBindGroup(s,r,t.gpuProgram)}}_syncBindGroup(t){for(const e in t.resources){const s=t.resources[e];s.isUniformGroup&&this._renderer.ubo.updateUniformGroup(s)}}draw(t){const{geometry:e,shader:s,state:r,topology:n,size:a,start:o,instanceCount:u,skipSync:l}=t;this.setPipelineFromGeometryProgramAndState(e,s.gpuProgram,r,n),this.setGeometry(e,s.gpuProgram),this._setShaderBindGroups(s,l),e.indexBuffer?this.renderPassEncoder.drawIndexed(a||e.indexBuffer.data.length,u||e.instanceCount,o||0):this.renderPassEncoder.draw(a||e.getSize(),u||e.instanceCount,o||0)}finishRenderPass(){this.renderPassEncoder&&(this.renderPassEncoder.end(),this.renderPassEncoder=null)}postrender(){this.finishRenderPass(),this._gpu.device.queue.submit([this.commandEncoder.finish()]),this._resolveCommandFinished(),this.commandEncoder=null}restoreRenderPass(){const t=this._renderer.renderTarget.adaptor.getDescriptor(this._renderer.renderTarget.renderTarget,!1,[0,0,0,1]);this.renderPassEncoder=this.commandEncoder.beginRenderPass(t);const e=this._boundPipeline,s={...this._boundVertexBuffer},r=this._boundIndexBuffer,n={...this._boundBindGroup};this._clearCache();const a=this._renderer.renderTarget.viewport;this.renderPassEncoder.setViewport(a.x,a.y,a.width,a.height,0,1),this.setPipeline(e);for(const o in s)this._setVertexBuffer(o,s[o]);for(const o in n)this.setBindGroup(o,n[o],null);this._setIndexBuffer(r)}_clearCache(){for(let t=0;t<16;t++)this._boundBindGroup[t]=null,this._boundVertexBuffer[t]=null;this._boundIndexBuffer=null,this._boundPipeline=null}destroy(){this._renderer=null,this._gpu=null,this._boundBindGroup=null,this._boundVertexBuffer=null,this._boundIndexBuffer=null,this._boundPipeline=null}contextChange(t){this._gpu=t}}AM.extension={type:[B.WebGPUSystem],name:"encoder",priority:1};class OM{constructor(t){this._renderTargetStencilState=Object.create(null),this._renderer=t,t.renderTarget.onRenderTargetChange.add(this)}onRenderTargetChange(t){let e=this._renderTargetStencilState[t.uid];e||(e=this._renderTargetStencilState[t.uid]={stencilMode:He.DISABLED,stencilReference:0}),this._activeRenderTarget=t,this.setStencilMode(e.stencilMode,e.stencilReference)}setStencilMode(t,e){const s=this._renderTargetStencilState[this._activeRenderTarget.uid];s.stencilMode=t,s.stencilReference=e;const r=this._renderer;r.pipeline.setStencilMode(t),r.encoder.renderPassEncoder.setStencilReference(e)}destroy(){this._renderer.renderTarget.onRenderTargetChange.remove(this),this._renderer=null,this._activeRenderTarget=null,this._renderTargetStencilState=null}}OM.extension={type:[B.WebGPUSystem],name:"stencil"};const Uc={i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},f16:{align:2,size:2},"vec2<i32>":{align:8,size:8},"vec2<u32>":{align:8,size:8},"vec2<f32>":{align:8,size:8},"vec2<f16>":{align:4,size:4},"vec3<i32>":{align:16,size:12},"vec3<u32>":{align:16,size:12},"vec3<f32>":{align:16,size:12},"vec3<f16>":{align:8,size:6},"vec4<i32>":{align:16,size:16},"vec4<u32>":{align:16,size:16},"vec4<f32>":{align:16,size:16},"vec4<f16>":{align:8,size:8},"mat2x2<f32>":{align:8,size:16},"mat2x2<f16>":{align:4,size:8},"mat3x2<f32>":{align:8,size:24},"mat3x2<f16>":{align:4,size:12},"mat4x2<f32>":{align:8,size:32},"mat4x2<f16>":{align:4,size:16},"mat2x3<f32>":{align:16,size:32},"mat2x3<f16>":{align:8,size:16},"mat3x3<f32>":{align:16,size:48},"mat3x3<f16>":{align:8,size:24},"mat4x3<f32>":{align:16,size:64},"mat4x3<f16>":{align:8,size:32},"mat2x4<f32>":{align:16,size:32},"mat2x4<f16>":{align:8,size:16},"mat3x4<f32>":{align:16,size:48},"mat3x4<f16>":{align:8,size:24},"mat4x4<f32>":{align:16,size:64},"mat4x4<f16>":{align:8,size:32}};function BQ(i){const t=i.map(s=>({data:s,offset:0,size:0}));let e=0;for(let s=0;s<t.length;s++){const r=t[s];let n=Uc[r.data.type].size;const a=Uc[r.data.type].align;if(!Uc[r.data.type])throw new Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${r.data.type}`);r.data.size>1&&(n=Math.max(n,a)*r.data.size),e=Math.ceil(e/a)*a,r.size=n,r.offset=e,e+=n}return e=Math.ceil(e/16)*16,{uboElements:t,size:e}}function kQ(i,t){const{size:e,align:s}=Uc[i.data.type],r=(s-e)/4;return`
v = uv.${i.data.name};
${t!==0?`offset += ${t};`:""}
arrayOffset = offset;
t = 0;
for(var i=0; i < ${i.data.size*(e/4)}; i++)
{
for(var j = 0; j < ${e/4}; j++)
{
data[arrayOffset++] = v[t++];
}
${r!==0?`arrayOffset += ${r};`:""}
}
`}function zQ(i){return YC(i,"uboWgsl",kQ,EQ)}class yM extends HC{constructor(){super({createUboElements:BQ,generateUboSync:zQ})}}yM.extension={type:[B.WebGPUSystem],name:"ubo"};const Xr=128;class vM{constructor(t){this._bindGroupHash=Object.create(null),this._buffers=[],this._bindGroups=[],this._bufferResources=[],this._renderer=t,this._renderer.renderableGC.addManagedHash(this,"_bindGroupHash"),this._batchBuffer=new GQ({minUniformOffsetAlignment:Xr});const e=256/Xr;for(let s=0;s<e;s++){let r=Oe.UNIFORM|Oe.COPY_DST;s===0&&(r|=Oe.COPY_SRC),this._buffers.push(new Hr({data:this._batchBuffer.data,usage:r}))}}renderEnd(){this._uploadBindGroups(),this._resetBindGroups()}_resetBindGroups(){for(const t in this._bindGroupHash)this._bindGroupHash[t]=null;this._batchBuffer.clear()}getUniformBindGroup(t,e){if(!e&&this._bindGroupHash[t.uid])return this._bindGroupHash[t.uid];this._renderer.ubo.ensureUniformGroup(t);const s=t.buffer.data,r=this._batchBuffer.addEmptyGroup(s.length);return this._renderer.ubo.syncUniformGroup(t,this._batchBuffer.data,r/4),this._bindGroupHash[t.uid]=this._getBindGroup(r/Xr),this._bindGroupHash[t.uid]}getUboResource(t){this._renderer.ubo.updateUniformGroup(t);const e=t.buffer.data,s=this._batchBuffer.addGroup(e);return this._getBufferResource(s/Xr)}getArrayBindGroup(t){const e=this._batchBuffer.addGroup(t);return this._getBindGroup(e/Xr)}getArrayBufferResource(t){const s=this._batchBuffer.addGroup(t)/Xr;return this._getBufferResource(s)}_getBufferResource(t){if(!this._bufferResources[t]){const e=this._buffers[t%2];this._bufferResources[t]=new $C({buffer:e,offset:(t/2|0)*256,size:Xr})}return this._bufferResources[t]}_getBindGroup(t){if(!this._bindGroups[t]){const e=new Sn({0:this._getBufferResource(t)});this._bindGroups[t]=e}return this._bindGroups[t]}_uploadBindGroups(){const t=this._renderer.buffer,e=this._buffers[0];e.update(this._batchBuffer.byteIndex),t.updateBuffer(e);const s=this._renderer.gpu.device.createCommandEncoder();for(let r=1;r<this._buffers.length;r++){const n=this._buffers[r];s.copyBufferToBuffer(t.getGPUBuffer(e),Xr,t.getGPUBuffer(n),0,this._batchBuffer.byteIndex)}this._renderer.gpu.device.queue.submit([s.finish()])}destroy(){for(let t=0;t<this._bindGroups.length;t++)this._bindGroups[t].destroy();this._bindGroups=null,this._bindGroupHash=null;for(let t=0;t<this._buffers.length;t++)this._buffers[t].destroy();this._buffers=null;for(let t=0;t<this._bufferResources.length;t++)this._bufferResources[t].destroy();this._bufferResources=null,this._batchBuffer.destroy(),this._bindGroupHash=null,this._renderer=null}}vM.extension={type:[B.WebGPUPipes],name:"uniformBatch"};const VQ={"point-list":0,"line-list":1,"line-strip":2,"triangle-list":3,"triangle-strip":4};function HQ(i,t,e,s,r){return i<<24|t<<16|e<<10|s<<5|r}function YQ(i,t,e,s){return e<<6|i<<3|s<<1|t}class CM{constructor(t){this._moduleCache=Object.create(null),this._bufferLayoutsCache=Object.create(null),this._bindingNamesCache=Object.create(null),this._pipeCache=Object.create(null),this._pipeStateCaches=Object.create(null),this._colorMask=15,this._multisampleCount=1,this._renderer=t}contextChange(t){this._gpu=t,this.setStencilMode(He.DISABLED),this._updatePipeHash()}setMultisampleCount(t){this._multisampleCount!==t&&(this._multisampleCount=t,this._updatePipeHash())}setRenderTarget(t){this._multisampleCount=t.msaaSamples,this._depthStencilAttachment=t.descriptor.depthStencilAttachment?1:0,this._updatePipeHash()}setColorMask(t){this._colorMask!==t&&(this._colorMask=t,this._updatePipeHash())}setStencilMode(t){this._stencilMode!==t&&(this._stencilMode=t,this._stencilState=Un[t],this._updatePipeHash())}setPipeline(t,e,s,r){const n=this.getPipeline(t,e,s);r.setPipeline(n)}getPipeline(t,e,s,r){t._layoutKey||(VC(t,e.attributeData),this._generateBufferKey(t)),r=r||t.topology;const n=HQ(t._layoutKey,e._layoutKey,s.data,s._blendModeId,VQ[r]);return this._pipeCache[n]?this._pipeCache[n]:(this._pipeCache[n]=this._createPipeline(t,e,s,r),this._pipeCache[n])}_createPipeline(t,e,s,r){const n=this._gpu.device,a=this._createVertexBufferLayouts(t,e),o=this._renderer.state.getColorTargets(s);o[0].writeMask=this._stencilMode===He.RENDERING_MASK_ADD?0:this._colorMask;const u=this._renderer.shader.getProgramData(e).pipeline,l={vertex:{module:this._getModule(e.vertex.source),entryPoint:e.vertex.entryPoint,buffers:a},fragment:{module:this._getModule(e.fragment.source),entryPoint:e.fragment.entryPoint,targets:o},primitive:{topology:r,cullMode:s.cullMode},layout:u,multisample:{count:this._multisampleCount},label:"PIXI Pipeline"};return this._depthStencilAttachment&&(l.depthStencil={...this._stencilState,format:"depth24plus-stencil8",depthWriteEnabled:s.depthTest,depthCompare:s.depthTest?"less":"always"}),n.createRenderPipeline(l)}_getModule(t){return this._moduleCache[t]||this._createModule(t)}_createModule(t){const e=this._gpu.device;return this._moduleCache[t]=e.createShaderModule({code:t}),this._moduleCache[t]}_generateBufferKey(t){const e=[];let s=0;const r=Object.keys(t.attributes).sort();for(let a=0;a<r.length;a++){const o=t.attributes[r[a]];e[s++]=o.offset,e[s++]=o.format,e[s++]=o.stride,e[s++]=o.instance}const n=e.join("|");return t._layoutKey=Fl(n,"geometry"),t._layoutKey}_generateAttributeLocationsKey(t){const e=[];let s=0;const r=Object.keys(t.attributeData).sort();for(let a=0;a<r.length;a++){const o=t.attributeData[r[a]];e[s++]=o.location}const n=e.join("|");return t._attributeLocationsKey=Fl(n,"programAttributes"),t._attributeLocationsKey}getBufferNamesToBind(t,e){const s=t._layoutKey<<16|e._attributeLocationsKey;if(this._bindingNamesCache[s])return this._bindingNamesCache[s];const r=this._createVertexBufferLayouts(t,e),n=Object.create(null),a=e.attributeData;for(let o=0;o<r.length;o++)for(const u in a)if(a[u].location===o){n[o]=u;break}return this._bindingNamesCache[s]=n,n}_createVertexBufferLayouts(t,e){e._attributeLocationsKey||this._generateAttributeLocationsKey(e);const s=t._layoutKey<<16|e._attributeLocationsKey;if(this._bufferLayoutsCache[s])return this._bufferLayoutsCache[s];const r=[];return t.buffers.forEach(n=>{const a={arrayStride:0,stepMode:"vertex",attributes:[]},o=a.attributes;for(const u in e.attributeData){const l=t.attributes[u];(l.divisor??1)!==1&&le(`Attribute ${u} has an invalid divisor value of '${l.divisor}'. WebGPU only supports a divisor value of 1`),l.buffer===n&&(a.arrayStride=l.stride,a.stepMode=l.instance?"instance":"vertex",o.push({shaderLocation:e.attributeData[u].location,offset:l.offset,format:l.format}))}o.length&&r.push(a)}),this._bufferLayoutsCache[s]=r,r}_updatePipeHash(){const t=YQ(this._stencilMode,this._multisampleCount,this._colorMask,this._depthStencilAttachment);this._pipeStateCaches[t]||(this._pipeStateCaches[t]=Object.create(null)),this._pipeCache=this._pipeStateCaches[t]}destroy(){this._renderer=null,this._bufferLayoutsCache=null}}CM.extension={type:[B.WebGPUSystem],name:"pipeline"};class WQ{constructor(){this.contexts=[],this.msaaTextures=[],this.msaaSamples=1}}class jQ{init(t,e){this._renderer=t,this._renderTargetSystem=e}copyToTexture(t,e,s,r,n){const a=this._renderer,o=this._getGpuColorTexture(t),u=a.texture.getGpuSource(e.source);return a.encoder.commandEncoder.copyTextureToTexture({texture:o,origin:s},{texture:u,origin:n},r),e}startRenderPass(t,e=!0,s,r){const a=this._renderTargetSystem.getGpuRenderTarget(t),o=this.getDescriptor(t,e,s);a.descriptor=o,this._renderer.pipeline.setRenderTarget(a),this._renderer.encoder.beginRenderPass(a),this._renderer.encoder.setViewport(r)}finishRenderPass(){this._renderer.encoder.endRenderPass()}_getGpuColorTexture(t){const e=this._renderTargetSystem.getGpuRenderTarget(t);return e.contexts[0]?e.contexts[0].getCurrentTexture():this._renderer.texture.getGpuSource(t.colorTextures[0].source)}getDescriptor(t,e,s){typeof e=="boolean"&&(e=e?Ei.ALL:Ei.NONE);const r=this._renderTargetSystem,n=r.getGpuRenderTarget(t),a=t.colorTextures.map((l,c)=>{const h=n.contexts[c];let _,d;h?_=h.getCurrentTexture().createView():_=this._renderer.texture.getGpuSource(l).createView({mipLevelCount:1}),n.msaaTextures[c]&&(d=_,_=this._renderer.texture.getTextureView(n.msaaTextures[c]));const f=e&Ei.COLOR?"clear":"load";return s??(s=r.defaultClearColor),{view:_,resolveTarget:d,clearValue:s,storeOp:"store",loadOp:f}});let o;if((t.stencil||t.depth)&&!t.depthStencilTexture&&(t.ensureDepthStencilTexture(),t.depthStencilTexture.source.sampleCount=n.msaa?4:1),t.depthStencilTexture){const l=e&Ei.STENCIL?"clear":"load",c=e&Ei.DEPTH?"clear":"load";o={view:this._renderer.texture.getGpuSource(t.depthStencilTexture.source).createView(),stencilStoreOp:"store",stencilLoadOp:l,depthClearValue:1,depthLoadOp:c,depthStoreOp:"store"}}return{colorAttachments:a,depthStencilAttachment:o}}clear(t,e=!0,s,r){if(!e)return;const{gpu:n,encoder:a}=this._renderer,o=n.device;if(a.commandEncoder===null){const l=o.createCommandEncoder(),c=this.getDescriptor(t,e,s),h=l.beginRenderPass(c);h.setViewport(r.x,r.y,r.width,r.height,0,1),h.end();const _=l.finish();o.queue.submit([_])}else this.startRenderPass(t,e,s,r)}initGpuRenderTarget(t){t.isRoot=!0;const e=new WQ;return t.colorTextures.forEach((s,r)=>{if(La.test(s.resource)){const n=s.resource.getContext("webgpu"),a=s.transparent?"premultiplied":"opaque";try{n.configure({device:this._renderer.gpu.device,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC,format:"bgra8unorm",alphaMode:a})}catch(o){console.error(o)}e.contexts[r]=n}if(e.msaa=s.source.antialias,s.source.antialias){const n=new De({width:0,height:0,sampleCount:4});e.msaaTextures[r]=n}}),e.msaa&&(e.msaaSamples=4,t.depthStencilTexture&&(t.depthStencilTexture.source.sampleCount=4)),e}destroyGpuRenderTarget(t){t.contexts.forEach(e=>{e.unconfigure()}),t.msaaTextures.forEach(e=>{e.destroy()}),t.msaaTextures.length=0,t.contexts.length=0}ensureDepthStencilTexture(t){const e=this._renderTargetSystem.getGpuRenderTarget(t);t.depthStencilTexture&&e.msaa&&(t.depthStencilTexture.source.sampleCount=4)}resizeGpuRenderTarget(t){const e=this._renderTargetSystem.getGpuRenderTarget(t);e.width=t.width,e.height=t.height,e.msaa&&t.colorTextures.forEach((s,r)=>{const n=e.msaaTextures[r];n==null||n.resize(s.source.width,s.source.height,s.source._resolution)})}}class MM extends qC{constructor(t){super(t),this.adaptor=new jQ,this.adaptor.init(t,this)}}MM.extension={type:[B.WebGPUSystem],name:"renderTarget"};class xM{constructor(){this._gpuProgramData=Object.create(null)}contextChange(t){this._gpu=t,this.maxTextures=t.device.limits.maxSampledTexturesPerShaderStage}getProgramData(t){return this._gpuProgramData[t._layoutKey]||this._createGPUProgramData(t)}_createGPUProgramData(t){const e=this._gpu.device,s=t.gpuLayout.map(n=>e.createBindGroupLayout({entries:n})),r={bindGroupLayouts:s};return this._gpuProgramData[t._layoutKey]={bindGroups:s,pipeline:e.createPipelineLayout(r)},this._gpuProgramData[t._layoutKey]}destroy(){this._gpu=null,this._gpuProgramData=null}}xM.extension={type:[B.WebGPUSystem],name:"shader"};const ys={};ys.normal={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}};ys.add={alpha:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one",operation:"add"}};ys.multiply={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"dst",dstFactor:"one-minus-src-alpha",operation:"add"}};ys.screen={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}};ys.overlay={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"one",dstFactor:"one-minus-src",operation:"add"}};ys.none={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"zero",operation:"add"}};ys["normal-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"}};ys["add-npm"]={alpha:{srcFactor:"one",dstFactor:"one",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one",operation:"add"}};ys["screen-npm"]={alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"src-alpha",dstFactor:"one-minus-src",operation:"add"}};ys.erase={alpha:{srcFactor:"zero",dstFactor:"one-minus-src-alpha",operation:"add"},color:{srcFactor:"zero",dstFactor:"one-minus-src",operation:"add"}};ys.min={alpha:{srcFactor:"one",dstFactor:"one",operation:"min"},color:{srcFactor:"one",dstFactor:"one",operation:"min"}};ys.max={alpha:{srcFactor:"one",dstFactor:"one",operation:"max"},color:{srcFactor:"one",dstFactor:"one",operation:"max"}};class PM{constructor(){this.defaultState=new Qh,this.defaultState.blend=!0}contextChange(t){this.gpu=t}getColorTargets(t){return[{format:"bgra8unorm",writeMask:0,blend:ys[t.blendMode]||ys.normal}]}destroy(){this.gpu=null}}PM.extension={type:[B.WebGPUSystem],name:"state"};const KQ={type:"image",upload(i,t,e){const s=i.resource,r=(i.pixelWidth|0)*(i.pixelHeight|0),n=s.byteLength/r;e.device.queue.writeTexture({texture:t},s,{offset:0,rowsPerImage:i.pixelHeight,bytesPerRow:i.pixelHeight*n},{width:i.pixelWidth,height:i.pixelHeight,depthOrArrayLayers:1})}},bM={"bc1-rgba-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"bc2-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc3-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"bc7-rgba-unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"etc1-rgb-unorm":{blockBytes:8,blockWidth:4,blockHeight:4},"etc2-rgba8unorm":{blockBytes:16,blockWidth:4,blockHeight:4},"astc-4x4-unorm":{blockBytes:16,blockWidth:4,blockHeight:4}},XQ={blockBytes:4,blockWidth:1,blockHeight:1},qQ={type:"compressed",upload(i,t,e){let s=i.pixelWidth,r=i.pixelHeight;const n=bM[i.format]||XQ;for(let a=0;a<i.resource.length;a++){const o=i.resource[a],u=Math.ceil(s/n.blockWidth)*n.blockBytes;e.device.queue.writeTexture({texture:t,mipLevel:a},o,{offset:0,bytesPerRow:u},{width:Math.ceil(s/n.blockWidth)*n.blockWidth,height:Math.ceil(r/n.blockHeight)*n.blockHeight,depthOrArrayLayers:1}),s=Math.max(s>>1,1),r=Math.max(r>>1,1)}}},NM={type:"image",upload(i,t,e){const s=i.resource;if(!s)return;const r=Math.min(t.width,i.resourceWidth||i.pixelWidth),n=Math.min(t.height,i.resourceHeight||i.pixelHeight),a=i.alphaMode==="premultiply-alpha-on-upload";e.device.queue.copyExternalImageToTexture({source:s},{texture:t,premultipliedAlpha:a},{width:r,height:n})}},$Q={type:"video",upload(i,t,e){NM.upload(i,t,e)}};class QQ{constructor(t){this.device=t,this.sampler=t.createSampler({minFilter:"linear"}),this.pipelines={}}_getMipmapPipeline(t){let e=this.pipelines[t];return e||(this.mipmapShaderModule||(this.mipmapShaderModule=this.device.createShaderModule({code:`
var<private> pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(
vec2<f32>(-1.0, -1.0), vec2<f32>(-1.0, 3.0), vec2<f32>(3.0, -1.0));
struct VertexOutput {
@builtin(position) position : vec4<f32>,
@location(0) texCoord : vec2<f32>,
};
@vertex
fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {
var output : VertexOutput;
output.texCoord = pos[vertexIndex] * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5);
output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0);
return output;
}
@group(0) @binding(0) var imgSampler : sampler;
@group(0) @binding(1) var img : texture_2d<f32>;
@fragment
fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {
return textureSample(img, imgSampler, texCoord);
}
`})),e=this.device.createRenderPipeline({layout:"auto",vertex:{module:this.mipmapShaderModule,entryPoint:"vertexMain"},fragment:{module:this.mipmapShaderModule,entryPoint:"fragmentMain",targets:[{format:t}]}}),this.pipelines[t]=e),e}generateMipmap(t){const e=this._getMipmapPipeline(t.format);if(t.dimension==="3d"||t.dimension==="1d")throw new Error("Generating mipmaps for non-2d textures is currently unsupported!");let s=t;const r=t.depthOrArrayLayers||1,n=t.usage&GPUTextureUsage.RENDER_ATTACHMENT;if(!n){const u={size:{width:Math.ceil(t.width/2),height:Math.ceil(t.height/2),depthOrArrayLayers:r},format:t.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC|GPUTextureUsage.RENDER_ATTACHMENT,mipLevelCount:t.mipLevelCount-1};s=this.device.createTexture(u)}const a=this.device.createCommandEncoder({}),o=e.getBindGroupLayout(0);for(let u=0;u<r;++u){let l=t.createView({baseMipLevel:0,mipLevelCount:1,dimension:"2d",baseArrayLayer:u,arrayLayerCount:1}),c=n?1:0;for(let h=1;h<t.mipLevelCount;++h){const _=s.createView({baseMipLevel:c++,mipLevelCount:1,dimension:"2d",baseArrayLayer:u,arrayLayerCount:1}),d=a.beginRenderPass({colorAttachments:[{view:_,storeOp:"store",loadOp:"clear",clearValue:{r:0,g:0,b:0,a:0}}]}),f=this.device.createBindGroup({layout:o,entries:[{binding:0,resource:this.sampler},{binding:1,resource:l}]});d.setPipeline(e),d.setBindGroup(0,f),d.draw(3,1,0,0),d.end(),l=_}}if(!n){const u={width:Math.ceil(t.width/2),height:Math.ceil(t.height/2),depthOrArrayLayers:r};for(let l=1;l<t.mipLevelCount;++l)a.copyTextureToTexture({texture:s,mipLevel:l-1},{texture:t,mipLevel:l},u),u.width=Math.ceil(u.width/2),u.height=Math.ceil(u.height/2)}return this.device.queue.submit([a.finish()]),n||s.destroy(),t}}class UM{constructor(t){this.managedTextures=[],this._gpuSources=Object.create(null),this._gpuSamplers=Object.create(null),this._bindGroupHash=Object.create(null),this._textureViewHash=Object.create(null),this._uploads={image:NM,buffer:KQ,video:$Q,compressed:qQ},this._renderer=t,t.renderableGC.addManagedHash(this,"_gpuSources"),t.renderableGC.addManagedHash(this,"_gpuSamplers"),t.renderableGC.addManagedHash(this,"_bindGroupHash"),t.renderableGC.addManagedHash(this,"_textureViewHash")}contextChange(t){this._gpu=t}initSource(t){if(t.autoGenerateMipmaps){const u=Math.max(t.pixelWidth,t.pixelHeight);t.mipLevelCount=Math.floor(Math.log2(u))+1}let e=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST;t.uploadMethodId!=="compressed"&&(e|=GPUTextureUsage.RENDER_ATTACHMENT,e|=GPUTextureUsage.COPY_SRC);const s=bM[t.format]||{blockBytes:4,blockWidth:1,blockHeight:1},r=Math.ceil(t.pixelWidth/s.blockWidth)*s.blockWidth,n=Math.ceil(t.pixelHeight/s.blockHeight)*s.blockHeight,a={label:t.label,size:{width:r,height:n},format:t.format,sampleCount:t.sampleCount,mipLevelCount:t.mipLevelCount,dimension:t.dimension,usage:e},o=this._gpu.device.createTexture(a);return this._gpuSources[t.uid]=o,this.managedTextures.includes(t)||(t.on("update",this.onSourceUpdate,this),t.on("resize",this.onSourceResize,this),t.on("destroy",this.onSourceDestroy,this),t.on("unload",this.onSourceUnload,this),t.on("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.push(t)),this.onSourceUpdate(t),o}onSourceUpdate(t){const e=this.getGpuSource(t);e&&(this._uploads[t.uploadMethodId]&&this._uploads[t.uploadMethodId].upload(t,e,this._gpu),t.autoGenerateMipmaps&&t.mipLevelCount>1&&this.onUpdateMipmaps(t))}onSourceUnload(t){const e=this._gpuSources[t.uid];e&&(this._gpuSources[t.uid]=null,e.destroy())}onUpdateMipmaps(t){this._mipmapGenerator||(this._mipmapGenerator=new QQ(this._gpu.device));const e=this.getGpuSource(t);this._mipmapGenerator.generateMipmap(e)}onSourceDestroy(t){t.off("update",this.onSourceUpdate,this),t.off("unload",this.onSourceUnload,this),t.off("destroy",this.onSourceDestroy,this),t.off("resize",this.onSourceResize,this),t.off("updateMipmaps",this.onUpdateMipmaps,this),this.managedTextures.splice(this.managedTextures.indexOf(t),1),this.onSourceUnload(t)}onSourceResize(t){const e=this._gpuSources[t.uid];e?(e.width!==t.pixelWidth||e.height!==t.pixelHeight)&&(this._textureViewHash[t.uid]=null,this._bindGroupHash[t.uid]=null,this.onSourceUnload(t),this.initSource(t)):this.initSource(t)}_initSampler(t){return this._gpuSamplers[t._resourceId]=this._gpu.device.createSampler(t),this._gpuSamplers[t._resourceId]}getGpuSampler(t){return this._gpuSamplers[t._resourceId]||this._initSampler(t)}getGpuSource(t){return this._gpuSources[t.uid]||this.initSource(t)}getTextureBindGroup(t){return this._bindGroupHash[t.uid]??this._createTextureBindGroup(t)}_createTextureBindGroup(t){const e=t.source;return this._bindGroupHash[t.uid]=new Sn({0:e,1:e.style,2:new Yr({uTextureMatrix:{type:"mat3x3<f32>",value:t.textureMatrix.mapCoord}})}),this._bindGroupHash[t.uid]}getTextureView(t){const e=t.source;return this._textureViewHash[e.uid]??this._createTextureView(e)}_createTextureView(t){return this._textureViewHash[t.uid]=this.getGpuSource(t).createView(),this._textureViewHash[t.uid]}generateCanvas(t){const e=this._renderer,s=e.gpu.device.createCommandEncoder(),r=Wt.get().createCanvas();r.width=t.source.pixelWidth,r.height=t.source.pixelHeight;const n=r.getContext("webgpu");return n.configure({device:e.gpu.device,usage:GPUTextureUsage.COPY_DST|GPUTextureUsage.COPY_SRC,format:Wt.get().getNavigator().gpu.getPreferredCanvasFormat(),alphaMode:"premultiplied"}),s.copyTextureToTexture({texture:e.texture.getGpuSource(t.source),origin:{x:0,y:0}},{texture:n.getCurrentTexture()},{width:r.width,height:r.height}),e.gpu.device.queue.submit([s.finish()]),r}getPixels(t){const e=this.generateCanvas(t),s=Vl.getOptimalCanvasAndContext(e.width,e.height),r=s.context;r.drawImage(e,0,0);const{width:n,height:a}=e,o=r.getImageData(0,0,n,a),u=new Uint8ClampedArray(o.data.buffer);return Vl.returnCanvasAndContext(s),{pixels:u,width:n,height:a}}destroy(){this.managedTextures.slice().forEach(t=>this.onSourceDestroy(t)),this.managedTextures=null;for(const t of Object.keys(this._bindGroupHash)){const e=Number(t),s=this._bindGroupHash[e];s==null||s.destroy(),this._bindGroupHash[e]=null}this._gpu=null,this._mipmapGenerator=null,this._gpuSources=null,this._bindGroupHash=null,this._textureViewHash=null,this._gpuSamplers=null}}UM.extension={type:[B.WebGPUSystem],name:"texture"};class DM{init(){const t=new Yr({uTransformMatrix:{value:new ot,type:"mat3x3<f32>"},uColor:{value:new Float32Array([1,1,1,1]),type:"vec4<f32>"},uRound:{value:0,type:"f32"}}),e=Sm({name:"graphics",bits:[HI,YI(Im()),lQ,Rm]});this.shader=new $a({gpuProgram:e,resources:{localUniforms:t}})}execute(t,e){const s=e.context,r=s.customShader||this.shader,n=t.renderer,a=n.graphicsContext,{batcher:o,instructions:u}=a.getContextRenderData(s),l=n.encoder;l.setPipelineFromGeometryProgramAndState(o.geometry,r.gpuProgram,t.state),l.setGeometry(o.geometry,r.gpuProgram);const c=n.globalUniforms.bindGroup;l.setBindGroup(0,c,r.gpuProgram);const h=n.renderPipes.uniformBatch.getUniformBindGroup(r.resources.localUniforms,!0);l.setBindGroup(2,h,r.gpuProgram);const _=u.instructions;for(let d=0;d<u.instructionSize;d++){const f=_[d];if(r.groups[1]=f.bindGroup,!f.gpuBindGroup){const p=f.textures;f.bindGroup=VI(p.textures,p.count),f.gpuBindGroup=n.bindGroup.getBindGroup(f.bindGroup,r.gpuProgram,1)}l.setBindGroup(1,f.bindGroup,r.gpuProgram),l.renderPassEncoder.drawIndexed(f.size,1,f.start)}}destroy(){this.shader.destroy(!0),this.shader=null}}DM.extension={type:[B.WebGPUPipesAdaptor],name:"graphics"};class LM{init(){const t=Sm({name:"mesh",bits:[Ku,cQ,Rm]});this._shader=new $a({gpuProgram:t,resources:{uTexture:W.EMPTY._source,uSampler:W.EMPTY._source.style,textureUniforms:{uTextureMatrix:{type:"mat3x3<f32>",value:new ot}}}})}execute(t,e){const s=t.renderer;let r=e._shader;if(!r)r=this._shader,r.groups[2]=s.texture.getTextureBindGroup(e.texture);else if(!r.gpuProgram){le("Mesh shader has no gpuProgram",e.shader);return}const n=r.gpuProgram;if(n.autoAssignGlobalUniforms&&(r.groups[0]=s.globalUniforms.bindGroup),n.autoAssignLocalUniforms){const a=t.localUniforms;r.groups[1]=s.renderPipes.uniformBatch.getUniformBindGroup(a,!0)}s.encoder.draw({geometry:e._geometry,shader:r,state:e.state})}destroy(){this._shader.destroy(!0),this._shader=null}}LM.extension={type:[B.WebGPUPipesAdaptor],name:"mesh"};const ZQ=[...EM,yM,AM,oS,SM,UM,MM,xM,PM,CM,RM,OM,IM],JQ=[...TM,vM],tZ=[LC,LM,DM],FM=[],wM=[],GM=[];fe.handleByNamedList(B.WebGPUSystem,FM);fe.handleByNamedList(B.WebGPUPipes,wM);fe.handleByNamedList(B.WebGPUPipesAdaptor,GM);fe.add(...ZQ,...JQ,...tZ);class BM extends Em{constructor(){const t={name:"webgpu",type:ir.WEBGPU,systems:FM,renderPipes:wM,renderPipeAdaptors:GM};super(t)}}const eZ=Object.freeze(Object.defineProperty({__proto__:null,WebGPURenderer:BM},Symbol.toStringTag,{value:"Module"}));fe.add(YX,WX);const Pg=class Pg{};Pg.UNKNOWN=0,Pg.BROWSER=1;let a_=Pg;const tl=class tl{};tl.UNKNOWN=0,tl.FLASH=1,tl.HTML5=2;let o_=tl;const _o=class _o{};_o.CONNECTION_OPENED="open",_o.CONNECTION_CLOSED="close",_o.CONNECTION_ERROR="error",_o.CONNECTION_MESSAGE="message";let Ea=_o;const q=class q{static getExpressionTimeout(t){switch(t=parseInt(t),t){case 1:return 5e3;case 2:return 1400;case 3:return 2e3;case 4:return 2e3;case 5:return 0;case 6:return 700;case 7:return 2e3;case 8:return 1500;case 9:return 1500;case 10:return 1500;default:return 0}}static getExpressionId(t){return q.EXPRESSION_MAP.indexOf(t)}static getExpression(t){return t>q.EXPRESSION_MAP.length?null:q.EXPRESSION_MAP[t]}static getGestureId(t){return q.GESTURE_MAP.indexOf(t)}static getGesture(t){return t>q.GESTURE_MAP.length?null:q.GESTURE_MAP[t]}static idToAvatarActionState(t){return t==="Lay"?"lay":t==="Float"?"float":t==="Swim"?"swim":t==="Sit"?"sit":t==="Respect"?"respect":t==="Wave"?"wave":t==="Idle"?"idle":t==="Dance"?"dance":t==="UseItem"?"usei":t==="CarryItem"?"cri":t==="Talk"?"talk":t==="Sleep"?"Sleep":t==="Move"?"mv":"std"}};q.CARRY_OBJECT="cri",q.DANCE="dance",q.EFFECT="fx",q.EXPRESSION="expression",q.EXPRESSION_BLOW_A_KISS="blow",q.EXPRESSION_CRY="cry",q.EXPRESSION_IDLE="idle",q.EXPRESSION_LAUGH="laugh",q.EXPRESSION_RESPECT="respect",q.EXPRESSION_RIDE_JUMP="ridejump",q.EXPRESSION_SNOWBOARD_OLLIE="sbollie",q.EXPRESSION_SNOWBORD_360="sb360",q.EXPRESSION_WAVE="wave",q.GESTURE="gest",q.GESTURE_AGGRAVATED="agr",q.GESTURE_SAD="sad",q.GESTURE_SMILE="sml",q.GESTURE_SURPRISED="srp",q.GUIDE_STATUS="guide",q.MUTED="muted",q.PET_GESTURE_BLINK="eyb",q.PET_GESTURE_CRAZY="crz",q.PET_GESTURE_JOY="joy",q.PET_GESTURE_MISERABLE="mis",q.PET_GESTURE_PUZZLED="puz",q.PET_GESTURE_TONGUE="tng",q.PLAYING_GAME="playing_game",q.POSTURE="posture",q.POSTURE_FLOAT="float",q.POSTURE_LAY="lay",q.POSTURE_SIT="sit",q.POSTURE_STAND="std",q.POSTURE_SWIM="swim",q.POSTURE_WALK="mv",q.SIGN="sign",q.SLEEP="sleep",q.SNOWWAR_DIE_BACK="swdieback",q.SNOWWAR_DIE_FRONT="swdiefront",q.SNOWWAR_PICK="swpick",q.SNOWWAR_RUN="swrun",q.SNOWWAR_THROW="swthrow",q.TALK="talk",q.BLINK="blink",q.TYPING="typing",q.USE_OBJECT="usei",q.VOTE="vote",q.GESTURE_MAP=["",q.GESTURE_SMILE,q.GESTURE_AGGRAVATED,q.GESTURE_SURPRISED,q.GESTURE_SAD,q.PET_GESTURE_JOY,q.PET_GESTURE_CRAZY,q.PET_GESTURE_TONGUE,q.PET_GESTURE_BLINK,q.PET_GESTURE_MISERABLE,q.PET_GESTURE_PUZZLED],q.EXPRESSION_MAP=["",q.EXPRESSION_WAVE,q.EXPRESSION_BLOW_A_KISS,q.EXPRESSION_LAUGH,q.EXPRESSION_CRY,q.EXPRESSION_IDLE,q.DANCE,q.EXPRESSION_RESPECT,q.EXPRESSION_SNOWBOARD_OLLIE,q.EXPRESSION_SNOWBORD_360,q.EXPRESSION_RIDE_JUMP];let et=q;const fo=class fo{};fo.DIRECTION_TO_ANGLE=[45,90,135,180,225,270,315,0],fo.DIRECTION_IS_FLIPPED=[!1,!1,!1,!1,!0,!0,!0,!1],fo.MIN_DIRECTION=0,fo.MAX_DIRECTION=7;let Pr=fo;const hr=class hr{};hr.GENERIC="hd",hr.HEAD="head",hr.TORSO="torso",hr.LEGS="legs",hr.HOTLOOKS="hotlooks",hr.WARDROBE="wardrobe",hr.EFFECTS="effects";let MT=hr;const go=class go{};go.OWN_AVATAR_EDITOR=0,go.FURNITURE_AVATAR_EDITOR=1,go.BOT_EDITOR=2,go.DEV_TOOL_EDITOR=3;let xT=go;const bg=class bg{};bg.NOTHING="nothing",bg.WARDROBE="wardrobe";let PT=bg;const pt=class pt{};pt.MALE="M",pt.FEMALE="F",pt.UNISEX="U",pt.SCALE="h",pt.STD="std",pt.DEFAULT_FRAME=0,pt.BODY="bd",pt.SHOES="sh",pt.LEGS="lg",pt.CHEST="ch",pt.WAIST_ACCESSORY="wa",pt.CHEST_ACCESSORY="ca",pt.HEAD="hd",pt.HAIR="hr",pt.FACE_ACCESSORY="fa",pt.EYE_ACCESSORY="ea",pt.HEAD_ACCESSORY="ha",pt.HEAD_ACCESSORY_EXTRA="he",pt.COAT_CHEST="cc",pt.CHEST_PRINT="cp",pt.LEFT_HAND_ITEM="li",pt.LEFT_HAND="lh",pt.LEFT_SLEEVE="ls",pt.RIGHT_HAND="rh",pt.RIGHT_SLEEVE="rs",pt.FACE="fc",pt.EYES="ey",pt.HAIR_BIG="hrb",pt.RIGHT_HAND_ITEM="ri",pt.LEFT_COAT_SLEEVE="lc",pt.RIGHT_COAT_SLEEVE="rc",pt.FIGURE_SETS=[pt.SHOES,pt.LEGS,pt.CHEST,pt.WAIST_ACCESSORY,pt.CHEST_ACCESSORY,pt.HEAD,pt.HAIR,pt.FACE_ACCESSORY,pt.EYE_ACCESSORY,pt.HEAD_ACCESSORY,pt.HEAD_ACCESSORY_EXTRA,pt.COAT_CHEST,pt.CHEST_PRINT];let ns=pt;const el=class el{};el.NONE=0,el.GUIDE=1,el.REQUESTER=2;let pi=el;const Ng=class Ng{};Ng.LARGE="h",Ng.SMALL="sh";let ti=Ng;const sl=class sl{};sl.FULL="full",sl.HEAD="head",sl.BODY="body";let as=sl;const $n=class $n{};$n.VERTICAL="vertical",$n.SITTING="sitting",$n.HORIZONTAL="horizontal",$n.SWIM="swim",$n.SNOWWARS_HORIZONTAL="swhorizontal";let Rr=$n;const po=class po{};po.TOOL="tool",po.COMPONENT="component",po.ONLINE_TOOL="online_tool",po.LOCAL_ONLY="local_only";let bT=po;const Qr=class Qr{};Qr.NONE=0,Qr.HEART=1,Qr.SMILE=2,Qr.BOBBA=3,Qr.RELATIONSHIP_TYPES=[0,1,2,3],Qr.RELATIONSHIP_NAMES=["None","Heart","Smile","Bobba"];let u_=Qr;const cr=class cr{};cr.HOTEL_VIEW="hotel_view",cr.HOME_ROOM="home_room",cr.NAVIGATOR="navigator",cr.CATALOG="catalog",cr.INVENTORY="inventory",cr.ME_MENU="me_menu",cr.FRIEND_LIST="friendlist";let Hl=cr;const Qn=class Qn{};Qn.LOVE_LOCK=0,Qn.CARVE_A_TREE=1,Qn.FRIENDS_PORTRAIT=2,Qn.WILD_WEST_WANTED=3,Qn.HABBOWEEN=4;let Yl=Qn;const Ug=class Ug{};Ug.CATALOG="catalog",Ug.INVENTORY="inventory";let l_=Ug;const w=class w{};w.OBJECT_ROOM_ID="object_room_id",w.OBJECT_ACCURATE_Z_VALUE="object_accurate_z_value",w.TILE_CURSOR_HEIGHT="tile_cursor_height",w.FIGURE="figure",w.GENDER="gender",w.OWN_USER="own_user",w.FIGURE_CAN_STAND_UP="figure_can_stand_up",w.FIGURE_VERTICAL_OFFSET="figure_vertical_offset",w.FIGURE_TALK="figure_talk",w.FIGURE_DANCE="figure_dance",w.FIGURE_SLEEP="figure_sleep",w.FIGURE_BLINK="figure_blink",w.FIGURE_EFFECT="figure_effect",w.FIGURE_CARRY_OBJECT="figure_carry_object",w.FIGURE_USE_OBJECT="figure_use_object",w.FIGURE_GESTURE="figure_gesture",w.FIGURE_POSTURE="figure_posture",w.FIGURE_POSTURE_PARAMETER="figure_posture_parameter",w.FIGURE_HIGHLIGHT_ENABLE="figure_highlight_enable",w.FIGURE_HIGHLIGHT="figure_highlight",w.FURNITURE_PURCHASER_NAME="furniture_purchaser_name",w.FURNITURE_PURCHASER_FIGURE="furniture_purchaser_figure",w.STD="std",w.SWIM="swm",w.FIGURE_SIGN="figure_sign",w.FIGURE_FLAT_CONTROL="figure_flat_control",w.FIGURE_IS_TYPING="figure_is_typing",w.FIGURE_IS_MUTED="figure_is_muted",w.FIGURE_GAINED_EXPERIENCE="figure_gained_experience",w.FIGURE_EXPERIENCE_TIMESTAMP="figure_experience_timestamp",w.FIGURE_NUMBER_VALUE="figure_number_value",w.FIGURE_IS_PLAYING_GAME="figure_is_playing_game",w.FIGURE_GUIDE_STATUS="figure_guide_status",w.FIGURE_EXPRESSION="figure_expression",w.HEAD_DIRECTION="head_direction",w.FURNITURE_CUSTOM_VARIABLES="furniture_custom_variables",w.FURNITURE_AUTOMATIC_STATE_INDEX="furniture_automatic_state_index",w.FURNITURE_ALWAYS_STACKABLE="furniture_always_stackable",w.FURNITURE_DISABLE_PICKING_ANIMATION="furniture_disable_picking_animation",w.FURNITURE_DATA_FORMAT="furniture_data_format",w.FURNITURE_UNIQUE_SERIAL_NUMBER="furniture_unique_serial_number",w.FURNITURE_UNIQUE_EDITION_SIZE="furniture_unique_edition_size",w.FURNITURE_CRACKABLE_STATE="furniture_crackable_state",w.FURNITURE_CRACKABLE_HITS="furniture_crackable_hits",w.FURNITURE_CRACKABLE_TARGET="furniture_crackable_target",w.FURNITURE_CREDIT_VALUE="furniture_credit_value",w.FURNITURE_DATA="furniture_data",w.FURNITURE_ITEMDATA="furniture_itemdata",w.FURNITURE_COLOR="furniture_color",w.FURNITURE_LIFT_AMOUNT="furniure_lift_amount",w.FURNITURE_GUILD_CUSTOMIZED_GUILD_ID="furniture_guild_customized_guild_id",w.FURNITURE_GUILD_CUSTOMIZED_ASSET_NAME="furniture_guild_customized_asset_name",w.FURNITURE_GUILD_CUSTOMIZED_COLOR_1="furniture_guild_customized_color_1",w.FURNITURE_GUILD_CUSTOMIZED_COLOR_2="furniture_guild_customized_color_2",w.FURNITURE_STATE_UPDATE_TIME="furniture_state_update_time",w.FURNITURE_SELECTION_DISABLED="furniture_selection_disabled",w.FURNITURE_SIZE_X="furniture_size_x",w.FURNITURE_SIZE_Y="furniture_size_y",w.FURNITURE_SIZE_Z="furniture_size_z",w.FURNITURE_CENTER_X="furniture_center_x",w.FURNITURE_CENTER_Y="furniture_center_y",w.FURNITURE_CENTER_Z="furniture_center_z",w.FURNITURE_ALLOWED_DIRECTIONS="furniture_allowed_directions",w.FURNITURE_AD_URL="furniture_ad_url",w.FURNITURE_TYPE_ID="furniture_type_id",w.FURNITURE_EXTRAS="furniture_extras",w.FURNITURE_EXPIRY_TIME="furniture_expiry_time",w.FURNITURE_EXPIRTY_TIMESTAMP="furniture_expiry_timestamp",w.FURNITURE_REAL_ROOM_OBJECT="furniture_real_room_object",w.FURNITURE_IS_STICKIE="furniture_is_stickie",w.FURNITURE_BRANDING_IMAGE_STATUS="furniture_branding_image_status",w.FURNITURE_BRANDING_IMAGE_URL="furniture_branding_image_url",w.FURNITURE_BRANDING_URL="furniture_branding_url",w.FURNITURE_BRANDING_OFFSET_X="furniture_branding_offset_x",w.FURNITURE_BRANDING_OFFSET_Y="furniture_branding_offset_y",w.FURNITURE_BRANDING_OFFSET_Z="furniture_branding_offset_z",w.FURNITURE_BADGE_IMAGE_STATUS="furniture_badge_image_status",w.FURNITURE_BADGE_ASSET_NAME="furniture_badge_asset_name",w.FURNITURE_BADGE_VISIBLE_IN_STATE="furniture_badge_visible_in_state",w.FURNITURE_ALPHA_MULTIPLIER="furniture_alpha_multiplier",w.FURNITURE_USAGE_POLICY="furniture_usage_policy",w.FURNITURE_OWNER_ID="furniture_owner_id",w.FURNITURE_OWNER_NAME="furniture_owner_name",w.FURNITURE_ROOM_BACKGROUND_COLOR_HUE="furniture_room_background_color_hue",w.FURNITURE_ROOM_BACKGROUND_COLOR_SATURATION="furniture_room_background_color_saturation",w.FURNITURE_ROOM_BACKGROUND_COLOR_LIGHTNESS="furniture_room_background_color_lightness",w.FURNITURE_AREA_HIDE_ROOT_X="furniture_area_hide_root_x",w.FURNITURE_AREA_HIDE_ROOT_Y="furniture_area_hide_root_y",w.FURNITURE_AREA_HIDE_WIDTH="furniture_area_hide_width",w.FURNITURE_AREA_HIDE_LENGTH="furniture_area_hide_length",w.FURNITURE_AREA_HIDE_INVISIBILITY="furniture_area_hide_invisibility",w.FURNITURE_AREA_HIDE_WALL_ITEMS="furniture_area_hide_wall_items",w.FURNITURE_AREA_HIDE_INVERT="furniture_area_hide_invert",w.FURNITURE_USES_PLANE_MASK="furniture_uses_plane_mask",w.FURNITURE_PLANE_MASK_TYPE="furniture_plane_mask_type",w.FURNITURE_IS_VARIABLE_HEIGHT="furniture_is_variable_height",w.FURNITURE_VOTE_MAJORITY_RESULT="furniture_vote_majority_result",w.FURNITURE_VOTE_COUNTER_COUNT="furniture_vote_counter_count",w.FURNITURE_SOUNDBLOCK_RELATIVE_ANIMATION_SPEED="furniture_soundblock_relative_animation_speed",w.FURNITURE_MANNEQUIN_NAME="furniture_mannequin_name",w.FURNITURE_MANNEQUIN_GENDER="furniture_mannequin_gender",w.FURNITURE_MANNEQUIN_FIGURE="furniture_mannequin_figure",w.FURNITURE_HIGHSCORE_SCORE_TYPE="furniture_highscore_score_type",w.FURNITURE_HIGHSCORE_CLEAR_TYPE="furniture_highscore_clear_type",w.FURNITURE_HIGHSCORE_DATA_ENTRY_COUNT="furniture_highscore_data_entry_count",w.FURNITURE_HIGHSCORE_DATA_ENTRY_BASE_USERS_="furniture_highscore_data_entry_base_users_",w.FURNITURE_HIGHSCORE_DATA_ENTRY_BASE_SCORE_="furniture_highscore_data_entry_base_score_",w.FURNITURE_INTERNAL_LINK="furniture_internal_link",w.FURNITURE_CLOTHING_BOY="furniture_clothing_boy",w.FURNITURE_CLOTHING_GIRL="furniture_clothing_girl",w.FURNITURE_PLANETSYSTEM_DATA="furniture_planetsystem_data",w.FURNITURE_FIREWORKS_DATA="furniture_fireworks_data",w.PET_PALETTE_INDEX="pet_palette_index",w.PET_COLOR="pet_color",w.PET_HEAD_ONLY="pet_head_only",w.PET_CUSTOM_LAYER_IDS="pet_custom_layer_ids",w.PET_CUSTOM_PARTS_IDS="pet_custom_part_ids",w.PET_CUSTOM_PALETTE_IDS="pet_custom_palette_ids",w.PET_IS_RIDING="pet_is_riding",w.PET_TYPE="pet_type",w.PET_ALLOWED_DIRECTIONS="pet_allowed_directions",w.RACE="race",w.ROOM_MAP_DATA="room_map_data",w.ROOM_PLANE_MASK_XML="room_plane_mask_xml",w.ROOM_FLOOR_TYPE="room_floor_type",w.ROOM_WALL_TYPE="room_wall_type",w.ROOM_LANDSCAPE_TYPE="room_landscape_type",w.ROOM_WALL_THICKNESS="room_wall_thickness",w.ROOM_FLOOR_THICKNESS="room_floor_thickness",w.ROOM_FLOOR_HOLE_UPDATE_TIME="room_floor_hole_update_time",w.ROOM_FLOOR_VISIBILITY="room_floor_visibility",w.ROOM_WALL_VISIBILITY="room_wall_visibility",w.ROOM_LANDSCAPE_VISIBILITY="room_landscape_visibility",w.ROOM_DOOR_X="room_door_x",w.ROOM_DOOR_Y="room_door_y",w.ROOM_DOOR_Z="room_door_z",w.ROOM_DOOR_DIR="room_door_dir",w.ROOM_BACKGROUND_COLOR="room_background_color",w.ROOM_COLORIZE_BG_ONLY="room_colorize_bg_only",w.ROOM_RANDOM_SEED="room_random_seed",w.ROOM_WORLD_TYPE="room_world_type",w.ROOM_SELECTED_X="room_selected_x",w.ROOM_SELECTED_Y="room_selected_y",w.ROOM_SELECTED_Z="room_selected_z",w.ROOM_SELECTED_PLANE="room_selected_plane",w.IMAGE_QUERY_SCALE="image_query_scale",w.FURNITURE_FRIENDFURNI_ENGRAVING="furniture_friendfurni_engraving_type",w.SESSION_URL_PREFIX="session_url_prefix",w.SESSION_CURRENT_USER_ID="session_current_user_id";let I=w;const L0=class L0{};L0.UNIQUE_SET=256;let h_=L0;class Wr{constructor(){this._flags=0,this._uniqueNumber=0,this._uniqueSeries=0}parseWrapper(t){(this._flags&h_.UNIQUE_SET)>0&&(this._uniqueNumber=t.readInt(),this._uniqueSeries=t.readInt())}initializeFromRoomObjectModel(t){this._uniqueNumber=t.getValue(I.FURNITURE_UNIQUE_SERIAL_NUMBER),this._uniqueSeries=t.getValue(I.FURNITURE_UNIQUE_EDITION_SIZE)}writeRoomObjectModel(t){t&&(t.setValue(I.FURNITURE_UNIQUE_SERIAL_NUMBER,this._uniqueNumber),t.setValue(I.FURNITURE_UNIQUE_EDITION_SIZE,this._uniqueSeries))}getLegacyString(){return""}compare(t){return!1}get state(){const t=parseInt(this.getLegacyString());return isNaN(t)?0:t}get isUnique(){return this._uniqueSeries>0}get uniqueNumber(){return this._uniqueNumber}set uniqueNumber(t){this._uniqueNumber=t}get uniqueSeries(){return this._uniqueSeries}set uniqueSeries(t){this._uniqueSeries=t}get rarityLevel(){return-1}get flags(){return this._flags}set flags(t){this._flags=t}}const Pi=class Pi{};Pi.LEGACY_KEY=0,Pi.MAP_KEY=1,Pi.STRING_KEY=2,Pi.VOTE_KEY=3,Pi.EMPTY_KEY=4,Pi.NUMBER_KEY=5,Pi.HIGHSCORE_KEY=6,Pi.CRACKABLE_KEY=7;let Si=Pi;const Dg=class Dg extends Wr{constructor(){super(),this._state="",this._hits=0,this._target=0}parseWrapper(t){t&&(this._state=t.readString(),this._hits=t.readInt(),this._target=t.readInt(),super.parseWrapper(t))}initializeFromRoomObjectModel(t){super.initializeFromRoomObjectModel(t),this._state=t.getValue(I.FURNITURE_CRACKABLE_STATE),this._hits=t.getValue(I.FURNITURE_CRACKABLE_HITS),this._target=t.getValue(I.FURNITURE_CRACKABLE_TARGET)}writeRoomObjectModel(t){super.writeRoomObjectModel(t),t.setValue(I.FURNITURE_DATA_FORMAT,Dg.FORMAT_KEY),t.setValue(I.FURNITURE_CRACKABLE_STATE,this._state),t.setValue(I.FURNITURE_CRACKABLE_HITS,this._hits),t.setValue(I.FURNITURE_CRACKABLE_TARGET,this._target)}getLegacyString(){return this._state}compare(t){return!0}get hits(){return this._hits}get target(){return this._target}};Dg.FORMAT_KEY=Si.CRACKABLE_KEY;let Wl=Dg;const Lg=class Lg extends Wr{parseWrapper(t){t&&(this._state="",super.parseWrapper(t))}writeRoomObjectModel(t){super.writeRoomObjectModel(t),t.setValue(I.FURNITURE_DATA_FORMAT,Lg.FORMAT_KEY)}getLegacyString(){return this._state}compare(t){return super.compare(t)}};Lg.FORMAT_KEY=Si.EMPTY_KEY;let jl=Lg;class NT{constructor(){this._score=-1,this._users=[]}get score(){return this._score}set score(t){this._score=t}get users(){return this._users}set users(t){this._users=t}addUsername(t){this._users.push(t)}}const Fg=class Fg extends Wr{constructor(){super(),this._state="",this._scoreType=-1,this._clearType=-1,this._entries=[]}parseWrapper(t){if(!t)return;this._state=t.readString(),this._scoreType=t.readInt(),this._clearType=t.readInt();let e=t.readInt();for(;e>0;){const s=new NT;s.score=t.readInt();let r=t.readInt();for(;r>0;)s.addUsername(t.readString()),r--;this._entries.push(s),e--}super.parseWrapper(t)}initializeFromRoomObjectModel(t){this._scoreType=t.getValue(I.FURNITURE_HIGHSCORE_SCORE_TYPE),this._clearType=t.getValue(I.FURNITURE_HIGHSCORE_CLEAR_TYPE),this._entries=[];const e=t.getValue(I.FURNITURE_HIGHSCORE_DATA_ENTRY_COUNT);let s=0;for(;s<e;){const r=new NT;r.score=t.getValue(I.FURNITURE_HIGHSCORE_DATA_ENTRY_BASE_SCORE_+s),r.users=t.getValue(I.FURNITURE_HIGHSCORE_DATA_ENTRY_BASE_USERS_+s),this._entries.push(r),s++}super.initializeFromRoomObjectModel(t)}writeRoomObjectModel(t){if(super.writeRoomObjectModel(t),t.setValue(I.FURNITURE_DATA_FORMAT,Fg.FORMAT_KEY),t.setValue(I.FURNITURE_HIGHSCORE_SCORE_TYPE,this._scoreType),t.setValue(I.FURNITURE_HIGHSCORE_CLEAR_TYPE,this._clearType),this._entries){t.setValue(I.FURNITURE_HIGHSCORE_DATA_ENTRY_COUNT,this._entries.length);let e=0;for(;e<this._entries.length;){const s=this._entries[e];t.setValue(I.FURNITURE_HIGHSCORE_DATA_ENTRY_BASE_SCORE_+e,s.score),t.setValue(I.FURNITURE_HIGHSCORE_DATA_ENTRY_BASE_USERS_+e,s.users),e++}}}getLegacyString(){return this._state}get entries(){return this._entries}get clearType(){return this._clearType}get scoreType(){return this._scoreType}};Fg.FORMAT_KEY=Si.HIGHSCORE_KEY;let Kl=Fg;const wg=class wg extends Wr{constructor(){super(),this._data=""}parseWrapper(t){t&&(this._data=t.readString(),super.parseWrapper(t))}initializeFromRoomObjectModel(t){super.initializeFromRoomObjectModel(t),this._data=t.getValue(I.FURNITURE_DATA)}writeRoomObjectModel(t){super.writeRoomObjectModel(t),t.setValue(I.FURNITURE_DATA_FORMAT,wg.FORMAT_KEY),t.setValue(I.FURNITURE_DATA,this._data)}getLegacyString(){return this._data}compare(t){return this._data===t.getLegacyString()}setString(t){this._data=t}};wg.FORMAT_KEY=Si.LEGACY_KEY;let Ze=wg;const Zr=class Zr extends Wr{constructor(){super(),this._data={}}parseWrapper(t){if(!t)return;this._data={};const e=t.readInt();if(e)for(let s=0;s<e;s++)this._data[t.readString()]=t.readString();super.parseWrapper(t)}initializeFromRoomObjectModel(t){super.initializeFromRoomObjectModel(t),this._data=t.getValue(I.FURNITURE_DATA)||{}}writeRoomObjectModel(t){super.writeRoomObjectModel(t),t.setValue(I.FURNITURE_DATA_FORMAT,Zr.FORMAT_KEY),t.setValue(I.FURNITURE_DATA,this._data)}getLegacyString(){if(!this._data)return"";const t=this._data[Zr.STATE];return t??""}compare(t){return!1}getValue(t){return this._data[t]}get rarityLevel(){if(!this._data)return-1;const t=this._data[Zr.RARITY];return t==null?-1:parseInt(t)}get data(){return this._data}};Zr.FORMAT_KEY=Si.MAP_KEY,Zr.STATE="state",Zr.RARITY="rarity";let Cn=Zr;const Zn=class Zn extends Wr{constructor(){super(),this._data=[]}parseWrapper(t){if(!t)return;this._data=[];const e=t.readInt();if(e)for(let s=0;s<e;s++)this._data.push(t.readInt());super.parseWrapper(t)}initializeFromRoomObjectModel(t){super.initializeFromRoomObjectModel(t),this._data=t.getValue(I.FURNITURE_DATA)}writeRoomObjectModel(t){super.writeRoomObjectModel(t),t.setValue(I.FURNITURE_DATA_FORMAT,Zn.FORMAT_KEY),t.setValue(I.FURNITURE_DATA,this._data)}getLegacyString(){return!this._data||!this._data.length?"":this._data[Zn.STATE].toString()}compare(t){if(!(t instanceof Zn))return!1;let e=0;for(;e<this._data.length;){if(e!==0){if(this._data[e]!==t.getValue(e))return!1}e++}return!0}getValue(t){if(!this._data||!this._data.length)return-1;const e=this._data[t];return e??-1}};Zn.FORMAT_KEY=Si.NUMBER_KEY,Zn.STATE=0;let wa=Zn;const Jn=class Jn extends Wr{constructor(){super(),this._data=[]}parseWrapper(t){if(!t)return;this._data=[];const e=t.readInt();if(e)for(let s=0;s<e;s++)this._data.push(t.readString());super.parseWrapper(t)}initializeFromRoomObjectModel(t){super.initializeFromRoomObjectModel(t),this._data=t.getValue(I.FURNITURE_DATA)}writeRoomObjectModel(t){super.writeRoomObjectModel(t),t.setValue(I.FURNITURE_DATA_FORMAT,Jn.FORMAT_KEY),t.setValue(I.FURNITURE_DATA,this._data)}getLegacyString(){return!this._data||!this._data.length?"":this._data[Jn.STATE]}compare(t){if(!(t instanceof Jn))return!1;let e=0;for(;e<this._data.length;){if(e!==0){if(this._data[e]!==t.getValue(e))return!1}e++}return!0}getValue(t){return this._data[t]||""}setValue(t){this._data=t}};Jn.FORMAT_KEY=Si.STRING_KEY,Jn.STATE=0;let Ga=Jn;const Gg=class Gg extends Wr{constructor(){super(),this._state="",this._result=0}parseWrapper(t){t&&(this._state=t.readString(),this._result=t.readInt(),super.parseWrapper(t))}writeRoomObjectModel(t){super.writeRoomObjectModel(t),t.setValue(I.FURNITURE_DATA_FORMAT,Gg.FORMAT_KEY);const e={};e.S=this._state,e.R=this._result.toString(),t.setValue(I.FURNITURE_DATA,e)}getLegacyString(){return this._state}compare(t){return!0}setString(t){this._state=t}get result(){return this._result}};Gg.FORMAT_KEY=Si.VOTE_KEY;let Jo=Gg;class br{static getData(t){let e=null;switch(t&255){case Wl.FORMAT_KEY:e=new Wl;break;case jl.FORMAT_KEY:e=new jl;break;case Kl.FORMAT_KEY:e=new Kl;break;case Ze.FORMAT_KEY:e=new Ze;break;case Cn.FORMAT_KEY:e=new Cn;break;case wa.FORMAT_KEY:e=new wa;break;case Ga.FORMAT_KEY:e=new Ga;break;case Jo.FORMAT_KEY:e=new Jo;break}return e?(e.flags=t&65280,e):null}}const Jr=class Jr{};Jr.MINIMUM=-2,Jr.ROOM=0,Jr.FLOOR=10,Jr.WALL=20,Jr.UNIT=100,Jr.CURSOR=200;let D=Jr;const Q=class Q{};Q.FURNITURE_BASIC="furniture_basic",Q.FURNITURE_MULTISTATE="furniture_multistate",Q.FURNITURE_MULTIHEIGHT="furniture_multiheight",Q.FURNITURE_RANDOMSTATE="furniture_randomstate",Q.FURNITURE_PLACEHOLDER="furniture_placeholder",Q.FURNITURE_CREDIT="furniture_credit",Q.FURNITURE_STICKIE="furniture_stickie",Q.FURNITURE_PRESENT="furniture_present",Q.FURNITURE_TROPHY="furniture_trophy",Q.FURNITURE_ECOTRON_BOX="furniture_ecotron_box",Q.FURNITURE_DICE="furniture_dice",Q.FURNITURE_HOCKEY_SCORE="furniture_hockey_score",Q.FURNITURE_HABBOWHEEL="furniture_habbowheel",Q.FURNITURE_ONE_WAY_DOOR="furniture_one_way_door",Q.FURNITURE_PLANET_SYSTEM="furniture_planet_system",Q.FURNITURE_WINDOW="furniture_window",Q.FURNITURE_EXTERNAL_IMAGE_WALLITEM="furniture_external_image_wallitem",Q.FURNITURE_ROOMDIMMER="furniture_roomdimmer",Q.FURNITURE_SOUND_MACHINE="furniture_sound_machine",Q.FURNITURE_JUKEBOX="furniture_jukebox",Q.FURNITURE_CRACKABLE="furniture_crackable",Q.FURNITURE_PUSHABLE="furniture_pushable",Q.FURNITURE_CLOTHING_CHANGE="furniture_clothing_change",Q.FURNITURE_COUNTER_CLOCK="furniture_counter_clock",Q.FURNITURE_SCORE="furniture_score",Q.FURNITURE_ES="furniture_es",Q.FURNITURE_FIREWORKS="furniture_fireworks",Q.FURNITURE_SONG_DISK="furniture_song_disk",Q.FURNITURE_BB="furniture_bb",Q.FURNITURE_BG="furniture_bg",Q.FURNITURE_WELCOME_GIFT="furniture_welcome_gift",Q.FURNITURE_FLOOR_HOLE="furniture_floor_hole",Q.FURNITURE_MANNEQUIN="furniture_mannequin",Q.FURNITURE_GUILD_CUSTOMIZED="furniture_guild_customized",Q.FURNITURE_GROUP_FORUM_TERMINAL="furniture_group_forum_terminal",Q.FURNITURE_PET_CUSTOMIZATION="furniture_pet_customization",Q.FURNITURE_CUCKOO_CLOCK="furniture_cuckoo_clock",Q.FURNITURE_VOTE_COUNTER="furniture_vote_counter",Q.FURNITURE_VOTE_MAJORITY="furniture_vote_majority",Q.FURNITURE_SOUNDBLOCK="furniture_soundblock",Q.FURNITURE_RANDOM_TELEPORT="furniture_random_teleport",Q.FURNITURE_MONSTERPLANT_SEED="furniture_monsterplant_seed",Q.FURNITURE_PURCHASABLE_CLOTHING="furniture_purchasable_clothing",Q.FURNITURE_BACKGROUND_COLOR="furniture_background_color",Q.FURNITURE_MYSTERYBOX="furniture_mysterybox",Q.FURNITURE_EFFECTBOX="furniture_effectbox",Q.FURNITURE_MYSTERYTROPHY="furniture_mysterytrophy",Q.FURNITURE_ACHIEVEMENT_RESOLUTION="furniture_achievement_resolution",Q.FURNITURE_LOVELOCK="furniture_lovelock",Q.FURNITURE_WILDWEST_WANTED="furniture_wildwest_wanted",Q.FURNITURE_HWEEN_LOVELOCK="furniture_hween_lovelock",Q.FURNITURE_BADGE_DISPLAY="furniture_badge_display",Q.FURNITURE_HIGH_SCORE="furniture_high_score",Q.FURNITURE_INTERNAL_LINK="furniture_internal_link",Q.FURNITURE_CUSTOM_STACK_HEIGHT="furniture_custom_stack_height",Q.FURNITURE_YOUTUBE="furniture_youtube",Q.FURNITURE_RENTABLE_SPACE="furniture_rentable_space",Q.FURNITURE_CHANGE_STATE_WHEN_STEP_ON="furniture_change_state_when_step_on",Q.FURNITURE_VIMEO="furniture_vimeo",Q.FURNITURE_EDITABLE_INTERNAL_LINK="furniture_editable_internal_link",Q.FURNITURE_EDITABLE_ROOM_LINK="furniture_editable_room_link",Q.FURNITURE_CRAFTING_GIZMO="furniture_crafting_gizmo",Q.FURNITURE_AREA_HIDE="furniture_area_hide",Q.ROOM="room",Q.USER="user",Q.BOT="bot",Q.RENTABLE_BOT="rentable_bot",Q.PET="pet",Q.TILE_CURSOR="tile_cursor",Q.SELECTION_ARROW="selection_arrow",Q.GAME_SNOWBALL="game_snowball",Q.GAME_SNOWSPLASH="game_snowsplash";let tt=Q;const cs=class cs{};cs.OBJECT_UNDEFINED="OBJECT_UNDEFINED",cs.OBJECT_MOVE="OBJECT_MOVE",cs.OBJECT_PLACE="OBJECT_PLACE",cs.OBJECT_ROTATE_POSITIVE="OBJECT_ROTATE_POSITIVE",cs.OBJECT_ROTATE_NEGATIVE="OBJECT_ROTATE_NEGATIVE",cs.OBJECT_MOVE_TO="OBJECT_MOVE_TO",cs.OBJECT_PLACE_TO="OBJECT_PLACE_TO",cs.OBJECT_PICKUP="OBJECT_PICKUP",cs.OBJECT_PICKUP_BOT="OBJECT_PICKUP_BOT",cs.OBJECT_PICKUP_PET="OBJECT_PICKUP_PET",cs.OBJECT_EJECT="OBJECT_EJECT",cs.OBJECT_SAVE_STUFF_DATA="OBJECT_SAVE_STUFF_DATA";let yt=cs;const mo=class mo{};mo.USER=1,mo.PET=2,mo.BOT=3,mo.RENTABLE_BOT=4;let qi=mo;const _s=class _s{static getTypeNumber(t){return _s.AVATAR_TYPES[t]}static getTypeString(t){for(const e in _s.AVATAR_TYPES)if(e&&_s.AVATAR_TYPES[e]===t)return e;return null}static getRealType(t){switch(t){case _s.BOT:case _s.RENTABLE_BOT:return _s.USER;default:return t}}};_s.USER="user",_s.PET="pet",_s.BOT="bot",_s.RENTABLE_BOT="rentable_bot",_s.MONSTER_PLANT="monsterplant",_s.AVATAR_TYPES={user:1,pet:2,bot:3,rentable_bot:4};let jt=_s;const bt=class bt{};bt.FURNITURE_STATIC="furniture_static",bt.FURNITURE_ANIMATED="furniture_animated",bt.FURNITURE_RESETTING_ANIMATED="furniture_resetting_animated",bt.FURNITURE_POSTER="furniture_poster",bt.FURNITURE_EXTERNAL_IMAGE="furniture_external_image",bt.FURNITURE_HABBOWHEEL="furniture_habbowheel",bt.FURNITURE_VAL_RANDOMIZER="furniture_val_randomizer",bt.FURNITURE_BOTTLE="furniture_bottle",bt.FURNITURE_PLANET_SYSTEM="furniture_planet_system",bt.FURNITURE_QUEUE_TILE="furniture_queue_tile",bt.FURNITURE_PARTY_BEAMER="furniture_party_beamer",bt.FURNITURE_CUBOID="furniture_cuboid",bt.FURNITURE_GIFT_WRAPPED="furniture_gift_wrapped",bt.FURNITURE_GIFT_WRAPPED_FIREWORKS="furniture_gift_wrapped_fireworks",bt.FURNITURE_COUNTER_CLOCK="furniture_counter_clock",bt.FURNITURE_WATER_AREA="furniture_water_area",bt.FURNITURE_SCORE_BOARD="furniture_score_board",bt.FURNITURE_FIREWORKS="furniture_fireworks",bt.FURNITURE_BB="furniture_bb",bt.FURNITURE_ISOMETRIC_BB="furniture_isometric_bb",bt.FURNITURE_BG="furniture_bg",bt.FURNITURE_STICKIE="furniture_stickie",bt.FURNITURE_MANNEQUIN="furniture_mannequin",bt.FURNITURE_GUILD_CUSTOMIZED="furniture_guild_customized",bt.FURNITURE_GUILD_ISOMETRIC_BADGE="furniture_guild_isometric_badge",bt.FURNITURE_VOTE_COUNTER="furniture_vote_counter",bt.FURNITURE_VOTE_MAJORITY="furniture_vote_majority",bt.FURNITURE_SOUNDBLOCK="furniture_soundblock",bt.FURNITURE_BADGE_DISPLAY="furniture_badge_display",bt.FURNITURE_YOUTUBE="furniture_youtube",bt.FURNITURE_BUILDER_PLACEHOLDER="furniture_builder_placeholder",bt.ROOM="room",bt.USER="user",bt.PET_ANIMATED="pet_animated",bt.BOT="bot",bt.RENTABLE_BOT="rentable_bot",bt.TILE_CURSOR="tile_cursor";let j=bt;const Bg=class Bg{constructor(t,e,s,r=null){this._id=t,this._location=e,this._targetLocation=s,this._movementType=r}get id(){return this._id}get location(){return this._location}get targetLocation(){return this._targetLocation}get movementType(){return this._movementType}};Bg.MOVE="mv",Bg.SLIDE="sld";let ji=Bg;class UT{constructor(t){if(!t)throw new Error("invalid_wrapper");this._webId=t.readInt(),this._name=t.readString(),this._level=t.readInt(),this._figure=t.readString(),this._owner=t.readString()}dispose(){this._webId=0,this._name="",this._level=0,this._figure="",this._owner=""}get webId(){return this._webId}get name(){return this._name}get level(){return this._level}get figure(){return this._figure}get owner(){return this._owner}}var Nr=(i=>(i.FLOOR="S",i.WALL="I",i.EFFECT="E",i.BADGE="B",i.ROBOT="R",i.HABBO_CLUB="H",i.PET="P",i))(Nr||{});class DT{constructor(t){this._stuffId=t.readInt(),this._classId=t.readInt(),this._productCode=t.readString(),this._userId=t.readInt(),this._userName=t.readString(),this._rarityLevel=t.readInt(),this._hasMutation=t.readBoolean()}get stuffId(){return this._stuffId}get classId(){return this._classId}get productCode(){return this._productCode}get userId(){return this._userId}get userName(){return this._userName}get rarityLevel(){return this._rarityLevel}get hasMutation(){return this._hasMutation}}class uS{constructor(t,e,s){this._layerId=t,this._partId=e,this._paletteId=s}get layerId(){return this._layerId}set layerId(t){this._layerId=t}get partId(){return this._partId}set partId(t){this._partId=t}get paletteId(){return this._paletteId}set paletteId(t){this._paletteId=t}}class Xl{constructor(t){this._typeId=this.getTypeId(t),this._paletteId=this.getPaletteId(t),this._color=this.getColor(t),this._headOnly=this.getHeadOnly(t);const e=this.getCustomData(t);this._customLayerIds=this.getCustomLayerIds(e),this._customPartIds=this.getCustomPartIds(e),this._customPaletteIds=this.getCustomPaletteIds(e),this._customParts=[];let s=0;for(;s<this._customLayerIds.length;)this._customParts.push(new uS(this._customLayerIds[s],this._customPartIds[s],this._customPaletteIds[s])),s++}get typeId(){return this._typeId}get paletteId(){return this._paletteId}get color(){return this._color}get customLayerIds(){return this._customLayerIds}get customPartIds(){return this._customPartIds}get customPaletteIds(){return this._customPaletteIds}get customParts(){return this._customParts}getCustomPart(t){if(this._customParts){for(const e of this._customParts)if(e.layerId===t)return e}return null}get hasCustomParts(){return this._customLayerIds!=null&&this._customLayerIds.length>0}get headOnly(){return this._headOnly}get figureString(){let t=this.typeId+" "+this.paletteId+" "+this.color.toString(16);t=t+(" "+this.customParts.length);for(const e of this.customParts)t=t+(" "+e.layerId+" "+e.partId+" "+e.paletteId);return t}getCustomData(t){let e=[];if(t){const s=t.split(" "),r=this._headOnly?1:0,n=4+r;if(s.length>n){const a=3+r,o=parseInt(s[a]);e=s.slice(n,n+o*3)}}return e}getCustomLayerIds(t){const e=[];let s=0;for(;s<t.length;)e.push(parseInt(t[s+0])),s=s+3;return e}getCustomPartIds(t){const e=[];let s=0;for(;s<t.length;)e.push(parseInt(t[s+1])),s=s+3;return e}getCustomPaletteIds(t){const e=[];let s=0;for(;s<t.length;)e.push(parseInt(t[s+2])),s=s+3;return e}getTypeId(t){if(t){const e=t.split(" ");if(e.length>=1)return parseInt(e[0])}return 0}getPaletteId(t){if(t){const e=t.split(" ");if(e.length>=2)return parseInt(e[1])}return 0}getColor(t){if(t){const e=t.split(" ");if(e.length>=3)return parseInt(e[2],16)}return 16777215}getHeadOnly(t){if(t){const e=t.split(" ");if(e.length>=4)return e[3]==="head"}return!1}}class kM{constructor(t){if(!t)throw new Error("invalid_wrapper");this._chance=t.readInt(),this._breeds=[];let e=t.readInt();for(;e>0;)this._breeds.push(t.readInt()),e--}dispose(){this._chance=-1,this._breeds=[]}get chance(){return this._chance}get breeds(){return this._breeds}}const kg=class kg{};kg.KICKED_OUT_OF_ROOM=4008,kg.STRIP_LOCKED_FOR_TRADING=-13001;let c_=kg;const il=class il{};il.OLD_IDENTITY=0,il.NEW_IDENTITY=1,il.REAL_NOOB=2;let Yo=il;const Lt=class Lt{};Lt.DOG=0,Lt.CAT=1,Lt.CROCODILE=2,Lt.TERRIER=3,Lt.BEAR=4,Lt.PIG=5,Lt.LION=6,Lt.RHINO=7,Lt.SPIDER=8,Lt.TURTLE=9,Lt.CHICKEN=10,Lt.FROG=11,Lt.DRAGON=12,Lt.MONSTER=13,Lt.MONKEY=14,Lt.HORSE=15,Lt.MONSTERPLANT=16,Lt.BUNNY=17,Lt.BUNNYEVIL=18,Lt.BUNNYDEPRESSED=19,Lt.BUNNYLOVE=20,Lt.PIGEONGOOD=21,Lt.PIGEONEVIL=22,Lt.DEMONMONKEY=23,Lt.BABYBEAR=24,Lt.BABYTERRIER=25,Lt.GNOME=26,Lt.LEPRECHAUN=27,Lt.KITTENBABY=28,Lt.PUPPYBABY=29,Lt.PIGLETNBABY=30,Lt.HALOOMPA=31,Lt.FOOLS=32,Lt.PTEROSAUR=33,Lt.VELOCIRAPTOR=34;let tu=Lt;const tn=class tn{};tn.NONE=0,tn.GUEST=1,tn.GUILD_MEMBER=2,tn.GUILD_ADMIN=3,tn.ROOM_OWNER=4,tn.MODERATOR=5;let $i=tn;const en=class en{static getLocalizationKey(t){switch(t){case en.FREE_TRADING:return"${trading.mode.free}";case en.ROOM_CONTROLLER_REQUIRED:return"${trading.mode.controller}";case en.NO_TRADING:return"${trading.mode.not.allowed}"}return""}};en.NO_TRADING=0,en.ROOM_CONTROLLER_REQUIRED=1,en.FREE_TRADING=2;let __=en;const Ys=class Ys{};Ys.SUPER_USER=9,Ys.ADMINISTRATOR=8,Ys.COMMUNITY=7,Ys.PLAYER_SUPPORT=6,Ys.MODERATOR=5,Ys.EMPLOYEE=4,Ys.BUS_PARTNER=3,Ys.PARTNER=2,Ys.CELEBRITY=1,Ys.NONE=0;let d_=Ys;class zM{}const rl=class rl{};rl.MATCH_ALL_PIXELS=-1,rl.MATCH_OPAQUE_PIXELS=128,rl.MATCH_NOTHING=256;let ii=rl;const Eo=class Eo{};Eo.DEFAULT=1,Eo.ROOM_PLANE=2,Eo.AVATAR=3,Eo.AVATAR_OWN=4;let Rs=Eo;const li=class li{};li.MOUSE_CLICK="click",li.DOUBLE_CLICK="double_click",li.MOUSE_MOVE="mousemove",li.MOUSE_DOWN="mousedown",li.MOUSE_DOWN_LONG="mousedown_long",li.MOUSE_UP="mouseup",li.ROLL_OVER="mouseover",li.ROLL_OUT="mouseout",li.RIGHT_CLICK="contextmenu";let J=li;const ta=class ta{};ta.TOUCH_START="touchstart",ta.TOUCH_MOVE="touchmove",ta.TOUCH_CANCEL="touchcancel",ta.TOUCH_END="touchend",ta.TOUCH_LONG="touchlong";let LT=ta;const Fe=class Fe{constructor(t){this._ordinal=t}get ordinal(){return this._ordinal}equals(t){return t&&t._ordinal==this._ordinal}};Fe.NONE=new Fe(0),Fe.WAVE=new Fe(1),Fe.BLOW=new Fe(2),Fe.LAUGH=new Fe(3),Fe.CRY=new Fe(4),Fe.IDLE=new Fe(5),Fe.JUMP=new Fe(6),Fe.RESPECT=new Fe(7);let FT=Fe;const hi=class hi{};hi.DUMMY="DUMMY",hi.FRIEND_FURNITURE="FRIEND_FURNITURE",hi.MONSTERPLANT_SEED="MONSTERPLANT_SEED",hi.MYSTERY_BOX="MYSTERY_BOX",hi.EFFECT_BOX="EFFECT_BOX",hi.MYSTERY_TROPHY="MYSTERY_TROPHY",hi.RANDOM_TELEPORT="RANDOM_TELEPORT",hi.PURCHASABLE_CLOTHING="PURCHASABLE_CLOTHING",hi.GENERIC_USABLE="GENERIC_USABLE";let Ri=hi;const ea=class ea{};ea.LOVE_LOCK=0,ea.CARVE_A_TREE=1,ea.FRIENDS_PORTRAIT=2,ea.WILD_WEST_WANTED=3,ea.HABBOWEEN=4;let wT=ea;const nt=class nt{};nt.CHAT_WIDGET="RWE_CHAT_WIDGET",nt.INFOSTAND="RWE_INFOSTAND",nt.ME_MENU="RWE_ME_MENU",nt.CHAT_INPUT_WIDGET="RWE_CHAT_INPUT_WIDGET",nt.FURNI_PLACEHOLDER="RWE_FURNI_PLACEHOLDER",nt.FURNI_CREDIT_WIDGET="RWE_FURNI_CREDIT_WIDGET",nt.FURNI_STICKIE_WIDGET="RWE_FURNI_STICKIE_WIDGET",nt.FURNI_TROPHY_WIDGET="RWE_FURNI_TROPHY_WIDGET",nt.FURNI_LOVELOCK_WIDGET="RWE_FURNI_LOVELOCK_WIDGET",nt.FURNI_PRESENT_WIDGET="RWE_FURNI_PRESENT_WIDGET",nt.FURNI_ECOTRONBOX_WIDGET="RWE_FURNI_ECOTRONBOX_WIDGET",nt.FURNI_PET_PACKAGE_WIDGET="RWE_FURNI_PET_PACKAGE_WIDGET",nt.PLAYLIST_EDITOR_WIDGET="RWE_PLAYLIST_EDITOR_WIDGET",nt.DOORBELL="RWE_DOORBELL",nt.LOADINGBAR="RWE_LOADINGBAR",nt.ROOM_QUEUE="RWE_ROOM_QUEUE",nt.ROOM_POLL="RWE_ROOM_POLL",nt.ROOM_VOTE="RWE_ROOM_VOTE",nt.USER_CHOOSER="RWE_USER_CHOOSER",nt.FURNI_CHOOSER="RWE_FURNI_CHOOSER",nt.ROOM_DIMMER="RWE_ROOM_DIMMER",nt.FRIEND_REQUEST="RWE_FRIEND_REQUEST",nt.CLOTHING_CHANGE="RWE_CLOTHING_CHANGE",nt.CONVERSION_TRACKING="RWE_CONVERSION_TRACKING",nt.USER_NOTIFICATION="RWE_USER_NOTIFICATION",nt.FRIENDS_BAR="RWE_FRIENDS_BAR",nt.PURSE_WIDGET="RWE_PURSE_WIDGET",nt.AVATAR_INFO="RWE_AVATAR_INFO",nt.WELCOME_GIFT="RWE_WELCOME_GIFT",nt.SPAMWALL_POSTIT_WIDGET="RWE_SPAMWALL_POSTIT_WIDGET",nt.EFFECTS="RWE_EFFECTS",nt.MANNEQUIN="RWE_MANNEQUIN",nt.FURNITURE_CONTEXT_MENU="RWE_FURNITURE_CONTEXT_MENU",nt.LOCATION_WIDGET="RWE_LOCATION_WIDGET",nt.CAMERA="RWE_CAMERA",nt.ROOM_THUMBNAIL_CAMERA="RWE_ROOM_THUMBNAIL_CAMERA",nt.ROOM_BACKGROUND_COLOR="RWE_ROOM_BACKGROUND_COLOR",nt.CUSTOM_USER_NOTIFICATION="RWE_CUSTOM_USER_NOTIFICATION",nt.FURNI_ACHIEVEMENT_RESOLUTION_ENGRAVING="RWE_FURNI_ACHIEVEMENT_RESOLUTION_ENGRAVING",nt.FRIEND_FURNI_CONFIRM="RWE_FRIEND_FURNI_CONFIRM",nt.FRIEND_FURNI_ENGRAVING="RWE_FRIEND_FURNI_ENGRAVING",nt.HIGH_SCORE_DISPLAY="RWE_HIGH_SCORE_DISPLAY",nt.INTERNAL_LINK="RWE_INTERNAL_LINK",nt.CUSTOM_STACK_HEIGHT="RWE_CUSTOM_STACK_HEIGHT",nt.YOUTUBE="RWE_YOUTUBE",nt.RENTABLESPACE="RWE_RENTABLESPACE",nt.VIMEO="RWE_VIMEO",nt.ROOM_TOOLS="RWE_ROOM_TOOLS",nt.EXTERNAL_IMAGE="RWE_EXTERNAL_IMAGE",nt.WORD_QUIZZ="RWE_WORD_QUIZZ",nt.UI_HELP_BUBBLE="RWE_UI_HELP_BUBBLE",nt.ROOM_LINK="RWE_ROOM_LINK",nt.CRAFTING="RWE_CRAFTING",nt.ROOMGAME_CHECKERS="RWE_GAME_CHECKERS";let ql=nt;const _r=class _r{};_r.INFOSTAND_EXTRA_PARAM="RWEIEP_INFOSTAND_EXTRA_PARAM",_r.JUKEBOX="RWEIEP_JUKEBOX",_r.USABLE_PRODUCT="RWEIEP_USABLE_PRODUCT",_r.SONGDISK="RWEIEP_SONGDISK",_r.CRACKABLE_FURNI="RWEIEP_CRACKABLE_FURNI",_r.BRANDING_OPTIONS="RWEIEP_BRANDING_OPTIONS",_r.USABLE="RWEIEP_USABLE";let hs=_r;const nl=class nl{};nl.NOBODY=0,nl.CONTROLLER=1,nl.EVERYBODY=2;let GT=nl;const al=class al{};al.NORMAL=0,al.GENERIC=1,al.BOT=2;let gn=al;const sn=class sn{};sn.CHANNELS_EQUAL="CHANNELS_EQUAL",sn.CHANNELS_UNIQUE="CHANNELS_UNIQUE",sn.CHANNELS_RED="CHANNELS_RED",sn.CHANNELS_GREEN="CHANNELS_GREEN",sn.CHANNELS_BLUE="CHANNELS_BLUE",sn.CHANNELS_DESATURATED="CHANNELS_DESATURATED";let Ar=sn;class xe{constructor(t=null){if(this._length=0,this._dictionary=new Map,this._array=[],this._keys=[],t)for(const[e,s]of t.entries())this.add(e,s)}get length(){return this._length}get disposed(){return!this._dictionary}dispose(){if(!this._dictionary){for(const t of this._dictionary.keys())this._dictionary.delete(t);this._dictionary=null}this._length=0,this._array=null,this._keys=null}reset(){for(const t of this._dictionary.keys())this._dictionary.delete(t);this._length=0,this._array=[],this._keys=[]}unshift(t,e){return this._dictionary.get(t)!==null?!1:(this._dictionary.set(t,e),this._array.unshift(e),this._keys.unshift(t),this._length++,!0)}add(t,e){return this._dictionary.get(t)!==void 0?!1:(this._dictionary.set(t,e),this._array[this._length]=e,this._keys[this._length]=t,this._length++,!0)}remove(t){const e=this._dictionary.get(t);if(!e)return null;const s=this._array.indexOf(e);return s>=0&&(this._array.splice(s,1),this._keys.splice(s,1),this._length--),this._dictionary.delete(t),e}getWithIndex(t){return t<0||t>=this._length?null:this._array[t]}getKey(t){return t<0||t>=this._length?null:this._keys[t]}getKeys(){return this._keys.slice()}hasKey(t){return this._keys.indexOf(t)>-1}getValue(t){return this._dictionary.get(t)}getValues(){return this._array.slice()}hasValue(t){return this._array.indexOf(t)>-1}indexOf(t){return this._array.indexOf(t)}concatenate(t){for(const e of t._keys)this.add(e,t.getValue(e))}clone(){const t=new xe;return t.concatenate(this),t}}const VM=i=>{let t="";const e=new Uint8Array(i),s=e.byteLength;for(let r=0;r<s;r++)t+=String.fromCharCode(e[r]);return window.btoa(t)};class Jh{constructor(t){this._position=0,this._dataView=new DataView(t)}readBytes(t){const e=new Jh(this._dataView.buffer.slice(this._position,this._position+t));return this._position+=t,e}readByte(){const t=this._dataView.getInt8(this._position);return this._position++,t}readShort(){const t=this._dataView.getInt16(this._position);return this._position+=2,t}readInt(){const t=this._dataView.getInt32(this._position);return this._position+=4,t}readFloat(){const t=this._dataView.getFloat32(this._position);return this._position+=4,t}readDouble(){const t=this._dataView.getFloat64(this._position);return this._position+=8,t}remaining(){return this._dataView.byteLength-this._position}toString(t){return new TextDecoder().decode(this._dataView.buffer)}toArrayBuffer(){return this._dataView.buffer}}class BT{constructor(){this._buffer=new Uint8Array,this._position=0}writeByte(t){const e=new Uint8Array(1);return e[0]=t,this.appendArray(e),this}writeBytes(t){const e=new Uint8Array(t);return this.appendArray(e),this}writeShort(t){const e=new Uint8Array(2);return e[0]=t>>8,e[1]=t&255,this.appendArray(e),this}writeInt(t){const e=new Uint8Array(4);return e[0]=t>>24,e[1]=t>>16,e[2]=t>>8,e[3]=t&255,this.appendArray(e),this}writeString(t,e=!0){const s=new TextEncoder().encode(t);return e?(this.writeShort(s.length),this.appendArray(s)):this.appendArray(s),this}appendArray(t){if(!t)return;const e=new Uint8Array(this.position+t.length>this._buffer.length?this.position+t.length:this._buffer.length);e.set(this._buffer),e.set(t,this.position),this._buffer=e,this.position+=t.length}getBuffer(){return this._buffer.buffer}get position(){return this._position}set position(t){this._position=t}toString(t){return new TextDecoder(t).decode(this._buffer)}}class v{constructor(t=0,e=0,s=0){this._x=t,this._y=e,this._z=s,this._length=NaN}static sum(t,e){return!t||!e?null:new v(t.x+e.x,t.y+e.y,t.z+e.z)}static dif(t,e){return!t||!e?null:new v(t.x-e.x,t.y-e.y,t.z-e.z)}static product(t,e){return t?new v(t.x*e,t.y*e,t.z*e):null}static dotProduct(t,e){return!t||!e?0:t.x*e.x+t.y*e.y+t.z*e.z}static crossProduct(t,e){if(!t||!e)return null;const s=new v;return s.x=t.y*e.z-t.z*e.y,s.y=t.z*e.x-t.x*e.z,s.z=t.x*e.y-t.y*e.x,s}static scalarProjection(t,e){if(!t||!e)return-1;const s=e.length;return s>0?(t.x*e.x+t.y*e.y+t.z*e.z)/s:-1}static cosAngle(t,e){if(!t||!e)return 0;const s=t.length*e.length;return s?v.dotProduct(t,e)/s:0}static isEqual(t,e){return!(!t||!e||t.x!==e.x||t.y!==e.y||t.z!==e.z)}assign(t){t&&(this._x=t.x,this._y=t.y,this._z=t.z,this._length=NaN)}add(t){t&&(this._x+=t.x,this._y+=t.y,this._z+=t.z,this._length=NaN)}subtract(t){t&&(this._x-=t.x,this._y-=t.y,this._z-=t.z,this._length=NaN)}multiply(t){this._x*=t,this._y*=t,this._z*=t,this._length=NaN}divide(t){t&&(this._x/=t,this._y/=t,this._z/=t,this._length=NaN)}negate(){this._x=-this._x,this._y=-this._y,this._z=-this._z}dotProduct(t){return this._x*t.x+this._y*t.y+this._z*t.z}crossProduct(t){const e=new v;return e.x=this._y*t.z-this._z*t.y,e.y=this._z*t.x-this._x*t.z,e.z=this._x*t.y-this._y*t.x,e}normalize(){const t=1/this.length;this._x=this._x*t,this._y=this._y*t,this._z=this._z*t}get x(){return this._x}set x(t){this._x=t,this._length=NaN}get y(){return this._y}set y(t){this._y=t,this._length=NaN}get z(){return this._z}set z(t){this._z=t,this._length=NaN}get length(){return isNaN(this._length)&&(this._length=Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z)),this._length}toString(){return`[Vector3d: ${this._x}, ${this._y}, ${this._z}]`}}const bi=class bi{static hex2rgb(t,e=[]){return e[0]=(t>>16&255)/255,e[1]=(t>>8&255)/255,e[2]=(t&255)/255,e}static hex2rgba(t,e=[]){return e[0]=(t>>16&255)/255,e[1]=(t>>8&255)/255,e[2]=(t&255)/255,e[3]=t&255,e}static rgb2hex(t){return(t[0]*255<<16)+(t[1]*255<<8)+(t[2]*255|0)}static rgba2hex(t){return(t[0]*255<<16)+(t[1]*255<<8)+(t[2]*255|0)+(t[3]|0)}static rgbStringToHex(t){const e=t.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);return"#"+bi.getHex(e[1])+bi.getHex(e[2])+bi.getHex(e[3])}static getHex(t){return isNaN(t)?"00":bi.HEX_DIGITS[(t-t%16)/16]+bi.HEX_DIGITS[t%16]}static int2rgb(t){t>>>=0;const e=t&255,s=(t&65280)>>>8;return"rgba("+[(t&16711680)>>>16,s,e,1].join(",")+")"}static rgbToHSL(t){const e=(t>>16&255)/255,s=(t>>8&255)/255,r=(t&255)/255,n=Math.max(e,s,r),a=Math.min(e,s,r),o=n-a;let u=0,l=0;const c=(n+a)/2;if(o!==0){switch(l=c>.5?o/(2-n-a):o/(n+a),n){case e:u=(s-r)/o+(s<r?6:0);break;case s:u=(r-e)/o+2;break;case r:u=(e-s)/o+4;break}u*=60}const h=Math.round(u/360*255),_=Math.round(l*255),d=Math.round(c*255);return(h<<16)+(_<<8)+d}static hslToRGB(t){const e=(t>>16&255)/255,s=(t>>8&255)/255,r=(t&255)/255;let n=0,a=0,o=0;if(s>0){const h=r<.5?r*(1+s):r+s-r*s,_=2*r-h;[n,a,o]=[e+1/3,e,e-1/3].map(f=>(f<0&&(f+=1),f>1&&(f-=1),f*6<1?_+(h-_)*6*f:f*2<1?h:f*3<2?_+(h-_)*(2/3-f)*6:_))}else n=a=o=r;const u=Math.round(n*255),l=Math.round(a*255),c=Math.round(o*255);return(u<<16)+(l<<8)+c}static rgb2xyz(t){let e=(t>>16&255)/255,s=(t>>8&255)/255,r=(t>>0&255)/255;return e>.04045?e=Math.pow((e+.055)/1.055,2.4):e=e/12.92,s>.04045?s=Math.pow((s+.055)/1.055,2.4):s=s/12.92,r>.04045?r=Math.pow((r+.055)/1.055,2.4):r=r/12.92,e=e*100,s=s*100,r=r*100,new v(e*.4124+s*.3576+r*.1805,e*.2126+s*.7152+r*.0722,e*.0193+s*.1192+r*.9505)}static xyz2CieLab(t){let e=t.x/95.047,s=t.y/100,r=t.z/108.883;return e>.008856?e=Math.pow(e,1/3):e=7.787*e+16/116,s>.008856?s=Math.pow(s,1/3):s=7.787*s+16/116,r>.008856?r=Math.pow(r,1/3):r=7.787*r+16/116,new v(116*s-16,500*(e-s),200*(s-r))}static rgb2CieLab(t){return bi.xyz2CieLab(bi.rgb2xyz(t))}static colorize(t,e){if(e===4294967295)return t;let s=e>>16&255,r=e>>8&255,n=e&255;return s=(t>>16&255)*s/255,r=(t>>8&255)*r/255,n=(t&255)*n/255,(t&&4278190080)|s<<16|r<<8|n}};bi.HEX_DIGITS=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];let $l=bi;const zg=class zg{static isBuilderClubId(t){return t>=zg.BUILDER_CLUB_FURNI_ID_BASE}};zg.BUILDER_CLUB_FURNI_ID_BASE=2147418112;let Ql=zg;const sZ=new Xv,iZ=()=>sZ;let Dc=null;const rZ=async i=>{var t;return Dc=await Yv(i),(t=Dc.events)==null||t.destroy(),Dc},Mn=()=>Dc,vm=new $t;vm.interactive=!1;vm.interactiveChildren=!1;vm.eventMode="none";const nZ=()=>vm,Vg=class Vg{constructor(){this._textures={},this._totalTextures=0,this._runCount=0}getTotalTextures(){let t=0;for(const e in this._textures)for(const s in this._textures[e])t+=this._textures[e][s].length;return this._totalTextures=t,this._totalTextures}getTexture(t,e){if(this._textures[t]||(this._textures[t]={}),this._textures[t][e]||(this._textures[t][e]=[]),this._textures[t][e].length){const s=this._textures[t][e].shift();if(s)return this._totalTextures--,s}return ue.createRenderTexture(t,e)}putTexture(t){t&&(this._textures[t.width]||(this._textures[t.width]={}),this._textures[t.width][t.height]||(this._textures[t.width][t.height]=[]),delete t.source.hitMap,this._textures[t.width][t.height].push(t),this._totalTextures++)}run(){if(this._runCount++,!!this._totalTextures)for(const t in this._textures)for(const e in this._textures[t]){const s=this._textures[t][e];for(let r=s.length-1;r>=0;r--){const n=s[r],a=n.source;a._touched>-1&&this._runCount-a._touched>Vg.MAX_IDLE&&(delete n.source.hitMap,a.destroyed||n.destroy(!0),this._textures[n.width][n.height].splice(r,1),this._totalTextures--,it.log(`[TexturePool] Texture disposed: ${n.width}x${n.height}`))}}}get textures(){return this._textures}};Vg.MAX_IDLE=3600;let f_=Vg;const aZ=new f_,wr=()=>aZ,Cm=()=>Ls.shared,HM=()=>Cm().FPS,Nt=()=>Cm().lastTime,sa=class sa{static get available(){return this._isListeningForPostMessages||(this._isListeningForPostMessages=!0,window.addEventListener("message",t=>{if(typeof t.data=="string"&&t.data.startsWith(sa.MESSAGE_KEY)){const{method:e,params:s}=JSON.parse(t.data.substr(sa.MESSAGE_KEY.length)),r=window[e];if(!r)return;r(...s);return}})),!0}static call(t,...e){if(window.top!==window&&window.top.postMessage(sa.MESSAGE_KEY+JSON.stringify({method:t,params:e}),"*"),!("FlashExternalInterface"in window))return;const s=window.FlashExternalInterface[t];return typeof s<"u"?s(...e):void 0}static callGame(t,...e){if(window.top!==window&&window.top.postMessage("Nitro_LegacyExternalGameInterface"+JSON.stringify({method:t,params:e}),"*"),!("FlashExternalGameInterface"in window))return;const s=window.FlashExternalGameInterface[t];return typeof s<"u"?s(...e):void 0}static addCallback(t,e){window[t]=e}};sa.MESSAGE_KEY="Nitro_LegacyExternalInterface",sa._isListeningForPostMessages=!1;let Ut=sa;const ia=class ia{static log(...t){this.LOG_DEBUG&&console.log(this.logPrefix(),...t)}static warn(...t){this.LOG_WARN&&console.warn(this.logPrefix(),...t)}static error(...t){this.LOG_ERROR&&console.error(this.logPrefix(),...t)}static events(...t){this.LOG_EVENTS&&console.log(this.logPrefix(),...t)}static packets(...t){this.LOG_PACKETS&&console.log(this.logPrefix(),...t)}static logPrefix(){return"[Nitro]"}};ia.LOG_DEBUG=!1,ia.LOG_WARN=!1,ia.LOG_ERROR=!1,ia.LOG_EVENTS=!1,ia.LOG_PACKETS=!1;let it=ia;const To=class To{static logEventLog(t){try{Ut.available&&Ut.call("logEventLog",t)}catch{it.log("External interface not working, failed to log event log.")}}static openPage(t){try{Ut.available?Ut.call("openPage",t):it.log("External interface not available, openPage failed.")}catch{it.log("Failed to open web page",t)}}static openWebPage(t){window.open(t)}static sendHeartBeat(){try{Ut.available&&Ut.call("heartBeat")}catch{it.log("Failed to send heartbeat")}}static openWebPageAndMinimizeClient(t){try{Ut.available&&To.openPage(t)}catch{it.log("Failed to open web page",t)}}static closeWebPageAndRestoreClient(){try{Ut.available&&Ut.call("closeWebPageAndRestoreClient")}catch{it.log("Failed to close web page and restore client!")}}static openHabblet(t,e=null){try{Ut.available&&Ut.call("openHabblet",t,e)}catch{it.log("Failed to open Habblet",t)}}static closeHabblet(t,e=null){try{Ut.available&&Ut.call("closeHabblet",t,e)}catch{it.log("Failed to close Habblet",t)}}static send(t,e){try{Ut.available&&Ut.call("disconnect",t,e)}catch{it.log("Failed to close send ")}}static showGame(t){try{Ut.available&&Ut.callGame("showGame",t)}catch(e){it.log("Failed to open game",e)}}static hideGame(){try{Ut.available&&Ut.callGame("hideGame")}catch{it.log("Failed to hide game")}}static open(t){try{Ut.available?Ut.call("openExternalLink",escape(t)):it.log("External interface not available. Could not request to open: "+t)}catch{it.log("External interface not working. Could not request to open: "+t)}}static roomVisited(t){try{Ut.available?Ut.call("roomVisited",t):it.log("External interface not available. Could not store last room visit.")}catch{it.log("External interface not working. Could not store last room visit.")}}static openMinimail(t){try{Ut.available?Ut.call("openMinimail",t):it.log("External interface not available. Could not open minimail.")}catch{it.log("External interface not working. Could not open minimail.")}}static openNews(){try{Ut.available?Ut.call("openNews"):it.log("External interface not available. Could not open news.")}catch{it.log("External interface not working. Could not open news.")}}static closeNews(){try{Ut.available?Ut.call("closeNews"):it.log("External interface not available. Could not close news.")}catch{it.log("External interface not working. Could not close news.")}}static openAvatars(){try{Ut.available?Ut.call("openAvatars"):it.log("External interface not available. Could not open avatars.")}catch{it.log("External interface not working. Could not open avatars.")}}static openRoomEnterAd(){try{Ut.available?Ut.call("openRoomEnterAd"):it.log("External interface not available. Could not open roomenterad.")}catch{it.log("External interface not working. Could not open roomenterad.")}}static updateFigure(t){try{Ut.available?Ut.call("updateFigure",t):it.log("External interface not available. Could not update figure.")}catch{it.log("External interface not working. Could not update figure.")}}};To.ADVERTISEMENT="advertisement",To.OPENLINK="openlink",To.OPENROOM="openroom";let eu=To;const oZ=i=>i>>>0,lS=i=>{const t=oZ(i);return t>=Math.pow(2,31)?t-Math.pow(2,32):t},Zl=[],uZ=i=>{Zl.indexOf(i)>=0||Zl.push(i)},lZ=i=>{const t=Zl.indexOf(i);t!==-1&&Zl.splice(t,1)},g_=i=>{if(!(!i||i===""))for(const t of Zl){if(!t)continue;const e=t.eventUrlPrefix;e.length>0?i.substr(0,e.length)===e&&t.linkReceived(i):t.linkReceived(i)}},Ms=class Ms{constructor(t=0,e=0,s=0,r=0,n=0,a=0,o=0,u=0,l=0){this._data=[t,e,s,r,n,a,o,u,l]}static getXRotationMatrix(t){const e=t*Math.PI/180,s=Math.cos(e),r=Math.sin(e);return new Ms(1,0,0,0,s,-r,0,r,s)}static getYRotationMatrix(t){const e=t*Math.PI/180,s=Math.cos(e),r=Math.sin(e);return new Ms(s,0,r,0,1,0,-r,0,s)}static getZRotationMatrix(t){const e=t*Math.PI/180,s=Math.cos(e),r=Math.sin(e);return new Ms(s,-r,0,r,s,0,0,0,1)}identity(){return this._data=[1,0,0,0,1,0,0,0,1],this}vectorMultiplication(t){const e=t.x*this._data[0]+t.y*this._data[3]+t.z*this._data[6],s=t.x*this._data[1]+t.y*this._data[4]+t.z*this._data[7],r=t.x*this._data[2]+t.y*this._data[5]+t.z*this._data[8];return new v(e,s,r)}multiply(t){const e=this._data[0]*t.data[0]+this._data[1]*t.data[3]+this._data[2]*t.data[6],s=this._data[0]*t.data[1]+this._data[1]*t.data[4]+this._data[2]*t.data[7],r=this._data[0]*t.data[2]+this._data[1]*t.data[5]+this._data[2]*t.data[8],n=this._data[3]*t.data[0]+this._data[4]*t.data[3]+this._data[5]*t.data[6],a=this._data[3]*t.data[1]+this._data[4]*t.data[4]+this._data[5]*t.data[7],o=this._data[3]*t.data[2]+this._data[4]*t.data[5]+this._data[5]*t.data[8],u=this._data[6]*t.data[0]+this._data[7]*t.data[3]+this._data[8]*t.data[6],l=this._data[6]*t.data[1]+this._data[7]*t.data[4]+this._data[8]*t.data[7],c=this._data[6]*t.data[2]+this._data[7]*t.data[5]+this._data[8]*t.data[8];return new Ms(e,s,r,n,a,o,u,l,c)}scalarMultiply(t){let e=0;for(;e<this._data.length;)this._data[e]=this._data[e]*t,e++}rotateX(t){const e=t*Math.PI/180,s=Math.cos(e),r=Math.sin(e);return new Ms(1,0,0,0,s,-r,0,r,s).multiply(this)}rotateY(t){const e=t*Math.PI/180,s=Math.cos(e),r=Math.sin(e);return new Ms(s,0,r,0,1,0,-r,0,s).multiply(this)}rotateZ(t){const e=t*Math.PI/180,s=Math.cos(e),r=Math.sin(e);return new Ms(s,-r,0,r,s,0,0,0,1).multiply(this)}skew(){}transpose(){return new Ms(this._data[0],this._data[3],this._data[6],this._data[1],this._data[4],this._data[7],this._data[2],this._data[5],this._data[8])}equals(t){return!1}get data(){return this._data}};Ms.IDENTITY=new Ms(1,0,0,0,1,0,0,0,1),Ms.TOLERANS=1e-18;let Wo=Ms;/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */const hZ=4,cy=0,_y=1,cZ=2;function Eu(i){let t=i.length;for(;--t>=0;)i[t]=0}const _Z=0,YM=1,dZ=2,fZ=3,gZ=258,hS=29,tc=256,Jl=tc+1+hS,jo=30,cS=19,WM=2*Jl+1,Ta=15,BE=16,pZ=7,_S=256,jM=16,KM=17,XM=18,kT=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Lc=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),mZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),qM=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),EZ=512,Or=new Array((Jl+2)*2);Eu(Or);const qu=new Array(jo*2);Eu(qu);const th=new Array(EZ);Eu(th);const eh=new Array(gZ-fZ+1);Eu(eh);const dS=new Array(hS);Eu(dS);const p_=new Array(jo);Eu(p_);function kE(i,t,e,s,r){this.static_tree=i,this.extra_bits=t,this.extra_base=e,this.elems=s,this.max_length=r,this.has_stree=i&&i.length}let $M,QM,ZM;function zE(i,t){this.dyn_tree=i,this.max_code=0,this.stat_desc=t}const JM=i=>i<256?th[i]:th[256+(i>>>7)],sh=(i,t)=>{i.pending_buf[i.pending++]=t&255,i.pending_buf[i.pending++]=t>>>8&255},As=(i,t,e)=>{i.bi_valid>BE-e?(i.bi_buf|=t<<i.bi_valid&65535,sh(i,i.bi_buf),i.bi_buf=t>>BE-i.bi_valid,i.bi_valid+=e-BE):(i.bi_buf|=t<<i.bi_valid&65535,i.bi_valid+=e)},Ki=(i,t,e)=>{As(i,e[t*2],e[t*2+1])},tx=(i,t)=>{let e=0;do e|=i&1,i>>>=1,e<<=1;while(--t>0);return e>>>1},TZ=i=>{i.bi_valid===16?(sh(i,i.bi_buf),i.bi_buf=0,i.bi_valid=0):i.bi_valid>=8&&(i.pending_buf[i.pending++]=i.bi_buf&255,i.bi_buf>>=8,i.bi_valid-=8)},IZ=(i,t)=>{const e=t.dyn_tree,s=t.max_code,r=t.stat_desc.static_tree,n=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,o=t.stat_desc.extra_base,u=t.stat_desc.max_length;let l,c,h,_,d,f,p=0;for(_=0;_<=Ta;_++)i.bl_count[_]=0;for(e[i.heap[i.heap_max]*2+1]=0,l=i.heap_max+1;l<WM;l++)c=i.heap[l],_=e[e[c*2+1]*2+1]+1,_>u&&(_=u,p++),e[c*2+1]=_,!(c>s)&&(i.bl_count[_]++,d=0,c>=o&&(d=a[c-o]),f=e[c*2],i.opt_len+=f*(_+d),n&&(i.static_len+=f*(r[c*2+1]+d)));if(p!==0){do{for(_=u-1;i.bl_count[_]===0;)_--;i.bl_count[_]--,i.bl_count[_+1]+=2,i.bl_count[u]--,p-=2}while(p>0);for(_=u;_!==0;_--)for(c=i.bl_count[_];c!==0;)h=i.heap[--l],!(h>s)&&(e[h*2+1]!==_&&(i.opt_len+=(_-e[h*2+1])*e[h*2],e[h*2+1]=_),c--)}},ex=(i,t,e)=>{const s=new Array(Ta+1);let r=0,n,a;for(n=1;n<=Ta;n++)r=r+e[n-1]<<1,s[n]=r;for(a=0;a<=t;a++){let o=i[a*2+1];o!==0&&(i[a*2]=tx(s[o]++,o))}},SZ=()=>{let i,t,e,s,r;const n=new Array(Ta+1);for(e=0,s=0;s<hS-1;s++)for(dS[s]=e,i=0;i<1<<kT[s];i++)eh[e++]=s;for(eh[e-1]=s,r=0,s=0;s<16;s++)for(p_[s]=r,i=0;i<1<<Lc[s];i++)th[r++]=s;for(r>>=7;s<jo;s++)for(p_[s]=r<<7,i=0;i<1<<Lc[s]-7;i++)th[256+r++]=s;for(t=0;t<=Ta;t++)n[t]=0;for(i=0;i<=143;)Or[i*2+1]=8,i++,n[8]++;for(;i<=255;)Or[i*2+1]=9,i++,n[9]++;for(;i<=279;)Or[i*2+1]=7,i++,n[7]++;for(;i<=287;)Or[i*2+1]=8,i++,n[8]++;for(ex(Or,Jl+1,n),i=0;i<jo;i++)qu[i*2+1]=5,qu[i*2]=tx(i,5);$M=new kE(Or,kT,tc+1,Jl,Ta),QM=new kE(qu,Lc,0,jo,Ta),ZM=new kE(new Array(0),mZ,0,cS,pZ)},sx=i=>{let t;for(t=0;t<Jl;t++)i.dyn_ltree[t*2]=0;for(t=0;t<jo;t++)i.dyn_dtree[t*2]=0;for(t=0;t<cS;t++)i.bl_tree[t*2]=0;i.dyn_ltree[_S*2]=1,i.opt_len=i.static_len=0,i.sym_next=i.matches=0},ix=i=>{i.bi_valid>8?sh(i,i.bi_buf):i.bi_valid>0&&(i.pending_buf[i.pending++]=i.bi_buf),i.bi_buf=0,i.bi_valid=0},dy=(i,t,e,s)=>{const r=t*2,n=e*2;return i[r]<i[n]||i[r]===i[n]&&s[t]<=s[e]},VE=(i,t,e)=>{const s=i.heap[e];let r=e<<1;for(;r<=i.heap_len&&(r<i.heap_len&&dy(t,i.heap[r+1],i.heap[r],i.depth)&&r++,!dy(t,s,i.heap[r],i.depth));)i.heap[e]=i.heap[r],e=r,r<<=1;i.heap[e]=s},fy=(i,t,e)=>{let s,r,n=0,a,o;if(i.sym_next!==0)do s=i.pending_buf[i.sym_buf+n++]&255,s+=(i.pending_buf[i.sym_buf+n++]&255)<<8,r=i.pending_buf[i.sym_buf+n++],s===0?Ki(i,r,t):(a=eh[r],Ki(i,a+tc+1,t),o=kT[a],o!==0&&(r-=dS[a],As(i,r,o)),s--,a=JM(s),Ki(i,a,e),o=Lc[a],o!==0&&(s-=p_[a],As(i,s,o)));while(n<i.sym_next);Ki(i,_S,t)},zT=(i,t)=>{const e=t.dyn_tree,s=t.stat_desc.static_tree,r=t.stat_desc.has_stree,n=t.stat_desc.elems;let a,o,u=-1,l;for(i.heap_len=0,i.heap_max=WM,a=0;a<n;a++)e[a*2]!==0?(i.heap[++i.heap_len]=u=a,i.depth[a]=0):e[a*2+1]=0;for(;i.heap_len<2;)l=i.heap[++i.heap_len]=u<2?++u:0,e[l*2]=1,i.depth[l]=0,i.opt_len--,r&&(i.static_len-=s[l*2+1]);for(t.max_code=u,a=i.heap_len>>1;a>=1;a--)VE(i,e,a);l=n;do a=i.heap[1],i.heap[1]=i.heap[i.heap_len--],VE(i,e,1),o=i.heap[1],i.heap[--i.heap_max]=a,i.heap[--i.heap_max]=o,e[l*2]=e[a*2]+e[o*2],i.depth[l]=(i.depth[a]>=i.depth[o]?i.depth[a]:i.depth[o])+1,e[a*2+1]=e[o*2+1]=l,i.heap[1]=l++,VE(i,e,1);while(i.heap_len>=2);i.heap[--i.heap_max]=i.heap[1],IZ(i,t),ex(e,u,i.bl_count)},gy=(i,t,e)=>{let s,r=-1,n,a=t[0*2+1],o=0,u=7,l=4;for(a===0&&(u=138,l=3),t[(e+1)*2+1]=65535,s=0;s<=e;s++)n=a,a=t[(s+1)*2+1],!(++o<u&&n===a)&&(o<l?i.bl_tree[n*2]+=o:n!==0?(n!==r&&i.bl_tree[n*2]++,i.bl_tree[jM*2]++):o<=10?i.bl_tree[KM*2]++:i.bl_tree[XM*2]++,o=0,r=n,a===0?(u=138,l=3):n===a?(u=6,l=3):(u=7,l=4))},py=(i,t,e)=>{let s,r=-1,n,a=t[0*2+1],o=0,u=7,l=4;for(a===0&&(u=138,l=3),s=0;s<=e;s++)if(n=a,a=t[(s+1)*2+1],!(++o<u&&n===a)){if(o<l)do Ki(i,n,i.bl_tree);while(--o!==0);else n!==0?(n!==r&&(Ki(i,n,i.bl_tree),o--),Ki(i,jM,i.bl_tree),As(i,o-3,2)):o<=10?(Ki(i,KM,i.bl_tree),As(i,o-3,3)):(Ki(i,XM,i.bl_tree),As(i,o-11,7));o=0,r=n,a===0?(u=138,l=3):n===a?(u=6,l=3):(u=7,l=4)}},RZ=i=>{let t;for(gy(i,i.dyn_ltree,i.l_desc.max_code),gy(i,i.dyn_dtree,i.d_desc.max_code),zT(i,i.bl_desc),t=cS-1;t>=3&&i.bl_tree[qM[t]*2+1]===0;t--);return i.opt_len+=3*(t+1)+5+5+4,t},AZ=(i,t,e,s)=>{let r;for(As(i,t-257,5),As(i,e-1,5),As(i,s-4,4),r=0;r<s;r++)As(i,i.bl_tree[qM[r]*2+1],3);py(i,i.dyn_ltree,t-1),py(i,i.dyn_dtree,e-1)},OZ=i=>{let t=4093624447,e;for(e=0;e<=31;e++,t>>>=1)if(t&1&&i.dyn_ltree[e*2]!==0)return cy;if(i.dyn_ltree[9*2]!==0||i.dyn_ltree[10*2]!==0||i.dyn_ltree[13*2]!==0)return _y;for(e=32;e<tc;e++)if(i.dyn_ltree[e*2]!==0)return _y;return cy};let my=!1;const yZ=i=>{my||(SZ(),my=!0),i.l_desc=new zE(i.dyn_ltree,$M),i.d_desc=new zE(i.dyn_dtree,QM),i.bl_desc=new zE(i.bl_tree,ZM),i.bi_buf=0,i.bi_valid=0,sx(i)},rx=(i,t,e,s)=>{As(i,(_Z<<1)+(s?1:0),3),ix(i),sh(i,e),sh(i,~e),e&&i.pending_buf.set(i.window.subarray(t,t+e),i.pending),i.pending+=e},vZ=i=>{As(i,YM<<1,3),Ki(i,_S,Or),TZ(i)},CZ=(i,t,e,s)=>{let r,n,a=0;i.level>0?(i.strm.data_type===cZ&&(i.strm.data_type=OZ(i)),zT(i,i.l_desc),zT(i,i.d_desc),a=RZ(i),r=i.opt_len+3+7>>>3,n=i.static_len+3+7>>>3,n<=r&&(r=n)):r=n=e+5,e+4<=r&&t!==-1?rx(i,t,e,s):i.strategy===hZ||n===r?(As(i,(YM<<1)+(s?1:0),3),fy(i,Or,qu)):(As(i,(dZ<<1)+(s?1:0),3),AZ(i,i.l_desc.max_code+1,i.d_desc.max_code+1,a+1),fy(i,i.dyn_ltree,i.dyn_dtree)),sx(i),s&&ix(i)},MZ=(i,t,e)=>(i.pending_buf[i.sym_buf+i.sym_next++]=t,i.pending_buf[i.sym_buf+i.sym_next++]=t>>8,i.pending_buf[i.sym_buf+i.sym_next++]=e,t===0?i.dyn_ltree[e*2]++:(i.matches++,t--,i.dyn_ltree[(eh[e]+tc+1)*2]++,i.dyn_dtree[JM(t)*2]++),i.sym_next===i.sym_end);var xZ=yZ,PZ=rx,bZ=CZ,NZ=MZ,UZ=vZ,DZ={_tr_init:xZ,_tr_stored_block:PZ,_tr_flush_block:bZ,_tr_tally:NZ,_tr_align:UZ};const LZ=(i,t,e,s)=>{let r=i&65535|0,n=i>>>16&65535|0,a=0;for(;e!==0;){a=e>2e3?2e3:e,e-=a;do r=r+t[s++]|0,n=n+r|0;while(--a);r%=65521,n%=65521}return r|n<<16|0};var ih=LZ;const FZ=()=>{let i,t=[];for(var e=0;e<256;e++){i=e;for(var s=0;s<8;s++)i=i&1?3988292384^i>>>1:i>>>1;t[e]=i}return t},wZ=new Uint32Array(FZ()),GZ=(i,t,e,s)=>{const r=wZ,n=s+e;i^=-1;for(let a=s;a<n;a++)i=i>>>8^r[(i^t[a])&255];return i^-1};var ze=GZ,su={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},ec={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:BZ,_tr_stored_block:VT,_tr_flush_block:kZ,_tr_tally:Rn,_tr_align:zZ}=DZ,{Z_NO_FLUSH:An,Z_PARTIAL_FLUSH:VZ,Z_FULL_FLUSH:HZ,Z_FINISH:ei,Z_BLOCK:Ey,Z_OK:Ke,Z_STREAM_END:Ty,Z_STREAM_ERROR:er,Z_DATA_ERROR:YZ,Z_BUF_ERROR:HE,Z_DEFAULT_COMPRESSION:WZ,Z_FILTERED:jZ,Z_HUFFMAN_ONLY:yc,Z_RLE:KZ,Z_FIXED:XZ,Z_DEFAULT_STRATEGY:qZ,Z_UNKNOWN:$Z,Z_DEFLATED:Mm}=ec,QZ=9,ZZ=15,JZ=8,tJ=29,eJ=256,HT=eJ+1+tJ,sJ=30,iJ=19,rJ=2*HT+1,nJ=15,zt=3,Tn=258,sr=Tn+zt+1,aJ=32,iu=42,fS=57,YT=69,WT=73,jT=91,KT=103,Ia=113,Fu=666,us=1,Tu=2,Ba=3,Iu=4,oJ=3,Sa=(i,t)=>(i.msg=su[t],t),Iy=i=>i*2-(i>4?9:0),pn=i=>{let t=i.length;for(;--t>=0;)i[t]=0},uJ=i=>{let t,e,s,r=i.w_size;t=i.hash_size,s=t;do e=i.head[--s],i.head[s]=e>=r?e-r:0;while(--t);t=r,s=t;do e=i.prev[--s],i.prev[s]=e>=r?e-r:0;while(--t)};let lJ=(i,t,e)=>(t<<i.hash_shift^e)&i.hash_mask,On=lJ;const Us=i=>{const t=i.state;let e=t.pending;e>i.avail_out&&(e=i.avail_out),e!==0&&(i.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+e),i.next_out),i.next_out+=e,t.pending_out+=e,i.total_out+=e,i.avail_out-=e,t.pending-=e,t.pending===0&&(t.pending_out=0))},Fs=(i,t)=>{kZ(i,i.block_start>=0?i.block_start:-1,i.strstart-i.block_start,t),i.block_start=i.strstart,Us(i.strm)},qt=(i,t)=>{i.pending_buf[i.pending++]=t},bu=(i,t)=>{i.pending_buf[i.pending++]=t>>>8&255,i.pending_buf[i.pending++]=t&255},XT=(i,t,e,s)=>{let r=i.avail_in;return r>s&&(r=s),r===0?0:(i.avail_in-=r,t.set(i.input.subarray(i.next_in,i.next_in+r),e),i.state.wrap===1?i.adler=ih(i.adler,t,r,e):i.state.wrap===2&&(i.adler=ze(i.adler,t,r,e)),i.next_in+=r,i.total_in+=r,r)},nx=(i,t)=>{let e=i.max_chain_length,s=i.strstart,r,n,a=i.prev_length,o=i.nice_match;const u=i.strstart>i.w_size-sr?i.strstart-(i.w_size-sr):0,l=i.window,c=i.w_mask,h=i.prev,_=i.strstart+Tn;let d=l[s+a-1],f=l[s+a];i.prev_length>=i.good_match&&(e>>=2),o>i.lookahead&&(o=i.lookahead);do if(r=t,!(l[r+a]!==f||l[r+a-1]!==d||l[r]!==l[s]||l[++r]!==l[s+1])){s+=2,r++;do;while(l[++s]===l[++r]&&l[++s]===l[++r]&&l[++s]===l[++r]&&l[++s]===l[++r]&&l[++s]===l[++r]&&l[++s]===l[++r]&&l[++s]===l[++r]&&l[++s]===l[++r]&&s<_);if(n=Tn-(_-s),s=_-Tn,n>a){if(i.match_start=t,a=n,n>=o)break;d=l[s+a-1],f=l[s+a]}}while((t=h[t&c])>u&&--e!==0);return a<=i.lookahead?a:i.lookahead},ru=i=>{const t=i.w_size;let e,s,r;do{if(s=i.window_size-i.lookahead-i.strstart,i.strstart>=t+(t-sr)&&(i.window.set(i.window.subarray(t,t+t-s),0),i.match_start-=t,i.strstart-=t,i.block_start-=t,i.insert>i.strstart&&(i.insert=i.strstart),uJ(i),s+=t),i.strm.avail_in===0)break;if(e=XT(i.strm,i.window,i.strstart+i.lookahead,s),i.lookahead+=e,i.lookahead+i.insert>=zt)for(r=i.strstart-i.insert,i.ins_h=i.window[r],i.ins_h=On(i,i.ins_h,i.window[r+1]);i.insert&&(i.ins_h=On(i,i.ins_h,i.window[r+zt-1]),i.prev[r&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=r,r++,i.insert--,!(i.lookahead+i.insert<zt)););}while(i.lookahead<sr&&i.strm.avail_in!==0)},ax=(i,t)=>{let e=i.pending_buf_size-5>i.w_size?i.w_size:i.pending_buf_size-5,s,r,n,a=0,o=i.strm.avail_in;do{if(s=65535,n=i.bi_valid+42>>3,i.strm.avail_out<n||(n=i.strm.avail_out-n,r=i.strstart-i.block_start,s>r+i.strm.avail_in&&(s=r+i.strm.avail_in),s>n&&(s=n),s<e&&(s===0&&t!==ei||t===An||s!==r+i.strm.avail_in)))break;a=t===ei&&s===r+i.strm.avail_in?1:0,VT(i,0,0,a),i.pending_buf[i.pending-4]=s,i.pending_buf[i.pending-3]=s>>8,i.pending_buf[i.pending-2]=~s,i.pending_buf[i.pending-1]=~s>>8,Us(i.strm),r&&(r>s&&(r=s),i.strm.output.set(i.window.subarray(i.block_start,i.block_start+r),i.strm.next_out),i.strm.next_out+=r,i.strm.avail_out-=r,i.strm.total_out+=r,i.block_start+=r,s-=r),s&&(XT(i.strm,i.strm.output,i.strm.next_out,s),i.strm.next_out+=s,i.strm.avail_out-=s,i.strm.total_out+=s)}while(a===0);return o-=i.strm.avail_in,o&&(o>=i.w_size?(i.matches=2,i.window.set(i.strm.input.subarray(i.strm.next_in-i.w_size,i.strm.next_in),0),i.strstart=i.w_size,i.insert=i.strstart):(i.window_size-i.strstart<=o&&(i.strstart-=i.w_size,i.window.set(i.window.subarray(i.w_size,i.w_size+i.strstart),0),i.matches<2&&i.matches++,i.insert>i.strstart&&(i.insert=i.strstart)),i.window.set(i.strm.input.subarray(i.strm.next_in-o,i.strm.next_in),i.strstart),i.strstart+=o,i.insert+=o>i.w_size-i.insert?i.w_size-i.insert:o),i.block_start=i.strstart),i.high_water<i.strstart&&(i.high_water=i.strstart),a?Iu:t!==An&&t!==ei&&i.strm.avail_in===0&&i.strstart===i.block_start?Tu:(n=i.window_size-i.strstart,i.strm.avail_in>n&&i.block_start>=i.w_size&&(i.block_start-=i.w_size,i.strstart-=i.w_size,i.window.set(i.window.subarray(i.w_size,i.w_size+i.strstart),0),i.matches<2&&i.matches++,n+=i.w_size,i.insert>i.strstart&&(i.insert=i.strstart)),n>i.strm.avail_in&&(n=i.strm.avail_in),n&&(XT(i.strm,i.window,i.strstart,n),i.strstart+=n,i.insert+=n>i.w_size-i.insert?i.w_size-i.insert:n),i.high_water<i.strstart&&(i.high_water=i.strstart),n=i.bi_valid+42>>3,n=i.pending_buf_size-n>65535?65535:i.pending_buf_size-n,e=n>i.w_size?i.w_size:n,r=i.strstart-i.block_start,(r>=e||(r||t===ei)&&t!==An&&i.strm.avail_in===0&&r<=n)&&(s=r>n?n:r,a=t===ei&&i.strm.avail_in===0&&s===r?1:0,VT(i,i.block_start,s,a),i.block_start+=s,Us(i.strm)),a?Ba:us)},YE=(i,t)=>{let e,s;for(;;){if(i.lookahead<sr){if(ru(i),i.lookahead<sr&&t===An)return us;if(i.lookahead===0)break}if(e=0,i.lookahead>=zt&&(i.ins_h=On(i,i.ins_h,i.window[i.strstart+zt-1]),e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),e!==0&&i.strstart-e<=i.w_size-sr&&(i.match_length=nx(i,e)),i.match_length>=zt)if(s=Rn(i,i.strstart-i.match_start,i.match_length-zt),i.lookahead-=i.match_length,i.match_length<=i.max_lazy_match&&i.lookahead>=zt){i.match_length--;do i.strstart++,i.ins_h=On(i,i.ins_h,i.window[i.strstart+zt-1]),e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart;while(--i.match_length!==0);i.strstart++}else i.strstart+=i.match_length,i.match_length=0,i.ins_h=i.window[i.strstart],i.ins_h=On(i,i.ins_h,i.window[i.strstart+1]);else s=Rn(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++;if(s&&(Fs(i,!1),i.strm.avail_out===0))return us}return i.insert=i.strstart<zt-1?i.strstart:zt-1,t===ei?(Fs(i,!0),i.strm.avail_out===0?Ba:Iu):i.sym_next&&(Fs(i,!1),i.strm.avail_out===0)?us:Tu},ro=(i,t)=>{let e,s,r;for(;;){if(i.lookahead<sr){if(ru(i),i.lookahead<sr&&t===An)return us;if(i.lookahead===0)break}if(e=0,i.lookahead>=zt&&(i.ins_h=On(i,i.ins_h,i.window[i.strstart+zt-1]),e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),i.prev_length=i.match_length,i.prev_match=i.match_start,i.match_length=zt-1,e!==0&&i.prev_length<i.max_lazy_match&&i.strstart-e<=i.w_size-sr&&(i.match_length=nx(i,e),i.match_length<=5&&(i.strategy===jZ||i.match_length===zt&&i.strstart-i.match_start>4096)&&(i.match_length=zt-1)),i.prev_length>=zt&&i.match_length<=i.prev_length){r=i.strstart+i.lookahead-zt,s=Rn(i,i.strstart-1-i.prev_match,i.prev_length-zt),i.lookahead-=i.prev_length-1,i.prev_length-=2;do++i.strstart<=r&&(i.ins_h=On(i,i.ins_h,i.window[i.strstart+zt-1]),e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart);while(--i.prev_length!==0);if(i.match_available=0,i.match_length=zt-1,i.strstart++,s&&(Fs(i,!1),i.strm.avail_out===0))return us}else if(i.match_available){if(s=Rn(i,0,i.window[i.strstart-1]),s&&Fs(i,!1),i.strstart++,i.lookahead--,i.strm.avail_out===0)return us}else i.match_available=1,i.strstart++,i.lookahead--}return i.match_available&&(s=Rn(i,0,i.window[i.strstart-1]),i.match_available=0),i.insert=i.strstart<zt-1?i.strstart:zt-1,t===ei?(Fs(i,!0),i.strm.avail_out===0?Ba:Iu):i.sym_next&&(Fs(i,!1),i.strm.avail_out===0)?us:Tu},hJ=(i,t)=>{let e,s,r,n;const a=i.window;for(;;){if(i.lookahead<=Tn){if(ru(i),i.lookahead<=Tn&&t===An)return us;if(i.lookahead===0)break}if(i.match_length=0,i.lookahead>=zt&&i.strstart>0&&(r=i.strstart-1,s=a[r],s===a[++r]&&s===a[++r]&&s===a[++r])){n=i.strstart+Tn;do;while(s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&s===a[++r]&&r<n);i.match_length=Tn-(n-r),i.match_length>i.lookahead&&(i.match_length=i.lookahead)}if(i.match_length>=zt?(e=Rn(i,1,i.match_length-zt),i.lookahead-=i.match_length,i.strstart+=i.match_length,i.match_length=0):(e=Rn(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++),e&&(Fs(i,!1),i.strm.avail_out===0))return us}return i.insert=0,t===ei?(Fs(i,!0),i.strm.avail_out===0?Ba:Iu):i.sym_next&&(Fs(i,!1),i.strm.avail_out===0)?us:Tu},cJ=(i,t)=>{let e;for(;;){if(i.lookahead===0&&(ru(i),i.lookahead===0)){if(t===An)return us;break}if(i.match_length=0,e=Rn(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++,e&&(Fs(i,!1),i.strm.avail_out===0))return us}return i.insert=0,t===ei?(Fs(i,!0),i.strm.avail_out===0?Ba:Iu):i.sym_next&&(Fs(i,!1),i.strm.avail_out===0)?us:Tu};function vi(i,t,e,s,r){this.good_length=i,this.max_lazy=t,this.nice_length=e,this.max_chain=s,this.func=r}const wu=[new vi(0,0,0,0,ax),new vi(4,4,8,4,YE),new vi(4,5,16,8,YE),new vi(4,6,32,32,YE),new vi(4,4,16,16,ro),new vi(8,16,32,32,ro),new vi(8,16,128,128,ro),new vi(8,32,128,256,ro),new vi(32,128,258,1024,ro),new vi(32,258,258,4096,ro)],_J=i=>{i.window_size=2*i.w_size,pn(i.head),i.max_lazy_match=wu[i.level].max_lazy,i.good_match=wu[i.level].good_length,i.nice_match=wu[i.level].nice_length,i.max_chain_length=wu[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=zt-1,i.match_available=0,i.ins_h=0};function dJ(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Mm,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(rJ*2),this.dyn_dtree=new Uint16Array((2*sJ+1)*2),this.bl_tree=new Uint16Array((2*iJ+1)*2),pn(this.dyn_ltree),pn(this.dyn_dtree),pn(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(nJ+1),this.heap=new Uint16Array(2*HT+1),pn(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*HT+1),pn(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const sc=i=>{if(!i)return 1;const t=i.state;return!t||t.strm!==i||t.status!==iu&&t.status!==fS&&t.status!==YT&&t.status!==WT&&t.status!==jT&&t.status!==KT&&t.status!==Ia&&t.status!==Fu?1:0},ox=i=>{if(sc(i))return Sa(i,er);i.total_in=i.total_out=0,i.data_type=$Z;const t=i.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?fS:t.wrap?iu:Ia,i.adler=t.wrap===2?0:1,t.last_flush=-2,BZ(t),Ke},ux=i=>{const t=ox(i);return t===Ke&&_J(i.state),t},fJ=(i,t)=>sc(i)||i.state.wrap!==2?er:(i.state.gzhead=t,Ke),lx=(i,t,e,s,r,n)=>{if(!i)return er;let a=1;if(t===WZ&&(t=6),s<0?(a=0,s=-s):s>15&&(a=2,s-=16),r<1||r>QZ||e!==Mm||s<8||s>15||t<0||t>9||n<0||n>XZ||s===8&&a!==1)return Sa(i,er);s===8&&(s=9);const o=new dJ;return i.state=o,o.strm=i,o.status=iu,o.wrap=a,o.gzhead=null,o.w_bits=s,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=r+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+zt-1)/zt),o.window=new Uint8Array(o.w_size*2),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<r+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=(o.lit_bufsize-1)*3,o.level=t,o.strategy=n,o.method=e,ux(i)},gJ=(i,t)=>lx(i,t,Mm,ZZ,JZ,qZ),pJ=(i,t)=>{if(sc(i)||t>Ey||t<0)return i?Sa(i,er):er;const e=i.state;if(!i.output||i.avail_in!==0&&!i.input||e.status===Fu&&t!==ei)return Sa(i,i.avail_out===0?HE:er);const s=e.last_flush;if(e.last_flush=t,e.pending!==0){if(Us(i),i.avail_out===0)return e.last_flush=-1,Ke}else if(i.avail_in===0&&Iy(t)<=Iy(s)&&t!==ei)return Sa(i,HE);if(e.status===Fu&&i.avail_in!==0)return Sa(i,HE);if(e.status===iu&&e.wrap===0&&(e.status=Ia),e.status===iu){let r=Mm+(e.w_bits-8<<4)<<8,n=-1;if(e.strategy>=yc||e.level<2?n=0:e.level<6?n=1:e.level===6?n=2:n=3,r|=n<<6,e.strstart!==0&&(r|=aJ),r+=31-r%31,bu(e,r),e.strstart!==0&&(bu(e,i.adler>>>16),bu(e,i.adler&65535)),i.adler=1,e.status=Ia,Us(i),e.pending!==0)return e.last_flush=-1,Ke}if(e.status===fS){if(i.adler=0,qt(e,31),qt(e,139),qt(e,8),e.gzhead)qt(e,(e.gzhead.text?1:0)+(e.gzhead.hcrc?2:0)+(e.gzhead.extra?4:0)+(e.gzhead.name?8:0)+(e.gzhead.comment?16:0)),qt(e,e.gzhead.time&255),qt(e,e.gzhead.time>>8&255),qt(e,e.gzhead.time>>16&255),qt(e,e.gzhead.time>>24&255),qt(e,e.level===9?2:e.strategy>=yc||e.level<2?4:0),qt(e,e.gzhead.os&255),e.gzhead.extra&&e.gzhead.extra.length&&(qt(e,e.gzhead.extra.length&255),qt(e,e.gzhead.extra.length>>8&255)),e.gzhead.hcrc&&(i.adler=ze(i.adler,e.pending_buf,e.pending,0)),e.gzindex=0,e.status=YT;else if(qt(e,0),qt(e,0),qt(e,0),qt(e,0),qt(e,0),qt(e,e.level===9?2:e.strategy>=yc||e.level<2?4:0),qt(e,oJ),e.status=Ia,Us(i),e.pending!==0)return e.last_flush=-1,Ke}if(e.status===YT){if(e.gzhead.extra){let r=e.pending,n=(e.gzhead.extra.length&65535)-e.gzindex;for(;e.pending+n>e.pending_buf_size;){let o=e.pending_buf_size-e.pending;if(e.pending_buf.set(e.gzhead.extra.subarray(e.gzindex,e.gzindex+o),e.pending),e.pending=e.pending_buf_size,e.gzhead.hcrc&&e.pending>r&&(i.adler=ze(i.adler,e.pending_buf,e.pending-r,r)),e.gzindex+=o,Us(i),e.pending!==0)return e.last_flush=-1,Ke;r=0,n-=o}let a=new Uint8Array(e.gzhead.extra);e.pending_buf.set(a.subarray(e.gzindex,e.gzindex+n),e.pending),e.pending+=n,e.gzhead.hcrc&&e.pending>r&&(i.adler=ze(i.adler,e.pending_buf,e.pending-r,r)),e.gzindex=0}e.status=WT}if(e.status===WT){if(e.gzhead.name){let r=e.pending,n;do{if(e.pending===e.pending_buf_size){if(e.gzhead.hcrc&&e.pending>r&&(i.adler=ze(i.adler,e.pending_buf,e.pending-r,r)),Us(i),e.pending!==0)return e.last_flush=-1,Ke;r=0}e.gzindex<e.gzhead.name.length?n=e.gzhead.name.charCodeAt(e.gzindex++)&255:n=0,qt(e,n)}while(n!==0);e.gzhead.hcrc&&e.pending>r&&(i.adler=ze(i.adler,e.pending_buf,e.pending-r,r)),e.gzindex=0}e.status=jT}if(e.status===jT){if(e.gzhead.comment){let r=e.pending,n;do{if(e.pending===e.pending_buf_size){if(e.gzhead.hcrc&&e.pending>r&&(i.adler=ze(i.adler,e.pending_buf,e.pending-r,r)),Us(i),e.pending!==0)return e.last_flush=-1,Ke;r=0}e.gzindex<e.gzhead.comment.length?n=e.gzhead.comment.charCodeAt(e.gzindex++)&255:n=0,qt(e,n)}while(n!==0);e.gzhead.hcrc&&e.pending>r&&(i.adler=ze(i.adler,e.pending_buf,e.pending-r,r))}e.status=KT}if(e.status===KT){if(e.gzhead.hcrc){if(e.pending+2>e.pending_buf_size&&(Us(i),e.pending!==0))return e.last_flush=-1,Ke;qt(e,i.adler&255),qt(e,i.adler>>8&255),i.adler=0}if(e.status=Ia,Us(i),e.pending!==0)return e.last_flush=-1,Ke}if(i.avail_in!==0||e.lookahead!==0||t!==An&&e.status!==Fu){let r=e.level===0?ax(e,t):e.strategy===yc?cJ(e,t):e.strategy===KZ?hJ(e,t):wu[e.level].func(e,t);if((r===Ba||r===Iu)&&(e.status=Fu),r===us||r===Ba)return i.avail_out===0&&(e.last_flush=-1),Ke;if(r===Tu&&(t===VZ?zZ(e):t!==Ey&&(VT(e,0,0,!1),t===HZ&&(pn(e.head),e.lookahead===0&&(e.strstart=0,e.block_start=0,e.insert=0))),Us(i),i.avail_out===0))return e.last_flush=-1,Ke}return t!==ei?Ke:e.wrap<=0?Ty:(e.wrap===2?(qt(e,i.adler&255),qt(e,i.adler>>8&255),qt(e,i.adler>>16&255),qt(e,i.adler>>24&255),qt(e,i.total_in&255),qt(e,i.total_in>>8&255),qt(e,i.total_in>>16&255),qt(e,i.total_in>>24&255)):(bu(e,i.adler>>>16),bu(e,i.adler&65535)),Us(i),e.wrap>0&&(e.wrap=-e.wrap),e.pending!==0?Ke:Ty)},mJ=i=>{if(sc(i))return er;const t=i.state.status;return i.state=null,t===Ia?Sa(i,YZ):Ke},EJ=(i,t)=>{let e=t.length;if(sc(i))return er;const s=i.state,r=s.wrap;if(r===2||r===1&&s.status!==iu||s.lookahead)return er;if(r===1&&(i.adler=ih(i.adler,t,e,0)),s.wrap=0,e>=s.w_size){r===0&&(pn(s.head),s.strstart=0,s.block_start=0,s.insert=0);let u=new Uint8Array(s.w_size);u.set(t.subarray(e-s.w_size,e),0),t=u,e=s.w_size}const n=i.avail_in,a=i.next_in,o=i.input;for(i.avail_in=e,i.next_in=0,i.input=t,ru(s);s.lookahead>=zt;){let u=s.strstart,l=s.lookahead-(zt-1);do s.ins_h=On(s,s.ins_h,s.window[u+zt-1]),s.prev[u&s.w_mask]=s.head[s.ins_h],s.head[s.ins_h]=u,u++;while(--l);s.strstart=u,s.lookahead=zt-1,ru(s)}return s.strstart+=s.lookahead,s.block_start=s.strstart,s.insert=s.lookahead,s.lookahead=0,s.match_length=s.prev_length=zt-1,s.match_available=0,i.next_in=a,i.input=o,i.avail_in=n,s.wrap=r,Ke};var TJ=gJ,IJ=lx,SJ=ux,RJ=ox,AJ=fJ,OJ=pJ,yJ=mJ,vJ=EJ,CJ="pako deflate (from Nodeca project)",$u={deflateInit:TJ,deflateInit2:IJ,deflateReset:SJ,deflateResetKeep:RJ,deflateSetHeader:AJ,deflate:OJ,deflateEnd:yJ,deflateSetDictionary:vJ,deflateInfo:CJ};const MJ=(i,t)=>Object.prototype.hasOwnProperty.call(i,t);var xJ=function(i){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const e=t.shift();if(e){if(typeof e!="object")throw new TypeError(e+"must be non-object");for(const s in e)MJ(e,s)&&(i[s]=e[s])}}return i},PJ=i=>{let t=0;for(let s=0,r=i.length;s<r;s++)t+=i[s].length;const e=new Uint8Array(t);for(let s=0,r=0,n=i.length;s<n;s++){let a=i[s];e.set(a,r),r+=a.length}return e},xm={assign:xJ,flattenChunks:PJ};let hx=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{hx=!1}const rh=new Uint8Array(256);for(let i=0;i<256;i++)rh[i]=i>=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;rh[254]=rh[254]=1;var bJ=i=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(i);let t,e,s,r,n,a=i.length,o=0;for(r=0;r<a;r++)e=i.charCodeAt(r),(e&64512)===55296&&r+1<a&&(s=i.charCodeAt(r+1),(s&64512)===56320&&(e=65536+(e-55296<<10)+(s-56320),r++)),o+=e<128?1:e<2048?2:e<65536?3:4;for(t=new Uint8Array(o),n=0,r=0;n<o;r++)e=i.charCodeAt(r),(e&64512)===55296&&r+1<a&&(s=i.charCodeAt(r+1),(s&64512)===56320&&(e=65536+(e-55296<<10)+(s-56320),r++)),e<128?t[n++]=e:e<2048?(t[n++]=192|e>>>6,t[n++]=128|e&63):e<65536?(t[n++]=224|e>>>12,t[n++]=128|e>>>6&63,t[n++]=128|e&63):(t[n++]=240|e>>>18,t[n++]=128|e>>>12&63,t[n++]=128|e>>>6&63,t[n++]=128|e&63);return t};const NJ=(i,t)=>{if(t<65534&&i.subarray&&hx)return String.fromCharCode.apply(null,i.length===t?i:i.subarray(0,t));let e="";for(let s=0;s<t;s++)e+=String.fromCharCode(i[s]);return e};var UJ=(i,t)=>{const e=t||i.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(i.subarray(0,t));let s,r;const n=new Array(e*2);for(r=0,s=0;s<e;){let a=i[s++];if(a<128){n[r++]=a;continue}let o=rh[a];if(o>4){n[r++]=65533,s+=o-1;continue}for(a&=o===2?31:o===3?15:7;o>1&&s<e;)a=a<<6|i[s++]&63,o--;if(o>1){n[r++]=65533;continue}a<65536?n[r++]=a:(a-=65536,n[r++]=55296|a>>10&1023,n[r++]=56320|a&1023)}return NJ(n,r)},DJ=(i,t)=>{t=t||i.length,t>i.length&&(t=i.length);let e=t-1;for(;e>=0&&(i[e]&192)===128;)e--;return e<0||e===0?t:e+rh[i[e]]>t?e:t},nh={string2buf:bJ,buf2string:UJ,utf8border:DJ};function LJ(){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}var cx=LJ;const _x=Object.prototype.toString,{Z_NO_FLUSH:FJ,Z_SYNC_FLUSH:wJ,Z_FULL_FLUSH:GJ,Z_FINISH:BJ,Z_OK:m_,Z_STREAM_END:kJ,Z_DEFAULT_COMPRESSION:zJ,Z_DEFAULT_STRATEGY:VJ,Z_DEFLATED:HJ}=ec;function gS(i){this.options=xm.assign({level:zJ,method:HJ,chunkSize:16384,windowBits:15,memLevel:8,strategy:VJ},i||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new cx,this.strm.avail_out=0;let e=$u.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(e!==m_)throw new Error(su[e]);if(t.header&&$u.deflateSetHeader(this.strm,t.header),t.dictionary){let s;if(typeof t.dictionary=="string"?s=nh.string2buf(t.dictionary):_x.call(t.dictionary)==="[object ArrayBuffer]"?s=new Uint8Array(t.dictionary):s=t.dictionary,e=$u.deflateSetDictionary(this.strm,s),e!==m_)throw new Error(su[e]);this._dict_set=!0}}gS.prototype.push=function(i,t){const e=this.strm,s=this.options.chunkSize;let r,n;if(this.ended)return!1;for(t===~~t?n=t:n=t===!0?BJ:FJ,typeof i=="string"?e.input=nh.string2buf(i):_x.call(i)==="[object ArrayBuffer]"?e.input=new Uint8Array(i):e.input=i,e.next_in=0,e.avail_in=e.input.length;;){if(e.avail_out===0&&(e.output=new Uint8Array(s),e.next_out=0,e.avail_out=s),(n===wJ||n===GJ)&&e.avail_out<=6){this.onData(e.output.subarray(0,e.next_out)),e.avail_out=0;continue}if(r=$u.deflate(e,n),r===kJ)return e.next_out>0&&this.onData(e.output.subarray(0,e.next_out)),r=$u.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m_;if(e.avail_out===0){this.onData(e.output);continue}if(n>0&&e.next_out>0){this.onData(e.output.subarray(0,e.next_out)),e.avail_out=0;continue}if(e.avail_in===0)break}return!0};gS.prototype.onData=function(i){this.chunks.push(i)};gS.prototype.onEnd=function(i){i===m_&&(this.result=xm.flattenChunks(this.chunks)),this.chunks=[],this.err=i,this.msg=this.strm.msg};const vc=16209,YJ=16191;var WJ=function(t,e){let s,r,n,a,o,u,l,c,h,_,d,f,p,g,m,O,y,C,P,L,N,F,x,U;const k=t.state;s=t.next_in,x=t.input,r=s+(t.avail_in-5),n=t.next_out,U=t.output,a=n-(e-t.avail_out),o=n+(t.avail_out-257),u=k.dmax,l=k.wsize,c=k.whave,h=k.wnext,_=k.window,d=k.hold,f=k.bits,p=k.lencode,g=k.distcode,m=(1<<k.lenbits)-1,O=(1<<k.distbits)-1;t:do{f<15&&(d+=x[s++]<<f,f+=8,d+=x[s++]<<f,f+=8),y=p[d&m];e:for(;;){if(C=y>>>24,d>>>=C,f-=C,C=y>>>16&255,C===0)U[n++]=y&65535;else if(C&16){P=y&65535,C&=15,C&&(f<C&&(d+=x[s++]<<f,f+=8),P+=d&(1<<C)-1,d>>>=C,f-=C),f<15&&(d+=x[s++]<<f,f+=8,d+=x[s++]<<f,f+=8),y=g[d&O];s:for(;;){if(C=y>>>24,d>>>=C,f-=C,C=y>>>16&255,C&16){if(L=y&65535,C&=15,f<C&&(d+=x[s++]<<f,f+=8,f<C&&(d+=x[s++]<<f,f+=8)),L+=d&(1<<C)-1,L>u){t.msg="invalid distance too far back",k.mode=vc;break t}if(d>>>=C,f-=C,C=n-a,L>C){if(C=L-C,C>c&&k.sane){t.msg="invalid distance too far back",k.mode=vc;break t}if(N=0,F=_,h===0){if(N+=l-C,C<P){P-=C;do U[n++]=_[N++];while(--C);N=n-L,F=U}}else if(h<C){if(N+=l+h-C,C-=h,C<P){P-=C;do U[n++]=_[N++];while(--C);if(N=0,h<P){C=h,P-=C;do U[n++]=_[N++];while(--C);N=n-L,F=U}}}else if(N+=h-C,C<P){P-=C;do U[n++]=_[N++];while(--C);N=n-L,F=U}for(;P>2;)U[n++]=F[N++],U[n++]=F[N++],U[n++]=F[N++],P-=3;P&&(U[n++]=F[N++],P>1&&(U[n++]=F[N++]))}else{N=n-L;do U[n++]=U[N++],U[n++]=U[N++],U[n++]=U[N++],P-=3;while(P>2);P&&(U[n++]=U[N++],P>1&&(U[n++]=U[N++]))}}else if(C&64){t.msg="invalid distance code",k.mode=vc;break t}else{y=g[(y&65535)+(d&(1<<C)-1)];continue s}break}}else if(C&64)if(C&32){k.mode=YJ;break t}else{t.msg="invalid literal/length code",k.mode=vc;break t}else{y=p[(y&65535)+(d&(1<<C)-1)];continue e}break}}while(s<r&&n<o);P=f>>3,s-=P,f-=P<<3,d&=(1<<f)-1,t.next_in=s,t.next_out=n,t.avail_in=s<r?5+(r-s):5-(s-r),t.avail_out=n<o?257+(o-n):257-(n-o),k.hold=d,k.bits=f};const no=15,Sy=852,Ry=592,Ay=0,WE=1,Oy=2,jJ=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),KJ=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),XJ=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),qJ=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),$J=(i,t,e,s,r,n,a,o)=>{const u=o.bits;let l=0,c=0,h=0,_=0,d=0,f=0,p=0,g=0,m=0,O=0,y,C,P,L,N,F=null,x;const U=new Uint16Array(no+1),k=new Uint16Array(no+1);let gt=null,X,Y,lt;for(l=0;l<=no;l++)U[l]=0;for(c=0;c<s;c++)U[t[e+c]]++;for(d=u,_=no;_>=1&&U[_]===0;_--);if(d>_&&(d=_),_===0)return r[n++]=1<<24|64<<16|0,r[n++]=1<<24|64<<16|0,o.bits=1,0;for(h=1;h<_&&U[h]===0;h++);for(d<h&&(d=h),g=1,l=1;l<=no;l++)if(g<<=1,g-=U[l],g<0)return-1;if(g>0&&(i===Ay||_!==1))return-1;for(k[1]=0,l=1;l<no;l++)k[l+1]=k[l]+U[l];for(c=0;c<s;c++)t[e+c]!==0&&(a[k[t[e+c]]++]=c);if(i===Ay?(F=gt=a,x=20):i===WE?(F=jJ,gt=KJ,x=257):(F=XJ,gt=qJ,x=0),O=0,c=0,l=h,N=n,f=d,p=0,P=-1,m=1<<d,L=m-1,i===WE&&m>Sy||i===Oy&&m>Ry)return 1;for(;;){X=l-p,a[c]+1<x?(Y=0,lt=a[c]):a[c]>=x?(Y=gt[a[c]-x],lt=F[a[c]-x]):(Y=96,lt=0),y=1<<l-p,C=1<<f,h=C;do C-=y,r[N+(O>>p)+C]=X<<24|Y<<16|lt|0;while(C!==0);for(y=1<<l-1;O&y;)y>>=1;if(y!==0?(O&=y-1,O+=y):O=0,c++,--U[l]===0){if(l===_)break;l=t[e+a[c]]}if(l>d&&(O&L)!==P){for(p===0&&(p=d),N+=h,f=l-p,g=1<<f;f+p<_&&(g-=U[f+p],!(g<=0));)f++,g<<=1;if(m+=1<<f,i===WE&&m>Sy||i===Oy&&m>Ry)return 1;P=O&L,r[P]=d<<24|f<<16|N-n|0}}return O!==0&&(r[N+O]=l-p<<24|64<<16|0),o.bits=d,0};var Qu=$J;const QJ=0,dx=1,fx=2,{Z_FINISH:yy,Z_BLOCK:ZJ,Z_TREES:Cc,Z_OK:ka,Z_STREAM_END:JJ,Z_NEED_DICT:ttt,Z_STREAM_ERROR:ni,Z_DATA_ERROR:gx,Z_MEM_ERROR:px,Z_BUF_ERROR:ett,Z_DEFLATED:vy}=ec,Pm=16180,Cy=16181,My=16182,xy=16183,Py=16184,by=16185,Ny=16186,Uy=16187,Dy=16188,Ly=16189,E_=16190,ur=16191,jE=16192,Fy=16193,KE=16194,wy=16195,Gy=16196,By=16197,ky=16198,Mc=16199,xc=16200,zy=16201,Vy=16202,Hy=16203,Yy=16204,Wy=16205,XE=16206,jy=16207,Ky=16208,ce=16209,mx=16210,Ex=16211,stt=852,itt=592,rtt=15,ntt=rtt,Xy=i=>(i>>>24&255)+(i>>>8&65280)+((i&65280)<<8)+((i&255)<<24);function att(){this.strm=null,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 Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Qa=i=>{if(!i)return 1;const t=i.state;return!t||t.strm!==i||t.mode<Pm||t.mode>Ex?1:0},Tx=i=>{if(Qa(i))return ni;const t=i.state;return i.total_in=i.total_out=t.total=0,i.msg="",t.wrap&&(i.adler=t.wrap&1),t.mode=Pm,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(stt),t.distcode=t.distdyn=new Int32Array(itt),t.sane=1,t.back=-1,ka},Ix=i=>{if(Qa(i))return ni;const t=i.state;return t.wsize=0,t.whave=0,t.wnext=0,Tx(i)},Sx=(i,t)=>{let e;if(Qa(i))return ni;const s=i.state;return t<0?(e=0,t=-t):(e=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?ni:(s.window!==null&&s.wbits!==t&&(s.window=null),s.wrap=e,s.wbits=t,Ix(i))},Rx=(i,t)=>{if(!i)return ni;const e=new att;i.state=e,e.strm=i,e.window=null,e.mode=Pm;const s=Sx(i,t);return s!==ka&&(i.state=null),s},ott=i=>Rx(i,ntt);let qy=!0,qE,$E;const utt=i=>{if(qy){qE=new Int32Array(512),$E=new Int32Array(32);let t=0;for(;t<144;)i.lens[t++]=8;for(;t<256;)i.lens[t++]=9;for(;t<280;)i.lens[t++]=7;for(;t<288;)i.lens[t++]=8;for(Qu(dx,i.lens,0,288,qE,0,i.work,{bits:9}),t=0;t<32;)i.lens[t++]=5;Qu(fx,i.lens,0,32,$E,0,i.work,{bits:5}),qy=!1}i.lencode=qE,i.lenbits=9,i.distcode=$E,i.distbits=5},Ax=(i,t,e,s)=>{let r;const n=i.state;return n.window===null&&(n.wsize=1<<n.wbits,n.wnext=0,n.whave=0,n.window=new Uint8Array(n.wsize)),s>=n.wsize?(n.window.set(t.subarray(e-n.wsize,e),0),n.wnext=0,n.whave=n.wsize):(r=n.wsize-n.wnext,r>s&&(r=s),n.window.set(t.subarray(e-s,e-s+r),n.wnext),s-=r,s?(n.window.set(t.subarray(e-s,e),0),n.wnext=s,n.whave=n.wsize):(n.wnext+=r,n.wnext===n.wsize&&(n.wnext=0),n.whave<n.wsize&&(n.whave+=r))),0},ltt=(i,t)=>{let e,s,r,n,a,o,u,l,c,h,_,d,f,p,g=0,m,O,y,C,P,L,N,F;const x=new Uint8Array(4);let U,k;const gt=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Qa(i)||!i.output||!i.input&&i.avail_in!==0)return ni;e=i.state,e.mode===ur&&(e.mode=jE),a=i.next_out,r=i.output,u=i.avail_out,n=i.next_in,s=i.input,o=i.avail_in,l=e.hold,c=e.bits,h=o,_=u,F=ka;t:for(;;)switch(e.mode){case Pm:if(e.wrap===0){e.mode=jE;break}for(;c<16;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}if(e.wrap&2&&l===35615){e.wbits===0&&(e.wbits=15),e.check=0,x[0]=l&255,x[1]=l>>>8&255,e.check=ze(e.check,x,2,0),l=0,c=0,e.mode=Cy;break}if(e.head&&(e.head.done=!1),!(e.wrap&1)||(((l&255)<<8)+(l>>8))%31){i.msg="incorrect header check",e.mode=ce;break}if((l&15)!==vy){i.msg="unknown compression method",e.mode=ce;break}if(l>>>=4,c-=4,N=(l&15)+8,e.wbits===0&&(e.wbits=N),N>15||N>e.wbits){i.msg="invalid window size",e.mode=ce;break}e.dmax=1<<e.wbits,e.flags=0,i.adler=e.check=1,e.mode=l&512?Ly:ur,l=0,c=0;break;case Cy:for(;c<16;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}if(e.flags=l,(e.flags&255)!==vy){i.msg="unknown compression method",e.mode=ce;break}if(e.flags&57344){i.msg="unknown header flags set",e.mode=ce;break}e.head&&(e.head.text=l>>8&1),e.flags&512&&e.wrap&4&&(x[0]=l&255,x[1]=l>>>8&255,e.check=ze(e.check,x,2,0)),l=0,c=0,e.mode=My;case My:for(;c<32;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}e.head&&(e.head.time=l),e.flags&512&&e.wrap&4&&(x[0]=l&255,x[1]=l>>>8&255,x[2]=l>>>16&255,x[3]=l>>>24&255,e.check=ze(e.check,x,4,0)),l=0,c=0,e.mode=xy;case xy:for(;c<16;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}e.head&&(e.head.xflags=l&255,e.head.os=l>>8),e.flags&512&&e.wrap&4&&(x[0]=l&255,x[1]=l>>>8&255,e.check=ze(e.check,x,2,0)),l=0,c=0,e.mode=Py;case Py:if(e.flags&1024){for(;c<16;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}e.length=l,e.head&&(e.head.extra_len=l),e.flags&512&&e.wrap&4&&(x[0]=l&255,x[1]=l>>>8&255,e.check=ze(e.check,x,2,0)),l=0,c=0}else e.head&&(e.head.extra=null);e.mode=by;case by:if(e.flags&1024&&(d=e.length,d>o&&(d=o),d&&(e.head&&(N=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Uint8Array(e.head.extra_len)),e.head.extra.set(s.subarray(n,n+d),N)),e.flags&512&&e.wrap&4&&(e.check=ze(e.check,s,d,n)),o-=d,n+=d,e.length-=d),e.length))break t;e.length=0,e.mode=Ny;case Ny:if(e.flags&2048){if(o===0)break t;d=0;do N=s[n+d++],e.head&&N&&e.length<65536&&(e.head.name+=String.fromCharCode(N));while(N&&d<o);if(e.flags&512&&e.wrap&4&&(e.check=ze(e.check,s,d,n)),o-=d,n+=d,N)break t}else e.head&&(e.head.name=null);e.length=0,e.mode=Uy;case Uy:if(e.flags&4096){if(o===0)break t;d=0;do N=s[n+d++],e.head&&N&&e.length<65536&&(e.head.comment+=String.fromCharCode(N));while(N&&d<o);if(e.flags&512&&e.wrap&4&&(e.check=ze(e.check,s,d,n)),o-=d,n+=d,N)break t}else e.head&&(e.head.comment=null);e.mode=Dy;case Dy:if(e.flags&512){for(;c<16;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}if(e.wrap&4&&l!==(e.check&65535)){i.msg="header crc mismatch",e.mode=ce;break}l=0,c=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),i.adler=e.check=0,e.mode=ur;break;case Ly:for(;c<32;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}i.adler=e.check=Xy(l),l=0,c=0,e.mode=E_;case E_:if(e.havedict===0)return i.next_out=a,i.avail_out=u,i.next_in=n,i.avail_in=o,e.hold=l,e.bits=c,ttt;i.adler=e.check=1,e.mode=ur;case ur:if(t===ZJ||t===Cc)break t;case jE:if(e.last){l>>>=c&7,c-=c&7,e.mode=XE;break}for(;c<3;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}switch(e.last=l&1,l>>>=1,c-=1,l&3){case 0:e.mode=Fy;break;case 1:if(utt(e),e.mode=Mc,t===Cc){l>>>=2,c-=2;break t}break;case 2:e.mode=Gy;break;case 3:i.msg="invalid block type",e.mode=ce}l>>>=2,c-=2;break;case Fy:for(l>>>=c&7,c-=c&7;c<32;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}if((l&65535)!==(l>>>16^65535)){i.msg="invalid stored block lengths",e.mode=ce;break}if(e.length=l&65535,l=0,c=0,e.mode=KE,t===Cc)break t;case KE:e.mode=wy;case wy:if(d=e.length,d){if(d>o&&(d=o),d>u&&(d=u),d===0)break t;r.set(s.subarray(n,n+d),a),o-=d,n+=d,u-=d,a+=d,e.length-=d;break}e.mode=ur;break;case Gy:for(;c<14;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}if(e.nlen=(l&31)+257,l>>>=5,c-=5,e.ndist=(l&31)+1,l>>>=5,c-=5,e.ncode=(l&15)+4,l>>>=4,c-=4,e.nlen>286||e.ndist>30){i.msg="too many length or distance symbols",e.mode=ce;break}e.have=0,e.mode=By;case By:for(;e.have<e.ncode;){for(;c<3;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}e.lens[gt[e.have++]]=l&7,l>>>=3,c-=3}for(;e.have<19;)e.lens[gt[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,U={bits:e.lenbits},F=Qu(QJ,e.lens,0,19,e.lencode,0,e.work,U),e.lenbits=U.bits,F){i.msg="invalid code lengths set",e.mode=ce;break}e.have=0,e.mode=ky;case ky:for(;e.have<e.nlen+e.ndist;){for(;g=e.lencode[l&(1<<e.lenbits)-1],m=g>>>24,O=g>>>16&255,y=g&65535,!(m<=c);){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}if(y<16)l>>>=m,c-=m,e.lens[e.have++]=y;else{if(y===16){for(k=m+2;c<k;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}if(l>>>=m,c-=m,e.have===0){i.msg="invalid bit length repeat",e.mode=ce;break}N=e.lens[e.have-1],d=3+(l&3),l>>>=2,c-=2}else if(y===17){for(k=m+3;c<k;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}l>>>=m,c-=m,N=0,d=3+(l&7),l>>>=3,c-=3}else{for(k=m+7;c<k;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}l>>>=m,c-=m,N=0,d=11+(l&127),l>>>=7,c-=7}if(e.have+d>e.nlen+e.ndist){i.msg="invalid bit length repeat",e.mode=ce;break}for(;d--;)e.lens[e.have++]=N}}if(e.mode===ce)break;if(e.lens[256]===0){i.msg="invalid code -- missing end-of-block",e.mode=ce;break}if(e.lenbits=9,U={bits:e.lenbits},F=Qu(dx,e.lens,0,e.nlen,e.lencode,0,e.work,U),e.lenbits=U.bits,F){i.msg="invalid literal/lengths set",e.mode=ce;break}if(e.distbits=6,e.distcode=e.distdyn,U={bits:e.distbits},F=Qu(fx,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,U),e.distbits=U.bits,F){i.msg="invalid distances set",e.mode=ce;break}if(e.mode=Mc,t===Cc)break t;case Mc:e.mode=xc;case xc:if(o>=6&&u>=258){i.next_out=a,i.avail_out=u,i.next_in=n,i.avail_in=o,e.hold=l,e.bits=c,WJ(i,_),a=i.next_out,r=i.output,u=i.avail_out,n=i.next_in,s=i.input,o=i.avail_in,l=e.hold,c=e.bits,e.mode===ur&&(e.back=-1);break}for(e.back=0;g=e.lencode[l&(1<<e.lenbits)-1],m=g>>>24,O=g>>>16&255,y=g&65535,!(m<=c);){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}if(O&&!(O&240)){for(C=m,P=O,L=y;g=e.lencode[L+((l&(1<<C+P)-1)>>C)],m=g>>>24,O=g>>>16&255,y=g&65535,!(C+m<=c);){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}l>>>=C,c-=C,e.back+=C}if(l>>>=m,c-=m,e.back+=m,e.length=y,O===0){e.mode=Wy;break}if(O&32){e.back=-1,e.mode=ur;break}if(O&64){i.msg="invalid literal/length code",e.mode=ce;break}e.extra=O&15,e.mode=zy;case zy:if(e.extra){for(k=e.extra;c<k;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}e.length+=l&(1<<e.extra)-1,l>>>=e.extra,c-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=Vy;case Vy:for(;g=e.distcode[l&(1<<e.distbits)-1],m=g>>>24,O=g>>>16&255,y=g&65535,!(m<=c);){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}if(!(O&240)){for(C=m,P=O,L=y;g=e.distcode[L+((l&(1<<C+P)-1)>>C)],m=g>>>24,O=g>>>16&255,y=g&65535,!(C+m<=c);){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}l>>>=C,c-=C,e.back+=C}if(l>>>=m,c-=m,e.back+=m,O&64){i.msg="invalid distance code",e.mode=ce;break}e.offset=y,e.extra=O&15,e.mode=Hy;case Hy:if(e.extra){for(k=e.extra;c<k;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}e.offset+=l&(1<<e.extra)-1,l>>>=e.extra,c-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){i.msg="invalid distance too far back",e.mode=ce;break}e.mode=Yy;case Yy:if(u===0)break t;if(d=_-u,e.offset>d){if(d=e.offset-d,d>e.whave&&e.sane){i.msg="invalid distance too far back",e.mode=ce;break}d>e.wnext?(d-=e.wnext,f=e.wsize-d):f=e.wnext-d,d>e.length&&(d=e.length),p=e.window}else p=r,f=a-e.offset,d=e.length;d>u&&(d=u),u-=d,e.length-=d;do r[a++]=p[f++];while(--d);e.length===0&&(e.mode=xc);break;case Wy:if(u===0)break t;r[a++]=e.length,u--,e.mode=xc;break;case XE:if(e.wrap){for(;c<32;){if(o===0)break t;o--,l|=s[n++]<<c,c+=8}if(_-=u,i.total_out+=_,e.total+=_,e.wrap&4&&_&&(i.adler=e.check=e.flags?ze(e.check,r,_,a-_):ih(e.check,r,_,a-_)),_=u,e.wrap&4&&(e.flags?l:Xy(l))!==e.check){i.msg="incorrect data check",e.mode=ce;break}l=0,c=0}e.mode=jy;case jy:if(e.wrap&&e.flags){for(;c<32;){if(o===0)break t;o--,l+=s[n++]<<c,c+=8}if(e.wrap&4&&l!==(e.total&4294967295)){i.msg="incorrect length check",e.mode=ce;break}l=0,c=0}e.mode=Ky;case Ky:F=JJ;break t;case ce:F=gx;break t;case mx:return px;case Ex:default:return ni}return i.next_out=a,i.avail_out=u,i.next_in=n,i.avail_in=o,e.hold=l,e.bits=c,(e.wsize||_!==i.avail_out&&e.mode<ce&&(e.mode<XE||t!==yy))&&Ax(i,i.output,i.next_out,_-i.avail_out),h-=i.avail_in,_-=i.avail_out,i.total_in+=h,i.total_out+=_,e.total+=_,e.wrap&4&&_&&(i.adler=e.check=e.flags?ze(e.check,r,_,i.next_out-_):ih(e.check,r,_,i.next_out-_)),i.data_type=e.bits+(e.last?64:0)+(e.mode===ur?128:0)+(e.mode===Mc||e.mode===KE?256:0),(h===0&&_===0||t===yy)&&F===ka&&(F=ett),F},htt=i=>{if(Qa(i))return ni;let t=i.state;return t.window&&(t.window=null),i.state=null,ka},ctt=(i,t)=>{if(Qa(i))return ni;const e=i.state;return e.wrap&2?(e.head=t,t.done=!1,ka):ni},_tt=(i,t)=>{const e=t.length;let s,r,n;return Qa(i)||(s=i.state,s.wrap!==0&&s.mode!==E_)?ni:s.mode===E_&&(r=1,r=ih(r,t,e,0),r!==s.check)?gx:(n=Ax(i,t,e,e),n?(s.mode=mx,px):(s.havedict=1,ka))};var dtt=Ix,ftt=Sx,gtt=Tx,ptt=ott,mtt=Rx,Ett=ltt,Ttt=htt,Itt=ctt,Stt=_tt,Rtt="pako inflate (from Nodeca project)",yr={inflateReset:dtt,inflateReset2:ftt,inflateResetKeep:gtt,inflateInit:ptt,inflateInit2:mtt,inflate:Ett,inflateEnd:Ttt,inflateGetHeader:Itt,inflateSetDictionary:Stt,inflateInfo:Rtt};function Att(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var Ott=Att;const Ox=Object.prototype.toString,{Z_NO_FLUSH:ytt,Z_FINISH:vtt,Z_OK:ah,Z_STREAM_END:QE,Z_NEED_DICT:ZE,Z_STREAM_ERROR:Ctt,Z_DATA_ERROR:$y,Z_MEM_ERROR:Mtt}=ec;function ic(i){this.options=xm.assign({chunkSize:1024*64,windowBits:15,to:""},i||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(i&&i.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new cx,this.strm.avail_out=0;let e=yr.inflateInit2(this.strm,t.windowBits);if(e!==ah)throw new Error(su[e]);if(this.header=new Ott,yr.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=nh.string2buf(t.dictionary):Ox.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(e=yr.inflateSetDictionary(this.strm,t.dictionary),e!==ah)))throw new Error(su[e])}ic.prototype.push=function(i,t){const e=this.strm,s=this.options.chunkSize,r=this.options.dictionary;let n,a,o;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?vtt:ytt,Ox.call(i)==="[object ArrayBuffer]"?e.input=new Uint8Array(i):e.input=i,e.next_in=0,e.avail_in=e.input.length;;){for(e.avail_out===0&&(e.output=new Uint8Array(s),e.next_out=0,e.avail_out=s),n=yr.inflate(e,a),n===ZE&&r&&(n=yr.inflateSetDictionary(e,r),n===ah?n=yr.inflate(e,a):n===$y&&(n=ZE));e.avail_in>0&&n===QE&&e.state.wrap>0&&i[e.next_in]!==0;)yr.inflateReset(e),n=yr.inflate(e,a);switch(n){case Ctt:case $y:case ZE:case Mtt:return this.onEnd(n),this.ended=!0,!1}if(o=e.avail_out,e.next_out&&(e.avail_out===0||n===QE))if(this.options.to==="string"){let u=nh.utf8border(e.output,e.next_out),l=e.next_out-u,c=nh.buf2string(e.output,u);e.next_out=l,e.avail_out=s-l,l&&e.output.set(e.output.subarray(u,u+l),0),this.onData(c)}else this.onData(e.output.length===e.next_out?e.output:e.output.subarray(0,e.next_out));if(!(n===ah&&o===0)){if(n===QE)return n=yr.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,!0;if(e.avail_in===0)break}}return!0};ic.prototype.onData=function(i){this.chunks.push(i)};ic.prototype.onEnd=function(i){i===ah&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=xm.flattenChunks(this.chunks)),this.chunks=[],this.err=i,this.msg=this.strm.msg};function pS(i,t){const e=new ic(t);if(e.push(i),e.err)throw e.msg||su[e.err];return e.result}function xtt(i,t){return t=t||{},t.raw=!0,pS(i,t)}var Ptt=ic,btt=pS,Ntt=xtt,Utt=pS,Dtt=ec,Ltt={Inflate:Ptt,inflate:btt,inflateRaw:Ntt,ungzip:Utt,constants:Dtt};const{Inflate:Tnt,inflate:Ftt,inflateRaw:Int,ungzip:Snt}=Ltt;var wtt=Ftt;const ol=class ol{constructor(){this._jsonFile=null,this._texture=null}static async from(t){const e=new ol;return await e.parse(t),e}async parse(t){const e=new Jh(t);let s=e.readShort();for(;s>0;){const r=e.readShort(),n=e.readBytes(r).toString(),a=e.readInt(),o=e.readBytes(a),u=wtt(o.toArrayBuffer());n.endsWith(".json")?this._jsonFile=JSON.parse(ol.TEXT_DECODER.decode(u)):this._texture=await ma.load(`data:image/png;base64,${VM(u)}`),s--}}get jsonFile(){return this._jsonFile}get texture(){return this._texture}};ol.TEXT_DECODER=new TextDecoder("utf-8");let T_=ol;const rn=class rn{static sayHello(){if(navigator.userAgent.toLowerCase().indexOf("chrome")>-1){const t=[`
%c %c %c Nitro ${rn.UI_VERSION} - Renderer ${rn.RENDERER_VERSION} %c %c %c https://discord.nitrodev.co %c %c
`,"background: #ffffff; padding:5px 0;","background: #ffffff; padding:5px 0;","color: #ffffff; background: #000000; padding:5px 0;","background: #ffffff; padding:5px 0;","background: #ffffff; padding:5px 0;","background: #000000; padding:5px 0;","background: #ffffff; padding:5px 0;","background: #ffffff; padding:5px 0;"];self.console.log(...t)}else self.console&&self.console.log(`Nitro ${rn.UI_VERSION} - Renderer ${rn.RENDERER_VERSION} `)}};rn.RENDERER_VERSION="2.0.0",rn.UI_VERSION="";let oh=rn;class mS{constructor(t,e,s){this._location=null,this._transformedLocation=new v,this._needsTransformation=!1,this._location=new v(t,e,s),(t!==0||e!==0||s!==0)&&(this._needsTransformation=!0)}get location(){return this._location}get transformedLocation(){return this._transformedLocation}applyTransform(t){this._needsTransformation&&(this._transformedLocation=t.vectorMultiplication(this._location))}}class qT{constructor(t){t<0&&(t=0),this._reservedNumbers=[],this._freeNumbers=[];let e=0;for(;e<t;)this._freeNumbers.push(e),e++}dispose(){this._reservedNumbers=null,this._freeNumbers=null}reserveNumber(){if(this._freeNumbers.length>0){const t=this._freeNumbers.pop();return this._reservedNumbers.push(t),t}return-1}freeNumber(t){const e=this._reservedNumbers.indexOf(t);e>=0&&(this._reservedNumbers.splice(e,1),this._freeNumbers.push(t))}}class Gtt{static sum(t,e){return new st(t.x+e.x,t.y+e.y)}static sub(t,e){return new st(t.x-e.x,t.y-e.y)}static mul(t,e){return new st(t.x*e,t.y*e)}}const ul=class ul{static makeRoomPreviewerId(t){return(t&65535)+ul.PREVIEW_ROOM_ID_BASE}static isRoomPreviewerId(t){return t>=ul.PREVIEW_ROOM_ID_BASE}};ul.PREVIEW_ROOM_ID_BASE=2147418112;let uh=ul;class ue{static generateTexture(t){return this.getRenderer().textureGenerator.generateTexture(t)}static generateTextureFromImage(t){return W.from(t)}static async generateImage(t){return this.getExtractor().image(t)}static async generateImageUrl(t){return this.getExtractor().base64(t)}static generateCanvas(t){return this.getExtractor().canvas(t)}static clearRenderTexture(t){return this.writeToTexture(new wt(W.EMPTY),t)}static createRenderTexture(t,e){return t<0||e<0?null:Zh.create({width:t,height:e})}static createAndFillRenderTexture(t,e,s=16777215){return t<0||e<0?null:this.clearAndFillRenderTexture(this.createRenderTexture(t,e),s)}static createAndWriteRenderTexture(t,e,s,r=null){return t<0||e<0?null:this.writeToTexture(s,this.createRenderTexture(t,e),!0,r)}static clearAndFillRenderTexture(t,e=16777215){if(!t)return null;const s=new wt(W.WHITE);return s.tint=e,s.width=t.width,s.height=t.height,this.writeToTexture(s,t)}static writeToTexture(t,e,s=!0,r=null){return!t||!e?null:(this.getRenderer().render({container:t,target:e,clear:s,transform:r}),e)}static flipTextureHorizontal(t){if(!t)return null;const e=new ot;return e.scale(-1,1),e.translate(t.width,0),this.createAndWriteRenderTexture(t.width,t.height,new wt(t),e)}static flipTextureVertical(t){if(!t)return null;const e=new ot;return e.scale(1,-1),e.translate(0,t.height),this.createAndWriteRenderTexture(t.width,t.height,new wt(t),e)}static flipTextureHorizontalAndVertical(t){if(!t)return null;const e=new ot;return e.scale(-1,-1),e.translate(t.width,t.height),this.createAndWriteRenderTexture(t.width,t.height,new wt(t),e)}static getPixels(t){return this.getExtractor().pixels(t)}static getRenderer(){return Mn()}static getExtractor(){return this.getRenderer().extract}}const yx=(i=Ar.CHANNELS_EQUAL)=>{let t=.33,e=.33,s=.33;switch(i){case Ar.CHANNELS_UNIQUE:t=.3,e=.59,s=.11;break;case Ar.CHANNELS_RED:t=1,e=0,s=0;break;case Ar.CHANNELS_GREEN:t=0,e=1,s=0;break;case Ar.CHANNELS_BLUE:t=0,e=0,s=1;break;case Ar.CHANNELS_DESATURATED:t=.3086,e=.6094,s=.082;break}const r=new ju;return r.matrix=[t,e,s,0,0,t,e,s,0,0,t,e,s,0,0,0,0,0,1,0],r},Btt=i=>{const t=[];for(let e=0;e<i.length;e++)t[e*4+0]=i[e]>>16&255,t[e*4+1]=i[e]>>8&255,t[e*4+2]=i[e]&255,t[e*4+3]=i[e]>>24&255;return t},Hg=class Hg extends xt{constructor(t){t={...Hg.DEFAULT_OPTIONS,...t};const e=Btt(t.palette),s=dm.from({width:e.length/4,height:1,resource:Uint8Array.from(e),scaleMode:"linear",autoGenerateMipmaps:!1}),r=W.from(s),n=null,a=Tt.from({vertex:`
in vec2 aPosition;
out vec2 vTextureCoord;
uniform vec4 uInputSize;
uniform vec4 uOutputFrame;
uniform vec4 uOutputTexture;
vec4 filterVertexPosition( void )
{
vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
vec2 filterTextureCoord( void )
{
return aPosition * (uOutputFrame.zw * uInputSize.zw);
}
void main(void)
{
gl_Position = filterVertexPosition();
vTextureCoord = filterTextureCoord();
}`,fragment:`
in vec2 vTextureCoord;
uniform sampler2D uTexture;
uniform sampler2D uPaletteTexture;
uniform float uChannel;
void main() {
vec4 currentColor = texture2D(uTexture, vTextureCoord);
vec4 paletteColor = currentColor;
if(currentColor.a > 0.0) {
paletteColor = texture2D(uPaletteTexture, vec2((currentColor.r * 255.0 + 0.5) / 256.0, 0.5));
}
gl_FragColor = vec4(paletteColor.r, paletteColor.g, paletteColor.b, currentColor.a);
}`,name:"palette-map-filter"});console.log(r),super({gpuProgram:n,glProgram:a,resources:{paletteMapUniforms:{uChannel:{value:t.channel,type:"f32"}},uPaletteTexture:r.source,uPaletteSampler:r.source.style}}),this.uniforms=this.resources.paletteMapUniforms.uniforms,this.resources.uPaletteTexture=r.source,this.resources.uPaletteSampler=r.source.style,Object.assign(this,t)}};Hg.DEFAULT_OPTIONS={palette:[],channel:0};let I_=Hg;const Yg=class Yg extends xt{constructor(t){t={...Yg.DEFAULT_OPTIONS,...t};const e=Tt.from({vertex:`in vec2 aPosition;
out vec2 vTextureCoord;
uniform vec4 uInputSize;
uniform vec4 uOutputFrame;
uniform vec4 uOutputTexture;
vec4 filterVertexPosition( void )
{
vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
vec2 filterTextureCoord( void )
{
return aPosition * (uOutputFrame.zw * uInputSize.zw);
}
void main(void)
{
gl_Position = filterVertexPosition();
vTextureCoord = filterTextureCoord();
}`,fragment:`
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
void main(void) {
vec4 c = texture(uTexture, vTextureCoord);
finalColor = c;
if(c.r == 0.0 && c.g == 0.0 && c.b == 0.0) {
finalColor = vec4(0.0, 0.0, 0.0, 0.0);
}
}
`,name:"plane-mask-filter"});super({gpuProgram:null,glProgram:e,resources:{planeMaskUniforms:{}}}),this.uniforms=this.resources.planeMaskUniforms.uniforms,Object.assign(this,t)}apply(t,e,s,r){t.applyFilter(this,e,s,r)}};Yg.DEFAULT_OPTIONS={};let S_=Yg;const Wg=class Wg extends xt{constructor(t){t={...Wg.DEFAULT_OPTIONS,...t};const e=Tt.from({vertex:`in vec2 aPosition;
out vec2 vTextureCoord;
uniform vec4 uInputSize;
uniform vec4 uOutputFrame;
uniform vec4 uOutputTexture;
vec4 filterVertexPosition( void )
{
vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
vec2 filterTextureCoord( void )
{
return aPosition * (uOutputFrame.zw * uInputSize.zw);
}
void main(void)
{
gl_Position = filterVertexPosition();
vTextureCoord = filterTextureCoord();
}`,fragment:`
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec3 uLineColor;
uniform vec3 uColor;
void main(void) {
vec4 currentColor = texture(uTexture, vTextureCoord);
vec3 colorLine = uLineColor * currentColor.a;
vec3 colorOverlay = uColor * currentColor.a;
if(currentColor.r == 0.0 && currentColor.g == 0.0 && currentColor.b == 0.0 && currentColor.a > 0.0) {
finalColor = vec4(colorLine.r, colorLine.g, colorLine.b, currentColor.a);
} else if(currentColor.a > 0.0) {
finalColor = vec4(colorOverlay.r, colorOverlay.g, colorOverlay.b, currentColor.a);
}
}
`,name:"wired-filter"});super({gpuProgram:null,glProgram:e,resources:{planeMaskUniforms:{uLineColor:{value:new Float32Array(3),type:"vec3<f32>"},uColor:{value:new Float32Array(3),type:"vec3<f32>"}}}}),this.uniforms=this.resources.planeMaskUniforms.uniforms,this._lineColor=new Mt,this.lineColor=t.lineColor??0,this._color=new Mt,this.color=t.color??0,Object.assign(this,t)}apply(t,e,s,r){t.applyFilter(this,e,s,r)}get lineColor(){return this._lineColor.value}set lineColor(t){this._lineColor.setValue(t);const[e,s,r]=this._lineColor.toArray();this.uniforms.uLineColor[0]=e,this.uniforms.uLineColor[1]=s,this.uniforms.uLineColor[2]=r}get color(){return this._color.value}set color(t){this._color.setValue(t);const[e,s,r]=this._color.toArray();this.uniforms.uColor[0]=e,this.uniforms.uColor[1]=s,this.uniforms.uColor[2]=r}};Wg.DEFAULT_OPTIONS={lineColor:0,color:0};let $T=Wg;class Za{constructor(t){this._complete=!0,this._target=t}get running(){return this._running&&!!this._target}get complete(){return this._complete}set target(t){this._target=t}get target(){return this._target}set tag(t){this._tag=t}get tag(){return this._tag}start(){this._running=!0}update(t){}stop(){this._target=null,this._running=!1}tick(t){}}class ktt extends Za{constructor(t){super(null),this._callback=t}get running(){return this._running&&!!this._callback}tick(t){super.tick(t),this._callback&&(this._callback(),this._callback=null)}}class ztt extends Za{constructor(...t){super(t&&t.length?t[0].target:null),this._runningMotions=[],this._removedMotions=[];for(const e of t)this._runningMotions.push(e)}start(){super.start();for(const t of this._runningMotions)t.start()}tick(t){super.tick(t);let e=null;for(;(e=this._removedMotions.pop())!==null;)this._runningMotions.splice(this._removedMotions.indexOf(e),1),e.running&&e.stop();for(const s of this._runningMotions)s.running&&s.tick(t),s.complete&&this._removedMotions.push(s);if(this._runningMotions.length>0){for(const s of this._runningMotions)if(this._target=s.target,this._target)break;this._complete=!1}else this._complete=!0}}class Vtt extends Za{constructor(t){super(t)}tick(t){super.tick(t),this.target&&(this.target.remove(),this.target=null)}}class Su extends Za{constructor(t,e){super(t),this._complete=!1,this._duration=e}get duration(){return this._duration}start(){super.start(),this._complete=!1,this._startTimeMs=Nt()}tick(t){super.tick(t);const e=(t-this._startTimeMs)/this._duration;e<1?this.update(e):(this.update(1),this._complete=!0)}}class Htt extends Su{constructor(t,e,s){super(t,e),this._height=s}start(){super.start(),this._offset=0,this.target.style.top=this._offset-this._height+"px"}update(t){super.update(t),this.target.style.top=this._offset-this._height+this.getBounceOffset(t)*this._height+"px"}getBounceOffset(t){return t<.364?7.5625*t*t:t<.727?(t=t-.545,7.5625*t*t+.75):t<.909?(t=t-.9091,7.5625*t*t+.9375):(t=t-.955,7.5625*t*t+.984375)}stop(){this.target.style.top=this._offset+"px",super.stop()}}class vx extends Su{constructor(t){super(t.target,t.duration),this._interval=t}start(){super.start(),this._interval.start()}update(t){super.update(t),this._interval.update(t)}stop(){super.stop(),this._interval.stop()}}class Cx extends vx{constructor(t,e){super(t),this._rate=e}}class Ytt extends Cx{constructor(t,e){super(t,e)}update(t){this._interval.update(Math.pow(t,1/this._rate))}}class Wtt extends Su{constructor(t,e,s,r,n,a){super(t,e),this._deltaX=s,this._deltaY=r,this._height=-n,this._numJumps=a}start(){super.start(),this._startX=this.target.offsetLeft,this._startY=this.target.offsetTop}update(t){super.update(t),this.target.style.left=this._startX+this._deltaX*t+"px",this.target.style.top=this._startY+this._height*Math.abs(Math.sin(t*Math.PI*this._numJumps))+this._deltaY*t+"px"}}const _t=class _t{static get TIMER_TIME(){return 1e3/HM()}static runMotion(t){return _t._RUNNING_MOTIONS.indexOf(t)===-1&&_t._QUEUED_MOTIONS.indexOf(t)===-1&&(_t._IS_UPDATING?_t._QUEUED_MOTIONS.push(t):(_t._RUNNING_MOTIONS.push(t),t.start()),_t.startTimer()),t}static removeMotion(t){let e=_t._RUNNING_MOTIONS.indexOf(t);e>-1?_t._IS_UPDATING?(e=_t._REMOVED_MOTIONS.indexOf(t),e==-1&&_t._REMOVED_MOTIONS.push(t)):(_t._RUNNING_MOTIONS.splice(e,1),t.running&&t.stop(),_t._RUNNING_MOTIONS.length||_t.stopTimer()):(e=_t._QUEUED_MOTIONS.indexOf(t),e>-1&&_t._QUEUED_MOTIONS.splice(e,1))}static getMotionByTag(t){for(const e of _t._RUNNING_MOTIONS)if(e.tag==t)return e;for(const e of _t._QUEUED_MOTIONS)if(e.tag==t)return e;return null}static getMotionByTarget(t){for(const e of _t._RUNNING_MOTIONS)if(e.target==t)return e;for(const e of _t._QUEUED_MOTIONS)if(e.target==t)return e;return null}static getMotionByTagAndTarget(t,e){for(const s of _t._RUNNING_MOTIONS)if(s.tag==t&&s.target==e)return s;for(const s of _t._QUEUED_MOTIONS)if(s.tag==t&&s.target==e)return s;return null}static get isRunning(){return!!_t._TIMER}static get isUpdating(){return _t._IS_UPDATING}static onTick(){_t._IS_UPDATING=!0;const t=Nt();let e=null;for(;e=_t._QUEUED_MOTIONS.pop();)_t._RUNNING_MOTIONS.push(e);for(;e=_t._REMOVED_MOTIONS.pop();)_t._RUNNING_MOTIONS.splice(_t._RUNNING_MOTIONS.indexOf(e),1),e.running&&e.stop();for(e of _t._RUNNING_MOTIONS)e.running?(e.tick(t),e.complete&&_t.removeMotion(e)):_t.removeMotion(e);_t._RUNNING_MOTIONS.length||_t.stopTimer(),_t._IS_UPDATING=!1}static startTimer(){_t._TIMER||(_t._TIMER=setInterval(()=>_t.onTick(),_t.TIMER_TIME))}static stopTimer(){_t._TIMER&&(clearInterval(_t._TIMER),_t._TIMER=null)}getNumRunningMotions(t){let e=0;for(const s of _t._RUNNING_MOTIONS)s.target===t&&e++;return e}};_t._QUEUED_MOTIONS=[],_t._RUNNING_MOTIONS=[],_t._REMOVED_MOTIONS=[],_t._TIMER=null,_t._IS_UPDATING=!1;let QT=_t;class Mx extends Su{constructor(t,e,s,r){super(t,e),this._endX=s,this._endY=r}start(){super.start(),this._startX=this.target.offsetLeft,this._startY=this.target.offsetTop,this._deltaX=this._endX-this._startX,this._deltaY=this._endY-this._startY}update(t){this.target.style.left=this._startX+this._deltaX*t+"px",this.target.style.top=this._startY+this._deltaY*t+"px"}}class jtt extends Mx{constructor(t,e,s,r){super(t,e,s,r)}start(){this._endX=this.target.offsetLeft+this._endX,this._endY=this.target.offsetTop+this._endY,super.start()}}class Ktt extends Za{constructor(...t){super(t?t[0].target:null),this._queue=[];for(const e of t)this._queue.push(e);this._motion=t[0],this._complete=!this._motion}get running(){return this._running&&this._motion?this._motion.running:!1}start(){super.start(),this._motion.start()}update(t){super.update(t),this._motion.running&&this._motion.update(t)}stop(){super.stop(),this._motion.stop()}tick(t){if(super.tick(t),this._motion.tick(t),this._motion.complete){this._motion.stop();const e=this._queue.indexOf(this._motion);e<this._queue.length-1?(this._motion=this._queue[e+1],this._target=this._motion.target,this._motion.start()):this._complete=!0}}}class Xtt extends Su{constructor(t,e,s,r){super(t,e),this._endW=s,this._endH=r}start(){super.start(),this._startW=this.target.offsetWidth,this._startH=this.target.offsetHeight,this._deltaW=this._endW-this._startW,this._deltaH=this._endH-this._startH}update(t){this.target.style.width=this._startW+this._deltaW*t+"px",this.target.style.height=this._startH+this._deltaH*t+"px"}}class qtt extends Za{constructor(t){super(null),this._waitTimeMs=t}get running(){return this._running}start(){super.start(),this._complete=!1,this._startTimeMs=Nt()}tick(t){super.tick(t),this._complete=t-this._startTimeMs>=this._waitTimeMs,this._complete&&this.stop()}}var Na={},xx={},Gr={};Object.defineProperty(Gr,"__esModule",{value:!0});Gr.loop=Gr.conditional=Gr.parse=void 0;var $tt=function i(t,e){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:s;if(Array.isArray(e))e.forEach(function(a){return i(t,a,s,r)});else if(typeof e=="function")e(t,s,r,i);else{var n=Object.keys(e)[0];Array.isArray(e[n])?(r[n]={},i(t,e[n],s,r[n])):r[n]=e[n](t,s,r,i)}return s};Gr.parse=$tt;var Qtt=function(t,e){return function(s,r,n,a){e(s,r,n)&&a(s,t,r,n)}};Gr.conditional=Qtt;var Ztt=function(t,e){return function(s,r,n,a){for(var o=[],u=s.pos;e(s,r,n);){var l={};if(a(s,t,r,l),s.pos===u)break;u=s.pos,o.push(l)}return o}};Gr.loop=Ztt;var Me={};Object.defineProperty(Me,"__esModule",{value:!0});Me.readBits=Me.readArray=Me.readUnsigned=Me.readString=Me.peekBytes=Me.readBytes=Me.peekByte=Me.readByte=Me.buildStream=void 0;var Jtt=function(t){return{data:t,pos:0}};Me.buildStream=Jtt;var Px=function(){return function(t){return t.data[t.pos++]}};Me.readByte=Px;var tet=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return function(e){return e.data[e.pos+t]}};Me.peekByte=tet;var bm=function(t){return function(e){return e.data.subarray(e.pos,e.pos+=t)}};Me.readBytes=bm;var eet=function(t){return function(e){return e.data.subarray(e.pos,e.pos+t)}};Me.peekBytes=eet;var set=function(t){return function(e){return Array.from(bm(t)(e)).map(function(s){return String.fromCharCode(s)}).join("")}};Me.readString=set;var iet=function(t){return function(e){var s=bm(2)(e);return t?(s[1]<<8)+s[0]:(s[0]<<8)+s[1]}};Me.readUnsigned=iet;var ret=function(t,e){return function(s,r,n){for(var a=typeof e=="function"?e(s,r,n):e,o=bm(t),u=new Array(a),l=0;l<a;l++)u[l]=o(s);return u}};Me.readArray=ret;var net=function(t,e,s){for(var r=0,n=0;n<s;n++)r+=t[e+n]&&Math.pow(2,s-n-1);return r},aet=function(t){return function(e){for(var s=Px()(e),r=new Array(8),n=0;n<8;n++)r[7-n]=!!(s&1<<n);return Object.keys(t).reduce(function(a,o){var u=t[o];return u.length?a[o]=net(r,u.index,u.length):a[o]=r[u.index],a},{})}};Me.readBits=aet;(function(i){Object.defineProperty(i,"__esModule",{value:!0}),i.default=void 0;var t=Gr,e=Me,s={blocks:function(_){for(var d=0,f=[],p=_.data.length,g=0,m=(0,e.readByte)()(_);m!==d&&m;m=(0,e.readByte)()(_)){if(_.pos+m>=p){var O=p-_.pos;f.push((0,e.readBytes)(O)(_)),g+=O;break}f.push((0,e.readBytes)(m)(_)),g+=m}for(var y=new Uint8Array(g),C=0,P=0;P<f.length;P++)y.set(f[P],C),C+=f[P].length;return y}},r=(0,t.conditional)({gce:[{codes:(0,e.readBytes)(2)},{byteSize:(0,e.readByte)()},{extras:(0,e.readBits)({future:{index:0,length:3},disposal:{index:3,length:3},userInput:{index:6},transparentColorGiven:{index:7}})},{delay:(0,e.readUnsigned)(!0)},{transparentColorIndex:(0,e.readByte)()},{terminator:(0,e.readByte)()}]},function(h){var _=(0,e.peekBytes)(2)(h);return _[0]===33&&_[1]===249}),n=(0,t.conditional)({image:[{code:(0,e.readByte)()},{descriptor:[{left:(0,e.readUnsigned)(!0)},{top:(0,e.readUnsigned)(!0)},{width:(0,e.readUnsigned)(!0)},{height:(0,e.readUnsigned)(!0)},{lct:(0,e.readBits)({exists:{index:0},interlaced:{index:1},sort:{index:2},future:{index:3,length:2},size:{index:5,length:3}})}]},(0,t.conditional)({lct:(0,e.readArray)(3,function(h,_,d){return Math.pow(2,d.descriptor.lct.size+1)})},function(h,_,d){return d.descriptor.lct.exists}),{data:[{minCodeSize:(0,e.readByte)()},s]}]},function(h){return(0,e.peekByte)()(h)===44}),a=(0,t.conditional)({text:[{codes:(0,e.readBytes)(2)},{blockSize:(0,e.readByte)()},{preData:function(_,d,f){return(0,e.readBytes)(f.text.blockSize)(_)}},s]},function(h){var _=(0,e.peekBytes)(2)(h);return _[0]===33&&_[1]===1}),o=(0,t.conditional)({application:[{codes:(0,e.readBytes)(2)},{blockSize:(0,e.readByte)()},{id:function(_,d,f){return(0,e.readString)(f.blockSize)(_)}},s]},function(h){var _=(0,e.peekBytes)(2)(h);return _[0]===33&&_[1]===255}),u=(0,t.conditional)({comment:[{codes:(0,e.readBytes)(2)},s]},function(h){var _=(0,e.peekBytes)(2)(h);return _[0]===33&&_[1]===254}),l=[{header:[{signature:(0,e.readString)(3)},{version:(0,e.readString)(3)}]},{lsd:[{width:(0,e.readUnsigned)(!0)},{height:(0,e.readUnsigned)(!0)},{gct:(0,e.readBits)({exists:{index:0},resolution:{index:1,length:3},sort:{index:4},size:{index:5,length:3}})},{backgroundColorIndex:(0,e.readByte)()},{pixelAspectRatio:(0,e.readByte)()}]},(0,t.conditional)({gct:(0,e.readArray)(3,function(h,_){return Math.pow(2,_.lsd.gct.size+1)})},function(h,_){return _.lsd.gct.exists}),{frames:(0,t.loop)([r,o,u,n,a],function(h){var _=(0,e.peekByte)()(h);return _===33||_===44})}],c=l;i.default=c})(xx);var Nm={};Object.defineProperty(Nm,"__esModule",{value:!0});Nm.deinterlace=void 0;var oet=function(t,e){for(var s=new Array(t.length),r=t.length/e,n=function(_,d){var f=t.slice(d*e,(d+1)*e);s.splice.apply(s,[_*e,e].concat(f))},a=[0,4,2,1],o=[8,8,4,2],u=0,l=0;l<4;l++)for(var c=a[l];c<r;c+=o[l])n(c,u),u++;return s};Nm.deinterlace=oet;var Um={};Object.defineProperty(Um,"__esModule",{value:!0});Um.lzw=void 0;var uet=function(t,e,s){var r=4096,n=-1,a=s,o,u,l,c,h,_,d,L,f,p,P,g,N,F,U,x,m=new Array(s),O=new Array(r),y=new Array(r),C=new Array(r+1);for(g=t,u=1<<g,h=u+1,o=u+2,d=n,c=g+1,l=(1<<c)-1,f=0;f<u;f++)O[f]=0,y[f]=f;var P,L,N,F,x,U;for(P=L=N=F=x=U=0,p=0;p<a;){if(F===0){if(L<c){P+=e[U]<<L,L+=8,U++;continue}if(f=P&l,P>>=c,L-=c,f>o||f==h)break;if(f==u){c=g+1,l=(1<<c)-1,o=u+2,d=n;continue}if(d==n){C[F++]=y[f],d=f,N=f;continue}for(_=f,f==o&&(C[F++]=N,f=d);f>u;)C[F++]=y[f],f=O[f];N=y[f]&255,C[F++]=N,o<r&&(O[o]=d,y[o]=N,o++,!(o&l)&&o<r&&(c++,l+=o)),d=_}F--,m[x++]=C[F],p++}for(p=x;p<a;p++)m[p]=0;return m};Um.lzw=uet;Object.defineProperty(Na,"__esModule",{value:!0});var bx=Na.decompressFrames=Na.decompressFrame=Nx=Na.parseGIF=void 0,het=get(xx),cet=Gr,_et=Me,det=Nm,fet=Um;function get(i){return i&&i.__esModule?i:{default:i}}var pet=function(t){var e=new Uint8Array(t);return(0,cet.parse)((0,_et.buildStream)(e),het.default)},Nx=Na.parseGIF=pet,met=function(t){for(var e=t.pixels.length,s=new Uint8ClampedArray(e*4),r=0;r<e;r++){var n=r*4,a=t.pixels[r],o=t.colorTable[a]||[0,0,0];s[n]=o[0],s[n+1]=o[1],s[n+2]=o[2],s[n+3]=a!==t.transparentIndex?255:0}return s},Ux=function(t,e,s){if(!t.image){console.warn("gif frame does not have associated image.");return}var r=t.image,n=r.descriptor.width*r.descriptor.height,a=(0,fet.lzw)(r.data.minCodeSize,r.data.blocks,n);r.descriptor.lct.interlaced&&(a=(0,det.deinterlace)(a,r.descriptor.width));var o={pixels:a,dims:{top:t.image.descriptor.top,left:t.image.descriptor.left,width:t.image.descriptor.width,height:t.image.descriptor.height}};return r.descriptor.lct&&r.descriptor.lct.exists?o.colorTable=r.lct:o.colorTable=e,t.gce&&(o.delay=(t.gce.delay||10)*10,o.disposalType=t.gce.extras.disposal,t.gce.extras.transparentColorGiven&&(o.transparentIndex=t.gce.transparentColorIndex)),s&&(o.patch=met(o)),o};Na.decompressFrame=Ux;var Eet=function(t,e){return t.frames.filter(function(s){return s.image}).map(function(s){return Ux(s,t.gct,e)})};bx=Na.decompressFrames=Eet;const Gu=class extends wt{constructor(i,t){super(W.EMPTY),this.animationSpeed=1,this.loop=!0,this.duration=0,this.autoPlay=!0,this.dirty=!1,this._currentFrame=0,this._autoUpdate=!1,this._isConnectedToTicker=!1,this._playing=!1,this._currentTime=0,this.onRender=()=>this.updateFrame();const{scaleMode:e,width:s,height:r,...n}=Object.assign({},Gu.defaultOptions,t),a=Wt.get().createCanvas(s,r),o=a.getContext("2d");this.texture=W.from(a),this.texture.source.scaleMode=e,this.duration=i[i.length-1].end,this._frames=i,this._context=o,this._playing=!1,this._currentTime=0,this._isConnectedToTicker=!1,Object.assign(this,n),this.currentFrame=0,n.autoPlay&&this.play()}static fromBuffer(i,t){if(!i||i.byteLength===0)throw new Error("Invalid buffer");const e=g=>{let m=null;for(const O of g.frames)m=O.gce??m,"image"in O&&!("gce"in O)&&(O.gce=m)},s=Nx(i);e(s);const r=bx(s,!0),n=[],a=Wt.get().createCanvas(s.lsd.width,s.lsd.height),o=a.getContext("2d",{willReadFrequently:!0}),u=Wt.get().createCanvas(),l=u.getContext("2d");let c=0,h=null;const{fps:_}=Object.assign({},Gu.defaultOptions,t),d=1e3/_;for(let g=0;g<r.length;g++){const{disposalType:m=2,delay:O=d,patch:y,dims:{width:C,height:P,left:L,top:N}}=r[g];u.width=C,u.height=P,l.clearRect(0,0,C,P);const F=l.createImageData(C,P);F.data.set(y),l.putImageData(F,0,0),m===3&&(h=o.getImageData(0,0,a.width,a.height)),o.drawImage(u,L,N);const x=o.getImageData(0,0,a.width,a.height);m===2?o.clearRect(0,0,a.width,a.height):m===3&&o.putImageData(h,0,0),n.push({start:c,end:c+O,imageData:x}),c+=O}a.width=a.height=0,u.width=u.height=0;const{width:f,height:p}=s.lsd;return new Gu(n,{width:f,height:p,...t})}stop(){this._playing&&(this._playing=!1,this._autoUpdate&&this._isConnectedToTicker&&(Ls.shared.remove(this.update,this),this._isConnectedToTicker=!1))}play(){this._playing||(this._playing=!0,this._autoUpdate&&!this._isConnectedToTicker&&(Ls.shared.add(this.update,this,Ll.HIGH),this._isConnectedToTicker=!0),!this.loop&&this.currentFrame===this._frames.length-1&&(this._currentTime=0))}get progress(){return this._currentTime/this.duration}get playing(){return this._playing}update(i){var n,a;if(!this._playing)return;const t=this.animationSpeed*i.deltaTime/Ls.targetFPMS,e=this._currentTime+t,s=e%this.duration,r=this._frames.findIndex(o=>o.start<=s&&o.end>s);e>=this.duration?this.loop?(this._currentTime=s,this.updateFrameIndex(r),(n=this.onLoop)==null||n.call(this)):(this._currentTime=this.duration,this.updateFrameIndex(this._frames.length-1),(a=this.onComplete)==null||a.call(this),this.stop()):(this._currentTime=s,this.updateFrameIndex(r))}updateFrame(){if(!this.dirty)return;const{imageData:i}=this._frames[this._currentFrame];this._context.putImageData(i,0,0),this._context.fillStyle="transparent",this._context.fillRect(0,0,0,1),this.texture.source.update(),this.dirty=!1}get autoUpdate(){return this._autoUpdate}set autoUpdate(i){i!==this._autoUpdate&&(this._autoUpdate=i,!this._autoUpdate&&this._isConnectedToTicker?(Ls.shared.remove(this.update,this),this._isConnectedToTicker=!1):this._autoUpdate&&!this._isConnectedToTicker&&this._playing&&(Ls.shared.add(this.update,this),this._isConnectedToTicker=!0))}get currentFrame(){return this._currentFrame}set currentFrame(i){this.updateFrameIndex(i),this._currentTime=this._frames[i].start}updateFrameIndex(i){var t;if(i<0||i>=this._frames.length)throw new Error(`Frame index out of range, expecting 0 to ${this.totalFrames}, got ${i}`);this._currentFrame!==i&&(this._currentFrame=i,this.dirty=!0,(t=this.onFrameChange)==null||t.call(this,i))}get totalFrames(){return this._frames.length}destroy(){this.stop(),super.destroy(!0);const i=null;this._context=i,this._frames=i,this.onComplete=i,this.onFrameChange=i,this.onLoop=i}clone(){const i=new Gu([...this._frames],{autoUpdate:this._autoUpdate,loop:this.loop,autoPlay:this.autoPlay,scaleMode:this.texture.source.scaleMode,animationSpeed:this.animationSpeed,width:this._context.canvas.width,height:this._context.canvas.height,onComplete:this.onComplete,onFrameChange:this.onFrameChange,onLoop:this.onLoop});return i.dirty=!0,i}};let ES=Gu;ES.defaultOptions={scaleMode:"linear",fps:30,loop:!0,animationSpeed:1,autoPlay:!0,autoUpdate:!0,onComplete:null,onFrameChange:null,onLoop:null};const Tet={extension:B.Asset,detection:{test:async()=>!0,add:async i=>[...i,"gif"],remove:async i=>i.filter(t=>t!=="gif")},loader:{name:"gifLoader",test:i=>Os.extname(i)===".gif",load:async(i,t)=>{const s=await(await Wt.get().fetch(i)).arrayBuffer();return ES.fromBuffer(s,t==null?void 0:t.data)},unload:async i=>{i.destroy()}}};fe.add(Tet);const ra=class ra{static createAsset(t,e,s,r,n,a=!1,o=!1,u=!1){const l=ra.GRAPHIC_POOL.length?ra.GRAPHIC_POOL.pop():new ra;return l._name=t,l._source=e||null,s?(l._texture=s,l._initialized=!1):(l._texture=null,l._initialized=!0),l._usesPalette=u,l._x=r,l._y=n,l._flipH=a,l._flipV=o,l._rectangle=null,l}recycle(){this._texture=null,ra.GRAPHIC_POOL.push(this)}initialize(){this._initialized||!this._texture||(this._width=this._texture.width,this._height=this._texture.height,this._initialized=!0)}get name(){return this._name}get source(){return this._source}get texture(){return this._texture}get usesPalette(){return this._usesPalette}get x(){return this._x}get y(){return this._y}get width(){return this.initialize(),this._width}get height(){return this.initialize(),this._height}get offsetX(){return this._flipH?-this._x:this._x}get offsetY(){return this._flipV?-this._y:this._y}get flipH(){return this._flipH}get flipV(){return this._flipV}get rectangle(){return this._rectangle||(this._rectangle=new Kt(0,0,this.width,this.height)),this._rectangle}};ra.GRAPHIC_POOL=[];let R_=ra;class Dx{constructor(t,e,s){for(this._palette=t;this._palette.length<256;)this._palette.push([0,0,0]);this._primaryColor=e,this._secondaryColor=s}applyPalette(t){const e=Mn().texture.generateCanvas(t),s=e.getContext("2d"),r=s.getImageData(0,0,e.width,e.height);for(let a=0;a<r.data.length;a+=4){let o=this._palette[r.data[a+1]];o===void 0&&(o=[0,0,0]),r.data[a]=o[0],r.data[a+1]=o[1],r.data[a+2]=o[2]}s.putImageData(r,0,0);const n=W.from(e);return n.source.hitMap=r.data,n}get primaryColor(){return this._primaryColor}get secondaryColor(){return this._secondaryColor}}const ll=class ll{constructor(t,e){if(!t)throw new Error("invalid_collection");this._name=t.name,this._textureSource=e&&e.textureSource||null,this._data=t,this._textures=new Map,this._assets=new Map,this._palettes=new Map,this._paletteAssetNames=[],e&&this.addLibraryAsset(e.textures),this.define(t)}static removeFileExtension(t){return t.substring(0,t.lastIndexOf("."))||t}dispose(){if(this._palettes&&this._palettes.clear(),this._paletteAssetNames&&(this.disposePaletteAssets(),this._paletteAssetNames=null),this._assets){for(const t of this._assets.values())t.recycle();this._assets.clear()}}addReference(){this._referenceCount++}removeReference(){this._referenceCount--,this._referenceCount<=0&&(this._referenceCount=0,this.disposePaletteAssets(!1))}define(t){const e=t.assets,s=t.palettes;e&&this.defineAssets(e),s&&this.definePalettes(s)}defineAssets(t){if(t)for(const e in t){const s=t[e];if(!s)continue;const r=-s.x||0,n=-s.y||0;let a=!1;const o=!1,u=s.usesPalette||!1;let l=s.source||"";s.flipH&&l.length&&(a=!0),l.length||(l=e);const c=this.getLibraryAsset(l);if(!c)continue;let h=this.createAsset(e,l,c,a,o,r,n,u);if(!h){const _=this.getAsset(e);_&&_.name!==_.source&&(h=this.replaceAsset(e,l,c,a,o,r,n,u))}}}definePalettes(t){if(t)for(const e in t){const s=t[e];if(!s)continue;const r=s.id.toString();if(this._palettes.get(r))continue;let n=16777215,a=16777215,o=s.color1;o&&o.length>0&&(n=parseInt(o,16)),o=s.color2,o&&o.length>0&&(a=parseInt(o,16)),this._palettes.set(r,new Dx(s.rgb,n,a))}}createAsset(t,e,s,r,n,a,o,u){if(this._assets.get(t))return!1;const l=R_.createAsset(t,e,s,a,o,r,n,u);return this._assets.set(t,l),!0}replaceAsset(t,e,s,r,n,a,o,u){const l=this._assets.get(t);return l&&(this._assets.delete(t),l.recycle()),this.createAsset(t,e,s,r,n,a,o,u)}getAsset(t){if(!t)return null;const e=this._assets.get(t);return e||null}getAssetWithPalette(t,e){const s=t+"@"+e;let r=this.getAsset(s);if(!r){if(r=this.getAsset(t),!r||!r.usesPalette)return r;const n=this.getPalette(e);if(n){const a=n.applyPalette(r.texture);a&&(this._paletteAssetNames.push(s),this.createAsset(s,r.source+"@"+e,a,r.flipH,r.flipV,r.x,r.y,!1),r=this.getAsset(s))}}return r}getTexture(t){return this._textures.get(t)}getPaletteNames(){return Array.from(this._palettes.keys())}getPaletteColors(t){const e=this.getPalette(t);return e?[e.primaryColor,e.secondaryColor]:null}getPalette(t){return t?this._palettes.get(t):null}addAsset(t,e,s,r=0,n=0,a=!1,o=!1){if(!t||!e)return!1;const u=this.getLibraryAsset(t);return u?s?(u.source=e.source,u.frame=e.frame,u.trim=e.trim,u.updateUvs(),!0):!1:(this._textures.set(t,e),this.createAsset(t,t,e,a,o,r,n,!1))}disposeAsset(t){const e=this._assets.get(t);if(!e)return;this._assets.delete(t);const s=this.getLibraryAsset(e.source);s&&(this._textures.delete(e.source),s.destroy(!0)),e.recycle()}getLibraryAsset(t){if(!t)return null;t=this._name+"_"+t;const e=this._textures.get(t);return e||null}addLibraryAsset(t){if(t)for(const e in t){const s=t[e];s&&this._textures.set(ll.removeFileExtension(e),s)}}disposePaletteAssets(t=!0){if(this._paletteAssetNames&&(t||this._paletteAssetNames.length>ll.PALETTE_ASSET_DISPOSE_THRESHOLD)){for(const e of this._paletteAssetNames)this.disposeAsset(e);this._paletteAssetNames=[]}}get referenceCount(){return this._referenceCount}get name(){return this._name}get textureSource(){return this._textureSource}get data(){return this._data}get textures(){return this._textures}get assets(){return this._assets}};ll.PALETTE_ASSET_DISPOSE_THRESHOLD=10;let A_=ll;class Lx{constructor(){this._textures=new Map,this._collections=new Map}getTexture(t){return t?this._textures.get(t):null}setTexture(t,e){!t||!e||(e.label=t,this._textures.set(t,e))}getAsset(t){if(!t)return null;for(const e of this._collections.values()){if(!e)continue;const s=e.getAsset(t);if(s)return s}return it.warn(`AssetManager: Asset not found: ${t}`),null}addAssetToCollection(t,e,s,r=!0){const n=this.getCollection(t);return n?n.addAsset(e,s,r,0,0,!1,!1):!1}getCollection(t){return t?this._collections.get(t)??null:null}createCollection(t,e){if(!t)return null;const s=new A_(t,e);for(const[r,n]of s.textures.entries())this.setTexture(r,n);return this._collections.set(s.name,s),s}async downloadAssets(t){if(!t||!t.length)return Promise.resolve(!0);try{return await Promise.all(t.map(e=>this.downloadAsset(e))),!0}catch(e){it.error(e)}return!1}async downloadAsset(t){try{if(!t||!t.length)return!1;if(t.endsWith(".nitro")||t.endsWith(".gif")){const e=await fetch(t);if(!e||e.status!==200)return!1;const s=await e.arrayBuffer();if(t.endsWith(".nitro")){const r=await T_.from(s);await this.processAsset(r.texture,r.jsonFile)}else{const n=ES.fromBuffer(s).texture;n&&this.setTexture(t,n)}}else{const e=await ma.load(t);e&&this.setTexture(t,e)}return!0}catch(e){return it.error(e),!1}}async processAsset(t,e){let s=null;t&&(e!=null&&e.spritesheet)&&Object.keys(e.spritesheet).length&&(s=new oT(t,e.spritesheet),await s.parse(),s.textureSource.label=e.name??null),this.createCollection(e,s)}get collections(){return this._collections}}ma.init();const Iet=new Lx,Rt=()=>Iet;class Fx{constructor(){this._listeners=new Map}dispose(){this.removeAllListeners()}addEventListener(t,e){if(!t||!e)return;const s=this._listeners.get(t);if(!s){this._listeners.set(t,[e]);return}it.events("Added Event Listener",t),s.push(e)}removeEventListener(t,e){if(!t||!e)return;const s=this._listeners.get(t);if(!(!s||!s.length)){for(const[r,n]of s.entries())if(!(!n||n!==e)){s.splice(r,1),s.length||this._listeners.delete(t);return}}}dispatchEvent(t){return t?(it.events("Dispatched Event",t.type),this.processEvent(t),!0):!1}processEvent(t){const e=this._listeners.get(t.type);if(!e||!e.length)return;const s=[];for(const r of e)r&&s.push(r);for(;s.length;){const r=s.shift();try{r(t)}catch(n){it.error(n.stack);return}}}removeAllListeners(){this._listeners.clear()}}const Ret=new Fx,M=()=>Ret,Je=class Je{};Je.CONFIG_LOADED="CONFIG_LOADED",Je.CONFIG_FAILED="CONFIG_FAILED",Je.LOCALIZATION_LOADED="LOCALIZATION_LOADED",Je.LOCALIZATION_FAILED="LOCALIZATION_FAILED",Je.SOCKET_OPENED="SOCKET_OPENED",Je.SOCKET_CLOSED="SOCKET_CLOSED",Je.SOCKET_ERROR="SOCKET_ERROR",Je.SOCKET_CONNECTED="SOCKET_CONNECTED",Je.AVATAR_ASSET_DOWNLOADED="AVATAR_ASSET_DOWNLOADED",Je.AVATAR_ASSET_LOADED="AVATAR_ASSET_LOADED",Je.AVATAR_EFFECT_DOWNLOADED="AVATAR_EFFECT_DOWNLOADED",Je.AVATAR_EFFECT_LOADED="AVATAR_EFFECT_LOADED",Je.FURNITURE_DATA_LOADED="FURNITURE_DATA_LOADED";let Qe=Je;class Xt{constructor(t){this._type=t}get type(){return this._type}}const jg=class jg extends Xt{constructor(t){super(t)}};jg.LOADED="NCE_LOADED",jg.FAILED="NCE_FAILED";let ZT=jg;class R{constructor(t,e){this._callBack=t,this._parserClass=e,this._parser=null,this._connection=null}dispose(){this._callBack=null,this._parserClass=null,this._parser=null,this._connection=null}get callBack(){return this._callBack}get parserClass(){return this._parserClass}get parser(){return this._parser}set parser(t){this._parser=t}get connection(){return this._connection}set connection(t){this._connection=t}}const Io=class Io extends Xt{constructor(t,e,s){super(t),this._connection=e,this._originalEvent=event}get connection(){return this._connection}get originalEvent(){return this._originalEvent}};Io.CONNECTION_OPENED="SCE_OPEN",Io.CONNECTION_CLOSED="SCE_CLOSED",Io.CONNECTION_ERROR="SCE_ERROR",Io.CONNECTION_MESSAGE="SCE_MESSAGE";let JT=Io;const hl=class hl extends Xt{constructor(){super(hl.SETTINGS_UPDATED)}clone(){const t=new hl;return t._volumeSystem=this._volumeSystem,t._volumeFurni=this._volumeFurni,t._volumeTrax=this._volumeTrax,t._oldChat=this._oldChat,t._roomInvites=this._roomInvites,t._cameraFollow=this._cameraFollow,t._flags=this._flags,t._chatType=this._chatType,t}get volumeSystem(){return this._volumeSystem}set volumeSystem(t){this._volumeSystem=t}get volumeFurni(){return this._volumeFurni}set volumeFurni(t){this._volumeFurni=t}get volumeTrax(){return this._volumeTrax}set volumeTrax(t){this._volumeTrax=t}get oldChat(){return this._oldChat}set oldChat(t){this._oldChat=t}get roomInvites(){return this._roomInvites}set roomInvites(t){this._roomInvites=t}get cameraFollow(){return this._cameraFollow}set cameraFollow(t){this._cameraFollow=t}get flags(){return this._flags}set flags(t){this._flags=t}get chatType(){return this._chatType}set chatType(t){this._chatType=t}};hl.SETTINGS_UPDATED="NSE_SETTINGS_UPDATED";let nu=hl;const F0=class F0 extends Xt{constructor(t,e){super(t),this._sampleCode=e}get sampleCode(){return this._sampleCode}};F0.PLAY_SOUND="NSOE_PLAY_SOUND";let lh=F0;const Kg=class Kg extends Xt{constructor(t){super(t)}get iconId(){return this._iconId}set iconId(t){this._iconId=t}get iconName(){return this._iconName}set iconName(t){this._iconName=t}};Kg.TOOLBAR_CLICK="NTE_TOOLBAR_CLICK",Kg.SELECT_OWN_AVATAR="NTE_SELECT_OWN_AVATAR";let O_=Kg;const Xg=class Xg extends O_{constructor(t,e,s){super(Xg.ANIMATE_ICON),this._image=t,this._x=e,this._y=s}get image(){return this._image}get x(){return this._x}get y(){return this._y}};Xg.ANIMATE_ICON="NTAIE_ANIMATE_ICON";let hh=Xg;const w0=class w0 extends Xt{constructor(t,e){super(t),this._library=e}get library(){return this._library}};w0.DOWNLOAD_COMPLETE="ARELE_DOWNLOAD_COMPLETE";let y_=w0;const G0=class G0 extends Xt{constructor(t,e){super(t),this._library=e}get library(){return this._library}};G0.DOWNLOAD_COMPLETE="ARLE_DOWNLOAD_COMPLETE";let v_=G0;const B0=class B0 extends Xt{constructor(t){super(t)}};B0.INITIALIZED="RCWM_INITIALIZED";let ch=B0;const dr=class dr extends Xt{constructor(t,e){super(t),this._connection=e}get connection(){return this._connection}};dr.CONNECTION_ESTABLISHED="NCE_ESTABLISHED",dr.CONNECTION_CLOSED="NCE_CLOSED",dr.CONNECTION_ERROR="NCE_ERROR",dr.CONNECTION_HANDSHAKING="NCE_HANDSHAKING",dr.CONNECTION_HANDSHAKED="NCE_HANDSHAKED",dr.CONNECTION_HANDSHAKE_FAILED="NCE_HANDSHAKE_FAILED",dr.CONNECTION_AUTHENTICATED="NCE_AUTHENTICATED";let tI=dr;const fr=class fr extends Xt{constructor(t,e){super(t),this._roomId=e}get roomId(){return this._roomId}};fr.INITIALIZED="REE_INITIALIZED",fr.ENGINE_INITIALIZED="REE_ENGINE_INITIALIZED",fr.OBJECTS_INITIALIZED="REE_OBJECTS_INITIALIZED",fr.NORMAL_MODE="REE_NORMAL_MODE",fr.GAME_MODE="REE_GAME_MODE",fr.ROOM_ZOOMED="REE_ROOM_ZOOMED",fr.DISPOSED="REE_DISPOSED";let ae=fr;const qg=class qg extends ae{constructor(t,e,s,r){super(qg.ROOM_COLOR,t),this._color=e,this._brightness=s,this._bgOnly=r}get color(){return this._color}get brightness(){return this._brightness}get bgOnly(){return this._bgOnly}};qg.ROOM_COLOR="REE_ROOM_COLOR";let C_=qg;const cl=class cl extends Xt{constructor(t,e){super(t),this._contentType=e}get contentType(){return this._contentType}};cl.RCLE_SUCCESS="RCLE_SUCCESS",cl.RCLE_FAILURE="RCLE_FAILURE",cl.RCLE_CANCEL="RCLE_CANCEL";let Ts=cl;const $g=class $g extends ae{constructor(t,e,s){super($g.ROOM_DRAG,t),this._offsetX=e,this._offsetY=s}get offsetX(){return this._offsetX}get offsetY(){return this._offsetY}};$g.ROOM_DRAG="RDE_ROOM_DRAG";let M_=$g;const ts=class ts extends ae{constructor(t,e,s,r){super(t,e),this._objectId=s,this._category=r}get objectId(){return this._objectId}get category(){return this._category}};ts.SELECTED="REOE_SELECTED",ts.DESELECTED="REOE_DESELECTED",ts.ADDED="REOE_ADDED",ts.REMOVED="REOE_REMOVED",ts.PLACED="REOE_PLACED",ts.PLACED_ON_USER="REOE_PLACED_ON_USER",ts.CONTENT_UPDATED="REOE_CONTENT_UPDATED",ts.REQUEST_MOVE="REOE_REQUEST_MOVE",ts.REQUEST_ROTATE="REOE_REQUEST_ROTATE",ts.REQUEST_MANIPULATION="REOE_REQUEST_MANIPULATION",ts.MOUSE_ENTER="REOE_MOUSE_ENTER",ts.MOUSE_LEAVE="REOE_MOUSE_LEAVE",ts.DOUBLE_CLICK="REOE_DOUBLE_CLICK";let ht=ts;const Ft=class Ft extends ht{constructor(t,e,s,r,n=null){super(t,e,s,r),this._widget=n}get widget(){return this._widget}get contextMenu(){return this._widget}};Ft.OPEN_WIDGET="RETWE_OPEN_WIDGET",Ft.CLOSE_WIDGET="RETWE_CLOSE_WIDGET",Ft.OPEN_FURNI_CONTEXT_MENU="RETWE_OPEN_FURNI_CONTEXT_MENU",Ft.CLOSE_FURNI_CONTEXT_MENU="RETWE_CLOSE_FURNI_CONTEXT_MENU",Ft.REQUEST_PLACEHOLDER="RETWE_REQUEST_PLACEHOLDER",Ft.REQUEST_CREDITFURNI="RETWE_REQUEST_CREDITFURNI",Ft.REQUEST_STACK_HEIGHT="RETWE_REQUEST_STACK_HEIGHT",Ft.REQUEST_EXTERNAL_IMAGE="RETWE_REQUEST_EXTERNAL_IMAGE",Ft.REQUEST_STICKIE="RETWE_REQUEST_STICKIE",Ft.REQUEST_PRESENT="RETWE_REQUEST_PRESENT",Ft.REQUEST_TROPHY="RETWE_REQUEST_TROPHY",Ft.REQUEST_TEASER="RETWE_REQUEST_TEASER",Ft.REQUEST_ECOTRONBOX="RETWE_REQUEST_ECOTRONBOX",Ft.REQUEST_DIMMER="RETWE_REQUEST_DIMMER",Ft.REMOVE_DIMMER="RETWE_REMOVE_DIMMER",Ft.REQUEST_CLOTHING_CHANGE="RETWE_REQUEST_CLOTHING_CHANGE",Ft.REQUEST_PLAYLIST_EDITOR="RETWE_REQUEST_PLAYLIST_EDITOR",Ft.REQUEST_MANNEQUIN="RETWE_REQUEST_MANNEQUIN",Ft.REQUEST_MONSTERPLANT_SEED_PLANT_CONFIRMATION_DIALOG="ROWRE_REQUEST_MONSTERPLANT_SEED_PLANT_CONFIRMATION_DIALOG",Ft.REQUEST_PURCHASABLE_CLOTHING_CONFIRMATION_DIALOG="ROWRE_REQUEST_PURCHASABLE_CLOTHING_CONFIRMATION_DIALOG",Ft.REQUEST_BACKGROUND_COLOR="RETWE_REQUEST_BACKGROUND_COLOR",Ft.REQUEST_AREA_HIDE="RETWE_REQUEST_AREA_HIDE",Ft.REQUEST_MYSTERYBOX_OPEN_DIALOG="RETWE_REQUEST_MYSTERYBOX_OPEN_DIALOG",Ft.REQUEST_EFFECTBOX_OPEN_DIALOG="RETWE_REQUEST_EFFECTBOX_OPEN_DIALOG",Ft.REQUEST_MYSTERYTROPHY_OPEN_DIALOG="RETWE_REQUEST_MYSTERYTROPHY_OPEN_DIALOG",Ft.REQUEST_ACHIEVEMENT_RESOLUTION_ENGRAVING="RETWE_REQUEST_ACHIEVEMENT_RESOLUTION_ENGRAVING",Ft.REQUEST_ACHIEVEMENT_RESOLUTION_FAILED="RETWE_REQUEST_ACHIEVEMENT_RESOLUTION_FAILED",Ft.REQUEST_FRIEND_FURNITURE_CONFIRM="RETWE_REQUEST_FRIEND_FURNITURE_CONFIRM",Ft.REQUEST_FRIEND_FURNITURE_ENGRAVING="RETWE_REQUEST_FRIEND_FURNITURE_ENGRAVING",Ft.REQUEST_BADGE_DISPLAY_ENGRAVING="RETWE_REQUEST_BADGE_DISPLAY_ENGRAVING",Ft.REQUEST_HIGH_SCORE_DISPLAY="RETWE_REQUEST_HIGH_SCORE_DISPLAY",Ft.REQUEST_HIDE_HIGH_SCORE_DISPLAY="RETWE_REQUEST_HIDE_HIGH_SCORE_DISPLAY",Ft.REQUEST_INTERNAL_LINK="RETWE_REQUEST_INTERNAL_LINK",Ft.REQUEST_ROOM_LINK="RETWE_REQUEST_ROOM_LINK",Ft.REQUEST_YOUTUBE="RETWE_REQUEST_YOUTUBE";let Z=Ft;const Qg=class Qg extends Z{constructor(t,e,s,r){super(Qg.UPDATE_STATE_AREA_HIDE,t,e,s),this._isOn=r}get isOn(){return this._isOn}};Qg.UPDATE_STATE_AREA_HIDE="REAHSE_UPDATE_STATE_AREA_HIDE";let x_=Qg;const Zg=class Zg extends ae{constructor(t,e,s,r,n,a){super(Zg.ROOM_COLOR,t),this._state=e,this._presetId=s,this._effectId=r,this._color=n,this._brightness=a}get state(){return this._state}get presetId(){return this._presetId}get effectId(){return this._effectId}get color(){return this._color}get brightness(){return this._brightness}};Zg.ROOM_COLOR="REDSE_ROOM_COLOR";let P_=Zg;class wx extends ht{constructor(t,e,s,r,n,a,o,u,l,c,h,_,d){super(t,e,s,r),this._wallLocation="",this._x=0,this._y=0,this._z=0,this._direction=0,this._placedInRoom=!1,this._placedOnFloor=!1,this._placedOnWall=!1,this._instanceData=null,this._wallLocation=n,this._x=a,this._y=o,this._z=u,this._direction=l,this._placedInRoom=c,this._placedOnFloor=h,this._placedOnWall=_,this._instanceData=d}get wallLocation(){return this._wallLocation}get x(){return this._x}get y(){return this._y}get z(){return this._z}get direction(){return this._direction}get placedInRoom(){return this._placedInRoom}get placedOnFloor(){return this._placedOnFloor}get placedOnWall(){return this._placedOnWall}get instanceData(){return this._instanceData}}class Gx extends ht{constructor(t,e,s,r,n,a){super(t,e,s,r),this._droppedObjectId=n,this._droppedObjectCategory=a}get droppedObjectId(){return this._droppedObjectId}get droppedObjectCategory(){return this._droppedObjectCategory}}const Jg=class Jg extends ht{constructor(t,e,s,r,n,a=1){super(t,e,s,r),this._soundId=n,this._pitch=a}get soundId(){return this._soundId}get pitch(){return this._pitch}};Jg.PLAY_SOUND="REOPSE_PLAY_SOUND",Jg.PLAY_SOUND_AT_PITCH="REOPSE_PLAY_SOUND_AT_PITCH";let Ra=Jg;const So=class So extends ht{};So.FURNI_CLICK="RERAE_FURNI_CLICK",So.FURNI_DOUBLE_CLICK="RERAE_FURNI_DOUBLE_CLICK",So.TOOLTIP_SHOW="RERAE_TOOLTIP_SHOW",So.TOOLTIP_HIDE="RERAE_TOOLTIP_HIDE";let Aa=So;const Ro=class Ro extends ht{constructor(t,e,s,r,n,a=1){super(t,e,s,r),this._sampleId=n,this._pitch=a}get sampleId(){return this._sampleId}get pitch(){return this._pitch}};Ro.ROOM_OBJECT_INITIALIZED="ROPSPE_ROOM_OBJECT_INITIALIZED",Ro.ROOM_OBJECT_DISPOSED="ROPSPE_ROOM_OBJECT_DISPOSED",Ro.PLAY_SAMPLE="ROPSPE_PLAY_SAMPLE",Ro.CHANGE_PITCH="ROPSPE_CHANGE_PITCH";let Ds=Ro;const tp=class tp extends ht{constructor(t,e,s,r,n=-1,a=-1){super(t,e,s,r),this._inventoryStripId=n,this._furnitureTypeId=a}get inventoryStripId(){return this._inventoryStripId}get furnitureTypeId(){return this._furnitureTypeId}};tp.USE_PRODUCT_FROM_ROOM="REUPE_USE_PRODUCT_FROM_ROOM",tp.USE_PRODUCT_FROM_INVENTORY="REUPE_USE_PRODUCT_FROM_INVENTORY";let _h=tp;class zs extends Xt{constructor(t,e){super(t),this._object=e}get object(){return this._object}get objectId(){return this._object?this._object.id:-1}get objectType(){return this._object?this._object.type:null}}const k0=class k0 extends zs{constructor(t,e,s,r=!0){super(t,e),this._badgeId=s,this._groupBadge=r}get badgeId(){return this._badgeId}get groupBadge(){return this._groupBadge}};k0.LOAD_BADGE="ROBAE_LOAD_BADGE";let ri=k0;const ep=class ep extends zs{constructor(t,e){super(t,e)}};ep.RODRE_CURRENT_USER_ID="RODRE_CURRENT_USER_ID",ep.RODRE_URL_PREFIX="RODRE_URL_PREFIX";let ws=ep;const sp=class sp extends zs{constructor(t,e,s,r,n,a){super(sp.DIMMER_STATE,t),this._state=e,this._presetId=s,this._effectId=r,this._color=n,this._brightness=a}get state(){return this._state}get presetId(){return this._presetId}get effectId(){return this._effectId}get color(){return this._color}get brightness(){return this._brightness}};sp.DIMMER_STATE="RODSUE_DIMMER_STATE";let yn=sp;const ip=class ip extends zs{constructor(t,e){super(t,e)}};ip.ADD_HOLE="ROFHO_ADD_HOLE",ip.REMOVE_HOLE="ROFHO_REMOVE_HOLE";let Xe=ip;const Ye=class Ye extends zs{};Ye.DICE_OFF="ROFCAE_DICE_OFF",Ye.DICE_ACTIVATE="ROFCAE_DICE_ACTIVATE",Ye.USE_HABBOWHEEL="ROFCAE_USE_HABBOWHEEL",Ye.STICKIE="ROFCAE_STICKIE",Ye.ENTER_ONEWAYDOOR="ROFCAE_ENTER_ONEWAYDOOR",Ye.SOUND_MACHINE_INIT="ROFCAE_SOUND_MACHINE_INIT",Ye.SOUND_MACHINE_START="ROFCAE_SOUND_MACHINE_START",Ye.SOUND_MACHINE_STOP="ROFCAE_SOUND_MACHINE_STOP",Ye.SOUND_MACHINE_DISPOSE="ROFCAE_SOUND_MACHINE_DISPOSE",Ye.JUKEBOX_INIT="ROFCAE_JUKEBOX_INIT",Ye.JUKEBOX_START="ROFCAE_JUKEBOX_START",Ye.JUKEBOX_MACHINE_STOP="ROFCAE_JUKEBOX_MACHINE_STOP",Ye.JUKEBOX_DISPOSE="ROFCAE_JUKEBOX_DISPOSE",Ye.MOUSE_BUTTON="ROFCAE_MOUSE_BUTTON",Ye.MOUSE_ARROW="ROFCAE_MOUSE_ARROW";let z=Ye;const z0=class z0 extends zs{constructor(t,e,s,r,n,a){super(t,e),this._enable=s,this._hue=r,this._saturation=n,this._lightness=a}get enable(){return this._enable}get hue(){return this._hue}get saturation(){return this._saturation}get lightness(){return this._lightness}};z0.ROOM_BACKGROUND_COLOR="ROHSLCEE_ROOM_BACKGROUND_COLOR";let Xi=z0;const V0=class V0 extends ae{constructor(t,e,s,r,n,a){super(t,e),this._enable=s,this._hue=r,this._saturation=n,this._lightness=a}get enable(){return this._enable}get hue(){return this._hue}get saturation(){return this._saturation}get lightness(){return this._lightness}};V0.ROOM_BACKGROUND_COLOR="ROHSLCEE_ROOM_BACKGROUND_COLOR";let dh=V0;const Ni=class Ni extends zs{constructor(t,e,s,r=!1,n=!1,a=!1,o=!1){super(t,e),this._eventId="",this._eventId=s,this._altKey=r,this._ctrlKey=n,this._shiftKey=a,this._buttonDown=o}get eventId(){return this._eventId}get altKey(){return this._altKey}get ctrlKey(){return this._ctrlKey}get shiftKey(){return this._shiftKey}get buttonDown(){return this._buttonDown}get localX(){return this._localX}set localX(t){this._localX=t}get localY(){return this._localY}set localY(t){this._localY=t}get spriteOffsetX(){return this._spriteOffsetX}set spriteOffsetX(t){this._spriteOffsetX=t}get spriteOffsetY(){return this._spriteOffsetY}set spriteOffsetY(t){this._spriteOffsetY=t}};Ni.CLICK="ROE_MOUSE_CLICK",Ni.DOUBLE_CLICK="ROE_MOUSE_DOUBLE_CLICK",Ni.MOUSE_MOVE="ROE_MOUSE_MOVE",Ni.MOUSE_DOWN="ROE_MOUSE_DOWN",Ni.MOUSE_DOWN_LONG="ROE_MOUSE_DOWN_LONG",Ni.MOUSE_UP="ROE_MOUSE_UP",Ni.MOUSE_ENTER="ROE_MOUSE_ENTER",Ni.MOUSE_LEAVE="ROE_MOUSE_LEAVE";let at=Ni;const rp=class rp extends zs{constructor(t,e){super(t,e)}};rp.POSITION_CHANGED="ROME_POSITION_CHANGED",rp.OBJECT_REMOVED="ROME_OBJECT_REMOVED";let $e=rp;const np=class np extends z{constructor(t,e,s,r=1){super(t,e),this._soundId=s,this._pitch=r}get soundId(){return this._soundId}get pitch(){return this._pitch}};np.PLAY_SOUND="ROPSIE_PLAY_SOUND",np.PLAY_SOUND_AT_PITCH="ROPSIE_PLAY_SOUND_AT_PITCH";let Qi=np;const na=class na extends zs{constructor(t,e,s="",r=""){super(t,e),this._imageUrl="",this._clickUrl="",this._imageUrl=s,this._clickUrl=r}get imageUrl(){return this._imageUrl}get clickUrl(){return this._clickUrl}};na.ROOM_AD_LOAD_IMAGE="RORAE_ROOM_AD_LOAD_IMAGE",na.ROOM_AD_FURNI_CLICK="RORAE_ROOM_AD_FURNI_CLICK",na.ROOM_AD_FURNI_DOUBLE_CLICK="RORAE_ROOM_AD_FURNI_DOUBLE_CLICK",na.ROOM_AD_TOOLTIP_SHOW="RORAE_ROOM_AD_TOOLTIP_SHOW",na.ROOM_AD_TOOLTIP_HIDE="RORAE_ROOM_AD_TOOLTIP_HIDE";let te=na;const Ao=class Ao extends zs{constructor(t,e,s,r=1){super(t,e),this._sampleId=s,this._pitch=r}get sampleId(){return this._sampleId}get pitch(){return this._pitch}};Ao.ROOM_OBJECT_INITIALIZED="ROPSPE_ROOM_OBJECT_INITIALIZED",Ao.ROOM_OBJECT_DISPOSED="ROPSPE_ROOM_OBJECT_DISPOSED",Ao.PLAY_SAMPLE="ROPSPE_PLAY_SAMPLE",Ao.CHANGE_PITCH="ROPSPE_CHANGE_PITCH";let Ee=Ao;const Ui=class Ui extends ht{};Ui.SOUND_MACHINE_INIT="ROSM_SOUND_MACHINE_INIT",Ui.SOUND_MACHINE_SWITCHED_ON="ROSM_SOUND_MACHINE_SWITCHED_ON",Ui.SOUND_MACHINE_SWITCHED_OFF="ROSM_SOUND_MACHINE_SWITCHED_OFF",Ui.SOUND_MACHINE_DISPOSE="ROSM_SOUND_MACHINE_DISPOSE",Ui.JUKEBOX_INIT="ROSM_JUKEBOX_INIT",Ui.JUKEBOX_SWITCHED_ON="ROSM_JUKEBOX_SWITCHED_ON",Ui.JUKEBOX_SWITCHED_OFF="ROSM_JUKEBOX_SWITCHED_OFF",Ui.JUKEBOX_DISPOSE="ROSM_JUKEBOX_DISPOSE";let ie=Ui;const ap=class ap extends zs{constructor(t,e,s=0){super(t,e),this._state=s}get state(){return this._state}};ap.STATE_CHANGE="ROSCE_STATE_CHANGE",ap.STATE_RANDOM="ROSCE_STATE_RANDOM";let St=ap;class ui extends at{constructor(t,e,s,r,n,a,o=!1,u=!1,l=!1,c=!1){super(t,e,s,o,u,l,c),this._tileX=r,this._tileY=n,this._tileZ=a}get tileX(){return this._tileX}get tileY(){return this._tileY}get tileZ(){return this._tileZ}get tileXAsInt(){return Math.trunc(this._tileX+.499)}get tileYAsInt(){return Math.trunc(this._tileY+.499)}get tileZAsInt(){return Math.trunc(this._tileZ+.499)}}class Xn extends at{constructor(t,e,s,r,n,a,o,u,l,c=!1,h=!1,_=!1,d=!1){super(t,e,s,c,h,_,d),this._wallLocation=new v,this._wallWd=new v,this._wallHt=new v,this._wallLocation.assign(r),this._wallWd.assign(n),this._wallHt.assign(a),this._x=o,this._y=u,this._direction=l}get wallLocation(){return this._wallLocation}get wallWidth(){return this._wallWd}get wallHeight(){return this._wallHt}get x(){return this._x}get y(){return this._y}get direction(){return this._direction}}const Ct=class Ct extends zs{constructor(t,e){super(t,e)}};Ct.OPEN_WIDGET="ROWRE_OPEN_WIDGET",Ct.CLOSE_WIDGET="ROWRE_CLOSE_WIDGET",Ct.OPEN_FURNI_CONTEXT_MENU="ROWRE_OPEN_FURNI_CONTEXT_MENU",Ct.CLOSE_FURNI_CONTEXT_MENU="ROWRE_CLOSE_FURNI_CONTEXT_MENU",Ct.PLACEHOLDER="ROWRE_PLACEHOLDER",Ct.CREDITFURNI="ROWRE_CREDITFURNI",Ct.STACK_HEIGHT="ROWRE_STACK_HEIGHT",Ct.EXTERNAL_IMAGE="ROWRE_EXTERNAL_IMAGE",Ct.STICKIE="ROWRE_STICKIE",Ct.PRESENT="ROWRE_PRESENT",Ct.TROPHY="ROWRE_TROPHY",Ct.TEASER="ROWRE_TEASER",Ct.ECOTRONBOX="ROWRE_ECOTRONBOX",Ct.DIMMER="ROWRE_DIMMER",Ct.WIDGET_REMOVE_DIMMER="ROWRE_WIDGET_REMOVE_DIMMER",Ct.CLOTHING_CHANGE="ROWRE_CLOTHING_CHANGE",Ct.JUKEBOX_PLAYLIST_EDITOR="ROWRE_JUKEBOX_PLAYLIST_EDITOR",Ct.MANNEQUIN="ROWRE_MANNEQUIN",Ct.PET_PRODUCT_MENU="ROWRE_PET_PRODUCT_MENU",Ct.GUILD_FURNI_CONTEXT_MENU="ROWRE_GUILD_FURNI_CONTEXT_MENU",Ct.MONSTERPLANT_SEED_PLANT_CONFIRMATION_DIALOG="ROWRE_MONSTERPLANT_SEED_PLANT_CONFIRMATION_DIALOG",Ct.PURCHASABLE_CLOTHING_CONFIRMATION_DIALOG="ROWRE_PURCHASABLE_CLOTHING_CONFIRMATION_DIALOG",Ct.BACKGROUND_COLOR="ROWRE_BACKGROUND_COLOR",Ct.AREA_HIDE="ROWRE_AREA_HIDE",Ct.MYSTERYBOX_OPEN_DIALOG="ROWRE_MYSTERYBOX_OPEN_DIALOG",Ct.EFFECTBOX_OPEN_DIALOG="ROWRE_EFFECTBOX_OPEN_DIALOG",Ct.MYSTERYTROPHY_OPEN_DIALOG="ROWRE_MYSTERYTROPHY_OPEN_DIALOG",Ct.ACHIEVEMENT_RESOLUTION_OPEN="ROWRE_ACHIEVEMENT_RESOLUTION_OPEN",Ct.ACHIEVEMENT_RESOLUTION_ENGRAVING="ROWRE_ACHIEVEMENT_RESOLUTION_ENGRAVING",Ct.ACHIEVEMENT_RESOLUTION_FAILED="ROWRE_ACHIEVEMENT_RESOLUTION_FAILED",Ct.FRIEND_FURNITURE_CONFIRM="ROWRE_FRIEND_FURNITURE_CONFIRM",Ct.FRIEND_FURNITURE_ENGRAVING="ROWRE_FRIEND_FURNITURE_ENGRAVING",Ct.BADGE_DISPLAY_ENGRAVING="ROWRE_BADGE_DISPLAY_ENGRAVING",Ct.HIGH_SCORE_DISPLAY="ROWRE_HIGH_SCORE_DISPLAY",Ct.HIDE_HIGH_SCORE_DISPLAY="ROWRE_HIDE_HIGH_SCORE_DISPLAY",Ct.INERNAL_LINK="ROWRE_INTERNAL_LINK",Ct.ROOM_LINK="ROWRE_ROOM_LINK",Ct.YOUTUBE="ROWRE_YOUTUBE";let b=Ct;class Bx{constructor(t,e,s,r,n,a,o=0,u=0,l=!1,c=!1,h=!1,_=!1){this._type=t,this._eventId=e,this._canvasId=s,this._spriteTag=r,this._screenX=n,this._screenY=a,this._localX=o,this._localY=u,this._ctrlKey=l,this._altKey=c,this._shiftKey=h,this._buttonDown=_,this._spriteOffsetX=0,this._spriteOffsetY=0}get type(){return this._type}get eventId(){return this._eventId}get canvasId(){return this._canvasId}get spriteTag(){return this._spriteTag}get screenX(){return this._screenX}get screenY(){return this._screenY}get localX(){return this._localX}get localY(){return this._localY}get ctrlKey(){return this._ctrlKey}get altKey(){return this._altKey}get shiftKey(){return this._shiftKey}get buttonDown(){return this._buttonDown}get spriteOffsetX(){return this._spriteOffsetX}set spriteOffsetX(t){this._spriteOffsetX=t}get spriteOffsetY(){return this._spriteOffsetY}set spriteOffsetY(t){this._spriteOffsetY=t}}class kx extends Xt{constructor(t){super(t)}}const H0=class H0 extends kx{constructor(t,e){super(t),this._targetLocation=e}get targetLocation(){return this._targetLocation}};H0.ROAME_MOVE_TO="ROAME_MOVE_TO";let za=H0;const op=class op extends ae{constructor(t,e,s=!1){super(op.ROOM_ZOOM,t),this._level=e,this._isFlipForced=s}get level(){return this._level}get isFlipForced(){return this._isFlipForced}};op.ROOM_ZOOM="REE_ROOM_ZOOM";let eI=op;const up=class up extends Xt{constructor(t,e){super(up.IMAGE_READY),this._badgeId=t,this._image=e}get badgeId(){return this._badgeId}get image(){return this._image}};up.IMAGE_READY="BIME_BADGE_IMAGE_READY";let Va=up;const lp=class lp extends Xt{constructor(t,e){super(lp.MYSTERY_BOX_KEYS_UPDATE),this._boxColor=t,this._keyColor=e}get boxColor(){return this._boxColor}get keyColor(){return this._keyColor}};lp.MYSTERY_BOX_KEYS_UPDATE="mbke_update";let b_=lp;const hp=class hp extends Xt{constructor(){super(hp.PERKS_UPDATED)}};hp.PERKS_UPDATED="PUE_perks_updated";let sI=hp;const Oo=class Oo extends Xt{constructor(t,e,s=!0){super(t),this._session=e,this._openLandingView=s}get session(){return this._session}get openLandingView(){return this._openLandingView}};Oo.CREATED="RSE_CREATED",Oo.STARTED="RSE_STARTED",Oo.ENDED="RSE_ENDED",Oo.ROOM_DATA="RSE_ROOM_DATA";let ft=Oo;const es=class es extends ft{constructor(t,e,s,r,n,a=0,o=null,u=-1){super(t,e),this._objectId=s,this._message=r,this._chatType=n,this._links=o,this._extraParam=u,this._style=a}get objectId(){return this._objectId}get message(){return this._message}get chatType(){return this._chatType}get links(){return this._links}get extraParam(){return this._extraParam}get style(){return this._style}};es.CHAT_EVENT="RSCE_CHAT_EVENT",es.FLOOD_EVENT="RSCE_FLOOD_EVENT",es.CHAT_TYPE_SPEAK=0,es.CHAT_TYPE_WHISPER=1,es.CHAT_TYPE_SHOUT=2,es.CHAT_TYPE_RESPECT=3,es.CHAT_TYPE_PETRESPECT=4,es.CHAT_TYPE_HAND_ITEM_RECEIVED=5,es.CHAT_TYPE_PETTREAT=6,es.CHAT_TYPE_PETREVIVE=7,es.CHAT_TYPE_PET_REBREED_FERTILIZE=8,es.CHAT_TYPE_PET_SPEED_FERTILIZE=9,es.CHAT_TYPE_MUTE_REMAINING=10;let Jt=es;const cp=class cp extends ft{constructor(t,e,s,r,n,a){super(cp.CONFIRM_PET_BREEDING,t),this._nestId=e,this._pet1=s,this._pet2=r,this._rarityCategories=n,this._resultPetTypeId=a}get nestId(){return this._nestId}get pet1(){return this._pet1}get pet2(){return this._pet2}get rarityCategories(){return this._rarityCategories}get resultPetTypeId(){return this._resultPetTypeId}};cp.CONFIRM_PET_BREEDING="RSPFUE_CONFIRM_PET_BREEDING";let N_=cp;const _p=class _p extends ft{constructor(t,e,s){super(_p.RSPFUE_CONFIRM_PET_BREEDING_RESULT,t),this._breedingNestStuffId=e,this._result=s}get breedingNestStuffId(){return this._breedingNestStuffId}get result(){return this._result}};_p.RSPFUE_CONFIRM_PET_BREEDING_RESULT="RSPFUE_CONFIRM_PET_BREEDING_RESULT";let U_=_p;const dp=class dp extends ft{constructor(t,e,s){super(dp.RSDE_DANCE,t),this._roomIndex=e,this._danceId=s}get roomIndex(){return this._roomIndex}get danceId(){return this._danceId}};dp.RSDE_DANCE="RSDE_DANCE";let D_=dp;class zx{constructor(t,e,s,r){this._id=t,this._type=e,this._color=s,this._brightness=r}get id(){return this._id}get type(){return this._type}get color(){return this._color}get brightness(){return this._brightness}}const Y0=class Y0 extends ft{constructor(t,e){super(t,e),this._selectedPresetId=0,this._presets=[]}storePreset(t,e,s,r){this._presets[t-1]=new zx(t,e,s,r)}getPreset(t){return t<0||t>=this._presets.length?null:this._presets[t]}get presetCount(){return this._presets.length}get selectedPresetId(){return this._selectedPresetId}set selectedPresetId(t){this._selectedPresetId=t}};Y0.ROOM_DIMMER_PRESETS="RSDPE_PRESETS";let fh=Y0;const _l=class _l extends ft{constructor(t,e,s){super(t,e),this._userName="",this._userName=s}get userName(){return this._userName}};_l.DOORBELL="RSDE_DOORBELL",_l.RSDE_REJECTED="RSDE_REJECTED",_l.RSDE_ACCEPTED="RSDE_ACCEPTED";let Ur=_l;const ds=class ds extends ft{constructor(t,e,s=null){super(t,e),this._message=s}get message(){return this._message}};ds.RSEME_KICKED="RSEME_KICKED",ds.RSEME_PETS_FORBIDDEN_IN_HOTEL="RSEME_PETS_FORBIDDEN_IN_HOTEL",ds.RSEME_PETS_FORBIDDEN_IN_FLAT="RSEME_PETS_FORBIDDEN_IN_FLAT",ds.RSEME_MAX_PETS="RSEME_MAX_PETS",ds.RSEME_MAX_NUMBER_OF_OWN_PETS="RSEME_MAX_NUMBER_OF_OWN_PETS",ds.RSEME_NO_FREE_TILES_FOR_PET="RSEME_NO_FREE_TILES_FOR_PET",ds.RSEME_SELECTED_TILE_NOT_FREE_FOR_PET="RSEME_SELECTED_TILE_NOT_FREE_FOR_PET",ds.RSEME_BOTS_FORBIDDEN_IN_HOTEL="RSEME_BOTS_FORBIDDEN_IN_HOTEL",ds.RSEME_BOTS_FORBIDDEN_IN_FLAT="RSEME_BOTS_FORBIDDEN_IN_FLAT",ds.RSEME_BOT_LIMIT_REACHED="RSEME_BOT_LIMIT_REACHED",ds.RSEME_SELECTED_TILE_NOT_FREE_FOR_BOT="RSEME_SELECTED_TILE_NOT_FREE_FOR_BOT",ds.RSEME_BOT_NAME_NOT_ACCEPTED="RSEME_BOT_NAME_NOT_ACCEPTED";let ke=ds;const fp=class fp extends ft{constructor(t,e,s,r,n){super(fp.FAVOURITE_GROUP_UPDATE,t),this._roomIndex=e,this._habboGroupId=s,this._habboGroupName=n,this._status=r}get roomIndex(){return this._roomIndex}get habboGroupId(){return this._habboGroupId}get habboGroupName(){return this._habboGroupName}get status(){return this._status}};fp.FAVOURITE_GROUP_UPDATE="RSFGUE_FAVOURITE_GROUP_UPDATE";let L_=fp;const gp=class gp extends ft{constructor(t,e,s,r){super(gp.RSFRE_FRIEND_REQUEST,t),this._requestId=0,this._userId=0,this._requestId=e,this._userId=s,this._userName=r}get requestId(){return this._requestId}get userId(){return this._userId}get userName(){return this._userName}};gp.RSFRE_FRIEND_REQUEST="RSFRE_FRIEND_REQUEST";let F_=gp;const pp=class pp extends ft{constructor(t,e,s){super(pp.NEST_BREEDING_SUCCESS,t),this._petId=e,this._rarityCategory=s}get rarityCategory(){return this._rarityCategory}get petId(){return this._petId}};pp.NEST_BREEDING_SUCCESS="RSPFUE_NEST_BREEDING_SUCCESS";let w_=pp;const mp=class mp extends ft{constructor(t,e,s,r){super(mp.PET_BREEDING,t),this._state=e,this._ownPetId=s,this._otherPetId=r}get state(){return this._state}get ownPetId(){return this._ownPetId}get otherPetId(){return this._otherPetId}};mp.PET_BREEDING="RSPFUE_PET_BREEDING";let G_=mp;const Ep=class Ep extends ft{constructor(t,e,s){super(Ep.PET_BREEDING_RESULT,t),this._resultData=e,this._otherResultData=s}get resultData(){return this._resultData}get otherResultData(){return this._otherResultData}};Ep.PET_BREEDING_RESULT="RSPFUE_PET_BREEDING_RESULT";let B_=Ep;const Tp=class Tp extends ft{constructor(t,e,s,r){super(Tp.PET_COMMANDS,t),this._petId=e,this._allCommandIds=s,this._enabledCommandIds=r}get id(){return this._petId}get commands(){return this._allCommandIds}get enabledCommands(){return this._enabledCommandIds}};Tp.PET_COMMANDS="RSPIUE_ENABLED_PET_COMMANDS";let iI=Tp;const Ip=class Ip extends ft{constructor(t,e,s){super(Ip.PET_FIGURE_UPDATE,t),this._petId=e,this._figure=s}get id(){return this._petId}get figure(){return this._figure}};Ip.PET_FIGURE_UPDATE="RSPFUE_PET_FIGURE_UPDATE";let k_=Ip;const Sp=class Sp extends ft{constructor(t,e){super(Sp.PET_INFO,t),this._petInfo=e}get petInfo(){return this._petInfo}};Sp.PET_INFO="RSPIUE_PET_INFO";let z_=Sp;const Rp=class Rp extends ft{constructor(t,e,s){super(Rp.PET_LEVEL_UPDATE,t),this._petId=e,this._level=s}get petId(){return this._petId}get level(){return this._level}};Rp.PET_LEVEL_UPDATE="RSPLUE_PET_LEVEL_UPDATE";let V_=Rp;const Ap=class Ap extends ft{constructor(t,e,s,r,n,a){super(t,e),this._objectId=-1,this._nameValidationStatus=0,this._nameValidationInfo=null,this._objectId=s,this._figureData=r,this._nameValidationStatus=n,this._nameValidationInfo=a}get objectId(){return this._objectId}get figureData(){return this._figureData}get nameValidationStatus(){return this._nameValidationStatus}get nameValidationInfo(){return this._nameValidationInfo}};Ap.RSOPPE_OPEN_PET_PACKAGE_REQUESTED="RSOPPE_OPEN_PET_PACKAGE_REQUESTED",Ap.RSOPPE_OPEN_PET_PACKAGE_RESULT="RSOPPE_OPEN_PET_PACKAGE_RESULT";let Oa=Ap;const Op=class Op extends ft{constructor(t,e,s,r,n,a){super(Op.PET_STATUS_UPDATE,t),this._petId=e,this._canBreed=s,this._canHarvest=r,this._canRevive=n,this._hasBreedingPermission=a}get petId(){return this._petId}get canBreed(){return this._canBreed}get canHarvest(){return this._canHarvest}get canRevive(){return this._canRevive}get hasBreedingPermission(){return this._hasBreedingPermission}};Op.PET_STATUS_UPDATE="RSPFUE_PET_STATUS_UPDATE";let H_=Op;const dl=class dl extends ft{constructor(t,e,s){super(t,e),this._id=-1,this._numQuestions=0,this._startMessage="",this._endMessage="",this._questionArray=null,this._npsPoll=!1,this._id=s}get id(){return this._id}get headline(){return this._headline}set headline(t){this._headline=t}get summary(){return this._summary}set summary(t){this._summary=t}get numQuestions(){return this._numQuestions}set numQuestions(t){this._numQuestions=t}get startMessage(){return this._startMessage}set startMessage(t){this._startMessage=t}get endMessage(){return this._endMessage}set endMessage(t){this._endMessage=t}get questionArray(){return this._questionArray}set questionArray(t){this._questionArray=t}get npsPoll(){return this._npsPoll}set npsPoll(t){this._npsPoll=t}};dl.OFFER="RSPE_POLL_OFFER",dl.ERROR="RSPE_POLL_ERROR",dl.CONTENT="RSPE_POLL_CONTENT";let vr=dl;const W0=class W0 extends ft{constructor(t,e,s,r,n,a,o,u,l){super(t,e),this._classId=0,this._itemType="",this._placedItemId=0,this._placedItemType="",this._classId=s,this._itemType=r,this._productCode=n,this._placedItemId=a,this._placedItemType=o,this._placedInRoom=u,this._petFigureString=l}get classId(){return this._classId}get itemType(){return this._itemType}get productCode(){return this._productCode}get placedItemId(){return this._placedItemId}get placedInRoom(){return this._placedInRoom}get placedItemType(){return this._placedItemType}get petFigureString(){return this._petFigureString}};W0.RSPE_PRESENT_OPENED="RSPE_PRESENT_OPENED";let gh=W0;const j0=class j0 extends ft{constructor(t,e){super(t,e)}};j0.RSDUE_ALLOW_PETS="RSDUE_ALLOW_PETS";let ph=j0;const nn=class nn extends ft{constructor(t,e,s,r=!1){super(nn.QUEUE_STATUS,t),this._name=e,this._target=s,this._queues=new Map,this._isActive=r}get isActive(){return this._isActive}get queueSetName(){return this._name}get queueSetTarget(){return this._target}get queueTypes(){return Array.from(this._queues.keys())}getQueueSize(t){return this._queues.get(t)}addQueue(t,e){this._queues.set(t,e)}};nn.QUEUE_STATUS="RSQE_QUEUE_STATUS",nn.QUEUE_TYPE_CLUB="c",nn.QUEUE_TYPE_NORMAL="d",nn.QUEUE_TARGET_VISITOR=2,nn.QUEUE_TARGET_SPECTATOR=1;let rI=nn;const K0=class K0 extends ft{constructor(t,e){super(t,e)}};K0.SPECTATOR_MODE="RSSME_SPECTATOR_MODE";let mh=K0;const yp=class yp extends ft{constructor(t,e,s){super(yp.RSUBE_BADGES,t),this._userId=0,this._badges=[],this._userId=e,this._badges=s}get userId(){return this._userId}get badges(){return this._badges}};yp.RSUBE_BADGES="RSUBE_BADGES";let Y_=yp;const vp=class vp extends ft{constructor(t,e){super(vp.USER_DATA_UPDATED,t),this._addedUsers=e}get addedUsers(){return this._addedUsers}};vp.USER_DATA_UPDATED="RMUDUE_USER_DATA_UPDATED";let W_=vp;const Cp=class Cp extends ft{constructor(t,e,s,r,n,a){super(Cp.USER_FIGURE,t),this._roomIndex=0,this._figure="",this._gender="",this._customInfo="",this._roomIndex=e,this._figure=s,this._gender=r,this._customInfo=n,this._achievementScore=a}get roomIndex(){return this._roomIndex}get figure(){return this._figure}get gender(){return this._gender}get customInfo(){return this._customInfo}get activityPoints(){return this._achievementScore}};Cp.USER_FIGURE="RSUBE_FIGURE";let j_=Cp;const Mp=class Mp extends Xt{constructor(t,e){super(Mp.UTRE_USER_TAGS_RECEIVED),this._userId=t,this._tags=e}get userId(){return this._userId}get tags(){return this._tags}};Mp.UTRE_USER_TAGS_RECEIVED="UTRE_USER_TAGS_RECEIVED";let nI=Mp;const xp=class xp extends ft{constructor(t,e,s,r,n=null,a=0){super(t,e),this._question="",this._SafeStr_7654=0,this._choices=[],this._SafeStr_7651=[],this._question=s,this._choices=r,this._SafeStr_7651=n,this._SafeStr_7651==null&&(this._SafeStr_7651=[]),this._SafeStr_7654=a}get question(){return this._question}get choices(){return this._choices.slice()}get _SafeStr_4173(){return this._SafeStr_7651.slice()}get _SafeStr_4174(){return this._SafeStr_7654}};xp.VOTE_QUESTION="RSPE_VOTE_QUESTION",xp.VOTE_RESULT="RSPE_VOTE_RESULT";let ya=xp;const fl=class fl extends ft{constructor(t,e,s=-1){super(t,e),this._id=-1,this._pollType=null,this._pollId=-1,this._questionId=-1,this._duration=-1,this._question=null,this._userId=-1,this._id=s}get id(){return this._id}get pollType(){return this._pollType}set pollType(t){this._pollType=t}get pollId(){return this._pollId}set pollId(t){this._pollId=t}get questionId(){return this._questionId}set questionId(t){this._questionId=t}get duration(){return this._duration}set duration(t){this._duration=t}get question(){return this._question}set question(t){this._question=t}get userId(){return this._userId}set userId(t){this._userId=t}get value(){return this._value}set value(t){this._value=t}get answerCounts(){return this._answerCounts}set answerCounts(t){this._answerCounts=t}};fl.QUESTION="RWPUW_NEW_QUESTION",fl.FINISHED="RWPUW_QUESION_FINSIHED",fl.ANSWERED="RWPUW_QUESTION_ANSWERED";let Cr=fl;const Pp=class Pp extends Xt{constructor(t){super(Pp.UPDATED),this._uiFlags=t}get uiFlags(){return this._uiFlags}};Pp.UPDATED="APUE_UPDATED";let K_=Pp;const bp=class bp extends Xt{constructor(t){super(bp.UNUE_NAME_UPDATED),this._name=t}get name(){return this._name}};bp.UNUE_NAME_UPDATED="unue_name_updated";let Eh=bp;const Np=class Np extends Xt{constructor(t,e){super(Np.NOTIFY_PLAYED_SONG),this._name=t,this._creator=e}get name(){return this._name}get creator(){return this._creator}};Np.NOTIFY_PLAYED_SONG="UIEW_NOTIFY_PLAYED_SONG";let X_=Np;const gl=class gl extends Xt{constructor(t,e,s,r){super(t),this._id=s,this._position=r,this._priority=e}get id(){return this._id}get position(){return this._position}get priority(){return this._priority}};gl.NPE_USER_PLAY_SONG="NPE_USER_PLAY_SONG",gl.NPW_USER_STOP_SONG="NPW_USER_STOP_SONG",gl.NPE_SONG_CHANGED="NPE_SONG_CHANGED";let Dr=gl;const Up=class Up extends Xt{constructor(t){super(t)}};Up.PLUE_PLAY_LIST_UPDATED="PLUE_PLAY_LIST_UPDATED",Up.PLUE_PLAY_LIST_FULL="PLUE_PLAY_LIST_FULL";let Mr=Up;const X0=class X0 extends Xt{constructor(t){super(t)}};X0.SDIR_SONG_DISK_INVENTORY_RECEIVENT_EVENT="SDIR_SONG_DISK_INVENTORY_RECEIVENT_EVENT";let va=X0;const q0=class q0 extends Xt{constructor(t,e){super(t),this._id=e}get id(){return this._id}};q0.SIR_TRAX_SONG_INFO_RECEIVED="SIR_TRAX_SONG_INFO_RECEIVED";let Ha=q0;const $0=class $0 extends Xt{constructor(t,e){super(t),this._id=e}get id(){return this._id}};$0.TRAX_SONG_COMPLETE="SME_TRAX_SONG_COMPLETE";let Ya=$0;const ci=class ci{constructor(t,e,s,r){this._state=ci.NOT_LOADED,this._libraryName=t,this._revision=e,this._downloadUrl=s,this._assetManager=r,this._downloadUrl=this._downloadUrl.replace(/%libname%/gi,this._libraryName),this._downloadUrl=this._downloadUrl.replace(/%revision%/gi,this._revision),this.checkIsLoaded()}async downloadAsset(){if(!(!this._assetManager||this._state===ci.LOADING||this._state===ci.LOADED)){if(!this.checkIsLoaded()&&(this._state=ci.LOADING,!await this._assetManager.downloadAsset(this._downloadUrl)))throw new Error("Could not download asset");this.checkIsLoaded()&&M().dispatchEvent(new v_(Qe.AVATAR_ASSET_DOWNLOADED,this))}}checkIsLoaded(){return this._assetManager.getCollection(this._libraryName)?(this._state=ci.LOADED,!0):!1}get libraryName(){return this._libraryName}get isLoaded(){return this._state===ci.LOADED}};ci.NOT_LOADED=0,ci.LOADING=1,ci.LOADED=2;let q_=ci;class Vx{constructor(){this._definitions=new Map,this._config={},this._missingKeys=[],oh.sayHello()}async init(){await this.reloadConfiguration()}async reloadConfiguration(){try{this.resetConfiguration(),this.parseConfiguration(this.getDefaultConfig(),!0);const t=this.getValue("config.urls").slice();if(!t||!t.length)throw new Error("Invalid configuration urls");for(const e of t){if(!e||!e.length)return;const s=await fetch(e);if(s.status!==200)throw new Error("Invalid configuration file");this.parseConfiguration(await s.json())}}catch(t){throw new Error(t)}}resetConfiguration(){this._definitions.clear(),this._config={},this._missingKeys=[]}parseConfiguration(t,e=!1){if(!t)return!1;try{const s=new RegExp(/\${(.*?)}/g);for(const r in t){let n=t[r];typeof n=="string"&&(n=this.interpolate(n,s)),this._definitions.has(r)?e&&this.setValue(r,n):this.setValue(r,n)}return!0}catch(s){return it.error(s.stack),!1}}interpolate(t,e=null){e||(e=new RegExp(/\${(.*?)}/g));const s=t.match(e);if(s&&s.length)for(const r of s){const n=this._definitions.get(this.removeInterpolateKey(r));n&&(t=t.replace(r,n))}return t}removeInterpolateKey(t){return t.replace("${","").replace("}","")}getValue(t,e=null){let s=this._definitions.get(t);if(s===void 0){if(this._missingKeys.indexOf(t)>=0)return e;this._missingKeys.push(t),it.warn(`Missing configuration key: ${t}`),s=e}return s}setValue(t,e){const s=t.split(".");let r=this._config;for(let n=0;n<s.length;n++){const a=s[n].toString();if(n!==s.length-1){r[a]||(r[a]={}),r=r[a];continue}r[a]=e}this._definitions.set(t,e)}getDefaultConfig(){return window.NitroConfig}get definitions(){return this._definitions}}const Aet=new Vx,vt=()=>Aet;class Hx{constructor(t,e){this._missingMandatoryLibs=[],this._figureMap=new Map,this._figureListeners=new Map,this._incompleteFigures=new Map,this._currentDownloads=[],this._libraryNames=[],this._assets=t,this._structure=e}async init(){this._missingMandatoryLibs=vt().getValue("avatar.mandatory.libraries");const t=vt().getValue("avatar.figuremap.url");if(!t||!t.length)throw new Error("Invalid figure map url");const e=await fetch(t);if(e.status!==200)throw new Error("Invalid figure map file");const s=await e.json();this.processFigureMap(s.libraries),M().addEventListener(Qe.AVATAR_ASSET_DOWNLOADED,r=>this.onLibraryLoaded(r)),await this.processMissingLibraries()}processFigureMap(t){if(!t)return;const e=vt().getValue("avatar.asset.url");for(const s of t){if(!s)continue;const r=s.id,n=s.revision||"";if(this._libraryNames.indexOf(r)>=0)continue;this._libraryNames.push(r);const a=new q_(r,n,e,this._assets);for(const o of s.parts){const u=o.id,c=o.type+":"+u;let h=this._figureMap.get(c);h||(h=[]),h.push(a),this._figureMap.set(c,h)}}}async processMissingLibraries(){const t=[];this._missingMandatoryLibs.forEach(e=>{const s=this._figureMap.get(e);if(s)for(const r of s)t.push(r.downloadAsset())}),this._missingMandatoryLibs=[],await Promise.all(t)}onLibraryLoaded(t){if(!t||!t.library)return;const e=[];for(const[r,n]of this._incompleteFigures.entries()){let a=!0;for(const o of n)if(!(!o||o.isLoaded)){a=!1;break}if(a){e.push(r);const o=this._figureListeners.get(r);if(o)for(const u of o)!u||u.disposed||u.resetFigure(r);this._figureListeners.delete(r),M().dispatchEvent(new Xt(Qe.AVATAR_ASSET_LOADED))}}for(const r of e)r&&this._incompleteFigures.delete(r);let s=0;for(;s<this._currentDownloads.length;){const r=this._currentDownloads[s];r&&r.libraryName===t.library.libraryName&&this._currentDownloads.splice(s,1),s++}}isAvatarFigureContainerReady(t){return!this.getAvatarFigurePendingLibraries(t).length}getAvatarFigurePendingLibraries(t){const e=[];if(!t||!this._structure)return e;const s=this._structure.figureData;if(!s)return e;const r=t.getPartTypeIds();for(const n of r){const a=s.getSetType(n);if(!a)continue;const o=a.getPartSet(t.getPartSetId(n));if(o)for(const u of o.parts){if(!u)continue;const l=u.type+":"+u.id,c=this._figureMap.get(l);if(c!==void 0)for(const h of c)!h||h.isLoaded||e.indexOf(h)>=0||e.push(h)}}return e}downloadAvatarFigure(t,e){const s=t.getFigureString(),r=this.getAvatarFigurePendingLibraries(t);if(r&&r.length){if(e&&!e.disposed){let n=this._figureListeners.get(s);n||(n=[],this._figureListeners.set(s,n)),n.push(e)}this._incompleteFigures.set(s,r);for(const n of r)n&&n.downloadAsset()}else e&&!e.disposed&&e.resetFigure(s)}}class Zu{constructor(t){this._parts=new Map,this.parseFigure(t)}getPartTypeIds(){return this.partSets().keys()}hasPartType(t){return!!this.partSets().get(t)}getPartSetId(t){const e=this.partSets().get(t);return e?e.get("setid"):0}getPartColorIds(t){const e=this.partSets().get(t);return e?e.get("colorids"):null}updatePart(t,e,s){const r=new Map;r.set("type",t),r.set("setid",e),r.set("colorids",s);const n=this.partSets();n.delete(t),n.set(t,r)}removePart(t){this.partSets().delete(t)}getFigureString(){const t=[];for(const e of this.partSets().keys()){if(!e)continue;let s=[];s.push(e),s.push(this.getPartSetId(e)),s=s.concat(this.getPartColorIds(e)),t.push(s.join("-"))}return t.join(".")}partSets(){return this._parts||(this._parts=new Map),this._parts}parseFigure(t){t||(t="");for(const e of t.split(".")){const s=e.split("-");if(s.length>=2){const r=s[0],n=parseInt(s[1]),a=[];let o=2;for(;o<s.length;)a.push(parseInt(s[o])),o++;this.updatePart(r,n,a)}}}}class Yx{constructor(t){this._id=parseInt(t.id),this._value=parseInt(t.id),this._prevents=t.prevents||[],this._preventHeadTurn=t.preventHeadTurn||!1,this._isAnimated=!0,t.animated!==void 0&&t.animated===!1&&(this._isAnimated=!1)}get id(){return this._id}get value(){return this._value}get prevents(){return this._prevents}get preventHeadTurn(){return this._preventHeadTurn}get isAnimated(){return this._isAnimated}}class Wx{constructor(t){if(this._types=new Map,this._params=new Map,this._defaultParameterValue="",this._canvasOffsets=new Map,this._id=t.id,this._state=t.state,this._precedence=t.precedence,this._activePartSet=t.activePartSet,this._assetPartDefinition=t.assetPartDefinition,this._lay=t.lay,this._geometryType=t.geometryType,this._isMain=t.main||!1,this._isDefault=t.isDefault||!1,this._isAnimation=t.animation||!1,this._startFromFrameZero=t.startFromFrameZero||!1,this._prevents=t.prevents||[],this._preventHeadTurn=t.preventHeadTurn||!1,t.params&&t.params.length>0)for(const e of t.params)e&&(e.id==="default"?this._defaultParameterValue=e.value:this._params.set(e.id,e.value));if(t.types&&t.types.length>0)for(const e of t.types){if(!e)continue;const s=new Yx(e);this._types.set(s.id,s)}}setOffsets(t,e,s){this._canvasOffsets||(this._canvasOffsets=new Map);let r=this._canvasOffsets.get(t);r||(r=new Map,this._canvasOffsets.set(t,r)),r.set(e,s)}getOffsets(t,e){if(!this._canvasOffsets)return null;const s=this._canvasOffsets.get(t);return s?s.get(e):null}getType(t){if(!t)return null;const e=this._types.get(parseInt(t));return e||null}getParameterValue(t){if(!t)return"";const e=this._params.get(t);return e||this._defaultParameterValue}getPrevents(t){return this._prevents.concat(this.getTypePrevents(t))}getTypePrevents(t){if(!t)return[];const e=this._types.get(parseInt(t));return e?e.prevents:[]}getPreventHeadTurn(t){if(!t)return this._preventHeadTurn;const e=this.getType(t);return e?e.preventHeadTurn:this._preventHeadTurn}isAnimated(t){if(!t)return!0;const e=this.getType(t);return e?e.isAnimated:!0}get id(){return this._id}get state(){return this._state}get precedence(){return this._precedence}get activePartSet(){return this._activePartSet}get assetPartDefinition(){return this._assetPartDefinition}get lay(){return this._lay}get geometryType(){return this._geometryType}get isMain(){return this._isMain}get isDefault(){return this._isDefault}get isAnimation(){return this._isAnimation}get startFromFrameZero(){return this._startFromFrameZero}get prevents(){return this._prevents}get preventHeadTurn(){return this._preventHeadTurn}get params(){return this._params}}class $_{constructor(t,e="",s=0){this._actionType=t||"",this._actionParameter=e||"",this._definition=null,this._startFrame=s||0,this._overridingAction=null}dispose(){this._actionType=null,this._actionParameter=null,this._definition=null}get id(){return this._definition?this._definition.id+"_"+this._actionParameter:""}get actionType(){return this._actionType}get actionParameter(){return this._actionParameter}set actionParameter(t){this._actionParameter=t}get definition(){return this._definition}set definition(t){this._definition=t}get startFrame(){return this._startFrame}get overridingAction(){return this._overridingAction}set overridingAction(t){this._overridingAction=t}}class jx{constructor(t,e){this._assets=t,this._actions=new Map,this._defaultAction=null,this.updateActions(e)}updateActions(t){if(t){for(const e of t.actions){if(!e||!e.state)continue;const s=new Wx(e);this._actions.set(s.state,s)}t.actionOffsets&&this.parseActionOffsets(t.actionOffsets)}}parseActionOffsets(t){if(!(!t||!t.length))for(const e of t){const s=this._actions.get(e.action);if(s)for(const r of e.offsets){const n=r.size||"",a=r.direction;if(n===""||a===void 0)continue;const o=r.x||0,u=r.y||0,l=r.z||0;s.setOffsets(n,a,[o,u,l])}}}getActionDefinition(t){if(!t)return null;for(const e of this._actions.values())if(!(!e||e.id!==t))return e;return null}getActionDefinitionWithState(t){const e=this._actions.get(t);return e||null}getDefaultAction(){if(this._defaultAction)return this._defaultAction;for(const t of this._actions.values())if(!(!t||!t.isDefault))return this._defaultAction=t,t;return null}getCanvasOffsets(t,e,s){let r=[];for(const n of t){if(!n)continue;const a=this._actions.get(n.actionType),o=a&&a.getOffsets(e,s);o&&(r=o)}return r}sortActions(t){if(!t)return null;t=this.filterActions(t);const e=[];for(const s of t){if(!s)continue;const r=this._actions.get(s.actionType);r&&(s.definition=r,e.push(s))}return e.sort((s,r)=>{if(!s||!r)return 0;const n=s.definition.precedence,a=r.definition.precedence;return n<a?1:n>a?-1:0}),e}filterActions(t){let e=[];const s=[];for(const r of t){if(!r)continue;const n=this._actions.get(r.actionType);n&&(e=e.concat(n.getPrevents(r.actionParameter)))}for(const r of t){if(!r)continue;let n=r.actionType;r.actionType==="fx"&&(n=n+("."+r.actionParameter)),!(e.indexOf(n)>=0)&&s.push(r)}return s}}class Kx{constructor(){this._cache=new Map,this.setLastAccessTime(Nt())}dispose(){if(this.debugInfo("[dispose]"),!!this._cache){for(const t of this._cache.values())t&&t.dispose();this._cache.clear()}}getDirectionCache(t){const e=this._cache.get(t.toString());return e||null}updateDirectionCache(t,e){this._cache.set(t.toString(),e)}setLastAccessTime(t){this._lastAccessTime=t}getLastAccessTime(){return this._lastAccessTime}debugInfo(t){}}class aI{constructor(){this._cache=new Map}setAction(t,e){this._currentAction||(this._currentAction=t);const s=this.getActionCache(this._currentAction);s&&s.setLastAccessTime(e),this._currentAction=t}dispose(){if(!this._disposed){if(!this._cache)return;this.disposeActions(0,2147483647),this._cache.clear(),this._cache=null,this._disposed=!0}}disposeActions(t,e){if(!(!this._cache||this._disposed))for(const[s,r]of this._cache.entries()){if(!r)continue;const n=r.getLastAccessTime();e-n>=t&&(r.dispose(),this._cache.delete(s))}}getAction(){return this._currentAction}setDirection(t){this._currentDirection=t}getDirection(){return this._currentDirection}getActionCache(t=null){return this._currentAction?(t||(t=this._currentAction),t.overridingAction?this._cache.get(t.overridingAction):this._cache.get(t.id)):null}updateActionCache(t,e){t.overridingAction?this._cache.set(t.overridingAction,e):this._cache.set(t.id,e)}debugInfo(t){}}class Xx{constructor(t,e,s){this._image=t,this._regPoint=e,this._offset=new st(0,0),this._regPoint=e,this._isCacheable=s,this.cleanPoints()}dispose(){this._image&&this._image.destroy({children:!0}),this._image=null,this._regPoint=null,this._offset=null}cleanPoints(){}setRegPoint(t){this._regPoint=t,this.cleanPoints()}get image(){return this._image}set image(t){this._image&&this._image!==t&&this._image.destroy({children:!0}),this._image=t}get regPoint(){const t=this._regPoint.clone();return t.x+=this._offset.x,t.y+=this._offset.y,t}set offset(t){this._offset=t,this.cleanPoints()}get isCacheable(){return this._isCacheable}}class qx{constructor(t){this._id=t.id||"",this._align=t.align||"",this._base=t.base||"",this._ink=t.ink||0,this._blend=0;const e=t.blend;e&&e.length>0&&(this._blend=parseInt(e),this._blend>1&&(this._blend=this._blend/100))}get id(){return this._id}get align(){return this._align}get base(){return this._base}get ink(){return this._ink}get blend(){return this._blend}get isBlended(){return this._blend!==1}}const Dp=class Dp{constructor(t,e,s){if(this._id=t.id,this._animationFrame=t.frame||0,this._dx=t.dx||0,this._dy=t.dy||0,this._dz=t.dz||0,this._directionOffset=t.dd||0,this._type=e,this._base=t.base||"",this._items=new Map,t.items)for(const r of t.items)this._items.set(r.id,r.base);this._base!==""&&this.baseAsInt().toString(),s&&(this._action=new $_(s.state,this.base),this._action.definition=s)}get items(){return this._items}baseAsInt(){let t=0,e=0;for(;e<this._base.length;)t=t+this._base.charCodeAt(e),e++;return t}get id(){return this._id}get animationFrame(){return this._animationFrame}get dx(){return this._dx}get dy(){return this._dy}get dz(){return this._dz}get dd(){return this._directionOffset}get type(){return this._type}get base(){return this._base}get action(){return this._action}};Dp.BODYPART="bodypart",Dp.FX="fx";let Js=Dp;var Qt=`in vec2 aPosition;
out vec2 vTextureCoord;
uniform vec4 uInputSize;
uniform vec4 uOutputFrame;
uniform vec4 uOutputTexture;
vec4 filterVertexPosition( void )
{
vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
vec2 filterTextureCoord( void )
{
return aPosition * (uOutputFrame.zw * uInputSize.zw);
}
void main(void)
{
gl_Position = filterVertexPosition();
vTextureCoord = filterTextureCoord();
}
`,Zt=`struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
struct VSOutput {
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
};
fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
{
var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
{
return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
}
fn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
{
return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw);
}
fn getSize() -> vec2<f32>
{
return gfu.uGlobalFrame.zw;
}
@vertex
fn mainVertex(
@location(0) aPosition : vec2<f32>,
) -> VSOutput {
return VSOutput(
filterVertexPosition(aPosition),
filterTextureCoord(aPosition)
);
}`,Oet=`in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform float uGamma;
uniform float uContrast;
uniform float uSaturation;
uniform float uBrightness;
uniform vec4 uColor;
void main()
{
vec4 c = texture(uTexture, vTextureCoord);
if (c.a > 0.0) {
c.rgb /= c.a;
vec3 rgb = pow(c.rgb, vec3(1. / uGamma));
rgb = mix(vec3(.5), mix(vec3(dot(vec3(.2125, .7154, .0721), rgb)), rgb, uSaturation), uContrast);
rgb.r *= uColor.r;
rgb.g *= uColor.g;
rgb.b *= uColor.b;
c.rgb = rgb * uBrightness;
c.rgb *= c.a;
}
finalColor = c * uColor.a;
}
`,yet=`struct AdjustmentUniforms {
uGamma: f32,
uContrast: f32,
uSaturation: f32,
uBrightness: f32,
uColor: vec4<f32>,
};
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> adjustmentUniforms : AdjustmentUniforms;
@fragment
fn mainFragment(
@location(0) uv: vec2<f32>,
@builtin(position) position: vec4<f32>
) -> @location(0) vec4<f32> {
var sample = textureSample(uTexture, uSampler, uv);
let color = adjustmentUniforms.uColor;
if (sample.a > 0.0)
{
sample = vec4<f32>(sample.rgb / sample.a, sample.a);
var rgb: vec3<f32> = pow(sample.rgb, vec3<f32>(1. / adjustmentUniforms.uGamma));
rgb = mix(vec3<f32>(.5), mix(vec3<f32>(dot(vec3<f32>(.2125, .7154, .0721), rgb)), rgb, adjustmentUniforms.uSaturation), adjustmentUniforms.uContrast);
rgb.r *= color.r;
rgb.g *= color.g;
rgb.b *= color.b;
sample = vec4<f32>(rgb.rgb * adjustmentUniforms.uBrightness, sample.a);
sample = vec4<f32>(sample.rgb * sample.a, sample.a);
}
return sample * color.a;
}`,vet=Object.defineProperty,Cet=(i,t,e)=>t in i?vet(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,$x=(i,t,e)=>(Cet(i,typeof t!="symbol"?t+"":t,e),e);const Qx=class Zx extends xt{constructor(t){t={...Zx.DEFAULT_OPTIONS,...t};const e=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:yet,entryPoint:"mainFragment"}}),s=Tt.from({vertex:Qt,fragment:Oet,name:"adjustment-filter"});super({gpuProgram:e,glProgram:s,resources:{adjustmentUniforms:{uGamma:{value:t.gamma,type:"f32"},uContrast:{value:t.contrast,type:"f32"},uSaturation:{value:t.saturation,type:"f32"},uBrightness:{value:t.brightness,type:"f32"},uColor:{value:[t.red,t.green,t.blue,t.alpha],type:"vec4<f32>"}}}}),$x(this,"uniforms"),this.uniforms=this.resources.adjustmentUniforms.uniforms}get gamma(){return this.uniforms.uGamma}set gamma(t){this.uniforms.uGamma=t}get contrast(){return this.uniforms.uContrast}set contrast(t){this.uniforms.uContrast=t}get saturation(){return this.uniforms.uSaturation}set saturation(t){this.uniforms.uSaturation=t}get brightness(){return this.uniforms.uBrightness}set brightness(t){this.uniforms.uBrightness=t}get red(){return this.uniforms.uColor[0]}set red(t){this.uniforms.uColor[0]=t}get green(){return this.uniforms.uColor[1]}set green(t){this.uniforms.uColor[1]=t}get blue(){return this.uniforms.uColor[2]}set blue(t){this.uniforms.uColor[2]=t}get alpha(){return this.uniforms.uColor[3]}set alpha(t){this.uniforms.uColor[3]=t}};$x(Qx,"DEFAULT_OPTIONS",{gamma:1,contrast:1,saturation:1,brightness:1,red:1,green:1,blue:1,alpha:1});let Jx=Qx;var Met=`
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec2 uOffset;
void main(void)
{
vec4 color = vec4(0.0);
// Sample top left pixel
color += texture(uTexture, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y));
// Sample top right pixel
color += texture(uTexture, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y));
// Sample bottom right pixel
color += texture(uTexture, vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y));
// Sample bottom left pixel
color += texture(uTexture, vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y));
// Average
color *= 0.25;
finalColor = color;
}`,xet=`struct KawaseBlurUniforms {
uOffset:vec2<f32>,
};
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> kawaseBlurUniforms : KawaseBlurUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let uOffset = kawaseBlurUniforms.uOffset;
var color: vec4<f32> = vec4<f32>(0.0);
// Sample top left pixel
color += textureSample(uTexture, uSampler, vec2<f32>(uv.x - uOffset.x, uv.y + uOffset.y));
// Sample top right pixel
color += textureSample(uTexture, uSampler, vec2<f32>(uv.x + uOffset.x, uv.y + uOffset.y));
// Sample bottom right pixel
color += textureSample(uTexture, uSampler, vec2<f32>(uv.x + uOffset.x, uv.y - uOffset.y));
// Sample bottom left pixel
color += textureSample(uTexture, uSampler, vec2<f32>(uv.x - uOffset.x, uv.y - uOffset.y));
// Average
color *= 0.25;
return color;
}`,Pet=`
precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec2 uOffset;
uniform vec4 uInputClamp;
void main(void)
{
vec4 color = vec4(0.0);
// Sample top left pixel
color += texture(uTexture, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y + uOffset.y), uInputClamp.xy, uInputClamp.zw));
// Sample top right pixel
color += texture(uTexture, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y + uOffset.y), uInputClamp.xy, uInputClamp.zw));
// Sample bottom right pixel
color += texture(uTexture, clamp(vec2(vTextureCoord.x + uOffset.x, vTextureCoord.y - uOffset.y), uInputClamp.xy, uInputClamp.zw));
// Sample bottom left pixel
color += texture(uTexture, clamp(vec2(vTextureCoord.x - uOffset.x, vTextureCoord.y - uOffset.y), uInputClamp.xy, uInputClamp.zw));
// Average
color *= 0.25;
finalColor = color;
}
`,bet=`struct KawaseBlurUniforms {
uOffset:vec2<f32>,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> kawaseBlurUniforms : KawaseBlurUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let uOffset = kawaseBlurUniforms.uOffset;
var color: vec4<f32> = vec4(0.0);
// Sample top left pixel
color += textureSample(uTexture, uSampler, clamp(vec2<f32>(uv.x - uOffset.x, uv.y + uOffset.y), gfu.uInputClamp.xy, gfu.uInputClamp.zw));
// Sample top right pixel
color += textureSample(uTexture, uSampler, clamp(vec2<f32>(uv.x + uOffset.x, uv.y + uOffset.y), gfu.uInputClamp.xy, gfu.uInputClamp.zw));
// Sample bottom right pixel
color += textureSample(uTexture, uSampler, clamp(vec2<f32>(uv.x + uOffset.x, uv.y - uOffset.y), gfu.uInputClamp.xy, gfu.uInputClamp.zw));
// Sample bottom left pixel
color += textureSample(uTexture, uSampler, clamp(vec2<f32>(uv.x - uOffset.x, uv.y - uOffset.y), gfu.uInputClamp.xy, gfu.uInputClamp.zw));
// Average
color *= 0.25;
return color;
}`,Net=Object.defineProperty,Uet=(i,t,e)=>t in i?Net(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,Wn=(i,t,e)=>(Uet(i,typeof t!="symbol"?t+"":t,e),e);const tP=class eP extends xt{constructor(...t){let e=t[0]??{};(typeof e=="number"||Array.isArray(e))&&(ct("6.0.0","KawaseBlurFilter constructor params are now options object. See params: { strength, quality, clamp, pixelSize }"),e={strength:e},t[1]!==void 0&&(e.quality=t[1]),t[2]!==void 0&&(e.clamp=t[2])),e={...eP.DEFAULT_OPTIONS,...e};const s=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:e!=null&&e.clamp?bet:xet,entryPoint:"mainFragment"}}),r=Tt.from({vertex:Qt,fragment:e!=null&&e.clamp?Pet:Met,name:"kawase-blur-filter"});super({gpuProgram:s,glProgram:r,resources:{kawaseBlurUniforms:{uOffset:{value:new Float32Array(2),type:"vec2<f32>"}}}}),Wn(this,"uniforms"),Wn(this,"_pixelSize",{x:0,y:0}),Wn(this,"_clamp"),Wn(this,"_kernels",[]),Wn(this,"_blur"),Wn(this,"_quality"),this.uniforms=this.resources.kawaseBlurUniforms.uniforms,this.pixelSize=e.pixelSize??{x:1,y:1},Array.isArray(e.strength)?this.kernels=e.strength:typeof e.strength=="number"&&(this._blur=e.strength,this.quality=e.quality??3),this._clamp=!!e.clamp}apply(t,e,s,r){const n=this.pixelSizeX/e.source.width,a=this.pixelSizeY/e.source.height;let o;if(this._quality===1||this._blur===0)o=this._kernels[0]+.5,this.uniforms.uOffset[0]=o*n,this.uniforms.uOffset[1]=o*a,t.applyFilter(this,e,s,r);else{const u=os.getSameSizeTexture(e);let l=e,c=u,h;const _=this._quality-1;for(let d=0;d<_;d++)o=this._kernels[d]+.5,this.uniforms.uOffset[0]=o*n,this.uniforms.uOffset[1]=o*a,t.applyFilter(this,l,c,!0),h=l,l=c,c=h;o=this._kernels[_]+.5,this.uniforms.uOffset[0]=o*n,this.uniforms.uOffset[1]=o*a,t.applyFilter(this,l,s,r),os.returnTexture(u)}}get strength(){return this._blur}set strength(t){this._blur=t,this._generateKernels()}get quality(){return this._quality}set quality(t){this._quality=Math.max(1,Math.round(t)),this._generateKernels()}get kernels(){return this._kernels}set kernels(t){Array.isArray(t)&&t.length>0?(this._kernels=t,this._quality=t.length,this._blur=Math.max(...t)):(this._kernels=[0],this._quality=1)}get pixelSize(){return this._pixelSize}set pixelSize(t){if(typeof t=="number"){this.pixelSizeX=this.pixelSizeY=t;return}if(Array.isArray(t)){this.pixelSizeX=t[0],this.pixelSizeY=t[1];return}this._pixelSize=t}get pixelSizeX(){return this.pixelSize.x}set pixelSizeX(t){this.pixelSize.x=t}get pixelSizeY(){return this.pixelSize.y}set pixelSizeY(t){this.pixelSize.y=t}get clamp(){return this._clamp}_updatePadding(){this.padding=Math.ceil(this._kernels.reduce((t,e)=>t+e+.5,0))}_generateKernels(){const t=this._blur,e=this._quality,s=[t];if(t>0){let r=t;const n=t/e;for(let a=1;a<e;a++)r-=n,s.push(r)}this._kernels=s,this._updatePadding()}};Wn(tP,"DEFAULT_OPTIONS",{strength:4,quality:3,clamp:!1,pixelSize:{x:1,y:1}});let sP=tP;var Det=`in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform sampler2D uMapTexture;
uniform float uBloomScale;
uniform float uBrightness;
void main() {
vec4 color = texture(uTexture, vTextureCoord);
color.rgb *= uBrightness;
vec4 bloomColor = vec4(texture(uMapTexture, vTextureCoord).rgb, 0.0);
bloomColor.rgb *= uBloomScale;
finalColor = color + bloomColor;
}
`,Let=`struct AdvancedBloomUniforms {
uBloomScale: f32,
uBrightness: f32,
};
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> advancedBloomUniforms : AdvancedBloomUniforms;
@group(1) @binding(1) var uMapTexture: texture_2d<f32>;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
var color = textureSample(uTexture, uSampler, uv);
color = vec4<f32>(color.rgb * advancedBloomUniforms.uBrightness, color.a);
var bloomColor = vec4<f32>(textureSample(uMapTexture, uSampler, uv).rgb, 0.0);
bloomColor = vec4<f32>(bloomColor.rgb * advancedBloomUniforms.uBloomScale, bloomColor.a);
return color + bloomColor;
}
`,Fet=`
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform float uThreshold;
void main() {
vec4 color = texture(uTexture, vTextureCoord);
// A simple & fast algorithm for getting brightness.
// It's inaccuracy , but good enought for this feature.
float _max = max(max(color.r, color.g), color.b);
float _min = min(min(color.r, color.g), color.b);
float brightness = (_max + _min) * 0.5;
if(brightness > uThreshold) {
finalColor = color;
} else {
finalColor = vec4(0.0, 0.0, 0.0, 0.0);
}
}
`,wet=`struct ExtractBrightnessUniforms {
uThreshold: f32,
};
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> extractBrightnessUniforms : ExtractBrightnessUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let color: vec4<f32> = textureSample(uTexture, uSampler, uv);
// A simple & fast algorithm for getting brightness.
// It's inaccurate, but good enough for this feature.
let max: f32 = max(max(color.r, color.g), color.b);
let min: f32 = min(min(color.r, color.g), color.b);
let brightness: f32 = (max + min) * 0.5;
return select(vec4<f32>(0.), color, brightness > extractBrightnessUniforms.uThreshold);
}
`,Get=Object.defineProperty,Bet=(i,t,e)=>t in i?Get(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,iP=(i,t,e)=>(Bet(i,typeof t!="symbol"?t+"":t,e),e);const rP=class nP extends xt{constructor(t){t={...nP.DEFAULT_OPTIONS,...t};const e=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:wet,entryPoint:"mainFragment"}}),s=Tt.from({vertex:Qt,fragment:Fet,name:"extract-brightness-filter"});super({gpuProgram:e,glProgram:s,resources:{extractBrightnessUniforms:{uThreshold:{value:t.threshold,type:"f32"}}}}),iP(this,"uniforms"),this.uniforms=this.resources.extractBrightnessUniforms.uniforms}get threshold(){return this.uniforms.uThreshold}set threshold(t){this.uniforms.uThreshold=t}};iP(rP,"DEFAULT_OPTIONS",{threshold:.5});let ket=rP;var zet=Object.defineProperty,Vet=(i,t,e)=>t in i?zet(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,oo=(i,t,e)=>(Vet(i,typeof t!="symbol"?t+"":t,e),e);const Het=class aP extends xt{constructor(t){t={...aP.DEFAULT_OPTIONS,...t};const e=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Let,entryPoint:"mainFragment"}}),s=Tt.from({vertex:Qt,fragment:Det,name:"advanced-bloom-filter"});super({gpuProgram:e,glProgram:s,resources:{advancedBloomUniforms:{uBloomScale:{value:t.bloomScale,type:"f32"},uBrightness:{value:t.brightness,type:"f32"}},uMapTexture:W.WHITE}}),oo(this,"uniforms"),oo(this,"bloomScale",1),oo(this,"brightness",1),oo(this,"_extractFilter"),oo(this,"_blurFilter"),this.uniforms=this.resources.advancedBloomUniforms.uniforms,this._extractFilter=new ket({threshold:t.threshold}),this._blurFilter=new sP({strength:t.kernels??t.blur,quality:t.kernels?void 0:t.quality}),Object.assign(this,t)}apply(t,e,s,r){const n=os.getSameSizeTexture(e);this._extractFilter.apply(t,e,n,!0);const a=os.getSameSizeTexture(e);this._blurFilter.apply(t,n,a,!0),this.uniforms.uBloomScale=this.bloomScale,this.uniforms.uBrightness=this.brightness,this.resources.uMapTexture=a.source,t.applyFilter(this,e,s,r),os.returnTexture(a),os.returnTexture(n)}get threshold(){return this._extractFilter.threshold}set threshold(t){this._extractFilter.threshold=t}get kernels(){return this._blurFilter.kernels}set kernels(t){this._blurFilter.kernels=t}get blur(){return this._blurFilter.strength}set blur(t){this._blurFilter.strength=t}get quality(){return this._blurFilter.quality}set quality(t){this._blurFilter.quality=t}get pixelSize(){return this._blurFilter.pixelSize}set pixelSize(t){typeof t=="number"&&(t={x:t,y:t}),Array.isArray(t)&&(t={x:t[0],y:t[1]}),this._blurFilter.pixelSize=t}get pixelSizeX(){return this._blurFilter.pixelSizeX}set pixelSizeX(t){this._blurFilter.pixelSizeX=t}get pixelSizeY(){return this._blurFilter.pixelSizeY}set pixelSizeY(t){this._blurFilter.pixelSizeY=t}};oo(Het,"DEFAULT_OPTIONS",{threshold:.5,bloomScale:1,brightness:1,blur:8,quality:4,pixelSize:{x:1,y:1}});var Yet=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform float uSize;
uniform vec3 uColor;
uniform float uReplaceColor;
uniform vec4 uInputSize;
vec2 mapCoord( vec2 coord )
{
coord *= uInputSize.xy;
coord += uInputSize.zw;
return coord;
}
vec2 unmapCoord( vec2 coord )
{
coord -= uInputSize.zw;
coord /= uInputSize.xy;
return coord;
}
vec2 pixelate(vec2 coord, vec2 size)
{
return floor(coord / size) * size;
}
vec2 getMod(vec2 coord, vec2 size)
{
return mod(coord, size) / size;
}
float character(float n, vec2 p)
{
p = floor(p*vec2(4.0, 4.0) + 2.5);
if (clamp(p.x, 0.0, 4.0) == p.x)
{
if (clamp(p.y, 0.0, 4.0) == p.y)
{
if (int(mod(n/exp2(p.x + 5.0*p.y), 2.0)) == 1) return 1.0;
}
}
return 0.0;
}
void main()
{
vec2 coord = mapCoord(vTextureCoord);
// get the grid position
vec2 pixCoord = pixelate(coord, vec2(uSize));
pixCoord = unmapCoord(pixCoord);
// sample the color at grid position
vec4 color = texture(uTexture, pixCoord);
// brightness of the color as it's perceived by the human eye
float gray = 0.3 * color.r + 0.59 * color.g + 0.11 * color.b;
// determine the character to use
float n = 65536.0; // .
if (gray > 0.2) n = 65600.0; // :
if (gray > 0.3) n = 332772.0; // *
if (gray > 0.4) n = 15255086.0; // o
if (gray > 0.5) n = 23385164.0; // &
if (gray > 0.6) n = 15252014.0; // 8
if (gray > 0.7) n = 13199452.0; // @
if (gray > 0.8) n = 11512810.0; // #
// get the mod..
vec2 modd = getMod(coord, vec2(uSize));
finalColor = (uReplaceColor > 0.5 ? vec4(uColor, 1.) : color) * character( n, vec2(-1.0) + modd * 2.0);
}
`,Wet=`struct AsciiUniforms {
uSize: f32,
uColor: vec3<f32>,
uReplaceColor: f32,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> asciiUniforms : AsciiUniforms;
@fragment
fn mainFragment(
@location(0) uv: vec2<f32>,
@builtin(position) position: vec4<f32>
) -> @location(0) vec4<f32> {
let pixelSize: f32 = asciiUniforms.uSize;
let coord: vec2<f32> = mapCoord(uv);
// get the rounded color..
var pixCoord: vec2<f32> = pixelate(coord, vec2<f32>(pixelSize));
pixCoord = unmapCoord(pixCoord);
var color = textureSample(uTexture, uSampler, pixCoord);
// determine the character to use
let gray: f32 = 0.3 * color.r + 0.59 * color.g + 0.11 * color.b;
var n: f32 = 65536.0; // .
if (gray > 0.2) {
n = 65600.0; // :
}
if (gray > 0.3) {
n = 332772.0; // *
}
if (gray > 0.4) {
n = 15255086.0; // o
}
if (gray > 0.5) {
n = 23385164.0; // &
}
if (gray > 0.6) {
n = 15252014.0; // 8
}
if (gray > 0.7) {
n = 13199452.0; // @
}
if (gray > 0.8) {
n = 11512810.0; // #
}
// get the mod..
let modd: vec2<f32> = getMod(coord, vec2<f32>(pixelSize));
return select(color, vec4<f32>(asciiUniforms.uColor, 1.), asciiUniforms.uReplaceColor > 0.5) * character(n, vec2<f32>(-1.0) + modd * 2.0);
}
fn pixelate(coord: vec2<f32>, size: vec2<f32>) -> vec2<f32>
{
return floor( coord / size ) * size;
}
fn getMod(coord: vec2<f32>, size: vec2<f32>) -> vec2<f32>
{
return moduloVec2( coord , size) / size;
}
fn character(n: f32, p: vec2<f32>) -> f32
{
var q: vec2<f32> = floor(p*vec2<f32>(4.0, 4.0) + 2.5);
if (clamp(q.x, 0.0, 4.0) == q.x)
{
if (clamp(q.y, 0.0, 4.0) == q.y)
{
if (i32(modulo(n/exp2(q.x + 5.0*q.y), 2.0)) == 1)
{
return 1.0;
}
}
}
return 0.0;
}
fn modulo(x: f32, y: f32) -> f32
{
return x - y * floor(x/y);
}
fn moduloVec2(x: vec2<f32>, y: vec2<f32>) -> vec2<f32>
{
return x - y * floor(x/y);
}
fn mapCoord(coord: vec2<f32> ) -> vec2<f32>
{
var mappedCoord: vec2<f32> = coord;
mappedCoord *= gfu.uInputSize.xy;
mappedCoord += gfu.uOutputFrame.xy;
return mappedCoord;
}
fn unmapCoord(coord: vec2<f32> ) -> vec2<f32>
{
var mappedCoord: vec2<f32> = coord;
mappedCoord -= gfu.uOutputFrame.xy;
mappedCoord /= gfu.uInputSize.xy;
return mappedCoord;
}`,jet=Object.defineProperty,Ket=(i,t,e)=>t in i?jet(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,oI=(i,t,e)=>(Ket(i,typeof t!="symbol"?t+"":t,e),e);const Xet=class oP extends xt{constructor(...t){let e=t[0]??{};typeof e=="number"&&(ct("6.0.0","AsciiFilter constructor params are now options object. See params: { size, color, replaceColor }"),e={size:e});const s=(e==null?void 0:e.color)&&e.replaceColor!==!1;e={...oP.DEFAULT_OPTIONS,...e};const r=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Wet,entryPoint:"mainFragment"}}),n=Tt.from({vertex:Qt,fragment:Yet,name:"ascii-filter"});super({gpuProgram:r,glProgram:n,resources:{asciiUniforms:{uSize:{value:e.size,type:"f32"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uReplaceColor:{value:Number(s),type:"f32"}}}}),oI(this,"uniforms"),oI(this,"_color"),this.uniforms=this.resources.asciiUniforms.uniforms,this._color=new Mt,this.color=e.color??16777215}get size(){return this.uniforms.uSize}set size(t){this.uniforms.uSize=t}get color(){return this._color.value}set color(t){this._color.setValue(t);const[e,s,r]=this._color.toArray();this.uniforms.uColor[0]=e,this.uniforms.uColor[1]=s,this.uniforms.uColor[2]=r}get replaceColor(){return this.uniforms.uReplaceColor>.5}set replaceColor(t){this.uniforms.uReplaceColor=t?1:0}};oI(Xet,"DEFAULT_OPTIONS",{size:8,color:16777215,replaceColor:!1});var qet=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec2 uTransform;
uniform vec3 uLightColor;
uniform float uLightAlpha;
uniform vec3 uShadowColor;
uniform float uShadowAlpha;
uniform vec4 uInputSize;
void main(void) {
vec2 transform = vec2(1.0 / uInputSize) * vec2(uTransform.x, uTransform.y);
vec4 color = texture(uTexture, vTextureCoord);
float light = texture(uTexture, vTextureCoord - transform).a;
float shadow = texture(uTexture, vTextureCoord + transform).a;
color.rgb = mix(color.rgb, uLightColor, clamp((color.a - light) * uLightAlpha, 0.0, 1.0));
color.rgb = mix(color.rgb, uShadowColor, clamp((color.a - shadow) * uShadowAlpha, 0.0, 1.0));
finalColor = vec4(color.rgb * color.a, color.a);
}
`,$et=`struct BevelUniforms {
uLightColor: vec3<f32>,
uLightAlpha: f32,
uShadowColor: vec3<f32>,
uShadowAlpha: f32,
uTransform: vec2<f32>,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> bevelUniforms : BevelUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let transform = vec2<f32>(1.0 / gfu.uInputSize.xy) * vec2<f32>(bevelUniforms.uTransform.x, bevelUniforms.uTransform.y);
var color: vec4<f32> = textureSample(uTexture, uSampler, uv);
let lightSample: f32 = textureSample(uTexture, uSampler, uv - transform).a;
let shadowSample: f32 = textureSample(uTexture, uSampler, uv + transform).a;
let light = vec4<f32>(bevelUniforms.uLightColor, bevelUniforms.uLightAlpha);
let shadow = vec4<f32>(bevelUniforms.uShadowColor, bevelUniforms.uShadowAlpha);
color = vec4<f32>(mix(color.rgb, light.rgb, clamp((color.a - lightSample) * light.a, 0.0, 1.0)), color.a);
color = vec4<f32>(mix(color.rgb, shadow.rgb, clamp((color.a - shadowSample) * shadow.a, 0.0, 1.0)), color.a);
return vec4<f32>(color.rgb * color.a, color.a);
}`,Qet=Object.defineProperty,Zet=(i,t,e)=>t in i?Qet(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,uo=(i,t,e)=>(Zet(i,typeof t!="symbol"?t+"":t,e),e);const Jet=class uP extends xt{constructor(t){t={...uP.DEFAULT_OPTIONS,...t};const e=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:$et,entryPoint:"mainFragment"}}),s=Tt.from({vertex:Qt,fragment:qet,name:"bevel-filter"});super({gpuProgram:e,glProgram:s,resources:{bevelUniforms:{uLightColor:{value:new Float32Array(3),type:"vec3<f32>"},uLightAlpha:{value:t.lightAlpha,type:"f32"},uShadowColor:{value:new Float32Array(3),type:"vec3<f32>"},uShadowAlpha:{value:t.shadowAlpha,type:"f32"},uTransform:{value:new Float32Array(2),type:"vec2<f32>"}}},padding:1}),uo(this,"uniforms"),uo(this,"_thickness"),uo(this,"_rotation"),uo(this,"_lightColor"),uo(this,"_shadowColor"),this.uniforms=this.resources.bevelUniforms.uniforms,this._lightColor=new Mt,this._shadowColor=new Mt,this.lightColor=t.lightColor??16777215,this.shadowColor=t.shadowColor??0,Object.assign(this,t)}get rotation(){return this._rotation/$o}set rotation(t){this._rotation=t*$o,this._updateTransform()}get thickness(){return this._thickness}set thickness(t){this._thickness=t,this._updateTransform()}get lightColor(){return this._lightColor.value}set lightColor(t){this._lightColor.setValue(t);const[e,s,r]=this._lightColor.toArray();this.uniforms.uLightColor[0]=e,this.uniforms.uLightColor[1]=s,this.uniforms.uLightColor[2]=r}get lightAlpha(){return this.uniforms.uLightAlpha}set lightAlpha(t){this.uniforms.uLightAlpha=t}get shadowColor(){return this._shadowColor.value}set shadowColor(t){this._shadowColor.setValue(t);const[e,s,r]=this._shadowColor.toArray();this.uniforms.uShadowColor[0]=e,this.uniforms.uShadowColor[1]=s,this.uniforms.uShadowColor[2]=r}get shadowAlpha(){return this.uniforms.uShadowAlpha}set shadowAlpha(t){this.uniforms.uShadowAlpha=t}_updateTransform(){this.uniforms.uTransform[0]=this.thickness*Math.cos(this._rotation),this.uniforms.uTransform[1]=this.thickness*Math.sin(this._rotation)}};uo(Jet,"DEFAULT_OPTIONS",{rotation:45,thickness:2,lightColor:16777215,lightAlpha:.7,shadowColor:0,shadowAlpha:.7});var tst=Object.defineProperty,est=(i,t,e)=>t in i?tst(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,Fc=(i,t,e)=>(est(i,typeof t!="symbol"?t+"":t,e),e);const sst=class lP extends n_{constructor(...t){let e=t[0]??{};if(typeof e=="number"||Array.isArray(e)||"x"in e&&"y"in e){ct("6.0.0","BloomFilter constructor params are now options object. See params: { strength, quality, resolution, kernelSize }");let s=e;Array.isArray(s)&&(s={x:s[0],y:s[1]}),e={strength:s},t[1]!==void 0&&(e.quality=t[1]),t[2]!==void 0&&(e.resolution=t[2]),t[3]!==void 0&&(e.kernelSize=t[3])}e={...lP.DEFAULT_OPTIONS,...e},super(),Fc(this,"_blurXFilter"),Fc(this,"_blurYFilter"),Fc(this,"_strength"),this._strength={x:2,y:2},e.strength&&(typeof e.strength=="number"?(this._strength.x=e.strength,this._strength.y=e.strength):(this._strength.x=e.strength.x,this._strength.y=e.strength.y)),this._blurXFilter=new ny({...e,horizontal:!0,strength:this.strengthX}),this._blurYFilter=new ny({...e,horizontal:!1,strength:this.strengthY}),this._blurYFilter.blendMode="screen",Object.assign(this,e)}apply(t,e,s,r){const n=os.getSameSizeTexture(e);t.applyFilter(this,e,s,r),this._blurXFilter.apply(t,e,n,!0),this._blurYFilter.apply(t,n,s,!1),os.returnTexture(n)}get strength(){return this._strength}set strength(t){this._strength=typeof t=="number"?{x:t,y:t}:t,this._updateStrength()}get strengthX(){return this.strength.x}set strengthX(t){this.strength.x=t,this._updateStrength()}get strengthY(){return this.strength.y}set strengthY(t){this.strength.y=t,this._updateStrength()}_updateStrength(){this._blurXFilter.blur=this.strengthX,this._blurYFilter.blur=this.strengthY}get blur(){return ct("6.0.0","BloomFilter.blur is deprecated, please use BloomFilter.strength instead"),this.strengthX}set blur(t){ct("6.0.0","BloomFilter.blur is deprecated, please use BloomFilter.strength instead"),this.strength=t}get blurX(){return ct("6.0.0","BloomFilter.blurX is deprecated, please use BloomFilter.strengthX instead"),this.strengthX}set blurX(t){ct("6.0.0","BloomFilter.blurX is deprecated, please use BloomFilter.strengthX instead"),this.strengthX=t}get blurY(){return ct("6.0.0","BloomFilter.blurY is deprecated, please use BloomFilter.strengthY instead"),this.strengthY}set blurY(t){ct("6.0.0","BloomFilter.blurY is deprecated, please use BloomFilter.strengthY instead"),this.strengthY=t}};Fc(sst,"DEFAULT_OPTIONS",{strength:{x:2,y:2},quality:4,resolution:1,kernelSize:5});var ist=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec2 uDimensions;
uniform vec2 uCenter;
uniform float uRadius;
uniform float uStrength;
uniform vec4 uInputSize;
uniform vec4 uInputClamp;
void main()
{
vec2 coord = vTextureCoord * uInputSize.xy;
coord -= uCenter * uDimensions.xy;
float distance = length(coord);
if (distance < uRadius) {
float percent = distance / uRadius;
if (uStrength > 0.0) {
coord *= mix(1.0, smoothstep(0.0, uRadius / distance, percent), uStrength * 0.75);
} else {
coord *= mix(1.0, pow(percent, 1.0 + uStrength * 0.75) * uRadius / distance, 1.0 - percent);
}
}
coord += uCenter * uDimensions.xy;
coord /= uInputSize.xy;
vec2 clampedCoord = clamp(coord, uInputClamp.xy, uInputClamp.zw);
vec4 color = texture(uTexture, clampedCoord);
if (coord != clampedCoord) {
color *= max(0.0, 1.0 - length(coord - clampedCoord));
}
finalColor = color;
}
`,rst=`struct BulgePinchUniforms {
uDimensions: vec2<f32>,
uCenter: vec2<f32>,
uRadius: f32,
uStrength: f32,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> bulgePinchUniforms : BulgePinchUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let dimensions: vec2<f32> = bulgePinchUniforms.uDimensions;
let center: vec2<f32> = bulgePinchUniforms.uCenter;
let radius: f32 = bulgePinchUniforms.uRadius;
let strength: f32 = bulgePinchUniforms.uStrength;
var coord: vec2<f32> = (uv * gfu.uInputSize.xy) - center * dimensions.xy;
let distance: f32 = length(coord);
if (distance < radius) {
let percent: f32 = distance / radius;
if (strength > 0.0) {
coord *= mix(1.0, smoothstep(0.0, radius / distance, percent), strength * 0.75);
} else {
coord *= mix(1.0, pow(percent, 1.0 + strength * 0.75) * radius / distance, 1.0 - percent);
}
}
coord += (center * dimensions.xy);
coord /= gfu.uInputSize.xy;
let clampedCoord: vec2<f32> = clamp(coord, gfu.uInputClamp.xy, gfu.uInputClamp.zw);
var color: vec4<f32> = textureSample(uTexture, uSampler, clampedCoord);
if (coord.x != clampedCoord.x && coord.y != clampedCoord.y) {
color *= max(0.0, 1.0 - length(coord - clampedCoord));
}
return color;
}
fn compareVec2(x: vec2<f32>, y: vec2<f32>) -> bool
{
if (x.x == y.x && x.y == y.y)
{
return true;
}
return false;
}`,nst=Object.defineProperty,ast=(i,t,e)=>t in i?nst(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,hP=(i,t,e)=>(ast(i,typeof t!="symbol"?t+"":t,e),e);const ost=class cP extends xt{constructor(t){t={...cP.DEFAULT_OPTIONS,...t};const e=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:rst,entryPoint:"mainFragment"}}),s=Tt.from({vertex:Qt,fragment:ist,name:"bulge-pinch-filter"});super({gpuProgram:e,glProgram:s,resources:{bulgePinchUniforms:{uDimensions:{value:[0,0],type:"vec2<f32>"},uCenter:{value:t.center,type:"vec2<f32>"},uRadius:{value:t.radius,type:"f32"},uStrength:{value:t.strength,type:"f32"}}}}),hP(this,"uniforms"),this.uniforms=this.resources.bulgePinchUniforms.uniforms,Object.assign(this,t)}apply(t,e,s,r){this.uniforms.uDimensions[0]=e.frame.width,this.uniforms.uDimensions[1]=e.frame.height,t.applyFilter(this,e,s,r)}get center(){return this.uniforms.uCenter}set center(t){typeof t=="number"&&(t={x:t,y:t}),Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uCenter=t}get centerX(){return this.uniforms.uCenter.x}set centerX(t){this.uniforms.uCenter.x=t}get centerY(){return this.uniforms.uCenter.y}set centerY(t){this.uniforms.uCenter.y=t}get radius(){return this.uniforms.uRadius}set radius(t){this.uniforms.uRadius=t}get strength(){return this.uniforms.uStrength}set strength(t){this.uniforms.uStrength=t}};hP(ost,"DEFAULT_OPTIONS",{center:{x:.5,y:.5},radius:100,strength:1});var ust=`precision highp float;
in vec2 vTextureCoord;
in vec2 vFilterCoord;
out vec4 finalColor;
const int TYPE_LINEAR = 0;
const int TYPE_RADIAL = 1;
const int TYPE_CONIC = 2;
const int MAX_STOPS = 32;
uniform sampler2D uTexture;
uniform vec4 uOptions;
uniform vec2 uCounts;
uniform vec3 uColors[MAX_STOPS];
uniform vec4 uStops[MAX_STOPS];
const float PI = 3.1415926538;
const float PI_2 = PI*2.;
struct ColorStop {
float offset;
vec3 color;
float alpha;
};
mat2 rotate2d(float angle){
return mat2(cos(angle), -sin(angle),
sin(angle), cos(angle));
}
float projectLinearPosition(vec2 pos, float angle){
vec2 center = vec2(0.5);
vec2 result = pos - center;
result = rotate2d(angle) * result;
result = result + center;
return clamp(result.x, 0., 1.);
}
float projectRadialPosition(vec2 pos) {
float r = distance(pos, vec2(0.5));
return clamp(2.*r, 0., 1.);
}
float projectAnglePosition(vec2 pos, float angle) {
vec2 center = pos - vec2(0.5);
float polarAngle=atan(-center.y, center.x);
return mod(polarAngle + angle, PI_2) / PI_2;
}
float projectPosition(vec2 pos, int type, float angle) {
if (type == TYPE_LINEAR) {
return projectLinearPosition(pos, angle);
} else if (type == TYPE_RADIAL) {
return projectRadialPosition(pos);
} else if (type == TYPE_CONIC) {
return projectAnglePosition(pos, angle);
}
return pos.y;
}
void main(void) {
int uType = int(uOptions[0]);
float uAngle = uOptions[1];
float uAlpha = uOptions[2];
float uReplace = uOptions[3];
int uNumStops = int(uCounts[0]);
float uMaxColors = uCounts[1];
// current/original color
vec4 currentColor = texture(uTexture, vTextureCoord);
// skip calculations if gradient alpha is 0
if (0.0 == uAlpha) {
finalColor = currentColor;
return;
}
// project position
float y = projectPosition(vFilterCoord, int(uType), radians(uAngle));
// check gradient bounds
float offsetMin = uStops[0][0];
float offsetMax = 0.0;
int numStops = int(uNumStops);
for (int i = 0; i < MAX_STOPS; i++) {
if (i == numStops-1){ // last index
offsetMax = uStops[i][0];
}
}
if (y < offsetMin || y > offsetMax) {
finalColor = currentColor;
return;
}
// limit colors
if (uMaxColors > 0.) {
float stepSize = 1./uMaxColors;
float stepNumber = float(floor(y/stepSize));
y = stepSize * (stepNumber + 0.5);// offset by 0.5 to use color from middle of segment
}
// find color stops
ColorStop from;
ColorStop to;
for (int i = 0; i < MAX_STOPS; i++) {
if (y >= uStops[i][0]) {
from = ColorStop(uStops[i][0], uColors[i], uStops[i][1]);
to = ColorStop(uStops[i+1][0], uColors[i+1], uStops[i+1][1]);
}
if (i == numStops-1){ // last index
break;
}
}
// mix colors from stops
vec4 colorFrom = vec4(from.color * from.alpha, from.alpha);
vec4 colorTo = vec4(to.color * to.alpha, to.alpha);
float segmentHeight = to.offset - from.offset;
float relativePos = y - from.offset;// position from 0 to [segmentHeight]
float relativePercent = relativePos / segmentHeight;// position in percent between [from.offset] and [to.offset].
float gradientAlpha = uAlpha * currentColor.a;
vec4 gradientColor = mix(colorFrom, colorTo, relativePercent) * gradientAlpha;
if (uReplace < 0.5) {
// mix resulting color with current color
finalColor = gradientColor + currentColor*(1.-gradientColor.a);
} else {
// replace with gradient color
finalColor = gradientColor;
}
}
`,lst=`in vec2 aPosition;
out vec2 vTextureCoord;
out vec2 vFilterCoord;
uniform vec4 uInputSize;
uniform vec4 uOutputFrame;
uniform vec4 uOutputTexture;
vec4 filterVertexPosition( void )
{
vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;
position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
vec2 filterTextureCoord( void )
{
return aPosition * (uOutputFrame.zw * uInputSize.zw);
}
void main(void)
{
gl_Position = filterVertexPosition();
vTextureCoord = filterTextureCoord();
vFilterCoord = vTextureCoord * uInputSize.xy / uOutputFrame.zw;
}
`,Qy=`struct BaseUniforms {
uOptions: vec4<f32>,
uCounts: vec2<f32>,
};
struct StopsUniforms {
uColors: array<vec3<f32>, MAX_STOPS>,
uStops: array<vec4<f32>, MAX_STOPS>,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> baseUniforms : BaseUniforms;
@group(1) @binding(1) var<uniform> stopsUniforms : StopsUniforms;
struct VSOutput {
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>,
@location(1) coord : vec2<f32>
};
fn filterVertexPosition(aPosition:vec2<f32>) -> vec4<f32>
{
var position = aPosition * gfu.uOutputFrame.zw + gfu.uOutputFrame.xy;
position.x = position.x * (2.0 / gfu.uOutputTexture.x) - 1.0;
position.y = position.y * (2.0*gfu.uOutputTexture.z / gfu.uOutputTexture.y) - gfu.uOutputTexture.z;
return vec4(position, 0.0, 1.0);
}
fn filterTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
{
return aPosition * (gfu.uOutputFrame.zw * gfu.uInputSize.zw);
}
fn filterCoord( vTextureCoord:vec2<f32> ) -> vec2<f32>
{
return vTextureCoord * gfu.uInputSize.xy / gfu.uOutputFrame.zw;
}
fn globalTextureCoord( aPosition:vec2<f32> ) -> vec2<f32>
{
return (aPosition.xy / gfu.uGlobalFrame.zw) + (gfu.uGlobalFrame.xy / gfu.uGlobalFrame.zw);
}
fn getSize() -> vec2<f32>
{
return gfu.uGlobalFrame.zw;
}
@vertex
fn mainVertex(
@location(0) aPosition : vec2<f32>,
) -> VSOutput {
let vTextureCoord: vec2<f32> = filterTextureCoord(aPosition);
return VSOutput(
filterVertexPosition(aPosition),
vTextureCoord,
filterCoord(vTextureCoord),
);
}
struct ColorStop {
offset: f32,
color: vec3<f32>,
alpha: f32,
};
fn rotate2d(angle: f32) -> mat2x2<f32>{
return mat2x2(cos(angle), -sin(angle),
sin(angle), cos(angle));
}
fn projectLinearPosition(pos: vec2<f32>, angle: f32) -> f32 {
var center: vec2<f32> = vec2<f32>(0.5);
var result: vec2<f32> = pos - center;
result = rotate2d(angle) * result;
result = result + center;
return clamp(result.x, 0.0, 1.0);
}
fn projectRadialPosition(pos: vec2<f32>) -> f32 {
var r: f32 = distance(pos, vec2<f32>(0.5));
return clamp(2.0 * r, 0.0, 1.0);
}
fn projectAnglePosition(pos: vec2<f32>, angle: f32) -> f32 {
var center: vec2<f32> = pos - vec2<f32>(0.5, 0.5);
var polarAngle: f32 = atan2(-center.y, center.x);
return ((polarAngle + angle) % PI_2) / PI_2;
}
fn projectPosition(pos: vec2<f32>, gradientType: i32, angle: f32) -> f32 {
if (gradientType == TYPE_LINEAR) {
return projectLinearPosition(pos, angle);
} else if (gradientType == TYPE_RADIAL) {
return projectRadialPosition(pos);
} else if (gradientType == TYPE_CONIC) {
return projectAnglePosition(pos, angle);
}
return pos.y;
}
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>,
@location(1) coord : vec2<f32>
) -> @location(0) vec4<f32> {
let uType: i32 = i32(baseUniforms.uOptions[0]);
let uAngle: f32 = baseUniforms.uOptions[1];
let uAlpha: f32 = baseUniforms.uOptions[2];
let uReplace: f32 = baseUniforms.uOptions[3];
let uNumStops: i32 = i32(baseUniforms.uCounts[0]);
let uMaxColors: f32 = baseUniforms.uCounts[1];
// current/original color
var currentColor: vec4<f32> = textureSample(uTexture, uSampler, uv);
// skip calculations if gradient alpha is 0
if (uAlpha == 0.0) { return currentColor; }
// project position
var y: f32 = projectPosition(coord, uType, radians(uAngle));
// check gradient bounds
var offsetMin: f32 = stopsUniforms.uStops[0][0];
var offsetMax: f32 = 0.0;
let numStops: i32 = uNumStops;
for (var i: i32 = 0; i < MAX_STOPS; i = i + 1) {
if (i == numStops - 1) { // last index
offsetMax = stopsUniforms.uStops[i][0];
}
}
if (y < offsetMin || y > offsetMax) { return currentColor; }
// limit colors
if (uMaxColors > 0.0) {
var stepSize: f32 = 1.0 / uMaxColors;
var stepNumber: f32 = floor(y / stepSize);
y = stepSize * (stepNumber + 0.5); // offset by 0.5 to use color from middle of segment
}
// find color stops
var stopFrom: ColorStop;
var stopTo: ColorStop;
for (var i: i32 = 0; i < MAX_STOPS; i = i + 1) {
if (y >= stopsUniforms.uStops[i][0]) {
stopFrom = ColorStop(stopsUniforms.uStops[i][0], stopsUniforms.uColors[i], stopsUniforms.uStops[i][1]);
stopTo = ColorStop(stopsUniforms.uStops[i + 1][0], stopsUniforms.uColors[i + 1], stopsUniforms.uStops[i + 1][1]);
}
if (i == numStops - 1) { // last index
break;
}
}
// mix colors from stops
var colorFrom: vec4<f32> = vec4<f32>(stopFrom.color * stopFrom.alpha, stopFrom.alpha);
var colorTo: vec4<f32> = vec4<f32>(stopTo.color * stopTo.alpha, stopTo.alpha);
var segmentHeight: f32 = stopTo.offset - stopFrom.offset;
var relativePos: f32 = y - stopFrom.offset; // position from 0 to [segmentHeight]
var relativePercent: f32 = relativePos / segmentHeight; // position in percent between [from.offset] and [to.offset].
var gradientAlpha: f32 = uAlpha * currentColor.a;
var gradientColor: vec4<f32> = mix(colorFrom, colorTo, relativePercent) * gradientAlpha;
if (uReplace < 0.5) {
// mix resulting color with current color
return gradientColor + currentColor * (1.0 - gradientColor.a);
} else {
// replace with gradient color
return gradientColor;
}
}
const PI: f32 = 3.14159265358979323846264;
const PI_2: f32 = PI * 2.0;
const TYPE_LINEAR: i32 = 0;
const TYPE_RADIAL: i32 = 1;
const TYPE_CONIC: i32 = 2;
const MAX_STOPS: i32 = 32;`,Ja=Ja||{};Ja.stringify=function(){var i={"visit_linear-gradient":function(t){return i.visit_gradient(t)},"visit_repeating-linear-gradient":function(t){return i.visit_gradient(t)},"visit_radial-gradient":function(t){return i.visit_gradient(t)},"visit_repeating-radial-gradient":function(t){return i.visit_gradient(t)},visit_gradient:function(t){var e=i.visit(t.orientation);return e&&(e+=", "),t.type+"("+e+i.visit(t.colorStops)+")"},visit_shape:function(t){var e=t.value,s=i.visit(t.at),r=i.visit(t.style);return r&&(e+=" "+r),s&&(e+=" at "+s),e},"visit_default-radial":function(t){var e="",s=i.visit(t.at);return s&&(e+=s),e},"visit_extent-keyword":function(t){var e=t.value,s=i.visit(t.at);return s&&(e+=" at "+s),e},"visit_position-keyword":function(t){return t.value},visit_position:function(t){return i.visit(t.value.x)+" "+i.visit(t.value.y)},"visit_%":function(t){return t.value+"%"},visit_em:function(t){return t.value+"em"},visit_px:function(t){return t.value+"px"},visit_literal:function(t){return i.visit_color(t.value,t)},visit_hex:function(t){return i.visit_color("#"+t.value,t)},visit_rgb:function(t){return i.visit_color("rgb("+t.value.join(", ")+")",t)},visit_rgba:function(t){return i.visit_color("rgba("+t.value.join(", ")+")",t)},visit_color:function(t,e){var s=t,r=i.visit(e.length);return r&&(s+=" "+r),s},visit_angular:function(t){return t.value+"deg"},visit_directional:function(t){return"to "+t.value},visit_array:function(t){var e="",s=t.length;return t.forEach(function(r,n){e+=i.visit(r),n<s-1&&(e+=", ")}),e},visit:function(t){if(!t)return"";var e="";if(t instanceof Array)return i.visit_array(t,e);if(t.type){var s=i["visit_"+t.type];if(s)return s(t);throw Error("Missing visitor visit_"+t.type)}else throw Error("Invalid node.")}};return function(t){return i.visit(t)}}();var Ja=Ja||{};Ja.parse=function(){var i={linearGradient:/^(\-(webkit|o|ms|moz)\-)?(linear\-gradient)/i,repeatingLinearGradient:/^(\-(webkit|o|ms|moz)\-)?(repeating\-linear\-gradient)/i,radialGradient:/^(\-(webkit|o|ms|moz)\-)?(radial\-gradient)/i,repeatingRadialGradient:/^(\-(webkit|o|ms|moz)\-)?(repeating\-radial\-gradient)/i,sideOrCorner:/^to (left (top|bottom)|right (top|bottom)|left|right|top|bottom)/i,extentKeywords:/^(closest\-side|closest\-corner|farthest\-side|farthest\-corner|contain|cover)/,positionKeywords:/^(left|center|right|top|bottom)/i,pixelValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))px/,percentageValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))\%/,emValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))em/,angleValue:/^(-?(([0-9]*\.[0-9]+)|([0-9]+\.?)))deg/,startCall:/^\(/,endCall:/^\)/,comma:/^,/,hexColor:/^\#([0-9a-fA-F]+)/,literalColor:/^([a-zA-Z]+)/,rgbColor:/^rgb/i,rgbaColor:/^rgba/i,number:/^(([0-9]*\.[0-9]+)|([0-9]+\.?))/},t="";function e(V){var Pt=new Error(t+": "+V);throw Pt.source=t,Pt}function s(){var V=r();return t.length>0&&e("Invalid input not EOF"),V}function r(){return y(n)}function n(){return a("linear-gradient",i.linearGradient,u)||a("repeating-linear-gradient",i.repeatingLinearGradient,u)||a("radial-gradient",i.radialGradient,h)||a("repeating-radial-gradient",i.repeatingRadialGradient,h)}function a(V,Pt,K){return o(Pt,function(ut){var Kr=K();return Kr&&(lt(i.comma)||e("Missing comma before color stops")),{type:V,orientation:Kr,colorStops:y(C)}})}function o(V,Pt){var K=lt(V);if(K){lt(i.startCall)||e("Missing (");var ut=Pt(K);return lt(i.endCall)||e("Missing )"),ut}}function u(){return l()||c()}function l(){return Y("directional",i.sideOrCorner,1)}function c(){return Y("angular",i.angleValue,1)}function h(){var V,Pt=_(),K;return Pt&&(V=[],V.push(Pt),K=t,lt(i.comma)&&(Pt=_(),Pt?V.push(Pt):t=K)),V}function _(){var V=d()||f();if(V)V.at=g();else{var Pt=p();if(Pt){V=Pt;var K=g();K&&(V.at=K)}else{var ut=m();ut&&(V={type:"default-radial",at:ut})}}return V}function d(){var V=Y("shape",/^(circle)/i,0);return V&&(V.style=X()||p()),V}function f(){var V=Y("shape",/^(ellipse)/i,0);return V&&(V.style=k()||p()),V}function p(){return Y("extent-keyword",i.extentKeywords,1)}function g(){if(Y("position",/^at/,0)){var V=m();return V||e("Missing positioning value"),V}}function m(){var V=O();if(V.x||V.y)return{type:"position",value:V}}function O(){return{x:k(),y:k()}}function y(V){var Pt=V(),K=[];if(Pt)for(K.push(Pt);lt(i.comma);)Pt=V(),Pt?K.push(Pt):e("One extra comma");return K}function C(){var V=P();return V||e("Expected color definition"),V.length=k(),V}function P(){return N()||x()||F()||L()}function L(){return Y("literal",i.literalColor,0)}function N(){return Y("hex",i.hexColor,1)}function F(){return o(i.rgbColor,function(){return{type:"rgb",value:y(U)}})}function x(){return o(i.rgbaColor,function(){return{type:"rgba",value:y(U)}})}function U(){return lt(i.number)[1]}function k(){return Y("%",i.percentageValue,1)||gt()||X()}function gt(){return Y("position-keyword",i.positionKeywords,1)}function X(){return Y("px",i.pixelValue,1)||Y("em",i.emValue,1)}function Y(V,Pt,K){var ut=lt(Pt);if(ut)return{type:V,value:ut[K]}}function lt(V){var Pt,K;return K=/^[\n\r\t\s]+/.exec(t),K&&Gt(K[0].length),Pt=V.exec(t),Pt&&Gt(Pt[0].length),Pt}function Gt(V){t=t.substr(V)}return function(V){return t=V.toString(),s()}}();var hst=Ja.parse;Ja.stringify;function cst(i){const t=hst(Tst(i));if(t.length===0)throw new Error("Invalid CSS gradient.");if(t.length!==1)throw new Error("Unsupported CSS gradient (multiple gradients is not supported).");const e=t[0],s=_st(e.type),r=dst(e.colorStops),n=mst(e.orientation);return{type:s,stops:r,angle:n}}function _st(i){const t={"linear-gradient":0,"radial-gradient":1};if(!(i in t))throw new Error(`Unsupported gradient type "${i}"`);return t[i]}function dst(i){const t=gst(i),e=[],s=new Mt;for(let r=0;r<i.length;r++){const n=fst(i[r]),a=s.setValue(n).toArray();e.push({offset:t[r],color:a.slice(0,3),alpha:a[3]})}return e}function fst(i){switch(i.type){case"hex":return`#${i.value}`;case"literal":return i.value;default:return`${i.type}(${i.value.join(",")})`}}function gst(i){const t=[];for(let n=0;n<i.length;n++){const a=i[n];let o=-1;a.type==="literal"&&a.length&&"type"in a.length&&a.length.type==="%"&&"value"in a.length&&(o=parseFloat(a.length.value)/100),t.push(o)}const s=n=>{for(let a=n;a<t.length;a++)if(t[a]!==-1)return{indexDelta:a-n,offset:t[a]};return{indexDelta:t.length-1-n,offset:1}};let r=0;for(let n=0;n<t.length;n++){const a=t[n];if(a!==-1)r=a;else if(n===0)t[n]=0;else if(n+1===t.length)t[n]=1;else{const o=s(n),l=(o.offset-r)/(1+o.indexDelta);for(let c=0;c<=o.indexDelta;c++)t[n+c]=r+(c+1)*l;n+=o.indexDelta,r=t[n]}}return t.map(pst)}function pst(i){return i.toString().length>6?parseFloat(i.toString().substring(0,6)):i}function mst(i){if(typeof i>"u")return 0;if("type"in i&&"value"in i)switch(i.type){case"angular":return parseFloat(i.value);case"directional":return Est(i.value)}return 0}function Est(i){const t={left:270,top:0,bottom:180,right:90,"left top":315,"top left":315,"left bottom":225,"bottom left":225,"right top":45,"top right":45,"right bottom":135,"bottom right":135};if(!(i in t))throw new Error(`Unsupported directional value "${i}"`);return t[i]}function Tst(i){let t=i.replace(/\s{2,}/gu," ");return t=t.replace(/;/g,""),t=t.replace(/ ,/g,","),t=t.replace(/\( /g,"("),t=t.replace(/ \)/g,")"),t.trim()}var Ist=Object.defineProperty,Sst=(i,t,e)=>t in i?Ist(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,Ua=(i,t,e)=>(Sst(i,typeof t!="symbol"?t+"":t,e),e);const JE=90;function Rst(i){return[...i].sort((t,e)=>t.offset-e.offset)}const Th=class wc extends xt{constructor(t){if(t&&"css"in t?t={...cst(t.css||""),alpha:t.alpha??wc.defaults.alpha,maxColors:t.maxColors??wc.defaults.maxColors}:t={...wc.defaults,...t},!t.stops||t.stops.length<2)throw new Error("ColorGradientFilter requires at least 2 color stops.");const e=At.from({vertex:{source:Qy,entryPoint:"mainVertex"},fragment:{source:Qy,entryPoint:"mainFragment"}}),s=Tt.from({vertex:lst,fragment:ust,name:"color-gradient-filter"}),r=32;super({gpuProgram:e,glProgram:s,resources:{baseUniforms:{uOptions:{value:[t.type,t.angle??JE,t.alpha,t.replace?1:0],type:"vec4<f32>"},uCounts:{value:[t.stops.length,t.maxColors],type:"vec2<f32>"}},stopsUniforms:{uColors:{value:new Float32Array(r*3),type:"vec3<f32>",size:r},uStops:{value:new Float32Array(r*4),type:"vec4<f32>",size:r}}}}),Ua(this,"baseUniforms"),Ua(this,"stopsUniforms"),Ua(this,"_stops",[]),this.baseUniforms=this.resources.baseUniforms.uniforms,this.stopsUniforms=this.resources.stopsUniforms.uniforms,Object.assign(this,t)}get stops(){return this._stops}set stops(t){const e=Rst(t),s=new Mt;let r,n,a;for(let o=0;o<e.length;o++){s.setValue(e[o].color);const u=o*3;[r,n,a]=s.toArray(),this.stopsUniforms.uColors[u]=r,this.stopsUniforms.uColors[u+1]=n,this.stopsUniforms.uColors[u+2]=a,this.stopsUniforms.uStops[o*4]=e[o].offset,this.stopsUniforms.uStops[o*4+1]=e[o].alpha}this.baseUniforms.uCounts[0]=e.length,this._stops=e}get type(){return this.baseUniforms.uOptions[0]}set type(t){this.baseUniforms.uOptions[0]=t}get angle(){return this.baseUniforms.uOptions[1]+JE}set angle(t){this.baseUniforms.uOptions[1]=t-JE}get alpha(){return this.baseUniforms.uOptions[2]}set alpha(t){this.baseUniforms.uOptions[2]=t}get maxColors(){return this.baseUniforms.uCounts[1]}set maxColors(t){this.baseUniforms.uCounts[1]=t}get replace(){return this.baseUniforms.uOptions[3]>.5}set replace(t){this.baseUniforms.uOptions[3]=t?1:0}};Ua(Th,"LINEAR",0);Ua(Th,"RADIAL",1);Ua(Th,"CONIC",2);Ua(Th,"defaults",{type:Th.LINEAR,stops:[{offset:0,color:16711680,alpha:1},{offset:1,color:255,alpha:1}],alpha:1,angle:90,maxColors:0,replace:!1});var Ast=`in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform sampler2D uMapTexture;
uniform float uMix;
uniform float uSize;
uniform float uSliceSize;
uniform float uSlicePixelSize;
uniform float uSliceInnerSize;
void main() {
vec4 color = texture(uTexture, vTextureCoord.xy);
vec4 adjusted;
if (color.a > 0.0) {
color.rgb /= color.a;
float innerWidth = uSize - 1.0;
float zSlice0 = min(floor(color.b * innerWidth), innerWidth);
float zSlice1 = min(zSlice0 + 1.0, innerWidth);
float xOffset = uSlicePixelSize * 0.5 + color.r * uSliceInnerSize;
float s0 = xOffset + (zSlice0 * uSliceSize);
float s1 = xOffset + (zSlice1 * uSliceSize);
float yOffset = uSliceSize * 0.5 + color.g * (1.0 - uSliceSize);
vec4 slice0Color = texture(uMapTexture, vec2(s0,yOffset));
vec4 slice1Color = texture(uMapTexture, vec2(s1,yOffset));
float zOffset = fract(color.b * innerWidth);
adjusted = mix(slice0Color, slice1Color, zOffset);
color.rgb *= color.a;
}
finalColor = vec4(mix(color, adjusted, uMix).rgb, color.a);
}`,Ost=`struct ColorMapUniforms {
uMix: f32,
uSize: f32,
uSliceSize: f32,
uSlicePixelSize: f32,
uSliceInnerSize: f32,
};
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> colorMapUniforms : ColorMapUniforms;
@group(1) @binding(1) var uMapTexture: texture_2d<f32>;
@group(1) @binding(2) var uMapSampler: sampler;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
var color:vec4<f32> = textureSample(uTexture, uSampler, uv);
var adjusted: vec4<f32>;
var altColor: vec4<f32> = vec4<f32>(color.rgb / color.a, color.a);
let innerWidth: f32 = colorMapUniforms.uSize - 1.0;
let zSlice0: f32 = min(floor(color.b * innerWidth), innerWidth);
let zSlice1: f32 = min(zSlice0 + 1.0, innerWidth);
let xOffset: f32 = colorMapUniforms.uSlicePixelSize * 0.5 + color.r * colorMapUniforms.uSliceInnerSize;
let s0: f32 = xOffset + (zSlice0 * colorMapUniforms.uSliceSize);
let s1: f32 = xOffset + (zSlice1 * colorMapUniforms.uSliceSize);
let yOffset: f32 = colorMapUniforms.uSliceSize * 0.5 + color.g * (1.0 - colorMapUniforms.uSliceSize);
let slice0Color: vec4<f32> = textureSample(uMapTexture, uMapSampler, vec2(s0,yOffset));
let slice1Color: vec4<f32> = textureSample(uMapTexture, uMapSampler, vec2(s1,yOffset));
let zOffset: f32 = fract(color.b * innerWidth);
adjusted = mix(slice0Color, slice1Color, zOffset);
altColor = vec4<f32>(color.rgb * color.a, color.a);
let realColor: vec4<f32> = select(color, altColor, color.a > 0.0);
return vec4<f32>(mix(realColor, adjusted, colorMapUniforms.uMix).rgb, realColor.a);
}`,yst=Object.defineProperty,vst=(i,t,e)=>t in i?yst(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,lr=(i,t,e)=>(vst(i,typeof t!="symbol"?t+"":t,e),e);const Cst=class _P extends xt{constructor(...t){let e=t[0]??{};if((e instanceof W||e instanceof De)&&(ct("6.0.0","ColorMapFilter constructor params are now options object. See params: { colorMap, nearest, mix }"),e={colorMap:e},t[1]!==void 0&&(e.nearest=t[1]),t[2]!==void 0&&(e.mix=t[2])),e={..._P.DEFAULT_OPTIONS,...e},!e.colorMap)throw Error("No color map texture source was provided to ColorMapFilter");const s=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Ost,entryPoint:"mainFragment"}}),r=Tt.from({vertex:Qt,fragment:Ast,name:"color-map-filter"});super({gpuProgram:s,glProgram:r,resources:{colorMapUniforms:{uMix:{value:e.mix,type:"f32"},uSize:{value:0,type:"f32"},uSliceSize:{value:0,type:"f32"},uSlicePixelSize:{value:0,type:"f32"},uSliceInnerSize:{value:0,type:"f32"}},uMapTexture:e.colorMap.source,uMapSampler:e.colorMap.source.style}}),lr(this,"uniforms"),lr(this,"_size",0),lr(this,"_sliceSize",0),lr(this,"_slicePixelSize",0),lr(this,"_sliceInnerSize",0),lr(this,"_nearest",!1),lr(this,"_scaleMode","linear"),lr(this,"_colorMap"),this.uniforms=this.resources.colorMapUniforms.uniforms,Object.assign(this,e)}get mix(){return this.uniforms.uMix}set mix(t){this.uniforms.uMix=t}get colorSize(){return this._size}get colorMap(){return this._colorMap}set colorMap(t){if(!t||t===this.colorMap)return;const e=t instanceof W?t.source:t;e.style.scaleMode=this._scaleMode,e.autoGenerateMipmaps=!1,this._size=e.height,this._sliceSize=1/this._size,this._slicePixelSize=this._sliceSize/this._size,this._sliceInnerSize=this._slicePixelSize*(this._size-1),this.uniforms.uSize=this._size,this.uniforms.uSliceSize=this._sliceSize,this.uniforms.uSlicePixelSize=this._slicePixelSize,this.uniforms.uSliceInnerSize=this._sliceInnerSize,this.resources.uMapTexture=e,this._colorMap=t}get nearest(){return this._nearest}set nearest(t){this._nearest=t,this._scaleMode=t?"nearest":"linear";const e=this._colorMap;e&&e.source&&(e.source.scaleMode=this._scaleMode,e.source.autoGenerateMipmaps=!1,e.source.style.update(),e.source.update())}updateColorMap(){const t=this._colorMap;t!=null&&t.source&&(t.source.update(),this.colorMap=t)}destroy(){var t;(t=this._colorMap)==null||t.destroy(),super.destroy()}};lr(Cst,"DEFAULT_OPTIONS",{colorMap:W.WHITE,nearest:!1,mix:1});var Mst=`in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec3 uColor;
uniform float uAlpha;
void main(void) {
vec4 c = texture(uTexture, vTextureCoord);
finalColor = vec4(mix(c.rgb, uColor.rgb, c.a * uAlpha), c.a);
}
`,xst=`struct ColorOverlayUniforms {
uColor: vec3<f32>,
uAlpha: f32,
};
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> colorOverlayUniforms : ColorOverlayUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let c = textureSample(uTexture, uSampler, uv);
return vec4<f32>(mix(c.rgb, colorOverlayUniforms.uColor.rgb, c.a * colorOverlayUniforms.uAlpha), c.a);
}
`,Pst=Object.defineProperty,bst=(i,t,e)=>t in i?Pst(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,uI=(i,t,e)=>(bst(i,typeof t!="symbol"?t+"":t,e),e);const Nst=class dP extends xt{constructor(...t){let e=t[0]??{};(typeof e=="number"||Array.isArray(e)||e instanceof Float32Array)&&(ct("6.0.0","ColorOverlayFilter constructor params are now options object. See params: { color, alpha }"),e={color:e},t[1]!==void 0&&(e.alpha=t[1])),e={...dP.DEFAULT_OPTIONS,...e};const s=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:xst,entryPoint:"mainFragment"}}),r=Tt.from({vertex:Qt,fragment:Mst,name:"color-overlay-filter"});super({gpuProgram:s,glProgram:r,resources:{colorOverlayUniforms:{uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:e.alpha,type:"f32"}}}}),uI(this,"uniforms"),uI(this,"_color"),this.uniforms=this.resources.colorOverlayUniforms.uniforms,this._color=new Mt,this.color=e.color??0}get color(){return this._color.value}set color(t){this._color.setValue(t);const[e,s,r]=this._color.toArray();this.uniforms.uColor[0]=e,this.uniforms.uColor[1]=s,this.uniforms.uColor[2]=r}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}};uI(Nst,"DEFAULT_OPTIONS",{color:0,alpha:1});var Ust=`in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec3 uOriginalColor;
uniform vec3 uTargetColor;
uniform float uTolerance;
void main(void) {
vec4 c = texture(uTexture, vTextureCoord);
vec3 colorDiff = uOriginalColor - (c.rgb / max(c.a, 0.0000000001));
float colorDistance = length(colorDiff);
float doReplace = step(colorDistance, uTolerance);
finalColor = vec4(mix(c.rgb, (uTargetColor + colorDiff) * c.a, doReplace), c.a);
}
`,Dst=`struct ColorReplaceUniforms {
uOriginalColor: vec3<f32>,
uTargetColor: vec3<f32>,
uTolerance: f32,
};
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> colorReplaceUniforms : ColorReplaceUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let sample: vec4<f32> = textureSample(uTexture, uSampler, uv);
let colorDiff: vec3<f32> = colorReplaceUniforms.uOriginalColor - (sample.rgb / max(sample.a, 0.0000000001));
let colorDistance: f32 = length(colorDiff);
let doReplace: f32 = step(colorDistance, colorReplaceUniforms.uTolerance);
return vec4<f32>(mix(sample.rgb, (colorReplaceUniforms.uTargetColor + colorDiff) * sample.a, doReplace), sample.a);
}`,Lst=Object.defineProperty,Fst=(i,t,e)=>t in i?Lst(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,Gc=(i,t,e)=>(Fst(i,typeof t!="symbol"?t+"":t,e),e);const wst=class fP extends xt{constructor(...t){let e=t[0]??{};(typeof e=="number"||Array.isArray(e)||e instanceof Float32Array)&&(ct("6.0.0","ColorReplaceFilter constructor params are now options object. See params: { originalColor, targetColor, tolerance }"),e={originalColor:e},t[1]!==void 0&&(e.targetColor=t[1]),t[2]!==void 0&&(e.tolerance=t[2])),e={...fP.DEFAULT_OPTIONS,...e};const s=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Dst,entryPoint:"mainFragment"}}),r=Tt.from({vertex:Qt,fragment:Ust,name:"color-replace-filter"});super({gpuProgram:s,glProgram:r,resources:{colorReplaceUniforms:{uOriginalColor:{value:new Float32Array(3),type:"vec3<f32>"},uTargetColor:{value:new Float32Array(3),type:"vec3<f32>"},uTolerance:{value:e.tolerance,type:"f32"}}}}),Gc(this,"uniforms"),Gc(this,"_originalColor"),Gc(this,"_targetColor"),this.uniforms=this.resources.colorReplaceUniforms.uniforms,this._originalColor=new Mt,this._targetColor=new Mt,this.originalColor=e.originalColor??16711680,this.targetColor=e.targetColor??0,Object.assign(this,e)}get originalColor(){return this._originalColor.value}set originalColor(t){this._originalColor.setValue(t);const[e,s,r]=this._originalColor.toArray();this.uniforms.uOriginalColor[0]=e,this.uniforms.uOriginalColor[1]=s,this.uniforms.uOriginalColor[2]=r}get targetColor(){return this._targetColor.value}set targetColor(t){this._targetColor.setValue(t);const[e,s,r]=this._targetColor.toArray();this.uniforms.uTargetColor[0]=e,this.uniforms.uTargetColor[1]=s,this.uniforms.uTargetColor[2]=r}get tolerance(){return this.uniforms.uTolerance}set tolerance(t){this.uniforms.uTolerance=t}set newColor(t){ct("6.0.0","ColorReplaceFilter.newColor is deprecated, please use ColorReplaceFilter.targetColor instead"),this.targetColor=t}get newColor(){return ct("6.0.0","ColorReplaceFilter.newColor is deprecated, please use ColorReplaceFilter.targetColor instead"),this.targetColor}set epsilon(t){ct("6.0.0","ColorReplaceFilter.epsilon is deprecated, please use ColorReplaceFilter.tolerance instead"),this.tolerance=t}get epsilon(){return ct("6.0.0","ColorReplaceFilter.epsilon is deprecated, please use ColorReplaceFilter.tolerance instead"),this.tolerance}};Gc(wst,"DEFAULT_OPTIONS",{originalColor:16711680,targetColor:0,tolerance:.4});var Gst=`in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec2 uTexelSize;
uniform mat3 uMatrix;
void main(void)
{
vec4 c11 = texture(uTexture, vTextureCoord - uTexelSize); // top left
vec4 c12 = texture(uTexture, vec2(vTextureCoord.x, vTextureCoord.y - uTexelSize.y)); // top center
vec4 c13 = texture(uTexture, vec2(vTextureCoord.x + uTexelSize.x, vTextureCoord.y - uTexelSize.y)); // top right
vec4 c21 = texture(uTexture, vec2(vTextureCoord.x - uTexelSize.x, vTextureCoord.y)); // mid left
vec4 c22 = texture(uTexture, vTextureCoord); // mid center
vec4 c23 = texture(uTexture, vec2(vTextureCoord.x + uTexelSize.x, vTextureCoord.y)); // mid right
vec4 c31 = texture(uTexture, vec2(vTextureCoord.x - uTexelSize.x, vTextureCoord.y + uTexelSize.y)); // bottom left
vec4 c32 = texture(uTexture, vec2(vTextureCoord.x, vTextureCoord.y + uTexelSize.y)); // bottom center
vec4 c33 = texture(uTexture, vTextureCoord + uTexelSize); // bottom right
finalColor =
c11 * uMatrix[0][0] + c12 * uMatrix[0][1] + c13 * uMatrix[0][2] +
c21 * uMatrix[1][0] + c22 * uMatrix[1][1] + c23 * uMatrix[1][2] +
c31 * uMatrix[2][0] + c32 * uMatrix[2][1] + c33 * uMatrix[2][2];
finalColor.a = c22.a;
}`,Bst=`struct ConvolutionUniforms {
uMatrix: mat3x3<f32>,
uTexelSize: vec2<f32>,
};
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> convolutionUniforms : ConvolutionUniforms;
@fragment
fn mainFragment(
@location(0) uv: vec2<f32>,
@builtin(position) position: vec4<f32>
) -> @location(0) vec4<f32> {
let texelSize = convolutionUniforms.uTexelSize;
let matrix = convolutionUniforms.uMatrix;
let c11: vec4<f32> = textureSample(uTexture, uSampler, uv - texelSize); // top left
let c12: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x, uv.y - texelSize.y)); // top center
let c13: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x + texelSize.x, uv.y - texelSize.y)); // top right
let c21: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x - texelSize.x, uv.y)); // mid left
let c22: vec4<f32> = textureSample(uTexture, uSampler, uv); // mid center
let c23: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x + texelSize.x, uv.y)); // mid right
let c31: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x - texelSize.x, uv.y + texelSize.y)); // bottom left
let c32: vec4<f32> = textureSample(uTexture, uSampler, vec2<f32>(uv.x, uv.y + texelSize.y)); // bottom center
let c33: vec4<f32> = textureSample(uTexture, uSampler, uv + texelSize); // bottom right
var finalColor: vec4<f32> = vec4<f32>(
c11 * matrix[0][0] + c12 * matrix[0][1] + c13 * matrix[0][2] +
c21 * matrix[1][0] + c22 * matrix[1][1] + c23 * matrix[1][2] +
c31 * matrix[2][0] + c32 * matrix[2][1] + c33 * matrix[2][2]
);
finalColor.a = c22.a;
return finalColor;
}`,kst=Object.defineProperty,zst=(i,t,e)=>t in i?kst(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,gP=(i,t,e)=>(zst(i,typeof t!="symbol"?t+"":t,e),e);const Vst=class pP extends xt{constructor(...t){let e=t[0]??{};Array.isArray(e)&&(ct("6.0.0","ConvolutionFilter constructor params are now options object. See params: { matrix, width, height }"),e={matrix:e},t[1]!==void 0&&(e.width=t[1]),t[2]!==void 0&&(e.height=t[2])),e={...pP.DEFAULT_OPTIONS,...e};const s=e.width??200,r=e.height??200,n=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Bst,entryPoint:"mainFragment"}}),a=Tt.from({vertex:Qt,fragment:Gst,name:"convolution-filter"});super({gpuProgram:n,glProgram:a,resources:{convolutionUniforms:{uMatrix:{value:e.matrix,type:"mat3x3<f32>"},uTexelSize:{value:{x:1/s,y:1/r},type:"vec2<f32>"}}}}),gP(this,"uniforms"),this.uniforms=this.resources.convolutionUniforms.uniforms,this.width=s,this.height=r}get matrix(){return this.uniforms.uMatrix}set matrix(t){t.forEach((e,s)=>{this.uniforms.uMatrix[s]=e})}get width(){return 1/this.uniforms.uTexelSize.x}set width(t){this.uniforms.uTexelSize.x=1/t}get height(){return 1/this.uniforms.uTexelSize.y}set height(t){this.uniforms.uTexelSize.y=1/t}};gP(Vst,"DEFAULT_OPTIONS",{matrix:new Float32Array(9),width:200,height:200});var Hst=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec4 uLine;
uniform vec2 uNoise;
uniform vec3 uVignette;
uniform float uSeed;
uniform float uTime;
uniform vec2 uDimensions;
uniform vec4 uInputSize;
const float SQRT_2 = 1.414213;
float rand(vec2 co) {
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
}
float vignette(vec3 co, vec2 coord)
{
float outter = SQRT_2 - uVignette[0] * SQRT_2;
vec2 dir = vec2(0.5) - coord;
dir.y *= uDimensions.y / uDimensions.x;
float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + uVignette[2] * SQRT_2), 0.0, 1.0);
return darker + (1.0 - darker) * (1.0 - uVignette[1]);
}
float noise(vec2 coord)
{
vec2 pixelCoord = coord * uInputSize.xy;
pixelCoord.x = floor(pixelCoord.x / uNoise[1]);
pixelCoord.y = floor(pixelCoord.y / uNoise[1]);
return (rand(pixelCoord * uNoise[1] * uSeed) - 0.5) * uNoise[0];
}
vec3 interlaceLines(vec3 co, vec2 coord)
{
vec3 color = co;
float curvature = uLine[0];
float lineWidth = uLine[1];
float lineContrast = uLine[2];
float verticalLine = uLine[3];
vec2 dir = vec2(coord * uInputSize.xy / uDimensions - 0.5);
float _c = curvature > 0. ? curvature : 1.;
float k = curvature > 0. ? (length(dir * dir) * 0.25 * _c * _c + 0.935 * _c) : 1.;
vec2 uv = dir * k;
float v = verticalLine > 0.5 ? uv.x * uDimensions.x : uv.y * uDimensions.y;
v *= min(1.0, 2.0 / lineWidth ) / _c;
float j = 1. + cos(v * 1.2 - uTime) * 0.5 * lineContrast;
color *= j;
float segment = verticalLine > 0.5 ? mod((dir.x + .5) * uDimensions.x, 4.) : mod((dir.y + .5) * uDimensions.y, 4.);
color *= 0.99 + ceil(segment) * 0.015;
return color;
}
void main(void)
{
finalColor = texture(uTexture, vTextureCoord);
vec2 coord = vTextureCoord * uInputSize.xy / uDimensions;
if (uNoise[0] > 0.0 && uNoise[1] > 0.0)
{
float n = noise(vTextureCoord);
finalColor += vec4(n, n, n, finalColor.a);
}
if (uVignette[0] > 0.)
{
float v = vignette(finalColor.rgb, coord);
finalColor *= vec4(v, v, v, finalColor.a);
}
if (uLine[1] > 0.0)
{
finalColor = vec4(interlaceLines(finalColor.rgb, vTextureCoord), finalColor.a);
}
}
`,Yst=`struct CRTUniforms {
uLine: vec4<f32>,
uNoise: vec2<f32>,
uVignette: vec3<f32>,
uSeed: f32,
uTime: f32,
uDimensions: vec2<f32>,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> crtUniforms : CRTUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
var color: vec4<f32> = textureSample(uTexture, uSampler, uv);
let coord: vec2<f32> = uv * gfu.uInputSize.xy / crtUniforms.uDimensions;
let uNoise = crtUniforms.uNoise;
if (uNoise[0] > 0.0 && uNoise[1] > 0.0)
{
color += vec4<f32>(vec3<f32>(noise(uv)), color.a);
}
if (crtUniforms.uVignette[0] > 0.)
{
color *= vec4<f32>(vec3<f32>(vignette(color.rgb, coord)), color.a);
}
if (crtUniforms.uLine[1] > 0.0)
{
color = vec4<f32>(vec3<f32>(interlaceLines(color.rgb, uv)), color.a);
}
return color;
}
const SQRT_2: f32 = 1.414213;
fn modulo(x: f32, y: f32) -> f32
{
return x - y * floor(x/y);
}
fn rand(co: vec2<f32>) -> f32
{
return fract(sin(dot(co, vec2<f32>(12.9898, 78.233))) * 43758.5453);
}
fn vignette(co: vec3<f32>, coord: vec2<f32>) -> f32
{
let uVignette = crtUniforms.uVignette;
let uDimensions = crtUniforms.uDimensions;
let outter: f32 = SQRT_2 - uVignette[0] * SQRT_2;
var dir: vec2<f32> = vec2<f32>(0.5) - coord;
dir.y *= uDimensions.y / uDimensions.x;
let darker: f32 = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + uVignette[2] * SQRT_2), 0.0, 1.0);
return darker + (1.0 - darker) * (1.0 - uVignette[1]);
}
fn noise(coord: vec2<f32>) -> f32
{
let uNoise = crtUniforms.uNoise;
let uSeed = crtUniforms.uSeed;
var pixelCoord: vec2<f32> = coord * gfu.uInputSize.xy;
pixelCoord.x = floor(pixelCoord.x / uNoise[1]);
pixelCoord.y = floor(pixelCoord.y / uNoise[1]);
return (rand(pixelCoord * uNoise[1] * uSeed) - 0.5) * uNoise[0];
}
fn interlaceLines(co: vec3<f32>, coord: vec2<f32>) -> vec3<f32>
{
var color = co;
let uDimensions = crtUniforms.uDimensions;
let curvature: f32 = crtUniforms.uLine[0];
let lineWidth: f32 = crtUniforms.uLine[1];
let lineContrast: f32 = crtUniforms.uLine[2];
let verticalLine: f32 = crtUniforms.uLine[3];
let dir: vec2<f32> = vec2<f32>(coord * gfu.uInputSize.xy / uDimensions - 0.5);
let _c: f32 = select(1., curvature, curvature > 0.);
let k: f32 = select(1., (length(dir * dir) * 0.25 * _c * _c + 0.935 * _c), curvature > 0.);
let uv: vec2<f32> = dir * k;
let v: f32 = select(uv.y * uDimensions.y, uv.x * uDimensions.x, verticalLine > 0.5) * min(1.0, 2.0 / lineWidth ) / _c;
let j: f32 = 1. + cos(v * 1.2 - crtUniforms.uTime) * 0.5 * lineContrast;
color *= j;
let segment: f32 = select(modulo((dir.y + .5) * uDimensions.y, 4.), modulo((dir.x + .5) * uDimensions.x, 4.), verticalLine > 0.5);
color *= 0.99 + ceil(segment) * 0.015;
return color;
}`,Wst=Object.defineProperty,jst=(i,t,e)=>t in i?Wst(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,Bc=(i,t,e)=>(jst(i,typeof t!="symbol"?t+"":t,e),e);const Kst=class mP extends xt{constructor(t){t={...mP.DEFAULT_OPTIONS,...t};const e=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Yst,entryPoint:"mainFragment"}}),s=Tt.from({vertex:Qt,fragment:Hst,name:"crt-filter"});super({gpuProgram:e,glProgram:s,resources:{crtUniforms:{uLine:{value:new Float32Array(4),type:"vec4<f32>"},uNoise:{value:new Float32Array(2),type:"vec2<f32>"},uVignette:{value:new Float32Array(3),type:"vec3<f32>"},uSeed:{value:t.seed,type:"f32"},uTime:{value:t.time,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),Bc(this,"uniforms"),Bc(this,"seed"),Bc(this,"time"),this.uniforms=this.resources.crtUniforms.uniforms,Object.assign(this,t)}apply(t,e,s,r){this.uniforms.uDimensions[0]=e.frame.width,this.uniforms.uDimensions[1]=e.frame.height,this.uniforms.uSeed=this.seed,this.uniforms.uTime=this.time,t.applyFilter(this,e,s,r)}get curvature(){return this.uniforms.uLine[0]}set curvature(t){this.uniforms.uLine[0]=t}get lineWidth(){return this.uniforms.uLine[1]}set lineWidth(t){this.uniforms.uLine[1]=t}get lineContrast(){return this.uniforms.uLine[2]}set lineContrast(t){this.uniforms.uLine[2]=t}get verticalLine(){return this.uniforms.uLine[3]>.5}set verticalLine(t){this.uniforms.uLine[3]=t?1:0}get noise(){return this.uniforms.uNoise[0]}set noise(t){this.uniforms.uNoise[0]=t}get noiseSize(){return this.uniforms.uNoise[1]}set noiseSize(t){this.uniforms.uNoise[1]=t}get vignetting(){return this.uniforms.uVignette[0]}set vignetting(t){this.uniforms.uVignette[0]=t}get vignettingAlpha(){return this.uniforms.uVignette[1]}set vignettingAlpha(t){this.uniforms.uVignette[1]=t}get vignettingBlur(){return this.uniforms.uVignette[2]}set vignettingBlur(t){this.uniforms.uVignette[2]=t}};Bc(Kst,"DEFAULT_OPTIONS",{curvature:1,lineWidth:1,lineContrast:.25,verticalLine:!1,noise:0,noiseSize:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,time:0,seed:0});var Xst=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform float uAngle;
uniform float uScale;
uniform bool uGrayScale;
uniform vec4 uInputSize;
float pattern()
{
float s = sin(uAngle), c = cos(uAngle);
vec2 tex = vTextureCoord * uInputSize.xy;
vec2 point = vec2(
c * tex.x - s * tex.y,
s * tex.x + c * tex.y
) * uScale;
return (sin(point.x) * sin(point.y)) * 4.0;
}
void main()
{
vec4 color = texture(uTexture, vTextureCoord);
vec3 colorRGB = vec3(color);
if (uGrayScale)
{
colorRGB = vec3(color.r + color.g + color.b) / 3.0;
}
finalColor = vec4(colorRGB * 10.0 - 5.0 + pattern(), color.a);
}
`,qst=`struct DotUniforms {
uScale:f32,
uAngle:f32,
uGrayScale:f32,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> dotUniforms : DotUniforms;
@fragment
fn mainFragment(
@location(0) uv: vec2<f32>,
@builtin(position) position: vec4<f32>
) -> @location(0) vec4<f32> {
let color: vec4<f32> = textureSample(uTexture, uSampler, uv);
let gray: vec3<f32> = vec3<f32>(dot(color.rgb, vec3<f32>(0.299, 0.587, 0.114)));
// dotUniforms.uGrayScale == 1 doesn't ever pass so it is converted to a float and compared to 0.5 instead
let finalColor: vec3<f32> = select(color.rgb, gray, f32(dotUniforms.uGrayScale) >= 0.5);
return vec4<f32>(finalColor * 10.0 - 5.0 + pattern(uv), color.a);
}
fn pattern(uv: vec2<f32>) -> f32
{
let s: f32 = sin(dotUniforms.uAngle);
let c: f32 = cos(dotUniforms.uAngle);
let tex: vec2<f32> = uv * gfu.uInputSize.xy;
let p: vec2<f32> = vec2<f32>(
c * tex.x - s * tex.y,
s * tex.x + c * tex.y
) * dotUniforms.uScale;
return (sin(p.x) * sin(p.y)) * 4.0;
}`,$st=Object.defineProperty,Qst=(i,t,e)=>t in i?$st(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,Zst=(i,t,e)=>(Qst(i,t+"",e),e);const Jst=class EP extends xt{constructor(...t){let e=t[0]??{};typeof e=="number"&&(ct("6.0.0","DotFilter constructor params are now options object. See params: { scale, angle, grayscale }"),e={scale:e},t[1]!==void 0&&(e.angle=t[1]),t[2]!==void 0&&(e.grayscale=t[2])),e={...EP.DEFAULT_OPTIONS,...e};const s={uScale:{value:e.scale,type:"f32"},uAngle:{value:e.angle,type:"f32"},uGrayScale:{value:e.grayscale?1:0,type:"f32"}},r=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:qst,entryPoint:"mainFragment"}}),n=Tt.from({vertex:Qt,fragment:Xst,name:"dot-filter"});super({gpuProgram:r,glProgram:n,resources:{dotUniforms:s}})}get scale(){return this.resources.dotUniforms.uniforms.uScale}set scale(t){this.resources.dotUniforms.uniforms.uScale=t}get angle(){return this.resources.dotUniforms.uniforms.uAngle}set angle(t){this.resources.dotUniforms.uniforms.uAngle=t}get grayscale(){return this.resources.dotUniforms.uniforms.uGrayScale===1}set grayscale(t){this.resources.dotUniforms.uniforms.uGrayScale=t?1:0}};Zst(Jst,"DEFAULT_OPTIONS",{scale:1,angle:5,grayscale:!0});var tit=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform float uAlpha;
uniform vec3 uColor;
uniform vec2 uOffset;
uniform vec4 uInputSize;
void main(void){
vec4 sample = texture(uTexture, vTextureCoord - uOffset * uInputSize.zw);
// Premultiply alpha
sample.rgb = uColor.rgb * sample.a;
// alpha user alpha
sample *= uAlpha;
finalColor = sample;
}`,eit=`struct DropShadowUniforms {
uAlpha: f32,
uColor: vec3<f32>,
uOffset: vec2<f32>,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> dropShadowUniforms : DropShadowUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
var color: vec4<f32> = textureSample(uTexture, uSampler, uv - dropShadowUniforms.uOffset * gfu.uInputSize.zw);
// Premultiply alpha
color = vec4<f32>(vec3<f32>(dropShadowUniforms.uColor.rgb * color.a), color.a);
// alpha user alpha
color *= dropShadowUniforms.uAlpha;
return color;
}`,sit=Object.defineProperty,iit=(i,t,e)=>t in i?sit(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,lo=(i,t,e)=>(iit(i,typeof t!="symbol"?t+"":t,e),e);const rit=class TP extends xt{constructor(t){t={...TP.DEFAULT_OPTIONS,...t};const e=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:eit,entryPoint:"mainFragment"}}),s=Tt.from({vertex:Qt,fragment:tit,name:"drop-shadow-filter"});super({gpuProgram:e,glProgram:s,resources:{dropShadowUniforms:{uAlpha:{value:t.alpha,type:"f32"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uOffset:{value:t.offset,type:"vec2<f32>"}}},resolution:t.resolution}),lo(this,"uniforms"),lo(this,"shadowOnly",!1),lo(this,"_color"),lo(this,"_blurFilter"),lo(this,"_basePass"),this.uniforms=this.resources.dropShadowUniforms.uniforms,this._color=new Mt,this.color=t.color??0,this._blurFilter=new sP({strength:t.kernels??t.blur,quality:t.kernels?void 0:t.quality}),this._basePass=new xt({gpuProgram:At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:`
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
return textureSample(uTexture, uSampler, uv);
}
`,entryPoint:"mainFragment"}}),glProgram:Tt.from({vertex:Qt,fragment:`
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
void main(void){
finalColor = texture(uTexture, vTextureCoord);
}
`,name:"drop-shadow-filter"}),resources:{}}),Object.assign(this,t)}apply(t,e,s,r){const n=os.getSameSizeTexture(e);t.applyFilter(this,e,n,!0),this._blurFilter.apply(t,n,s,r),this.shadowOnly||t.applyFilter(this._basePass,e,s,!1),os.returnTexture(n)}get offset(){return this.uniforms.uOffset}set offset(t){this.uniforms.uOffset=t,this._updatePadding()}get offsetX(){return this.offset.x}set offsetX(t){this.offset.x=t,this._updatePadding()}get offsetY(){return this.offset.y}set offsetY(t){this.offset.y=t,this._updatePadding()}get color(){return this._color.value}set color(t){this._color.setValue(t);const[e,s,r]=this._color.toArray();this.uniforms.uColor[0]=e,this.uniforms.uColor[1]=s,this.uniforms.uColor[2]=r}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}get blur(){return this._blurFilter.strength}set blur(t){this._blurFilter.strength=t,this._updatePadding()}get quality(){return this._blurFilter.quality}set quality(t){this._blurFilter.quality=t,this._updatePadding()}get kernels(){return this._blurFilter.kernels}set kernels(t){this._blurFilter.kernels=t}get pixelSize(){return this._blurFilter.pixelSize}set pixelSize(t){typeof t=="number"&&(t={x:t,y:t}),Array.isArray(t)&&(t={x:t[0],y:t[1]}),this._blurFilter.pixelSize=t}get pixelSizeX(){return this._blurFilter.pixelSizeX}set pixelSizeX(t){this._blurFilter.pixelSizeX=t}get pixelSizeY(){return this._blurFilter.pixelSizeY}set pixelSizeY(t){this._blurFilter.pixelSizeY=t}_updatePadding(){const t=Math.max(Math.abs(this.offsetX),Math.abs(this.offsetY));this.padding=t+this.blur*2+this.quality*4}};lo(rit,"DEFAULT_OPTIONS",{offset:{x:4,y:4},color:0,alpha:.5,shadowOnly:!1,kernels:void 0,blur:2,quality:3,pixelSize:{x:1,y:1},resolution:1});var nit=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform sampler2D uDisplacementMap;
uniform float uSeed;
uniform vec2 uDimensions;
uniform float uAspect;
uniform float uFillMode;
uniform float uOffset;
uniform float uDirection;
uniform vec2 uRed;
uniform vec2 uGreen;
uniform vec2 uBlue;
uniform vec4 uInputSize;
uniform vec4 uInputClamp;
const int TRANSPARENT = 0;
const int ORIGINAL = 1;
const int LOOP = 2;
const int CLAMP = 3;
const int MIRROR = 4;
void main(void)
{
vec2 coord = (vTextureCoord * uInputSize.xy) / uDimensions;
if (coord.x > 1.0 || coord.y > 1.0) {
return;
}
float sinDir = sin(uDirection);
float cosDir = cos(uDirection);
float cx = coord.x - 0.5;
float cy = (coord.y - 0.5) * uAspect;
float ny = (-sinDir * cx + cosDir * cy) / uAspect + 0.5;
// displacementMap: repeat
// ny = ny > 1.0 ? ny - 1.0 : (ny < 0.0 ? 1.0 + ny : ny);
// displacementMap: mirror
ny = ny > 1.0 ? 2.0 - ny : (ny < 0.0 ? -ny : ny);
vec4 dc = texture(uDisplacementMap, vec2(0.5, ny));
float displacement = (dc.r - dc.g) * (uOffset / uInputSize.x);
coord = vTextureCoord + vec2(cosDir * displacement, sinDir * displacement * uAspect);
int fillMode = int(uFillMode);
if (fillMode == CLAMP) {
coord = clamp(coord, uInputClamp.xy, uInputClamp.zw);
} else {
if( coord.x > uInputClamp.z ) {
if (fillMode == TRANSPARENT) {
discard;
} else if (fillMode == LOOP) {
coord.x -= uInputClamp.z;
} else if (fillMode == MIRROR) {
coord.x = uInputClamp.z * 2.0 - coord.x;
}
} else if( coord.x < uInputClamp.x ) {
if (fillMode == TRANSPARENT) {
discard;
} else if (fillMode == LOOP) {
coord.x += uInputClamp.z;
} else if (fillMode == MIRROR) {
coord.x *= -uInputClamp.z;
}
}
if( coord.y > uInputClamp.w ) {
if (fillMode == TRANSPARENT) {
discard;
} else if (fillMode == LOOP) {
coord.y -= uInputClamp.w;
} else if (fillMode == MIRROR) {
coord.y = uInputClamp.w * 2.0 - coord.y;
}
} else if( coord.y < uInputClamp.y ) {
if (fillMode == TRANSPARENT) {
discard;
} else if (fillMode == LOOP) {
coord.y += uInputClamp.w;
} else if (fillMode == MIRROR) {
coord.y *= -uInputClamp.w;
}
}
}
finalColor.r = texture(uTexture, coord + uRed * (1.0 - uSeed * 0.4) / uInputSize.xy).r;
finalColor.g = texture(uTexture, coord + uGreen * (1.0 - uSeed * 0.3) / uInputSize.xy).g;
finalColor.b = texture(uTexture, coord + uBlue * (1.0 - uSeed * 0.2) / uInputSize.xy).b;
finalColor.a = texture(uTexture, coord).a;
}
`,ait=`struct GlitchUniforms {
uSeed: f32,
uDimensions: vec2<f32>,
uAspect: f32,
uFillMode: f32,
uOffset: f32,
uDirection: f32,
uRed: vec2<f32>,
uGreen: vec2<f32>,
uBlue: vec2<f32>,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> glitchUniforms : GlitchUniforms;
@group(1) @binding(1) var uDisplacementMap: texture_2d<f32>;
@group(1) @binding(2) var uDisplacementSampler: sampler;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let uSeed: f32 = glitchUniforms.uSeed;
let uDimensions: vec2<f32> = glitchUniforms.uDimensions;
let uAspect: f32 = glitchUniforms.uAspect;
let uOffset: f32 = glitchUniforms.uOffset;
let uDirection: f32 = glitchUniforms.uDirection;
let uRed: vec2<f32> = glitchUniforms.uRed;
let uGreen: vec2<f32> = glitchUniforms.uGreen;
let uBlue: vec2<f32> = glitchUniforms.uBlue;
let uInputSize: vec4<f32> = gfu.uInputSize;
let uInputClamp: vec4<f32> = gfu.uInputClamp;
var discarded: bool = false;
var coord: vec2<f32> = (uv * uInputSize.xy) / uDimensions;
if (coord.x > 1.0 || coord.y > 1.0) {
discarded = true;
}
let sinDir: f32 = sin(uDirection);
let cosDir: f32 = cos(uDirection);
let cx: f32 = coord.x - 0.5;
let cy: f32 = (coord.y - 0.5) * uAspect;
var ny: f32 = (-sinDir * cx + cosDir * cy) / uAspect + 0.5;
ny = select(select(ny, -ny, ny < 0.0), 2.0 - ny, ny > 1.0);
let dc: vec4<f32> = textureSample(uDisplacementMap, uDisplacementSampler, vec2<f32>(0.5, ny));
let displacement: f32 = (dc.r - dc.g) * (uOffset / uInputSize.x);
coord = uv + vec2<f32>(cosDir * displacement, sinDir * displacement * uAspect);
let fillMode: i32 = i32(glitchUniforms.uFillMode);
if (fillMode == CLAMP) {
coord = clamp(coord, uInputClamp.xy, uInputClamp.zw);
} else {
if (coord.x > uInputClamp.z) {
if (fillMode == TRANSPARENT) {
discarded = true;
} else if (fillMode == LOOP) {
coord.x = coord.x - uInputClamp.z;
} else if (fillMode == MIRROR) {
coord.x = uInputClamp.z * 2.0 - coord.x;
}
} else if (coord.x < uInputClamp.x) {
if (fillMode == TRANSPARENT) {
discarded = true;
} else if (fillMode == LOOP) {
coord.x = coord.x + uInputClamp.z;
} else if (fillMode == MIRROR) {
coord.x = coord.x * -uInputClamp.z;
}
}
if (coord.y > uInputClamp.w) {
if (fillMode == TRANSPARENT) {
discarded = true;
} else if (fillMode == LOOP) {
coord.y = coord.y - uInputClamp.w;
} else if (fillMode == MIRROR) {
coord.y = uInputClamp.w * 2.0 - coord.y;
}
} else if (coord.y < uInputClamp.y) {
if (fillMode == TRANSPARENT) {
discarded = true;
} else if (fillMode == LOOP) {
coord.y = coord.y + uInputClamp.w;
} else if (fillMode == MIRROR) {
coord.y = coord.y * -uInputClamp.w;
}
}
}
let seedR: f32 = 1.0 - uSeed * 0.4;
let seedG: f32 = 1.0 - uSeed * 0.3;
let seedB: f32 = 1.0 - uSeed * 0.2;
let offsetR: vec2<f32> = vec2(uRed.x * seedR / uInputSize.x, uRed.y * seedR / uInputSize.y);
let offsetG: vec2<f32> = vec2(uGreen.x * seedG / uInputSize.x, uGreen.y * seedG / uInputSize.y);
let offsetB: vec2<f32> = vec2(uBlue.x * seedB / uInputSize.x, uBlue.y * seedB / uInputSize.y);
let r = textureSample(uTexture, uSampler, coord + offsetR).r;
let g = textureSample(uTexture, uSampler, coord + offsetG).g;
let b = textureSample(uTexture, uSampler, coord + offsetB).b;
let a = textureSample(uTexture, uSampler, coord).a;
return select(vec4<f32>(r, g, b, a), vec4<f32>(0.0,0.0,0.0,0.0), discarded);
}
const TRANSPARENT: i32 = 0;
const ORIGINAL: i32 = 1;
const LOOP: i32 = 2;
const CLAMP: i32 = 3;
const MIRROR: i32 = 4;`,oit=Object.defineProperty,uit=(i,t,e)=>t in i?oit(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,xi=(i,t,e)=>(uit(i,typeof t!="symbol"?t+"":t,e),e);const lit=class IP extends xt{constructor(t){t={...IP.defaults,...t};const e=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:ait,entryPoint:"mainFragment"}}),s=Tt.from({vertex:Qt,fragment:nit,name:"glitch-filter"}),r=document.createElement("canvas");r.width=4,r.height=t.sampleSize??512;const n=new W({source:new qa({resource:r})});super({gpuProgram:e,glProgram:s,resources:{glitchUniforms:{uSeed:{value:(t==null?void 0:t.seed)??0,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"},uAspect:{value:1,type:"f32"},uFillMode:{value:(t==null?void 0:t.fillMode)??0,type:"f32"},uOffset:{value:(t==null?void 0:t.offset)??100,type:"f32"},uDirection:{value:(t==null?void 0:t.direction)??0,type:"f32"},uRed:{value:t.red,type:"vec2<f32>"},uGreen:{value:t.green,type:"vec2<f32>"},uBlue:{value:t.blue,type:"vec2<f32>"}},uDisplacementMap:n.source,uDisplacementSampler:n.source.style}}),xi(this,"uniforms"),xi(this,"average",!1),xi(this,"minSize",8),xi(this,"sampleSize",512),xi(this,"_canvas"),xi(this,"texture"),xi(this,"_slices",0),xi(this,"_sizes",new Float32Array(1)),xi(this,"_offsets",new Float32Array(1)),this.uniforms=this.resources.glitchUniforms.uniforms,this._canvas=r,this.texture=n,Object.assign(this,t)}apply(t,e,s,r){const{width:n,height:a}=e.frame;this.uniforms.uDimensions[0]=n,this.uniforms.uDimensions[1]=a,this.uniforms.uAspect=a/n,t.applyFilter(this,e,s,r)}_randomizeSizes(){const t=this._sizes,e=this._slices-1,s=this.sampleSize,r=Math.min(this.minSize/s,.9/this._slices);if(this.average){const n=this._slices;let a=1;for(let o=0;o<e;o++){const u=a/(n-o),l=Math.max(u*(1-Math.random()*.6),r);t[o]=l,a-=l}t[e]=a}else{let n=1;const a=Math.sqrt(1/this._slices);for(let o=0;o<e;o++){const u=Math.max(a*n*Math.random(),r);t[o]=u,n-=u}t[e]=n}this.shuffle()}shuffle(){const t=this._sizes,e=this._slices-1;for(let s=e;s>0;s--){const r=Math.random()*s>>0,n=t[s];t[s]=t[r],t[r]=n}}_randomizeOffsets(){for(let t=0;t<this._slices;t++)this._offsets[t]=Math.random()*(Math.random()<.5?-1:1)}refresh(){this._randomizeSizes(),this._randomizeOffsets(),this.redraw()}redraw(){const t=this.sampleSize,e=this.texture,s=this._canvas.getContext("2d");s.clearRect(0,0,8,t);let r,n=0;for(let a=0;a<this._slices;a++){r=Math.floor(this._offsets[a]*256);const o=this._sizes[a]*t,u=r>0?r:0,l=r<0?-r:0;s.fillStyle=`rgba(${u}, ${l}, 0, 1)`,s.fillRect(0,n>>0,t,o+1>>0),n+=o}e.source.update()}set sizes(t){const e=Math.min(this._slices,t.length);for(let s=0;s<e;s++)this._sizes[s]=t[s]}get sizes(){return this._sizes}set offsets(t){const e=Math.min(this._slices,t.length);for(let s=0;s<e;s++)this._offsets[s]=t[s]}get offsets(){return this._offsets}get slices(){return this._slices}set slices(t){this._slices!==t&&(this._slices=t,this._sizes=new Float32Array(t),this._offsets=new Float32Array(t),this.refresh())}get offset(){return this.uniforms.uOffset}set offset(t){this.uniforms.uOffset=t}get seed(){return this.uniforms.uSeed}set seed(t){this.uniforms.uSeed=t}get fillMode(){return this.uniforms.uFillMode}set fillMode(t){this.uniforms.uFillMode=t}get direction(){return this.uniforms.uDirection/$o}set direction(t){this.uniforms.uDirection=t*$o}get red(){return this.uniforms.uRed}set red(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uRed=t}get green(){return this.uniforms.uGreen}set green(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uGreen=t}get blue(){return this.uniforms.uBlue}set blue(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uBlue=t}destroy(){var t;(t=this.texture)==null||t.destroy(!0),this.texture=this._canvas=this.red=this.green=this.blue=this._sizes=this._offsets=null}};xi(lit,"defaults",{slices:5,offset:100,direction:0,fillMode:0,average:!1,seed:0,red:{x:0,y:0},green:{x:0,y:0},blue:{x:0,y:0},minSize:8,sampleSize:512});var hit=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec2 uStrength;
uniform vec3 uColor;
uniform float uKnockout;
uniform float uAlpha;
uniform vec4 uInputSize;
uniform vec4 uInputClamp;
const float PI = 3.14159265358979323846264;
// Hard-assignment of DIST and ANGLE_STEP_SIZE instead of using uDistance and uQuality to allow them to be use on GLSL loop conditions
const float DIST = __DIST__;
const float ANGLE_STEP_SIZE = min(__ANGLE_STEP_SIZE__, PI * 2.);
const float ANGLE_STEP_NUM = ceil(PI * 2. / ANGLE_STEP_SIZE);
const float MAX_TOTAL_ALPHA = ANGLE_STEP_NUM * DIST * (DIST + 1.) / 2.;
void main(void) {
vec2 px = vec2(1.) / uInputSize.xy;
float totalAlpha = 0.;
vec2 direction;
vec2 displaced;
vec4 curColor;
for (float angle = 0.; angle < PI * 2.; angle += ANGLE_STEP_SIZE) {
direction = vec2(cos(angle), sin(angle)) * px;
for (float curDistance = 0.; curDistance < DIST; curDistance++) {
displaced = clamp(vTextureCoord + direction * (curDistance + 1.), uInputClamp.xy, uInputClamp.zw);
curColor = texture(uTexture, displaced);
totalAlpha += (DIST - curDistance) * curColor.a;
}
}
curColor = texture(uTexture, vTextureCoord);
vec4 glowColor = vec4(uColor, uAlpha);
bool knockout = uKnockout > .5;
float innerStrength = uStrength[0];
float outerStrength = uStrength[1];
float alphaRatio = totalAlpha / MAX_TOTAL_ALPHA;
float innerGlowAlpha = (1. - alphaRatio) * innerStrength * curColor.a * uAlpha;
float innerGlowStrength = min(1., innerGlowAlpha);
vec4 innerColor = mix(curColor, glowColor, innerGlowStrength);
float outerGlowAlpha = alphaRatio * outerStrength * (1. - curColor.a) * uAlpha;
float outerGlowStrength = min(1. - innerColor.a, outerGlowAlpha);
vec4 outerGlowColor = outerGlowStrength * glowColor.rgba;
if (knockout) {
float resultAlpha = outerGlowAlpha + innerGlowAlpha;
finalColor = vec4(glowColor.rgb * resultAlpha, resultAlpha);
}
else {
finalColor = innerColor + outerGlowColor;
}
}
`,cit=`struct GlowUniforms {
uDistance: f32,
uStrength: vec2<f32>,
uColor: vec3<f32>,
uAlpha: f32,
uQuality: f32,
uKnockout: f32,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> glowUniforms : GlowUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let quality = glowUniforms.uQuality;
let distance = glowUniforms.uDistance;
let dist: f32 = glowUniforms.uDistance;
let angleStepSize: f32 = min(1. / quality / distance, PI * 2.0);
let angleStepNum: f32 = ceil(PI * 2.0 / angleStepSize);
let px: vec2<f32> = vec2<f32>(1.0 / gfu.uInputSize.xy);
var totalAlpha: f32 = 0.0;
var direction: vec2<f32>;
var displaced: vec2<f32>;
var curColor: vec4<f32>;
for (var angle = 0.0; angle < PI * 2.0; angle += angleStepSize) {
direction = vec2<f32>(cos(angle), sin(angle)) * px;
for (var curDistance = 0.0; curDistance < dist; curDistance+=1) {
displaced = vec2<f32>(clamp(uv + direction * (curDistance + 1.0), gfu.uInputClamp.xy, gfu.uInputClamp.zw));
curColor = textureSample(uTexture, uSampler, displaced);
totalAlpha += (dist - curDistance) * curColor.a;
}
}
curColor = textureSample(uTexture, uSampler, uv);
let glowColorRGB = glowUniforms.uColor;
let glowAlpha = glowUniforms.uAlpha;
let glowColor = vec4<f32>(glowColorRGB, glowAlpha);
let knockout: bool = glowUniforms.uKnockout > 0.5;
let innerStrength = glowUniforms.uStrength[0];
let outerStrength = glowUniforms.uStrength[1];
let alphaRatio: f32 = (totalAlpha / (angleStepNum * dist * (dist + 1.0) / 2.0));
let innerGlowAlpha: f32 = (1.0 - alphaRatio) * innerStrength * curColor.a * glowAlpha;
let innerGlowStrength: f32 = min(1.0, innerGlowAlpha);
let innerColor: vec4<f32> = mix(curColor, glowColor, innerGlowStrength);
let outerGlowAlpha: f32 = alphaRatio * outerStrength * (1. - curColor.a) * glowAlpha;
let outerGlowStrength: f32 = min(1.0 - innerColor.a, outerGlowAlpha);
let outerGlowColor: vec4<f32> = outerGlowStrength * glowColor.rgba;
if (knockout) {
let resultAlpha: f32 = outerGlowAlpha + innerGlowAlpha;
return vec4<f32>(glowColor.rgb * resultAlpha, resultAlpha);
}
else {
return innerColor + outerGlowColor;
}
}
const PI: f32 = 3.14159265358979323846264;`,_it=Object.defineProperty,dit=(i,t,e)=>t in i?_it(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,lI=(i,t,e)=>(dit(i,typeof t!="symbol"?t+"":t,e),e);const fit=class SP extends xt{constructor(t){t={...SP.DEFAULT_OPTIONS,...t};const e=t.distance??10,s=t.quality??.1,r=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:cit,entryPoint:"mainFragment"}}),n=Tt.from({vertex:Qt,fragment:hit.replace(/__ANGLE_STEP_SIZE__/gi,`${(1/s/e).toFixed(7)}`).replace(/__DIST__/gi,`${e.toFixed(0)}.0`),name:"glow-filter"});super({gpuProgram:r,glProgram:n,resources:{glowUniforms:{uDistance:{value:e,type:"f32"},uStrength:{value:[t.innerStrength,t.outerStrength],type:"vec2<f32>"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:t.alpha,type:"f32"},uQuality:{value:s,type:"f32"},uKnockout:{value:(t==null?void 0:t.knockout)??!1?1:0,type:"f32"}}},padding:e}),lI(this,"uniforms"),lI(this,"_color"),this.uniforms=this.resources.glowUniforms.uniforms,this._color=new Mt,this.color=t.color??16777215}get distance(){return this.uniforms.uDistance}set distance(t){this.uniforms.uDistance=this.padding=t}get innerStrength(){return this.uniforms.uStrength[0]}set innerStrength(t){this.uniforms.uStrength[0]=t}get outerStrength(){return this.uniforms.uStrength[1]}set outerStrength(t){this.uniforms.uStrength[1]=t}get color(){return this._color.value}set color(t){this._color.setValue(t);const[e,s,r]=this._color.toArray();this.uniforms.uColor[0]=e,this.uniforms.uColor[1]=s,this.uniforms.uColor[2]=r}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}get quality(){return this.uniforms.uQuality}set quality(t){this.uniforms.uQuality=t}get knockout(){return this.uniforms.uKnockout===1}set knockout(t){this.uniforms.uKnockout=t?1:0}};lI(fit,"DEFAULT_OPTIONS",{distance:10,outerStrength:4,innerStrength:0,color:16777215,alpha:1,quality:.1,knockout:!1});var git=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec2 uDimensions;
uniform float uParallel;
uniform vec2 uLight;
uniform float uAspect;
uniform float uTime;
uniform vec3 uRay;
uniform vec4 uInputSize;
\${PERLIN}
void main(void) {
vec2 uDimensions = uDimensions;
bool uParallel = uParallel > 0.5;
vec2 uLight = uLight;
float uAspect = uAspect;
vec2 coord = vTextureCoord * uInputSize.xy / uDimensions;
float d;
if (uParallel) {
float _cos = uLight.x;
float _sin = uLight.y;
d = (_cos * coord.x) + (_sin * coord.y * uAspect);
} else {
float dx = coord.x - uLight.x / uDimensions.x;
float dy = (coord.y - uLight.y / uDimensions.y) * uAspect;
float dis = sqrt(dx * dx + dy * dy) + 0.00001;
d = dy / dis;
}
float uTime = uTime;
vec3 uRay = uRay;
float gain = uRay[0];
float lacunarity = uRay[1];
float alpha = uRay[2];
vec3 dir = vec3(d, d, 0.0);
float noise = turb(dir + vec3(uTime, 0.0, 62.1 + uTime) * 0.05, vec3(480.0, 320.0, 480.0), lacunarity, gain);
noise = mix(noise, 0.0, 0.3);
//fade vertically.
vec4 mist = vec4(vec3(noise), 1.0) * (1.0 - coord.y);
mist.a = 1.0;
// apply user alpha
mist *= alpha;
finalColor = texture(uTexture, vTextureCoord) + mist;
}
`,pit=`struct GodrayUniforms {
uLight: vec2<f32>,
uParallel: f32,
uAspect: f32,
uTime: f32,
uRay: vec3<f32>,
uDimensions: vec2<f32>,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> godrayUniforms : GodrayUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let uDimensions: vec2<f32> = godrayUniforms.uDimensions;
let uParallel: bool = godrayUniforms.uParallel > 0.5;
let uLight: vec2<f32> = godrayUniforms.uLight;
let uAspect: f32 = godrayUniforms.uAspect;
let coord: vec2<f32> = uv * gfu.uInputSize.xy / uDimensions;
var d: f32;
if (uParallel) {
let _cos: f32 = uLight.x;
let _sin: f32 = uLight.y;
d = (_cos * coord.x) + (_sin * coord.y * uAspect);
} else {
let dx: f32 = coord.x - uLight.x / uDimensions.x;
let dy: f32 = (coord.y - uLight.y / uDimensions.y) * uAspect;
let dis: f32 = sqrt(dx * dx + dy * dy) + 0.00001;
d = dy / dis;
}
let uTime: f32 = godrayUniforms.uTime;
let uRay: vec3<f32> = godrayUniforms.uRay;
let gain = uRay[0];
let lacunarity = uRay[1];
let alpha = uRay[2];
let dir: vec3<f32> = vec3<f32>(d, d, 0.0);
var noise: f32 = turb(dir + vec3<f32>(uTime, 0.0, 62.1 + uTime) * 0.05, vec3<f32>(480.0, 320.0, 480.0), lacunarity, gain);
noise = mix(noise, 0.0, 0.3);
//fade vertically.
var mist: vec4<f32> = vec4<f32>(vec3<f32>(noise), 1.0) * (1.0 - coord.y);
mist.a = 1.0;
// apply user alpha
mist *= alpha;
return textureSample(uTexture, uSampler, uv) + mist;
}
\${PERLIN}`,mit=`vec3 mod289(vec3 x)
{
return x - floor(x * (1.0 / 289.0)) * 289.0;
}
vec4 mod289(vec4 x)
{
return x - floor(x * (1.0 / 289.0)) * 289.0;
}
vec4 permute(vec4 x)
{
return mod289(((x * 34.0) + 1.0) * x);
}
vec4 taylorInvSqrt(vec4 r)
{
return 1.79284291400159 - 0.85373472095314 * r;
}
vec3 fade(vec3 t)
{
return t * t * t * (t * (t * 6.0 - 15.0) + 10.0);
}
// Classic Perlin noise, periodic variant
float pnoise(vec3 P, vec3 rep)
{
vec3 Pi0 = mod(floor(P), rep); // Integer part, modulo period
vec3 Pi1 = mod(Pi0 + vec3(1.0), rep); // Integer part + 1, mod period
Pi0 = mod289(Pi0);
Pi1 = mod289(Pi1);
vec3 Pf0 = fract(P); // Fractional part for interpolation
vec3 Pf1 = Pf0 - vec3(1.0); // Fractional part - 1.0
vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);
vec4 iy = vec4(Pi0.yy, Pi1.yy);
vec4 iz0 = Pi0.zzzz;
vec4 iz1 = Pi1.zzzz;
vec4 ixy = permute(permute(ix) + iy);
vec4 ixy0 = permute(ixy + iz0);
vec4 ixy1 = permute(ixy + iz1);
vec4 gx0 = ixy0 * (1.0 / 7.0);
vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;
gx0 = fract(gx0);
vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);
vec4 sz0 = step(gz0, vec4(0.0));
gx0 -= sz0 * (step(0.0, gx0) - 0.5);
gy0 -= sz0 * (step(0.0, gy0) - 0.5);
vec4 gx1 = ixy1 * (1.0 / 7.0);
vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;
gx1 = fract(gx1);
vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);
vec4 sz1 = step(gz1, vec4(0.0));
gx1 -= sz1 * (step(0.0, gx1) - 0.5);
gy1 -= sz1 * (step(0.0, gy1) - 0.5);
vec3 g000 = vec3(gx0.x, gy0.x, gz0.x);
vec3 g100 = vec3(gx0.y, gy0.y, gz0.y);
vec3 g010 = vec3(gx0.z, gy0.z, gz0.z);
vec3 g110 = vec3(gx0.w, gy0.w, gz0.w);
vec3 g001 = vec3(gx1.x, gy1.x, gz1.x);
vec3 g101 = vec3(gx1.y, gy1.y, gz1.y);
vec3 g011 = vec3(gx1.z, gy1.z, gz1.z);
vec3 g111 = vec3(gx1.w, gy1.w, gz1.w);
vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));
g000 *= norm0.x;
g010 *= norm0.y;
g100 *= norm0.z;
g110 *= norm0.w;
vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));
g001 *= norm1.x;
g011 *= norm1.y;
g101 *= norm1.z;
g111 *= norm1.w;
float n000 = dot(g000, Pf0);
float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));
float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));
float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));
float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));
float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));
float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));
float n111 = dot(g111, Pf1);
vec3 fade_xyz = fade(Pf0);
vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);
vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);
float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x);
return 2.2 * n_xyz;
}
float turb(vec3 P, vec3 rep, float lacunarity, float gain)
{
float sum = 0.0;
float sc = 1.0;
float totalgain = 1.0;
for (float i = 0.0; i < 6.0; i++)
{
sum += totalgain * pnoise(P * sc, rep);
sc *= lacunarity;
totalgain *= gain;
}
return abs(sum);
}
`,Eit=`// Taken from https://gist.github.com/munrocket/236ed5ba7e409b8bdf1ff6eca5dcdc39
fn moduloVec3(x: vec3<f32>, y: vec3<f32>) -> vec3<f32>
{
return x - y * floor(x/y);
}
fn mod289Vec3(x: vec3<f32>) -> vec3<f32>
{
return x - floor(x * (1.0 / 289.0)) * 289.0;
}
fn mod289Vec4(x: vec4<f32>) -> vec4<f32>
{
return x - floor(x * (1.0 / 289.0)) * 289.0;
}
fn permute4(x: vec4<f32>) -> vec4<f32>
{
return mod289Vec4(((x * 34.0) + 1.0) * x);
}
fn taylorInvSqrt(r: vec4<f32>) -> vec4<f32>
{
return 1.79284291400159 - 0.85373472095314 * r;
}
fn fade3(t: vec3<f32>) -> vec3<f32>
{
return t * t * t * (t * (t * 6.0 - 15.0) + 10.0);
}
fn fade2(t: vec2<f32>) -> vec2<f32> { return t * t * t * (t * (t * 6. - 15.) + 10.); }
fn perlinNoise2(P: vec2<f32>) -> f32 {
var Pi: vec4<f32> = floor(P.xyxy) + vec4<f32>(0., 0., 1., 1.);
let Pf = fract(P.xyxy) - vec4<f32>(0., 0., 1., 1.);
Pi = Pi % vec4<f32>(289.); // To avoid truncation effects in permutation
let ix = Pi.xzxz;
let iy = Pi.yyww;
let fx = Pf.xzxz;
let fy = Pf.yyww;
let i = permute4(permute4(ix) + iy);
var gx: vec4<f32> = 2. * fract(i * 0.0243902439) - 1.; // 1/41 = 0.024...
let gy = abs(gx) - 0.5;
let tx = floor(gx + 0.5);
gx = gx - tx;
var g00: vec2<f32> = vec2<f32>(gx.x, gy.x);
var g10: vec2<f32> = vec2<f32>(gx.y, gy.y);
var g01: vec2<f32> = vec2<f32>(gx.z, gy.z);
var g11: vec2<f32> = vec2<f32>(gx.w, gy.w);
let norm = 1.79284291400159 - 0.85373472095314 *
vec4<f32>(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11));
g00 = g00 * norm.x;
g01 = g01 * norm.y;
g10 = g10 * norm.z;
g11 = g11 * norm.w;
let n00 = dot(g00, vec2<f32>(fx.x, fy.x));
let n10 = dot(g10, vec2<f32>(fx.y, fy.y));
let n01 = dot(g01, vec2<f32>(fx.z, fy.z));
let n11 = dot(g11, vec2<f32>(fx.w, fy.w));
let fade_xy = fade2(Pf.xy);
let n_x = mix(vec2<f32>(n00, n01), vec2<f32>(n10, n11), vec2<f32>(fade_xy.x));
let n_xy = mix(n_x.x, n_x.y, fade_xy.y);
return 2.3 * n_xy;
}
// Classic Perlin noise, periodic variant
fn perlinNoise3(P: vec3<f32>, rep: vec3<f32>) -> f32
{
var Pi0: vec3<f32> = moduloVec3(floor(P), rep); // Integer part, modulo period
var Pi1: vec3<f32> = moduloVec3(Pi0 + vec3<f32>(1.0), rep); // Integer part + 1, mod period
Pi0 = mod289Vec3(Pi0);
Pi1 = mod289Vec3(Pi1);
let Pf0: vec3<f32> = fract(P); // Fractional part for interpolation
let Pf1: vec3<f32> = Pf0 - vec3<f32>(1.0); // Fractional part - 1.0
let ix: vec4<f32> = vec4<f32>(Pi0.x, Pi1.x, Pi0.x, Pi1.x);
let iy: vec4<f32> = vec4<f32>(Pi0.yy, Pi1.yy);
let iz0: vec4<f32> = Pi0.zzzz;
let iz1: vec4<f32> = Pi1.zzzz;
let ixy: vec4<f32> = permute4(permute4(ix) + iy);
let ixy0: vec4<f32> = permute4(ixy + iz0);
let ixy1: vec4<f32> = permute4(ixy + iz1);
var gx0: vec4<f32> = ixy0 * (1.0 / 7.0);
var gy0: vec4<f32> = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;
gx0 = fract(gx0);
let gz0: vec4<f32> = vec4<f32>(0.5) - abs(gx0) - abs(gy0);
let sz0: vec4<f32> = step(gz0, vec4<f32>(0.0));
gx0 -= sz0 * (step(vec4<f32>(0.0), gx0) - 0.5);
gy0 -= sz0 * (step(vec4<f32>(0.0), gy0) - 0.5);
var gx1: vec4<f32> = ixy1 * (1.0 / 7.0);
var gy1: vec4<f32> = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;
gx1 = fract(gx1);
let gz1: vec4<f32> = vec4<f32>(0.5) - abs(gx1) - abs(gy1);
let sz1: vec4<f32> = step(gz1, vec4<f32>(0.0));
gx1 -= sz1 * (step(vec4<f32>(0.0), gx1) - 0.5);
gy1 -= sz1 * (step(vec4<f32>(0.0), gy1) - 0.5);
var g000: vec3<f32> = vec3<f32>(gx0.x, gy0.x, gz0.x);
var g100: vec3<f32> = vec3<f32>(gx0.y, gy0.y, gz0.y);
var g010: vec3<f32> = vec3<f32>(gx0.z, gy0.z, gz0.z);
var g110: vec3<f32> = vec3<f32>(gx0.w, gy0.w, gz0.w);
var g001: vec3<f32> = vec3<f32>(gx1.x, gy1.x, gz1.x);
var g101: vec3<f32> = vec3<f32>(gx1.y, gy1.y, gz1.y);
var g011: vec3<f32> = vec3<f32>(gx1.z, gy1.z, gz1.z);
var g111: vec3<f32> = vec3<f32>(gx1.w, gy1.w, gz1.w);
let norm0: vec4<f32> = taylorInvSqrt(vec4<f32>(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));
g000 *= norm0.x;
g010 *= norm0.y;
g100 *= norm0.z;
g110 *= norm0.w;
let norm1: vec4<f32> = taylorInvSqrt(vec4<f32>(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));
g001 *= norm1.x;
g011 *= norm1.y;
g101 *= norm1.z;
g111 *= norm1.w;
let n000: f32 = dot(g000, Pf0);
let n100: f32 = dot(g100, vec3<f32>(Pf1.x, Pf0.yz));
let n010: f32 = dot(g010, vec3<f32>(Pf0.x, Pf1.y, Pf0.z));
let n110: f32 = dot(g110, vec3<f32>(Pf1.xy, Pf0.z));
let n001: f32 = dot(g001, vec3<f32>(Pf0.xy, Pf1.z));
let n101: f32 = dot(g101, vec3<f32>(Pf1.x, Pf0.y, Pf1.z));
let n011: f32 = dot(g011, vec3<f32>(Pf0.x, Pf1.yz));
let n111: f32 = dot(g111, Pf1);
let fade_xyz: vec3<f32> = fade3(Pf0);
let n_z: vec4<f32> = mix(vec4<f32>(n000, n100, n010, n110), vec4<f32>(n001, n101, n011, n111), fade_xyz.z);
let n_yz: vec2<f32> = mix(n_z.xy, n_z.zw, fade_xyz.y);
let n_xyz: f32 = mix(n_yz.x, n_yz.y, fade_xyz.x);
return 2.2 * n_xyz;
}
fn turb(P: vec3<f32>, rep: vec3<f32>, lacunarity: f32, gain: f32) -> f32
{
var sum: f32 = 0.0;
var sc: f32 = 1.0;
var totalgain: f32 = 1.0;
for (var i = 0.0; i < 6.0; i += 1)
{
sum += totalgain * perlinNoise3(P * sc, rep);
sc *= lacunarity;
totalgain *= gain;
}
return abs(sum);
}`,Tit=Object.defineProperty,Iit=(i,t,e)=>t in i?Tit(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,ho=(i,t,e)=>(Iit(i,typeof t!="symbol"?t+"":t,e),e);const Sit=class RP extends xt{constructor(t){t={...RP.DEFAULT_OPTIONS,...t};const e=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:pit.replace("${PERLIN}",Eit),entryPoint:"mainFragment"}}),s=Tt.from({vertex:Qt,fragment:git.replace("${PERLIN}",mit),name:"god-ray-filter"});super({gpuProgram:e,glProgram:s,resources:{godrayUniforms:{uLight:{value:new Float32Array(2),type:"vec2<f32>"},uParallel:{value:0,type:"f32"},uAspect:{value:0,type:"f32"},uTime:{value:t.time,type:"f32"},uRay:{value:new Float32Array(3),type:"vec3<f32>"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),ho(this,"uniforms"),ho(this,"time",0),ho(this,"_angleLight",[0,0]),ho(this,"_angle",0),ho(this,"_center"),this.uniforms=this.resources.godrayUniforms.uniforms,Object.assign(this,t)}apply(t,e,s,r){const n=e.frame.width,a=e.frame.height;this.uniforms.uLight[0]=this.parallel?this._angleLight[0]:this._center.x,this.uniforms.uLight[1]=this.parallel?this._angleLight[1]:this._center.y,this.uniforms.uDimensions[0]=n,this.uniforms.uDimensions[1]=a,this.uniforms.uAspect=a/n,this.uniforms.uTime=this.time,t.applyFilter(this,e,s,r)}get angle(){return this._angle}set angle(t){this._angle=t;const e=t*$o;this._angleLight[0]=Math.cos(e),this._angleLight[1]=Math.sin(e)}get parallel(){return this.uniforms.uParallel>.5}set parallel(t){this.uniforms.uParallel=t?1:0}get center(){return this._center}set center(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this._center=t}get centerX(){return this.center.x}set centerX(t){this.center.x=t}get centerY(){return this.center.y}set centerY(t){this.center.y=t}get gain(){return this.uniforms.uRay[0]}set gain(t){this.uniforms.uRay[0]=t}get lacunarity(){return this.uniforms.uRay[1]}set lacunarity(t){this.uniforms.uRay[1]=t}get alpha(){return this.uniforms.uRay[2]}set alpha(t){this.uniforms.uRay[2]=t}};ho(Sit,"DEFAULT_OPTIONS",{angle:30,gain:.5,lacunarity:2.5,parallel:!0,time:0,center:{x:0,y:0},alpha:1});var Rit=`in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec3 uHsl;
uniform float uAlpha;
uniform float uColorize;
// https://en.wikipedia.org/wiki/Luma_(video)
const vec3 weight = vec3(0.299, 0.587, 0.114);
float getWeightedAverage(vec3 rgb) {
return rgb.r * weight.r + rgb.g * weight.g + rgb.b * weight.b;
}
// https://gist.github.com/mairod/a75e7b44f68110e1576d77419d608786?permalink_comment_id=3195243#gistcomment-3195243
const vec3 k = vec3(0.57735, 0.57735, 0.57735);
vec3 hueShift(vec3 color, float angle) {
float cosAngle = cos(angle);
return vec3(
color * cosAngle +
cross(k, color) * sin(angle) +
k * dot(k, color) * (1.0 - cosAngle)
);
}
void main()
{
vec4 color = texture(uTexture, vTextureCoord);
vec3 resultRGB = color.rgb;
float hue = uHsl[0];
float saturation = uHsl[1];
float lightness = uHsl[2];
// colorize
if (uColorize > 0.5) {
resultRGB = vec3(getWeightedAverage(resultRGB), 0., 0.);
}
// hue
resultRGB = hueShift(resultRGB, hue);
// saturation
// https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/huesaturation.js
float average = (resultRGB.r + resultRGB.g + resultRGB.b) / 3.0;
if (saturation > 0.) {
resultRGB += (average - resultRGB) * (1. - 1. / (1.001 - saturation));
} else {
resultRGB -= (average - resultRGB) * saturation;
}
// lightness
resultRGB = mix(resultRGB, vec3(ceil(lightness)) * color.a, abs(lightness));
// alpha
finalColor = mix(color, vec4(resultRGB, color.a), uAlpha);
}
`,Ait=`struct HslUniforms {
uHsl:vec3<f32>,
uColorize:f32,
uAlpha:f32,
};
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> hslUniforms : HslUniforms;
@fragment
fn mainFragment(
@location(0) uv: vec2<f32>,
@builtin(position) position: vec4<f32>
) -> @location(0) vec4<f32> {
let color: vec4<f32> = textureSample(uTexture, uSampler, uv);
var resultRGB: vec3<f32> = color.rgb;
let hue: f32 = hslUniforms.uHsl[0];
let saturation: f32 = hslUniforms.uHsl[1];
let lightness: f32 = hslUniforms.uHsl[2];
// colorize
if (hslUniforms.uColorize > 0.5) {
resultRGB = vec3<f32>(dot(color.rgb, vec3<f32>(0.299, 0.587, 0.114)), 0., 0.);
}
// hue
resultRGB = hueShift(resultRGB, hue);
// saturation
// https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/huesaturation.js
let average: f32 = (resultRGB.r + resultRGB.g + resultRGB.b) / 3.0;
if (saturation > 0.) {
resultRGB += (average - resultRGB) * (1. - 1. / (1.001 - saturation));
} else {
resultRGB -= (average - resultRGB) * saturation;
}
// lightness
resultRGB = mix(resultRGB, vec3<f32>(ceil(lightness)) * color.a, abs(lightness));
// alpha
return mix(color, vec4<f32>(resultRGB, color.a), hslUniforms.uAlpha);
}
// https://gist.github.com/mairod/a75e7b44f68110e1576d77419d608786?permalink_comment_id=3195243#gistcomment-3195243
const k: vec3<f32> = vec3(0.57735, 0.57735, 0.57735);
fn hueShift(color: vec3<f32>, angle: f32) -> vec3<f32>
{
let cosAngle: f32 = cos(angle);
return vec3<f32>(
color * cosAngle +
cross(k, color) * sin(angle) +
k * dot(k, color) * (1.0 - cosAngle)
);
}`,Oit=Object.defineProperty,yit=(i,t,e)=>t in i?Oit(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,hI=(i,t,e)=>(yit(i,typeof t!="symbol"?t+"":t,e),e);const vit=class AP extends xt{constructor(t){t={...AP.DEFAULT_OPTIONS,...t};const e=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Ait,entryPoint:"mainFragment"}}),s=Tt.from({vertex:Qt,fragment:Rit,name:"hsl-adjustment-filter"});super({gpuProgram:e,glProgram:s,resources:{hslUniforms:{uHsl:{value:new Float32Array(3),type:"vec3<f32>"},uColorize:{value:t.colorize?1:0,type:"f32"},uAlpha:{value:t.alpha,type:"f32"}}}}),hI(this,"uniforms"),hI(this,"_hue"),this.uniforms=this.resources.hslUniforms.uniforms,Object.assign(this,t)}get hue(){return this._hue}set hue(t){this._hue=t,this.uniforms.uHsl[0]=t*(Math.PI/180)}get saturation(){return this.uniforms.uHsl[1]}set saturation(t){this.uniforms.uHsl[1]=t}get lightness(){return this.uniforms.uHsl[2]}set lightness(t){this.uniforms.uHsl[2]=t}get colorize(){return this.uniforms.uColorize===1}set colorize(t){this.uniforms.uColorize=t?1:0}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}};hI(vit,"DEFAULT_OPTIONS",{hue:0,saturation:0,lightness:0,colorize:!1,alpha:1});var Cit=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec2 uVelocity;
uniform int uKernelSize;
uniform float uOffset;
uniform vec4 uInputSize;
const int MAX_KERNEL_SIZE = 2048;
// Notice:
// the perfect way:
// int kernelSize = min(uKernelSize, MAX_KERNELSIZE);
// BUT in real use-case , uKernelSize < MAX_KERNELSIZE almost always.
// So use uKernelSize directly.
void main(void)
{
vec4 color = texture(uTexture, vTextureCoord);
if (uKernelSize == 0)
{
finalColor = color;
return;
}
vec2 velocity = uVelocity / uInputSize.xy;
float offset = -uOffset / length(uVelocity) - 0.5;
int k = uKernelSize - 1;
for(int i = 0; i < MAX_KERNEL_SIZE - 1; i++) {
if (i == k) {
break;
}
vec2 bias = velocity * (float(i) / float(k) + offset);
color += texture(uTexture, vTextureCoord + bias);
}
finalColor = color / float(uKernelSize);
}
`,Mit=`struct MotionBlurUniforms {
uVelocity: vec2<f32>,
uKernelSize: f32,
uOffset: f32,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> motionBlurUniforms : MotionBlurUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let uVelocity = motionBlurUniforms.uVelocity;
let uKernelSize = motionBlurUniforms.uKernelSize;
let uOffset = motionBlurUniforms.uOffset;
let velocity: vec2<f32> = uVelocity / gfu.uInputSize.xy;
let offset: f32 = -uOffset / length(uVelocity) - 0.5;
let k: i32 = i32(min(uKernelSize - 1, MAX_KERNEL_SIZE - 1));
var color: vec4<f32> = textureSample(uTexture, uSampler, uv);
for(var i: i32 = 0; i < k; i += 1) {
let bias: vec2<f32> = velocity * (f32(i) / f32(k) + offset);
color += textureSample(uTexture, uSampler, uv + bias);
}
return select(color / f32(uKernelSize), textureSample(uTexture, uSampler, uv), uKernelSize == 0);
}
const MAX_KERNEL_SIZE: f32 = 2048;`,xit=Object.defineProperty,Pit=(i,t,e)=>t in i?xit(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,cI=(i,t,e)=>(Pit(i,typeof t!="symbol"?t+"":t,e),e);const bit=class OP extends xt{constructor(...t){let e=t[0]??{};if(Array.isArray(e)||"x"in e&&"y"in e||e instanceof Pe){ct("6.0.0","MotionBlurFilter constructor params are now options object. See params: { velocity, kernelSize, offset }");const n="x"in e?e.x:e[0],a="y"in e?e.y:e[1];e={velocity:{x:n,y:a}},t[1]!==void 0&&(e.kernelSize=t[1]),t[2]!==void 0&&(e.offset=t[2])}e={...OP.DEFAULT_OPTIONS,...e};const s=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Mit,entryPoint:"mainFragment"}}),r=Tt.from({vertex:Qt,fragment:Cit,name:"motion-blur-filter"});super({gpuProgram:s,glProgram:r,resources:{motionBlurUniforms:{uVelocity:{value:e.velocity,type:"vec2<f32>"},uKernelSize:{value:Math.trunc(e.kernelSize??5),type:"i32"},uOffset:{value:e.offset,type:"f32"}}}}),cI(this,"uniforms"),cI(this,"_kernelSize"),this.uniforms=this.resources.motionBlurUniforms.uniforms,Object.assign(this,e)}get velocity(){return this.uniforms.uVelocity}set velocity(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uVelocity=t,this._updateDirty()}get velocityX(){return this.velocity.x}set velocityX(t){this.velocity.x=t,this._updateDirty()}get velocityY(){return this.velocity.y}set velocityY(t){this.velocity.y=t,this._updateDirty()}get kernelSize(){return this._kernelSize}set kernelSize(t){this._kernelSize=t,this._updateDirty()}get offset(){return this.uniforms.uOffset}set offset(t){this.uniforms.uOffset=t}_updateDirty(){this.padding=(Math.max(Math.abs(this.velocityX),Math.abs(this.velocityY))>>0)+1,this.uniforms.uKernelSize=this.velocityX!==0||this.velocityY!==0?this._kernelSize:0}};cI(bit,"DEFAULT_OPTIONS",{velocity:{x:0,y:0},kernelSize:5,offset:0});var Nit=`in vec2 vTextureCoord;
out vec4 finalColor;
const int MAX_COLORS = \${MAX_COLORS};
uniform sampler2D uTexture;
uniform vec3 uOriginalColors[MAX_COLORS];
uniform vec3 uTargetColors[MAX_COLORS];
uniform float uTolerance;
void main(void)
{
finalColor = texture(uTexture, vTextureCoord);
float alpha = finalColor.a;
if (alpha < 0.0001)
{
return;
}
vec3 color = finalColor.rgb / alpha;
for(int i = 0; i < MAX_COLORS; i++)
{
vec3 origColor = uOriginalColors[i];
if (origColor.r < 0.0)
{
break;
}
vec3 colorDiff = origColor - color;
if (length(colorDiff) < uTolerance)
{
vec3 targetColor = uTargetColors[i];
finalColor = vec4((targetColor + colorDiff) * alpha, alpha);
return;
}
}
}
`,Uit=`struct MultiColorReplaceUniforms {
uOriginalColors: array<vec3<f32>, MAX_COLORS>,
uTargetColors: array<vec3<f32>, MAX_COLORS>,
uTolerance:f32,
};
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> multiColorReplaceUniforms : MultiColorReplaceUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let uOriginalColors = multiColorReplaceUniforms.uOriginalColors;
let uTargetColors = multiColorReplaceUniforms.uTargetColors;
let uTolerance = multiColorReplaceUniforms.uTolerance;
var color: vec4<f32> = textureSample(uTexture, uSampler, uv);
let alpha: f32 = color.a;
if (alpha > 0.0001)
{
var modColor: vec3<f32> = vec3<f32>(color.rgb) / alpha;
for(var i: i32 = 0; i < MAX_COLORS; i += 1)
{
let origColor: vec3<f32> = uOriginalColors[i];
if (origColor.r < 0.0)
{
break;
}
let colorDiff: vec3<f32> = origColor - modColor;
if (length(colorDiff) < uTolerance)
{
let targetColor: vec3<f32> = uTargetColors[i];
color = vec4((targetColor + colorDiff) * alpha, alpha);
return color;
}
}
}
return color;
}
const MAX_COLORS: i32 = \${MAX_COLORS};`,Dit=Object.defineProperty,Lit=(i,t,e)=>t in i?Dit(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,kc=(i,t,e)=>(Lit(i,typeof t!="symbol"?t+"":t,e),e);const Fit=class yP extends xt{constructor(...t){let e=t[0]??{};Array.isArray(e)&&(ct("6.0.0","MultiColorReplaceFilter constructor params are now options object. See params: { replacements, tolerance, maxColors }"),e={replacements:e},t[1]&&(e.tolerance=t[1]),t[2]&&(e.maxColors=t[2])),e={...yP.DEFAULT_OPTIONS,...e};const s=e.maxColors??e.replacements.length,r=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Uit.replace(/\$\{MAX_COLORS\}/g,s.toFixed(0)),entryPoint:"mainFragment"}}),n=Tt.from({vertex:Qt,fragment:Nit.replace(/\$\{MAX_COLORS\}/g,s.toFixed(0)),name:"multi-color-replace-filter"});super({gpuProgram:r,glProgram:n,resources:{multiColorReplaceUniforms:{uOriginalColors:{value:new Float32Array(3*s),type:"vec3<f32>",size:s},uTargetColors:{value:new Float32Array(3*s),type:"vec3<f32>",size:s},uTolerance:{value:e.tolerance,type:"f32"}}}}),kc(this,"uniforms"),kc(this,"_replacements",[]),kc(this,"_maxColors"),this._maxColors=s,this.uniforms=this.resources.multiColorReplaceUniforms.uniforms,this.replacements=e.replacements}set replacements(t){const e=this.uniforms.uOriginalColors,s=this.uniforms.uTargetColors,r=t.length,n=new Mt;if(r>this._maxColors)throw new Error(`Length of replacements (${r}) exceeds the maximum colors length (${this._maxColors})`);e[r*3]=-1;let a,o,u;for(let l=0;l<r;l++){const c=t[l];n.setValue(c[0]),[a,o,u]=n.toArray(),e[l*3]=a,e[l*3+1]=o,e[l*3+2]=u,n.setValue(c[1]),[a,o,u]=n.toArray(),s[l*3]=a,s[l*3+1]=o,s[l*3+2]=u}this._replacements=t}get replacements(){return this._replacements}refresh(){this.replacements=this._replacements}get maxColors(){return this._maxColors}get tolerance(){return this.uniforms.uTolerance}set tolerance(t){this.uniforms.uTolerance=t}set epsilon(t){ct("6.0.0","MultiColorReplaceFilter.epsilon is deprecated, please use MultiColorReplaceFilter.tolerance instead"),this.tolerance=t}get epsilon(){return ct("6.0.0","MultiColorReplaceFilter.epsilon is deprecated, please use MultiColorReplaceFilter.tolerance instead"),this.tolerance}};kc(Fit,"DEFAULT_OPTIONS",{replacements:[[16711680,255]],tolerance:.05,maxColors:void 0});var wit=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform float uSepia;
uniform vec2 uNoise;
uniform vec3 uScratch;
uniform vec3 uVignetting;
uniform float uSeed;
uniform vec2 uDimensions;
uniform vec4 uInputSize;
const float SQRT_2 = 1.414213;
const vec3 SEPIA_RGB = vec3(112.0 / 255.0, 66.0 / 255.0, 20.0 / 255.0);
float rand(vec2 co) {
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
}
vec3 Overlay(vec3 src, vec3 dst)
{
// if (dst <= 0.5) then: 2 * src * dst
// if (dst > 0.5) then: 1 - 2 * (1 - dst) * (1 - src)
return vec3((dst.x <= 0.5) ? (2.0 * src.x * dst.x) : (1.0 - 2.0 * (1.0 - dst.x) * (1.0 - src.x)),
(dst.y <= 0.5) ? (2.0 * src.y * dst.y) : (1.0 - 2.0 * (1.0 - dst.y) * (1.0 - src.y)),
(dst.z <= 0.5) ? (2.0 * src.z * dst.z) : (1.0 - 2.0 * (1.0 - dst.z) * (1.0 - src.z)));
}
void main()
{
finalColor = texture(uTexture, vTextureCoord);
vec3 color = finalColor.rgb;
if (uSepia > 0.0)
{
float gray = (color.x + color.y + color.z) / 3.0;
vec3 grayscale = vec3(gray);
color = Overlay(SEPIA_RGB, grayscale);
color = grayscale + uSepia * (color - grayscale);
}
vec2 coord = vTextureCoord * uInputSize.xy / uDimensions.xy;
float vignette = uVignetting[0];
float vignetteAlpha = uVignetting[1];
float vignetteBlur = uVignetting[2];
if (vignette > 0.0)
{
float outter = SQRT_2 - vignette * SQRT_2;
vec2 dir = vec2(vec2(0.5, 0.5) - coord);
dir.y *= uDimensions.y / uDimensions.x;
float darker = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + vignetteBlur * SQRT_2), 0.0, 1.0);
color.rgb *= darker + (1.0 - darker) * (1.0 - vignetteAlpha);
}
float scratch = uScratch[0];
float scratchDensity = uScratch[1];
float scratchWidth = uScratch[2];
if (scratchDensity > uSeed && scratch != 0.0)
{
float phase = uSeed * 256.0;
float s = mod(floor(phase), 2.0);
float dist = 1.0 / scratchDensity;
float d = distance(coord, vec2(uSeed * dist, abs(s - uSeed * dist)));
if (d < uSeed * 0.6 + 0.4)
{
highp float period = scratchDensity * 10.0;
float xx = coord.x * period + phase;
float aa = abs(mod(xx, 0.5) * 4.0);
float bb = mod(floor(xx / 0.5), 2.0);
float yy = (1.0 - bb) * aa + bb * (2.0 - aa);
float kk = 2.0 * period;
float dw = scratchWidth / uDimensions.x * (0.75 + uSeed);
float dh = dw * kk;
float tine = (yy - (2.0 - dh));
if (tine > 0.0) {
float _sign = sign(scratch);
tine = s * tine / period + scratch + 0.1;
tine = clamp(tine + 1.0, 0.5 + _sign * 0.5, 1.5 + _sign * 0.5);
color.rgb *= tine;
}
}
}
float noise = uNoise[0];
float noiseSize = uNoise[1];
if (noise > 0.0 && noiseSize > 0.0)
{
vec2 pixelCoord = vTextureCoord.xy * uInputSize.xy;
pixelCoord.x = floor(pixelCoord.x / noiseSize);
pixelCoord.y = floor(pixelCoord.y / noiseSize);
// vec2 d = pixelCoord * noiseSize * vec2(1024.0 + uSeed * 512.0, 1024.0 - uSeed * 512.0);
// float _noise = snoise(d) * 0.5;
float _noise = rand(pixelCoord * noiseSize * uSeed) - 0.5;
color += _noise * noise;
}
finalColor.rgb = color;
}`,Git=`struct OldFilmUniforms {
uSepia: f32,
uNoise: vec2<f32>,
uScratch: vec3<f32>,
uVignetting: vec3<f32>,
uSeed: f32,
uDimensions: vec2<f32>,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> oldFilmUniforms : OldFilmUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
var color: vec4<f32> = textureSample(uTexture, uSampler, uv);
if (oldFilmUniforms.uSepia > 0.)
{
color = vec4<f32>(sepia(color.rgb), color.a);
}
let coord: vec2<f32> = uv * gfu.uInputSize.xy / oldFilmUniforms.uDimensions;
if (oldFilmUniforms.uVignetting[0] > 0.)
{
color *= vec4<f32>(vec3<f32>(vignette(color.rgb, coord)), color.a);
}
let uScratch = oldFilmUniforms.uScratch;
if (uScratch[1] > oldFilmUniforms.uSeed && uScratch[0] != 0.)
{
color = vec4<f32>(scratch(color.rgb, coord), color.a);
}
let uNoise = oldFilmUniforms.uNoise;
if (uNoise[0] > 0.0 && uNoise[1] > 0.0)
{
color += vec4<f32>(vec3<f32>(noise(uv)), color.a);
}
return color;
}
const SQRT_2: f32 = 1.414213;
const SEPIA_RGB: vec3<f32> = vec3<f32>(112.0 / 255.0, 66.0 / 255.0, 20.0 / 255.0);
fn modulo(x: f32, y: f32) -> f32
{
return x - y * floor(x/y);
}
fn rand(co: vec2<f32>) -> f32
{
return fract(sin(dot(co, vec2<f32>(12.9898, 78.233))) * 43758.5453);
}
fn overlay(src: vec3<f32>, dst: vec3<f32>) -> vec3<f32>
{
// if (dst <= 0.5) then: 2 * src * dst
// if (dst > 0.5) then: 1 - 2 * (1 - dst) * (1 - src)
return vec3<f32>(
select((1.0 - 2.0 * (1.0 - dst.x) * (1.0 - src.x)), (2.0 * src.x * dst.x), (dst.x <= 0.5)),
select((1.0 - 2.0 * (1.0 - dst.y) * (1.0 - src.y)), (2.0 * src.y * dst.y), (dst.y <= 0.5)),
select((1.0 - 2.0 * (1.0 - dst.z) * (1.0 - src.z)), (2.0 * src.z * dst.z), (dst.z <= 0.5))
);
}
fn sepia(co: vec3<f32>) -> vec3<f32>
{
let gray: f32 = (co.x + co.y + co.z) / 3.0;
let grayscale: vec3<f32> = vec3<f32>(gray);
let color = overlay(SEPIA_RGB, grayscale);
return grayscale + oldFilmUniforms.uSepia * (color - grayscale);
}
fn vignette(co: vec3<f32>, coord: vec2<f32>) -> f32
{
let uVignetting = oldFilmUniforms.uVignetting;
let uDimensions = oldFilmUniforms.uDimensions;
let outter: f32 = SQRT_2 - uVignetting[0] * SQRT_2;
var dir: vec2<f32> = vec2<f32>(vec2<f32>(0.5) - coord);
dir.y *= uDimensions.y / uDimensions.x;
let darker: f32 = clamp((outter - length(dir) * SQRT_2) / ( 0.00001 + uVignetting[2] * SQRT_2), 0.0, 1.0);
return darker + (1.0 - darker) * (1.0 - uVignetting[1]);
}
fn scratch(co: vec3<f32>, coord: vec2<f32>) -> vec3<f32>
{
var color = co;
let uScratch = oldFilmUniforms.uScratch;
let uSeed = oldFilmUniforms.uSeed;
let uDimensions = oldFilmUniforms.uDimensions;
let phase: f32 = uSeed * 256.0;
let s: f32 = modulo(floor(phase), 2.0);
let dist: f32 = 1.0 / uScratch[1];
let d: f32 = distance(coord, vec2<f32>(uSeed * dist, abs(s - uSeed * dist)));
if (d < uSeed * 0.6 + 0.4)
{
let period: f32 = uScratch[1] * 10.0;
let xx: f32 = coord.x * period + phase;
let aa: f32 = abs(modulo(xx, 0.5) * 4.0);
let bb: f32 = modulo(floor(xx / 0.5), 2.0);
let yy: f32 = (1.0 - bb) * aa + bb * (2.0 - aa);
let kk: f32 = 2.0 * period;
let dw: f32 = uScratch[2] / uDimensions.x * (0.75 + uSeed);
let dh: f32 = dw * kk;
var tine: f32 = (yy - (2.0 - dh));
if (tine > 0.0) {
let _sign: f32 = sign(uScratch[0]);
tine = s * tine / period + uScratch[0] + 0.1;
tine = clamp(tine + 1.0, 0.5 + _sign * 0.5, 1.5 + _sign * 0.5);
color *= tine;
}
}
return color;
}
fn noise(coord: vec2<f32>) -> f32
{
let uNoise = oldFilmUniforms.uNoise;
let uSeed = oldFilmUniforms.uSeed;
var pixelCoord: vec2<f32> = coord * gfu.uInputSize.xy;
pixelCoord.x = floor(pixelCoord.x / uNoise[1]);
pixelCoord.y = floor(pixelCoord.y / uNoise[1]);
return (rand(pixelCoord * uNoise[1] * uSeed) - 0.5) * uNoise[0];
}`,Bit=Object.defineProperty,kit=(i,t,e)=>t in i?Bit(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,_I=(i,t,e)=>(kit(i,typeof t!="symbol"?t+"":t,e),e);const zit=class vP extends xt{constructor(t){t={...vP.DEFAULT_OPTIONS,...t};const e=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Git,entryPoint:"mainFragment"}}),s=Tt.from({vertex:Qt,fragment:wit,name:"old-film-filter"});super({gpuProgram:e,glProgram:s,resources:{oldFilmUniforms:{uSepia:{value:t.sepia,type:"f32"},uNoise:{value:new Float32Array(2),type:"vec2<f32>"},uScratch:{value:new Float32Array(3),type:"vec3<f32>"},uVignetting:{value:new Float32Array(3),type:"vec3<f32>"},uSeed:{value:t.seed,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),_I(this,"uniforms"),_I(this,"seed"),this.uniforms=this.resources.oldFilmUniforms.uniforms,Object.assign(this,t)}apply(t,e,s,r){this.uniforms.uDimensions[0]=e.frame.width,this.uniforms.uDimensions[1]=e.frame.height,this.uniforms.uSeed=this.seed,t.applyFilter(this,e,s,r)}get sepia(){return this.uniforms.uSepia}set sepia(t){this.uniforms.uSepia=t}get noise(){return this.uniforms.uNoise[0]}set noise(t){this.uniforms.uNoise[0]=t}get noiseSize(){return this.uniforms.uNoise[1]}set noiseSize(t){this.uniforms.uNoise[1]=t}get scratch(){return this.uniforms.uScratch[0]}set scratch(t){this.uniforms.uScratch[0]=t}get scratchDensity(){return this.uniforms.uScratch[1]}set scratchDensity(t){this.uniforms.uScratch[1]=t}get scratchWidth(){return this.uniforms.uScratch[2]}set scratchWidth(t){this.uniforms.uScratch[2]=t}get vignetting(){return this.uniforms.uVignetting[0]}set vignetting(t){this.uniforms.uVignetting[0]=t}get vignettingAlpha(){return this.uniforms.uVignetting[1]}set vignettingAlpha(t){this.uniforms.uVignetting[1]=t}get vignettingBlur(){return this.uniforms.uVignetting[2]}set vignettingBlur(t){this.uniforms.uVignetting[2]=t}};_I(zit,"DEFAULT_OPTIONS",{sepia:.3,noise:.3,noiseSize:1,scratch:.5,scratchDensity:.3,scratchWidth:1,vignetting:.3,vignettingAlpha:1,vignettingBlur:.3,seed:0});var Vit=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec2 uThickness;
uniform vec3 uColor;
uniform float uAlpha;
uniform float uKnockout;
uniform vec4 uInputClamp;
const float DOUBLE_PI = 2. * 3.14159265358979323846264;
const float ANGLE_STEP = \${ANGLE_STEP};
float outlineMaxAlphaAtPos(vec2 pos) {
if (uThickness.x == 0. || uThickness.y == 0.) {
return 0.;
}
vec4 displacedColor;
vec2 displacedPos;
float maxAlpha = 0.;
for (float angle = 0.; angle <= DOUBLE_PI; angle += ANGLE_STEP) {
displacedPos.x = vTextureCoord.x + uThickness.x * cos(angle);
displacedPos.y = vTextureCoord.y + uThickness.y * sin(angle);
displacedColor = texture(uTexture, clamp(displacedPos, uInputClamp.xy, uInputClamp.zw));
maxAlpha = max(maxAlpha, displacedColor.a);
}
return maxAlpha;
}
void main(void) {
vec4 sourceColor = texture(uTexture, vTextureCoord);
vec4 contentColor = sourceColor * float(uKnockout < 0.5);
float outlineAlpha = uAlpha * outlineMaxAlphaAtPos(vTextureCoord.xy) * (1.-sourceColor.a);
vec4 outlineColor = vec4(vec3(uColor) * outlineAlpha, outlineAlpha);
finalColor = contentColor + outlineColor;
}
`,Hit=`struct OutlineUniforms {
uThickness:vec2<f32>,
uColor:vec3<f32>,
uAlpha:f32,
uAngleStep:f32,
uKnockout:f32,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> outlineUniforms : OutlineUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let sourceColor: vec4<f32> = textureSample(uTexture, uSampler, uv);
let contentColor: vec4<f32> = sourceColor * (1. - outlineUniforms.uKnockout);
let outlineAlpha: f32 = outlineUniforms.uAlpha * outlineMaxAlphaAtPos(uv) * (1. - sourceColor.a);
let outlineColor: vec4<f32> = vec4<f32>(vec3<f32>(outlineUniforms.uColor) * outlineAlpha, outlineAlpha);
return contentColor + outlineColor;
}
fn outlineMaxAlphaAtPos(uv: vec2<f32>) -> f32 {
let thickness = outlineUniforms.uThickness;
if (thickness.x == 0. || thickness.y == 0.) {
return 0.;
}
let angleStep = outlineUniforms.uAngleStep;
var displacedColor: vec4<f32>;
var displacedPos: vec2<f32>;
var maxAlpha: f32 = 0.;
var displaced: vec2<f32>;
var curColor: vec4<f32>;
for (var angle = 0.; angle <= DOUBLE_PI; angle += angleStep)
{
displaced.x = uv.x + thickness.x * cos(angle);
displaced.y = uv.y + thickness.y * sin(angle);
curColor = textureSample(uTexture, uSampler, clamp(displaced, gfu.uInputClamp.xy, gfu.uInputClamp.zw));
maxAlpha = max(maxAlpha, curColor.a);
}
return maxAlpha;
}
const DOUBLE_PI: f32 = 3.14159265358979323846264 * 2.;`,Yit=Object.defineProperty,Wit=(i,t,e)=>t in i?Yit(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,Ca=(i,t,e)=>(Wit(i,typeof t!="symbol"?t+"":t,e),e);const TS=class jn extends xt{constructor(...t){let e=t[0]??{};typeof e=="number"&&(ct("6.0.0","OutlineFilter constructor params are now options object. See params: { thickness, color, quality, alpha, knockout }"),e={thickness:e},t[1]!==void 0&&(e.color=t[1]),t[2]!==void 0&&(e.quality=t[2]),t[3]!==void 0&&(e.alpha=t[3]),t[4]!==void 0&&(e.knockout=t[4])),e={...jn.DEFAULT_OPTIONS,...e};const s=e.quality??.1,r=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Hit,entryPoint:"mainFragment"}}),n=Tt.from({vertex:Qt,fragment:Vit.replace(/\$\{ANGLE_STEP\}/,jn.getAngleStep(s).toFixed(7)),name:"outline-filter"});super({gpuProgram:r,glProgram:n,resources:{outlineUniforms:{uThickness:{value:new Float32Array(2),type:"vec2<f32>"},uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:e.alpha,type:"f32"},uAngleStep:{value:0,type:"f32"},uKnockout:{value:e.knockout?1:0,type:"f32"}}}}),Ca(this,"uniforms"),Ca(this,"_thickness"),Ca(this,"_quality"),Ca(this,"_color"),this.uniforms=this.resources.outlineUniforms.uniforms,this.uniforms.uAngleStep=jn.getAngleStep(s),this._color=new Mt,this.color=e.color??0,Object.assign(this,e)}apply(t,e,s,r){this.uniforms.uThickness[0]=this.thickness/e.source.width,this.uniforms.uThickness[1]=this.thickness/e.source.height,t.applyFilter(this,e,s,r)}static getAngleStep(t){return parseFloat((Math.PI*2/Math.max(t*jn.MAX_SAMPLES,jn.MIN_SAMPLES)).toFixed(7))}get thickness(){return this._thickness}set thickness(t){this._thickness=this.padding=t}get color(){return this._color.value}set color(t){this._color.setValue(t);const[e,s,r]=this._color.toArray();this.uniforms.uColor[0]=e,this.uniforms.uColor[1]=s,this.uniforms.uColor[2]=r}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}get quality(){return this._quality}set quality(t){this._quality=t,this.uniforms.uAngleStep=jn.getAngleStep(t)}get knockout(){return this.uniforms.uKnockout===1}set knockout(t){this.uniforms.uKnockout=t?1:0}};Ca(TS,"DEFAULT_OPTIONS",{thickness:1,color:0,alpha:1,quality:.1,knockout:!1});Ca(TS,"MIN_SAMPLES",1);Ca(TS,"MAX_SAMPLES",100);var jit=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform float uRadian;
uniform vec2 uCenter;
uniform float uRadius;
uniform int uKernelSize;
uniform vec4 uInputSize;
const int MAX_KERNEL_SIZE = 2048;
void main(void)
{
vec4 color = texture(uTexture, vTextureCoord);
if (uKernelSize == 0)
{
finalColor = color;
return;
}
float aspect = uInputSize.y / uInputSize.x;
vec2 center = uCenter.xy / uInputSize.xy;
float gradient = uRadius / uInputSize.x * 0.3;
float radius = uRadius / uInputSize.x - gradient * 0.5;
int k = uKernelSize - 1;
vec2 coord = vTextureCoord;
vec2 dir = vec2(center - coord);
float dist = length(vec2(dir.x, dir.y * aspect));
float radianStep = uRadian;
if (radius >= 0.0 && dist > radius) {
float delta = dist - radius;
float gap = gradient;
float scale = 1.0 - abs(delta / gap);
if (scale <= 0.0) {
finalColor = color;
return;
}
radianStep *= scale;
}
radianStep /= float(k);
float s = sin(radianStep);
float c = cos(radianStep);
mat2 rotationMatrix = mat2(vec2(c, -s), vec2(s, c));
for(int i = 0; i < MAX_KERNEL_SIZE - 1; i++) {
if (i == k) {
break;
}
coord -= center;
coord.y *= aspect;
coord = rotationMatrix * coord;
coord.y /= aspect;
coord += center;
vec4 sample = texture(uTexture, coord);
// switch to pre-multiplied alpha to correctly blur transparent images
// sample.rgb *= sample.a;
color += sample;
}
finalColor = color / float(uKernelSize);
}
`,Kit=`struct RadialBlurUniforms {
uRadian: f32,
uCenter: vec2<f32>,
uKernelSize: f32,
uRadius: f32,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> radialBlurUniforms : RadialBlurUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let uRadian = radialBlurUniforms.uRadian;
let uCenter = radialBlurUniforms.uCenter;
let uKernelSize = radialBlurUniforms.uKernelSize;
let uRadius = radialBlurUniforms.uRadius;
var returnColorOnly = false;
if (uKernelSize == 0)
{
returnColorOnly = true;
}
let aspect: f32 = gfu.uInputSize.y / gfu.uInputSize.x;
let center: vec2<f32> = uCenter.xy / gfu.uInputSize.xy;
let gradient: f32 = uRadius / gfu.uInputSize.x * 0.3;
let radius: f32 = uRadius / gfu.uInputSize.x - gradient * 0.5;
let k: i32 = i32(uKernelSize - 1);
var coord: vec2<f32> = uv;
let dir: vec2<f32> = vec2<f32>(center - coord);
let dist: f32 = length(vec2<f32>(dir.x, dir.y * aspect));
var radianStep: f32 = uRadian;
if (radius >= 0.0 && dist > radius)
{
let delta: f32 = dist - radius;
let gap: f32 = gradient;
let scale: f32 = 1.0 - abs(delta / gap);
if (scale <= 0.0) {
returnColorOnly = true;
}
radianStep *= scale;
}
radianStep /= f32(k);
let s: f32 = sin(radianStep);
let c: f32 = cos(radianStep);
let rotationMatrix: mat2x2<f32> = mat2x2<f32>(vec2<f32>(c, -s), vec2<f32>(s, c));
var color: vec4<f32> = textureSample(uTexture, uSampler, uv);
let baseColor = vec4<f32>(color);
let minK: i32 = min(i32(uKernelSize) - 1, MAX_KERNEL_SIZE - 1);
for(var i: i32 = 0; i < minK; i += 1)
{
coord -= center;
coord.y *= aspect;
coord = rotationMatrix * coord;
coord.y /= aspect;
coord += center;
let sample: vec4<f32> = textureSample(uTexture, uSampler, coord);
// switch to pre-multiplied alpha to correctly blur transparent images
// sample.rgb *= sample.a;
color += sample;
}
return select(color / f32(uKernelSize), baseColor, returnColorOnly);
}
const MAX_KERNEL_SIZE: i32 = 2048;`,Xit=Object.defineProperty,qit=(i,t,e)=>t in i?Xit(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,zc=(i,t,e)=>(qit(i,typeof t!="symbol"?t+"":t,e),e);const $it=class CP extends xt{constructor(...t){let e=t[0]??{};if(typeof e=="number"){if(ct("6.0.0","RadialBlurFilter constructor params are now options object. See params: { angle, center, kernelSize, radius }"),e={angle:e},t[1]){const n="x"in t[1]?t[1].x:t[1][0],a="y"in t[1]?t[1].y:t[1][1];e.center={x:n,y:a}}t[2]&&(e.kernelSize=t[2]),t[3]&&(e.radius=t[3])}e={...CP.DEFAULT_OPTIONS,...e};const s=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Kit,entryPoint:"mainFragment"}}),r=Tt.from({vertex:Qt,fragment:jit,name:"radial-blur-filter"});super({gpuProgram:s,glProgram:r,resources:{radialBlurUniforms:{uRadian:{value:0,type:"f32"},uCenter:{value:e.center,type:"vec2<f32>"},uKernelSize:{value:e.kernelSize,type:"i32"},uRadius:{value:e.radius,type:"f32"}}}}),zc(this,"uniforms"),zc(this,"_angle"),zc(this,"_kernelSize"),this.uniforms=this.resources.radialBlurUniforms.uniforms,Object.assign(this,e)}_updateKernelSize(){this.uniforms.uKernelSize=this._angle!==0?this.kernelSize:0}get angle(){return this._angle}set angle(t){this._angle=t,this.uniforms.uRadian=t*Math.PI/180,this._updateKernelSize()}get center(){return this.uniforms.uCenter}set center(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uCenter=t}get centerX(){return this.center.x}set centerX(t){this.center.x=t}get centerY(){return this.center.y}set centerY(t){this.center.y=t}get kernelSize(){return this._kernelSize}set kernelSize(t){this._kernelSize=t,this._updateKernelSize()}get radius(){return this.uniforms.uRadius}set radius(t){this.uniforms.uRadius=t<0||t===1/0?-1:t}};zc($it,"DEFAULT_OPTIONS",{angle:0,center:{x:0,y:0},kernelSize:5,radius:-1});var Qit=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform float uMirror;
uniform float uBoundary;
uniform vec2 uAmplitude;
uniform vec2 uWavelength;
uniform vec2 uAlpha;
uniform float uTime;
uniform vec2 uDimensions;
uniform vec4 uInputSize;
uniform vec4 uInputClamp;
float rand(vec2 co) {
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
}
void main(void)
{
vec2 pixelCoord = vTextureCoord.xy * uInputSize.xy;
vec2 coord = pixelCoord / uDimensions;
if (coord.y < uBoundary) {
finalColor = texture(uTexture, vTextureCoord);
return;
}
float k = (coord.y - uBoundary) / (1. - uBoundary + 0.0001);
float areaY = uBoundary * uDimensions.y / uInputSize.y;
float v = areaY + areaY - vTextureCoord.y;
float y = uMirror > 0.5 ? v : vTextureCoord.y;
float _amplitude = ((uAmplitude.y - uAmplitude.x) * k + uAmplitude.x ) / uInputSize.x;
float _waveLength = ((uWavelength.y - uWavelength.x) * k + uWavelength.x) / uInputSize.y;
float _alpha = (uAlpha.y - uAlpha.x) * k + uAlpha.x;
float x = vTextureCoord.x + cos(v * 6.28 / _waveLength - uTime) * _amplitude;
x = clamp(x, uInputClamp.x, uInputClamp.z);
vec4 color = texture(uTexture, vec2(x, y));
finalColor = color * _alpha;
}
`,Zit=`struct ReflectionUniforms {
uMirror: f32,
uBoundary: f32,
uAmplitude: vec2<f32>,
uWavelength: vec2<f32>,
uAlpha: vec2<f32>,
uTime: f32,
uDimensions: vec2<f32>,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> reflectionUniforms : ReflectionUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let uDimensions: vec2<f32> = reflectionUniforms.uDimensions;
let uBoundary: f32 = reflectionUniforms.uBoundary;
let uMirror: bool = reflectionUniforms.uMirror > 0.5;
let uAmplitude: vec2<f32> = reflectionUniforms.uAmplitude;
let uWavelength: vec2<f32> = reflectionUniforms.uWavelength;
let uAlpha: vec2<f32> = reflectionUniforms.uAlpha;
let uTime: f32 = reflectionUniforms.uTime;
let pixelCoord: vec2<f32> = uv * gfu.uInputSize.xy;
let coord: vec2<f32> = pixelCoord /uDimensions;
var returnColorOnly: bool = false;
if (coord.y < uBoundary) {
returnColorOnly = true;
}
let k: f32 = (coord.y - uBoundary) / (1. - uBoundary + 0.0001);
let areaY: f32 = uBoundary * uDimensions.y / gfu.uInputSize.y;
let v: f32 = areaY + areaY - uv.y;
let y: f32 = select(uv.y, v, uMirror);
let amplitude: f32 = ((uAmplitude.y - uAmplitude.x) * k + uAmplitude.x ) / gfu.uInputSize.x;
let waveLength: f32 = ((uWavelength.y - uWavelength.x) * k + uWavelength.x) / gfu.uInputSize.y;
let alpha: f32 = select((uAlpha.y - uAlpha.x) * k + uAlpha.x, 1., returnColorOnly);
var x: f32 = uv.x + cos(v * 6.28 / waveLength - uTime) * amplitude;
x = clamp(x, gfu.uInputClamp.x, gfu.uInputClamp.z);
return textureSample(uTexture, uSampler, select(vec2<f32>(x, y), uv, returnColorOnly)) * alpha;
}
fn rand(co: vec2<f32>) -> f32
{
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
}`,Jit=Object.defineProperty,trt=(i,t,e)=>t in i?Jit(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,dI=(i,t,e)=>(trt(i,typeof t!="symbol"?t+"":t,e),e);const ert=class MP extends xt{constructor(t){t={...MP.DEFAULT_OPTIONS,...t};const e=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Zit,entryPoint:"mainFragment"}}),s=Tt.from({vertex:Qt,fragment:Qit,name:"reflection-filter"});super({gpuProgram:e,glProgram:s,resources:{reflectionUniforms:{uMirror:{value:t.mirror?1:0,type:"f32"},uBoundary:{value:t.boundary,type:"f32"},uAmplitude:{value:t.amplitude,type:"vec2<f32>"},uWavelength:{value:t.waveLength,type:"vec2<f32>"},uAlpha:{value:t.alpha,type:"vec2<f32>"},uTime:{value:t.time,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}}}}),dI(this,"uniforms"),dI(this,"time",0),this.uniforms=this.resources.reflectionUniforms.uniforms,Object.assign(this,t)}apply(t,e,s,r){this.uniforms.uDimensions[0]=e.frame.width,this.uniforms.uDimensions[1]=e.frame.height,this.uniforms.uTime=this.time,t.applyFilter(this,e,s,r)}get mirror(){return this.uniforms.uMirror>.5}set mirror(t){this.uniforms.uMirror=t?1:0}get boundary(){return this.uniforms.uBoundary}set boundary(t){this.uniforms.uBoundary=t}get amplitude(){return Array.from(this.uniforms.uAmplitude)}set amplitude(t){this.uniforms.uAmplitude[0]=t[0],this.uniforms.uAmplitude[1]=t[1]}get amplitudeStart(){return this.uniforms.uAmplitude[0]}set amplitudeStart(t){this.uniforms.uAmplitude[0]=t}get amplitudeEnd(){return this.uniforms.uAmplitude[1]}set amplitudeEnd(t){this.uniforms.uAmplitude[1]=t}get waveLength(){return Array.from(this.uniforms.uWavelength)}set waveLength(t){this.uniforms.uWavelength[0]=t[0],this.uniforms.uWavelength[1]=t[1]}get wavelengthStart(){return this.uniforms.uWavelength[0]}set wavelengthStart(t){this.uniforms.uWavelength[0]=t}get wavelengthEnd(){return this.uniforms.uWavelength[1]}set wavelengthEnd(t){this.uniforms.uWavelength[1]=t}get alpha(){return Array.from(this.uniforms.uAlpha)}set alpha(t){this.uniforms.uAlpha[0]=t[0],this.uniforms.uAlpha[1]=t[1]}get alphaStart(){return this.uniforms.uAlpha[0]}set alphaStart(t){this.uniforms.uAlpha[0]=t}get alphaEnd(){return this.uniforms.uAlpha[1]}set alphaEnd(t){this.uniforms.uAlpha[1]=t}};dI(ert,"DEFAULT_OPTIONS",{mirror:!0,boundary:.5,amplitude:[0,20],waveLength:[30,100],alpha:[1,1],time:0});var srt=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec4 uInputSize;
uniform vec2 uRed;
uniform vec2 uGreen;
uniform vec2 uBlue;
void main(void)
{
float r = texture(uTexture, vTextureCoord + uRed/uInputSize.xy).r;
float g = texture(uTexture, vTextureCoord + uGreen/uInputSize.xy).g;
float b = texture(uTexture, vTextureCoord + uBlue/uInputSize.xy).b;
float a = texture(uTexture, vTextureCoord).a;
finalColor = vec4(r, g, b, a);
}
`,irt=`struct RgbSplitUniforms {
uRed: vec2<f32>,
uGreen: vec2<f32>,
uBlue: vec3<f32>,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> rgbSplitUniforms : RgbSplitUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let r = textureSample(uTexture, uSampler, uv + vec2<f32>(rgbSplitUniforms.uRed.x / gfu.uInputSize.x, rgbSplitUniforms.uRed.y / gfu.uInputSize.y)).r;
let g = textureSample(uTexture, uSampler, uv + vec2<f32>(rgbSplitUniforms.uGreen.x / gfu.uInputSize.x, rgbSplitUniforms.uGreen.y / gfu.uInputSize.y)).g;
let b = textureSample(uTexture, uSampler, uv + vec2<f32>(rgbSplitUniforms.uBlue.x / gfu.uInputSize.x, rgbSplitUniforms.uBlue.y / gfu.uInputSize.y)).b;
let a = textureSample(uTexture, uSampler, uv).a;
return vec4<f32>(r, g, b, a);
}
`,rrt=Object.defineProperty,nrt=(i,t,e)=>t in i?rrt(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,xP=(i,t,e)=>(nrt(i,typeof t!="symbol"?t+"":t,e),e);const art=class PP extends xt{constructor(...t){let e=t[0]??{};(Array.isArray(e)||"x"in e&&"y"in e)&&(ct("6.0.0","RGBSplitFilter constructor params are now options object. See params: { red, green, blue }"),e={red:e},t[1]!==void 0&&(e.green=t[1]),t[2]!==void 0&&(e.blue=t[2])),e={...PP.DEFAULT_OPTIONS,...e};const s=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:irt,entryPoint:"mainFragment"}}),r=Tt.from({vertex:Qt,fragment:srt,name:"rgb-split-filter"});super({gpuProgram:s,glProgram:r,resources:{rgbSplitUniforms:{uRed:{value:e.red,type:"vec2<f32>"},uGreen:{value:e.green,type:"vec2<f32>"},uBlue:{value:e.blue,type:"vec2<f32>"}}}}),xP(this,"uniforms"),this.uniforms=this.resources.rgbSplitUniforms.uniforms,Object.assign(this,e)}get red(){return this.uniforms.uRed}set red(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uRed=t}get redX(){return this.red.x}set redX(t){this.red.x=t}get redY(){return this.red.y}set redY(t){this.red.y=t}get green(){return this.uniforms.uGreen}set green(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uGreen=t}get greenX(){return this.green.x}set greenX(t){this.green.x=t}get greenY(){return this.green.y}set greenY(t){this.green.y=t}get blue(){return this.uniforms.uBlue}set blue(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uBlue=t}get blueX(){return this.blue.x}set blueX(t){this.blue.x=t}get blueY(){return this.blue.y}set blueY(t){this.blue.y=t}};xP(art,"DEFAULT_OPTIONS",{red:{x:-10,y:0},green:{x:0,y:10},blue:{x:0,y:0}});var ort=`
precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec2 uCenter;
uniform float uTime;
uniform float uSpeed;
uniform vec4 uWave;
uniform vec4 uInputSize;
uniform vec4 uInputClamp;
const float PI = 3.14159;
void main()
{
float uAmplitude = uWave[0];
float uWavelength = uWave[1];
float uBrightness = uWave[2];
float uRadius = uWave[3];
float halfWavelength = uWavelength * 0.5 / uInputSize.x;
float maxRadius = uRadius / uInputSize.x;
float currentRadius = uTime * uSpeed / uInputSize.x;
float fade = 1.0;
if (maxRadius > 0.0) {
if (currentRadius > maxRadius) {
finalColor = texture(uTexture, vTextureCoord);
return;
}
fade = 1.0 - pow(currentRadius / maxRadius, 2.0);
}
vec2 dir = vec2(vTextureCoord - uCenter / uInputSize.xy);
dir.y *= uInputSize.y / uInputSize.x;
float dist = length(dir);
if (dist <= 0.0 || dist < currentRadius - halfWavelength || dist > currentRadius + halfWavelength) {
finalColor = texture(uTexture, vTextureCoord);
return;
}
vec2 diffUV = normalize(dir);
float diff = (dist - currentRadius) / halfWavelength;
float p = 1.0 - pow(abs(diff), 2.0);
// float powDiff = diff * pow(p, 2.0) * ( amplitude * fade );
float powDiff = 1.25 * sin(diff * PI) * p * ( uAmplitude * fade );
vec2 offset = diffUV * powDiff / uInputSize.xy;
// Do clamp :
vec2 coord = vTextureCoord + offset;
vec2 clampedCoord = clamp(coord, uInputClamp.xy, uInputClamp.zw);
vec4 color = texture(uTexture, clampedCoord);
if (coord != clampedCoord) {
color *= max(0.0, 1.0 - length(coord - clampedCoord));
}
// No clamp :
// finalColor = texture(uTexture, vTextureCoord + offset);
color.rgb *= 1.0 + (uBrightness - 1.0) * p * fade;
finalColor = color;
}
`,urt=`
struct ShockWaveUniforms {
uTime: f32,
uOffset: vec2<f32>,
uSpeed: f32,
uWave: vec4<f32>,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> shockwaveUniforms : ShockWaveUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let uTime = shockwaveUniforms.uTime;
let uOffset = shockwaveUniforms.uOffset;
let uSpeed = shockwaveUniforms.uSpeed;
let uAmplitude = shockwaveUniforms.uWave[0];
let uWavelength = shockwaveUniforms.uWave[1];
let uBrightness = shockwaveUniforms.uWave[2];
let uRadius = shockwaveUniforms.uWave[3];
let halfWavelength: f32 = uWavelength * 0.5 / gfu.uInputSize.x;
let maxRadius: f32 = uRadius / gfu.uInputSize.x;
let currentRadius: f32 = uTime * uSpeed / gfu.uInputSize.x;
var fade: f32 = 1.0;
var returnColorOnly: bool = false;
if (maxRadius > 0.0) {
if (currentRadius > maxRadius) {
returnColorOnly = true;
}
fade = 1.0 - pow(currentRadius / maxRadius, 2.0);
}
var dir: vec2<f32> = vec2<f32>(uv - uOffset / gfu.uInputSize.xy);
dir.y *= gfu.uInputSize.y / gfu.uInputSize.x;
let dist:f32 = length(dir);
if (dist <= 0.0 || dist < currentRadius - halfWavelength || dist > currentRadius + halfWavelength) {
returnColorOnly = true;
}
let diffUV: vec2<f32> = normalize(dir);
let diff: f32 = (dist - currentRadius) / halfWavelength;
let p: f32 = 1.0 - pow(abs(diff), 2.0);
let powDiff: f32 = 1.25 * sin(diff * PI) * p * ( uAmplitude * fade );
let offset: vec2<f32> = diffUV * powDiff / gfu.uInputSize.xy;
// Do clamp :
let coord: vec2<f32> = uv + offset;
let clampedCoord: vec2<f32> = clamp(coord, gfu.uInputClamp.xy, gfu.uInputClamp.zw);
var clampedColor: vec4<f32> = textureSample(uTexture, uSampler, clampedCoord);
if (boolVec2(coord, clampedCoord))
{
clampedColor *= max(0.0, 1.0 - length(coord - clampedCoord));
}
// No clamp :
var finalColor = clampedColor;
return select(finalColor, textureSample(uTexture, uSampler, uv), returnColorOnly);
}
fn boolVec2(x: vec2<f32>, y: vec2<f32>) -> bool
{
if (x.x == y.x && x.y == y.y)
{
return true;
}
return false;
}
const PI: f32 = 3.14159265358979323846264;
`,lrt=Object.defineProperty,hrt=(i,t,e)=>t in i?lrt(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,fI=(i,t,e)=>(hrt(i,typeof t!="symbol"?t+"":t,e),e);const crt=class bP extends xt{constructor(...t){let e=t[0]??{};(Array.isArray(e)||"x"in e&&"y"in e)&&(ct("6.0.0","ShockwaveFilter constructor params are now options object. See params: { center, speed, amplitude, wavelength, brightness, radius, time }"),e={center:e,...t[1]},t[2]!==void 0&&(e.time=t[2])),e={...bP.DEFAULT_OPTIONS,...e};const s=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:urt,entryPoint:"mainFragment"}}),r=Tt.from({vertex:Qt,fragment:ort,name:"shockwave-filter"});super({gpuProgram:s,glProgram:r,resources:{shockwaveUniforms:{uTime:{value:e.time,type:"f32"},uCenter:{value:e.center,type:"vec2<f32>"},uSpeed:{value:e.speed,type:"f32"},uWave:{value:new Float32Array(4),type:"vec4<f32>"}}}}),fI(this,"uniforms"),fI(this,"time"),this.time=0,this.uniforms=this.resources.shockwaveUniforms.uniforms,Object.assign(this,e)}apply(t,e,s,r){this.uniforms.uTime=this.time,t.applyFilter(this,e,s,r)}get center(){return this.uniforms.uCenter}set center(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uCenter=t}get centerX(){return this.uniforms.uCenter.x}set centerX(t){this.uniforms.uCenter.x=t}get centerY(){return this.uniforms.uCenter.y}set centerY(t){this.uniforms.uCenter.y=t}get speed(){return this.uniforms.uSpeed}set speed(t){this.uniforms.uSpeed=t}get amplitude(){return this.uniforms.uWave[0]}set amplitude(t){this.uniforms.uWave[0]=t}get wavelength(){return this.uniforms.uWave[1]}set wavelength(t){this.uniforms.uWave[1]=t}get brightness(){return this.uniforms.uWave[2]}set brightness(t){this.uniforms.uWave[2]=t}get radius(){return this.uniforms.uWave[3]}set radius(t){this.uniforms.uWave[3]=t}};fI(crt,"DEFAULT_OPTIONS",{center:{x:0,y:0},speed:500,amplitude:30,wavelength:160,brightness:1,radius:-1});var _rt=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform sampler2D uMapTexture;
uniform vec3 uColor;
uniform float uAlpha;
uniform vec2 uDimensions;
uniform vec4 uInputSize;
void main() {
vec4 diffuseColor = texture(uTexture, vTextureCoord);
vec2 lightCoord = (vTextureCoord * uInputSize.xy) / uDimensions;
vec4 light = texture(uMapTexture, lightCoord);
vec3 ambient = uColor.rgb * uAlpha;
vec3 intensity = ambient + light.rgb;
vec3 color = diffuseColor.rgb * intensity;
finalColor = vec4(color, diffuseColor.a);
}
`,drt=`struct SimpleLightmapUniforms {
uColor: vec3<f32>,
uAlpha: f32,
uDimensions: vec2<f32>,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> simpleLightmapUniforms : SimpleLightmapUniforms;
@group(1) @binding(1) var uMapTexture: texture_2d<f32>;
@group(1) @binding(2) var uMapSampler: sampler;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>,
) -> @location(0) vec4<f32> {
let uColor = simpleLightmapUniforms.uColor;
let uAlpha = simpleLightmapUniforms.uAlpha;
let uDimensions = simpleLightmapUniforms.uDimensions;
let diffuseColor: vec4<f32> = textureSample(uTexture, uSampler, uv);
let lightCoord: vec2<f32> = (uv * gfu.uInputSize.xy) / simpleLightmapUniforms.uDimensions;
let light: vec4<f32> = textureSample(uMapTexture, uMapSampler, lightCoord);
let ambient: vec3<f32> = uColor * uAlpha;
let intensity: vec3<f32> = ambient + light.rgb;
let finalColor: vec3<f32> = diffuseColor.rgb * intensity;
return vec4<f32>(finalColor, diffuseColor.a);
}`,frt=Object.defineProperty,grt=(i,t,e)=>t in i?frt(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,Vc=(i,t,e)=>(grt(i,typeof t!="symbol"?t+"":t,e),e);const prt=class NP extends xt{constructor(...t){let e=t[0]??{};if(e instanceof W&&(ct("6.0.0","SimpleLightmapFilter constructor params are now options object. See params: { lightMap, color, alpha }"),e={lightMap:e},t[1]!==void 0&&(e.color=t[1]),t[2]!==void 0&&(e.alpha=t[2])),e={...NP.DEFAULT_OPTIONS,...e},!e.lightMap)throw Error("No light map texture source was provided to SimpleLightmapFilter");const s=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:drt,entryPoint:"mainFragment"}}),r=Tt.from({vertex:Qt,fragment:_rt,name:"simple-lightmap-filter"});super({gpuProgram:s,glProgram:r,resources:{simpleLightmapUniforms:{uColor:{value:new Float32Array(3),type:"vec3<f32>"},uAlpha:{value:e.alpha,type:"f32"},uDimensions:{value:new Float32Array(2),type:"vec2<f32>"}},uMapTexture:e.lightMap.source,uMapSampler:e.lightMap.source.style}}),Vc(this,"uniforms"),Vc(this,"_color"),Vc(this,"_lightMap"),this.uniforms=this.resources.simpleLightmapUniforms.uniforms,this._color=new Mt,this.color=e.color??0,Object.assign(this,e)}apply(t,e,s,r){this.uniforms.uDimensions[0]=e.frame.width,this.uniforms.uDimensions[1]=e.frame.height,t.applyFilter(this,e,s,r)}get lightMap(){return this._lightMap}set lightMap(t){this._lightMap=t,this.resources.uMapTexture=t.source,this.resources.uMapSampler=t.source.style}get color(){return this._color.value}set color(t){this._color.setValue(t);const[e,s,r]=this._color.toArray();this.uniforms.uColor[0]=e,this.uniforms.uColor[1]=s,this.uniforms.uColor[2]=r}get alpha(){return this.uniforms.uAlpha}set alpha(t){this.uniforms.uAlpha=t}};Vc(prt,"DEFAULT_OPTIONS",{lightMap:W.WHITE,color:0,alpha:1});var mrt=`in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec2 uBlur;
uniform vec2 uStart;
uniform vec2 uEnd;
uniform vec2 uDelta;
uniform vec2 uDimensions;
float random(vec3 scale, float seed)
{
return fract(sin(dot(gl_FragCoord.xyz + seed, scale)) * 43758.5453 + seed);
}
void main(void)
{
vec4 color = vec4(0.0);
float total = 0.0;
float blur = uBlur[0];
float gradientBlur = uBlur[1];
float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);
vec2 normal = normalize(vec2(uStart.y - uEnd.y, uEnd.x - uStart.x));
float radius = smoothstep(0.0, 1.0, abs(dot(vTextureCoord * uDimensions - uStart, normal)) / gradientBlur) * blur;
for (float t = -30.0; t <= 30.0; t++)
{
float percent = (t + offset - 0.5) / 30.0;
float weight = 1.0 - abs(percent);
vec4 sample = texture(uTexture, vTextureCoord + uDelta / uDimensions * percent * radius);
sample.rgb *= sample.a;
color += sample * weight;
total += weight;
}
color /= total;
color.rgb /= color.a + 0.00001;
finalColor = color;
}
`,Ert=`struct TiltShiftUniforms {
uBlur: vec2<f32>,
uStart: vec2<f32>,
uEnd: vec2<f32>,
uDelta: vec2<f32>,
uDimensions: vec2<f32>,
};
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> tiltShiftUniforms : TiltShiftUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let uBlur = tiltShiftUniforms.uBlur[0];
let uBlurGradient = tiltShiftUniforms.uBlur[1];
let uStart = tiltShiftUniforms.uStart;
let uEnd = tiltShiftUniforms.uEnd;
let uDelta = tiltShiftUniforms.uDelta;
let uDimensions = tiltShiftUniforms.uDimensions;
var color: vec4<f32> = vec4<f32>(0.0);
var total: f32 = 0.0;
let offset: f32 = random(position, vec3<f32>(12.9898, 78.233, 151.7182), 0.0);
let normal: vec2<f32> = normalize(vec2<f32>(uStart.y - uEnd.y, uEnd.x - uStart.x));
let radius: f32 = smoothstep(0.0, 1.0, abs(dot(uv * uDimensions - uStart, normal)) / uBlurGradient) * uBlur;
for (var t: f32 = -30.0; t <= 30.0; t += 1.0)
{
var percent: f32 = (t + offset - 0.5) / 30.0;
var weight: f32 = 1.0 - abs(percent);
var sample: vec4<f32> = textureSample(uTexture, uSampler, uv + uDelta / uDimensions * percent * radius);
sample = vec4<f32>(sample.xyz * sample.a, sample.a); // multiply sample.rgb with sample.a
color += sample * weight;
total += weight;
}
color /= total;
color = vec4<f32>(color.xyz / (color.a + 0.00001), color.a); // divide color.rgb by color.a + 0.00001
return color;
}
fn random(position: vec4<f32>, scale: vec3<f32>, seed: f32) -> f32
{
return fract(sin(dot(position.xyz + seed, scale)) * 43758.5453 + seed);
}`,Trt=Object.defineProperty,Irt=(i,t,e)=>t in i?Trt(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,gI=(i,t,e)=>(Irt(i,typeof t!="symbol"?t+"":t,e),e);const Srt=class UP extends xt{constructor(t){const{width:e,height:s}=mM.defaultOptions;t={...UP.DEFAULT_OPTIONS,start:{x:0,y:s/2},end:{x:e,y:s/2},...t};const r=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Ert,entryPoint:"mainFragment"}}),n=Tt.from({vertex:Qt,fragment:mrt,name:"tilt-shift-axis-filter"});super({gpuProgram:r,glProgram:n,resources:{tiltShiftUniforms:{uBlur:{value:new Float32Array([t.blur,t.gradientBlur]),type:"vec2<f32>"},uStart:{value:t.start,type:"vec2<f32>"},uEnd:{value:t.end,type:"vec2<f32>"},uDelta:{value:new Float32Array([0,0]),type:"vec2<f32>"},uDimensions:{value:new Float32Array([e,s]),type:"vec2<f32>"}}}}),gI(this,"uniforms"),gI(this,"_tiltAxis"),this.uniforms=this.resources.tiltShiftUniforms.uniforms,this._tiltAxis=t.axis}updateDimensions(t){const{uDimensions:e}=this.uniforms;e[0]=t.frame.width,e[1]=t.frame.height}updateDelta(){if(this.uniforms.uDelta[0]=0,this.uniforms.uDelta[1]=0,this._tiltAxis===void 0)return;const t=this.uniforms.uEnd,e=this.uniforms.uStart,s=t.x-e.x,r=t.y-e.y,n=Math.sqrt(s*s+r*r),a=this._tiltAxis==="vertical";this.uniforms.uDelta[0]=a?-r/n:s/n,this.uniforms.uDelta[1]=a?s/n:r/n}};gI(Srt,"DEFAULT_OPTIONS",{blur:100,gradientBlur:600});var Rrt=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform vec2 uTwist;
uniform vec2 uOffset;
uniform vec4 uInputSize;
vec2 mapCoord( vec2 coord )
{
coord *= uInputSize.xy;
coord += uInputSize.zw;
return coord;
}
vec2 unmapCoord( vec2 coord )
{
coord -= uInputSize.zw;
coord /= uInputSize.xy;
return coord;
}
vec2 twist(vec2 coord)
{
coord -= uOffset;
float dist = length(coord);
float uRadius = uTwist[0];
float uAngle = uTwist[1];
if (dist < uRadius)
{
float ratioDist = (uRadius - dist) / uRadius;
float angleMod = ratioDist * ratioDist * uAngle;
float s = sin(angleMod);
float c = cos(angleMod);
coord = vec2(coord.x * c - coord.y * s, coord.x * s + coord.y * c);
}
coord += uOffset;
return coord;
}
void main(void)
{
vec2 coord = mapCoord(vTextureCoord);
coord = twist(coord);
coord = unmapCoord(coord);
finalColor = texture(uTexture, coord);
}
`,Art=`struct TwistUniforms {
uTwist:vec2<f32>,
uOffset:vec2<f32>,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> twistUniforms : TwistUniforms;
@fragment
fn mainFragment(
@location(0) uv: vec2<f32>,
@builtin(position) position: vec4<f32>
) -> @location(0) vec4<f32> {
return textureSample(uTexture, uSampler, unmapCoord(twist(mapCoord(uv))));
}
fn mapCoord(coord: vec2<f32> ) -> vec2<f32>
{
var mappedCoord: vec2<f32> = coord;
mappedCoord *= gfu.uInputSize.xy;
mappedCoord += gfu.uOutputFrame.xy;
return mappedCoord;
}
fn unmapCoord(coord: vec2<f32> ) -> vec2<f32>
{
var mappedCoord: vec2<f32> = coord;
mappedCoord -= gfu.uOutputFrame.xy;
mappedCoord /= gfu.uInputSize.xy;
return mappedCoord;
}
fn twist(coord: vec2<f32>) -> vec2<f32>
{
var twistedCoord: vec2<f32> = coord;
let uRadius = twistUniforms.uTwist[0];
let uAngle = twistUniforms.uTwist[1];
let uOffset = twistUniforms.uOffset;
twistedCoord -= uOffset;
let dist = length(twistedCoord);
if (dist < uRadius)
{
let ratioDist: f32 = (uRadius - dist) / uRadius;
let angleMod: f32 = ratioDist * ratioDist * uAngle;
let s: f32 = sin(angleMod);
let c: f32 = cos(angleMod);
twistedCoord = vec2<f32>(twistedCoord.x * c - twistedCoord.y * s, twistedCoord.x * s + twistedCoord.y * c);
}
twistedCoord += uOffset;
return twistedCoord;
}
`,Ort=Object.defineProperty,yrt=(i,t,e)=>t in i?Ort(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,DP=(i,t,e)=>(yrt(i,typeof t!="symbol"?t+"":t,e),e);const vrt=class LP extends xt{constructor(t){t={...LP.DEFAULT_OPTIONS,...t};const e=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Art,entryPoint:"mainFragment"}}),s=Tt.from({vertex:Qt,fragment:Rrt,name:"twist-filter"});super({gpuProgram:e,glProgram:s,resources:{twistUniforms:{uTwist:{value:[t.radius??0,t.angle??0],type:"vec2<f32>"},uOffset:{value:t.offset,type:"vec2<f32>"}}},...t}),DP(this,"uniforms"),this.uniforms=this.resources.twistUniforms.uniforms}get radius(){return this.uniforms.uTwist[0]}set radius(t){this.uniforms.uTwist[0]=t}get angle(){return this.uniforms.uTwist[1]}set angle(t){this.uniforms.uTwist[1]=t}get offset(){return this.uniforms.uOffset}set offset(t){this.uniforms.uOffset=t}get offsetX(){return this.offset.x}set offsetX(t){this.offset.x=t}get offsetY(){return this.offset.y}set offsetY(t){this.offset.y=t}};DP(vrt,"DEFAULT_OPTIONS",{padding:20,radius:200,angle:4,offset:{x:0,y:0}});var Crt=`precision highp float;
in vec2 vTextureCoord;
out vec4 finalColor;
uniform sampler2D uTexture;
uniform float uStrength;
uniform vec2 uCenter;
uniform vec2 uRadii;
uniform vec4 uInputSize;
const float MAX_KERNEL_SIZE = \${MAX_KERNEL_SIZE};
// author: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/
highp float rand(vec2 co, float seed) {
const highp float a = 12.9898, b = 78.233, c = 43758.5453;
highp float dt = dot(co + seed, vec2(a, b)), sn = mod(dt, 3.14159);
return fract(sin(sn) * c + seed);
}
void main() {
float minGradient = uRadii[0] * 0.3;
float innerRadius = (uRadii[0] + minGradient * 0.5) / uInputSize.x;
float gradient = uRadii[1] * 0.3;
float radius = (uRadii[1] - gradient * 0.5) / uInputSize.x;
float countLimit = MAX_KERNEL_SIZE;
vec2 dir = vec2(uCenter.xy / uInputSize.xy - vTextureCoord);
float dist = length(vec2(dir.x, dir.y * uInputSize.y / uInputSize.x));
float strength = uStrength;
float delta = 0.0;
float gap;
if (dist < innerRadius) {
delta = innerRadius - dist;
gap = minGradient;
} else if (radius >= 0.0 && dist > radius) { // radius < 0 means it's infinity
delta = dist - radius;
gap = gradient;
}
if (delta > 0.0) {
float normalCount = gap / uInputSize.x;
delta = (normalCount - delta) / normalCount;
countLimit *= delta;
strength *= delta;
if (countLimit < 1.0)
{
gl_FragColor = texture(uTexture, vTextureCoord);
return;
}
}
// randomize the lookup values to hide the fixed number of samples
float offset = rand(vTextureCoord, 0.0);
float total = 0.0;
vec4 color = vec4(0.0);
dir *= strength;
for (float t = 0.0; t < MAX_KERNEL_SIZE; t++) {
float percent = (t + offset) / MAX_KERNEL_SIZE;
float weight = 4.0 * (percent - percent * percent);
vec2 p = vTextureCoord + dir * percent;
vec4 sample = texture(uTexture, p);
// switch to pre-multiplied alpha to correctly blur transparent images
// sample.rgb *= sample.a;
color += sample * weight;
total += weight;
if (t > countLimit){
break;
}
}
color /= total;
// switch back from pre-multiplied alpha
// color.rgb /= color.a + 0.00001;
gl_FragColor = color;
}
`,Mrt=`struct ZoomBlurUniforms {
uStrength:f32,
uCenter:vec2<f32>,
uRadii:vec2<f32>,
};
struct GlobalFilterUniforms {
uInputSize:vec4<f32>,
uInputPixel:vec4<f32>,
uInputClamp:vec4<f32>,
uOutputFrame:vec4<f32>,
uGlobalFrame:vec4<f32>,
uOutputTexture:vec4<f32>,
};
@group(0) @binding(0) var<uniform> gfu: GlobalFilterUniforms;
@group(0) @binding(1) var uTexture: texture_2d<f32>;
@group(0) @binding(2) var uSampler: sampler;
@group(1) @binding(0) var<uniform> zoomBlurUniforms : ZoomBlurUniforms;
@fragment
fn mainFragment(
@builtin(position) position: vec4<f32>,
@location(0) uv : vec2<f32>
) -> @location(0) vec4<f32> {
let uStrength = zoomBlurUniforms.uStrength;
let uCenter = zoomBlurUniforms.uCenter;
let uRadii = zoomBlurUniforms.uRadii;
let minGradient: f32 = uRadii[0] * 0.3;
let innerRadius: f32 = (uRadii[0] + minGradient * 0.5) / gfu.uInputSize.x;
let gradient: f32 = uRadii[1] * 0.3;
let radius: f32 = (uRadii[1] - gradient * 0.5) / gfu.uInputSize.x;
let MAX_KERNEL_SIZE: f32 = \${MAX_KERNEL_SIZE};
var countLimit: f32 = MAX_KERNEL_SIZE;
var dir: vec2<f32> = vec2<f32>(uCenter / gfu.uInputSize.xy - uv);
let dist: f32 = length(vec2<f32>(dir.x, dir.y * gfu.uInputSize.y / gfu.uInputSize.x));
var strength: f32 = uStrength;
var delta: f32 = 0.0;
var gap: f32;
if (dist < innerRadius) {
delta = innerRadius - dist;
gap = minGradient;
} else if (radius >= 0.0 && dist > radius) { // radius < 0 means it's infinity
delta = dist - radius;
gap = gradient;
}
var returnColorOnly: bool = false;
if (delta > 0.0) {
let normalCount: f32 = gap / gfu.uInputSize.x;
delta = (normalCount - delta) / normalCount;
countLimit *= delta;
strength *= delta;
if (countLimit < 1.0)
{
returnColorOnly = true;;
}
}
// randomize the lookup values to hide the fixed number of samples
let offset: f32 = rand(uv, 0.0);
var total: f32 = 0.0;
var color: vec4<f32> = vec4<f32>(0.);
dir *= strength;
for (var t = 0.0; t < MAX_KERNEL_SIZE; t += 1.0) {
let percent: f32 = (t + offset) / MAX_KERNEL_SIZE;
let weight: f32 = 4.0 * (percent - percent * percent);
let p: vec2<f32> = uv + dir * percent;
let sample: vec4<f32> = textureSample(uTexture, uSampler, p);
if (t < countLimit)
{
color += sample * weight;
total += weight;
}
}
color /= total;
return select(color, textureSample(uTexture, uSampler, uv), returnColorOnly);
}
fn modulo(x: f32, y: f32) -> f32
{
return x - y * floor(x/y);
}
// author: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/
fn rand(co: vec2<f32>, seed: f32) -> f32
{
let a: f32 = 12.9898;
let b: f32 = 78.233;
let c: f32 = 43758.5453;
let dt: f32 = dot(co + seed, vec2<f32>(a, b));
let sn: f32 = modulo(dt, 3.14159);
return fract(sin(sn) * c + seed);
}`,xrt=Object.defineProperty,Prt=(i,t,e)=>t in i?xrt(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,FP=(i,t,e)=>(Prt(i,typeof t!="symbol"?t+"":t,e),e);const brt=class wP extends xt{constructor(t){t={...wP.DEFAULT_OPTIONS,...t};const e=t.maxKernelSize??32,s=At.from({vertex:{source:Zt,entryPoint:"mainVertex"},fragment:{source:Mrt.replace("${MAX_KERNEL_SIZE}",e.toFixed(1)),entryPoint:"mainFragment"}}),r=Tt.from({vertex:Qt,fragment:Crt.replace("${MAX_KERNEL_SIZE}",e.toFixed(1)),name:"zoom-blur-filter"});super({gpuProgram:s,glProgram:r,resources:{zoomBlurUniforms:{uStrength:{value:t.strength,type:"f32"},uCenter:{value:t.center,type:"vec2<f32>"},uRadii:{value:new Float32Array(2),type:"vec2<f32>"}}}}),FP(this,"uniforms"),this.uniforms=this.resources.zoomBlurUniforms.uniforms,Object.assign(this,t)}get strength(){return this.uniforms.uStrength}set strength(t){this.uniforms.uStrength=t}get center(){return this.uniforms.uCenter}set center(t){Array.isArray(t)&&(t={x:t[0],y:t[1]}),this.uniforms.uCenter=t}get centerX(){return this.uniforms.uCenter.x}set centerX(t){this.uniforms.uCenter.x=t}get centerY(){return this.uniforms.uCenter.y}set centerY(t){this.uniforms.uCenter.y=t}get innerRadius(){return this.uniforms.uRadii[0]}set innerRadius(t){this.uniforms.uRadii[0]=t}get radius(){return this.uniforms.uRadii[1]}set radius(t){this.uniforms.uRadii[1]=t<0||t===1/0?-1:t}};FP(brt,"DEFAULT_OPTIONS",{strength:.1,center:{x:0,y:0},innerRadius:0,radius:-1,maxKernelSize:32});class GP{constructor(t){this._ink=t.ink;let e=t.foreground,s=t.background;e=e.replace("#",""),s=s.replace("#",""),this._foreGround=parseInt(e,16),this._backGround=parseInt(s,16),this._colorTransform=null,this._rgb=parseInt(e,16),this._r=this._rgb>>16&255,this._g=this._rgb>>8&255,this._b=this._rgb>>0&255,this._redMultiplier=this._r/255*1,this._greenMultiplier=this._g/255*1,this._blueMultiplier=this._b/255*1,this._alphaMultiplier=1,this._paletteIsGrayscale=!0,this._ink===37&&(this._alphaMultiplier=.5,this._paletteIsGrayscale=!1),this._colorTransform=new Jx({red:this._r/255,green:this._g/255,blue:this._b/255,alpha:this._alphaMultiplier}),this._colorMap=this.generatePaletteMapForGrayscale(this._backGround,this._foreGround)}get ink(){return this._ink}get colorTransform(){return this._colorTransform}get reds(){return this._colorMap.get("reds")}get greens(){return this._colorMap.get("greens")}get blues(){return this._colorMap.get("blues")}get alphas(){return this._colorMap.get("alphas")}get paletteIsGrayscale(){return this._paletteIsGrayscale}generatePaletteMapForGrayscale(t,e){const s=t>>24&255,r=t>>16&255,n=t>>8&255,a=t&255,o=e>>24&255,u=e>>16&255,l=e>>8&255,c=e&255,h=(o-s)/255,_=(u-r)/255,d=(l-n)/255,f=(c-a)/255,p=new Map,g=[];let m=s,O=r,y=n,C=a;for(let P=0;P<256;P++){m+=h,O+=_,y+=d,C+=f;const L=Math.max(0,Math.min(255,Math.round(m))),N=Math.max(0,Math.min(255,Math.round(O))),F=Math.max(0,Math.min(255,Math.round(y))),x=Math.max(0,Math.min(255,Math.round(C))),U=L<<24|N<<16|F<<8|x;g.push(U)}return p.set("alphas",g),p.set("reds",g),p.set("greens",g),p.set("blues",g),p}}class BP{constructor(t){this._offset=t.offset}get offset(){return this._offset}}class kP{constructor(t,e){this._animation=t,this._id=e.id,this._ink=e.ink,this._member=e.member,this._hasStaticY=!!e.staticY,this._hasDirections=!!e.directions,this._dx=[],this._dy=[],this._dz=[];const s=e.directionList;if(s&&s.length)for(const r of s){const n=r.id;n!==void 0&&(this._dx[n]=r.dx||0,this._dy[n]=r.dy||0,this._dz[n]=r.dz||0)}}getDirectionOffsetX(t){return t<this._dx.length?this._dx[t]:0}getDirectionOffsetY(t){return t<this._dy.length?this._dy[t]:0}getDirectionOffsetZ(t){return t<this._dz.length?this._dz[t]:0}get animation(){return this._animation}get id(){return this._id}get ink(){return this._ink}get member(){return this._member}get hasDirections(){return this._hasDirections}get hasStaticY(){return this._hasStaticY}}const yo=class yo{constructor(t,e){if(this._id=e.name,this._description=this._id,this._frames=[],this._spriteData=null,this._avatarData=null,this._directionData=null,this._removeData=null,this._addData=null,this._overriddenActions=null,this._overrideFrames=null,this._resetOnToggle=e.resetOnToggle||!1,e.sprites&&e.sprites.length){this._spriteData=[];for(const s of e.sprites)this._spriteData.push(new kP(this,s))}if(e.avatars&&e.avatars.length&&(this._avatarData=new GP(e.avatars[0])),e.directions&&e.directions.length&&(this._directionData=new BP(e.directions[0])),e.removes&&e.removes.length){this._removeData=[];for(const s of e.removes)this._removeData.push(s.id)}if(e.adds&&e.adds.length){this._addData=[];for(const s of e.adds)this._addData.push(new qx(s))}if(e.overrides&&e.overrides.length){this._overrideFrames=new Map,this._overriddenActions=new Map;for(const s of e.overrides){const r=s.name,n=s.override;this._overriddenActions.set(n,r);const a=[];this.parseFrames(a,s.frames,t),this._overrideFrames.set(r,a)}}this.parseFrames(this._frames,e.frames,t)}parseFrames(t,e,s){if(!(!e||!e.length))for(const r of e){let n=1;r.repeats&&r.repeats>1&&(n=r.repeats);let a=0;for(;a<n;){const o=[];if(r.bodyparts&&r.bodyparts.length)for(const u of r.bodyparts){const l=s.getActionDefinition(u.action),c=new Js(u,Js.BODYPART,l);o.push(c)}if(r.fxs&&r.fxs.length)for(const u of r.fxs){const l=s.getActionDefinition(u.action),c=new Js(u,Js.FX,l);o.push(c)}t.push(o),a++}}}frameCount(t=null){if(!t)return this._frames.length;if(this._overrideFrames){const e=this._overrideFrames.get(t);if(e)return e.length}return 0}hasOverriddenActions(){return this._overriddenActions?this._overriddenActions.size>0:!1}overriddenActionNames(){if(!this._overriddenActions)return null;const t=[];for(const e of this._overriddenActions.keys())t.push(e);return t}overridingAction(t){return this._overriddenActions?this._overriddenActions.get(t):null}getFrame(t,e=null){t<0&&(t=0);let s=[];if(!e)this._frames.length>0&&(s=this._frames[t%this._frames.length]);else{const r=this._overrideFrames.get(e);r&&r.length>0&&(s=r[t%r.length])}return s}getAnimatedBodyPartIds(t,e=null){const s=[];for(const r of this.getFrame(t,e))if(r.type===Js.BODYPART)s.push(r.id);else if(r.type===Js.FX&&this._addData&&this._addData.length)for(const n of this._addData)n.id===r.id&&s.push(n.align);return s}getLayerData(t,e,s=null){for(const r of this.getFrame(t,s)){if(r.id===e)return r;if(r.type===Js.FX&&this._addData&&this._addData.length){for(const n of this._addData)if(n.align===e&&n.id===r.id)return r}}return null}hasAvatarData(){return this._avatarData!==null}hasDirectionData(){return this._directionData!==null}hasAddData(){return this._addData!==null}getAddData(t){if(this._addData){for(const e of this._addData)if(e.id===t)return e}return null}get id(){return this._id}get spriteData(){return this._spriteData||yo.EMPTY_ARRAY}get avatarData(){return this._avatarData}get directionData(){return this._directionData}get removeData(){return this._removeData||yo.EMPTY_ARRAY}get addData(){return this._addData||yo.EMPTY_ARRAY}toString(){return this._description}get resetOnToggle(){return this._resetOnToggle}};yo.EMPTY_ARRAY=[];let Q_=yo;class zP{constructor(){this._animations=new Map}registerAnimation(t,e){if(!e)return!1;const s=e[Object.keys(e)[0]],r=new Q_(t,s);return this._animations.set(s.name,r),!0}getAnimation(t){const e=this._animations.get(t);return e||null}getLayerData(t,e,s){const r=this.getAnimation(t);return r?r.getLayerData(e,s):null}get animations(){return this._animations}}class VP{constructor(t){this._partList=t,this._images=new Map}dispose(){for(const t of this._images.values())t&&t.dispose();this._images=null}getPartList(){return this._partList}getImageContainer(t){const e=this._images.get(this.getCacheKey(t));return e||null}updateImageContainer(t,e){const s=this.getCacheKey(e),r=this._images.get(s);r&&r.dispose(),this._images.set(s,t)}getCacheKey(t){let e="";for(const s of this._partList)e+=s.getCacheableKey(t)+"/";return e}debugInfo(t){}}class pI{constructor(t,e,s,r,n,a=null){this._texture=t,this._container=a,this._rect=e,this._regPoint=s,this._flipH=r,this._colorTransform=n,r&&(this._regPoint.x=-this._regPoint.x+e.width)}dispose(){this._texture=null,this._regPoint=null,this._colorTransform=null}get texture(){return this._texture}get container(){return this._container}get rect(){return this._rect}get regPoint(){return this._regPoint}get flipH(){return this._flipH}get colorTransform(){return this._colorTransform}get offsetRect(){return new Kt(-this._regPoint.x,-this._regPoint.y,this._rect.width,this._rect.height)}}const Q0=class Q0{constructor(t,e,s,r){this._structure=t,this._avatar=e,this._assets=s,this._scale=r,this._cache=new Map,this._canvas=null,this._disposed=!1,this._unionImages=[],this._matrix=new ot}dispose(){if(!this._disposed){if(this._structure=null,this._avatar=null,this._assets=null,this._canvas=null,this._disposed=!0,this._cache){for(const t of this._cache.values())t&&t.dispose();this._cache=null}if(this._unionImages){for(const t of this._unionImages)t&&t.dispose();this._unionImages=[]}}}disposeInactiveActions(t=6e4){const e=Nt();if(this._cache)for(const s of this._cache.values())s&&s.disposeActions(t,e)}resetBodyPartCache(t){if(this._cache)for(const e of this._cache.values())e&&e.setAction(t,0)}setDirection(t,e){const s=this._structure.getBodyPartsUnordered(t);if(s)for(const r of s){const n=this.getBodyPartCache(r);n&&n.setDirection(e)}}setAction(t,e){const s=this._structure.getActiveBodyPartIds(t,this._avatar);for(const r of s){const n=this.getBodyPartCache(r);n&&n.setAction(t,e)}}setGeometryType(t){if(this._geometryType!==t){if(this._geometryType===Rr.SITTING&&t===Rr.VERTICAL||this._geometryType===Rr.VERTICAL&&t===Rr.SITTING||this._geometryType===Rr.SNOWWARS_HORIZONTAL&&(t=Rr.SNOWWARS_HORIZONTAL)){this._geometryType=t,this._canvas=null;return}this.disposeInactiveActions(0),this._geometryType=t,this._canvas=null}}getImageContainer(t,e,s=!1){const r=this.getBodyPartCache(t)||new aI;this._cache.set(t,r);let n=r.getDirection(),a=r.getAction(),o=e;a.definition.startFromFrameZero&&(o-=a.startFrame);let u=a,l=[],c=new Map;const h=new st;if(a.definition.isAnimation){let g=n;const m=this._structure.getAnimation(a.definition.state+"."+a.actionParameter),O=e-a.startFrame;if(m){const y=m.getLayerData(O,t,a.overridingAction);y&&(g=(n+y.dd+8)%8,h.x=this._scale===ti.LARGE?y.dx:y.dx/2,h.y=this._scale===ti.LARGE?y.dy:y.dy/2,o=y.animationFrame,y.action&&(a=y.action),y.type===Js.BODYPART?(y.action&&(u=y.action),n=g):y.type===Js.FX&&(n=g),c=y.items),l=m.removeData}}let _=r.getActionCache(u);(!_||s)&&(_=new Kx,r.updateActionCache(u,_));let d=_.getDirectionCache(n);if(!d||s){const g=this._structure.getParts(t,this._avatar.getFigure(),u,this._geometryType,n,l,this._avatar,c);d=new VP(g),_.updateDirectionCache(n,d)}let f=d.getImageContainer(o);if(!f||s){const g=d.getPartList();if(f=this.renderBodyPart(n,g,o,a),f&&!s)f.isCacheable&&d.updateImageContainer(f,o);else return null}const p=this._structure.getFrameBodyPartOffset(u,n,o,t);return h.x+=p.x,h.y+=p.y,f.offset=h,f}getBodyPartCache(t){let e=this._cache.get(t);return e||(e=new aI,this._cache.set(t,e)),e}renderBodyPart(t,e,s,r){if(!e||!e.length||!this._canvas&&(this._canvas=this._structure.getCanvas(this._scale,this._geometryType),!this._canvas))return null;const n=Pr.DIRECTION_IS_FLIPPED[t]||!1;let a=r.definition.assetPartDefinition,o=!0,u=e.length-1;for(;u>=0;){const d=e[u];let f=16777215;if(!(t==7&&(d.partType==="fc"||d.partType==="ey"))&&!(d.partType==="ri"&&!d.partId)){const p=d.partId,g=d.getFrameDefinition(s);let m=d.partType,O=0;g?(O=g.number,g.assetPartDefinition&&g.assetPartDefinition!==""&&(a=g.assetPartDefinition)):O=d.getFrameIndex(s);let y=t,C=!1;n&&(a==="wav"&&(m===ns.LEFT_HAND||m===ns.LEFT_SLEEVE||m===ns.LEFT_COAT_SLEEVE)||a==="drk"&&(m===ns.RIGHT_HAND||m===ns.RIGHT_SLEEVE||m===ns.RIGHT_COAT_SLEEVE)||a==="blw"&&m===ns.RIGHT_HAND||a==="sig"&&m===ns.LEFT_HAND||a==="respect"&&m===ns.LEFT_HAND||m===ns.RIGHT_HAND_ITEM||m===ns.LEFT_HAND_ITEM||m===ns.CHEST_PRINT?C=!0:(t===4?y=2:t===5?y=1:t===6&&(y=0),d.flippedPartType!==m&&(m=d.flippedPartType)));let P=this._scale+"_"+a+"_"+m+"_"+p+"_"+y+"_"+O,L=this._assets.getAsset(P);if(L||(P=this._scale+"_std_"+m+"_"+p+"_"+y+"_0",L=this._assets.getAsset(P)),L){const N=L.texture;if(!N||!N.source)o=!1;else{d.isColorable&&d.color&&(f=d.color.rgb);const F=new st(-L.x,-L.y);C&&(F.x=F.x+(this._scale===ti.LARGE?65:31)),this._unionImages.push(new pI(N,L.rectangle,F,C,f))}}}u--}if(!this._unionImages.length)return null;const l=this.createUnionImage(this._unionImages,n),c=this._scale===ti.LARGE?this._canvas.height-16:this._canvas.height-8,h=new st(-l.regPoint.x,c-l.regPoint.y);n&&a!=="lay"&&(h.x=h.x+(this._scale===ti.LARGE?67:31));let _=this._unionImages.length-1;for(;_>=0;){const d=this._unionImages.pop();d&&d.dispose(),_--}return new Xx(l.container,h,o)}convertColorToHex(t){let e=(t*255).toString(16);return e.length<2&&(e="0"+e),e}createUnionImage(t,e){const s=new Kt;for(const o of t)o&&s.enlarge(o.offsetRect);const r=new st(-s.x,-s.y),n=new $t,a=new wt(W.EMPTY);a.width=s.width,a.height=s.height,n.addChild(a);for(const o of t){if(!o)continue;const u=r.clone();u.x-=o.regPoint.x,u.y-=o.regPoint.y,e&&(u.x=n.width-(u.x+o.rect.width)),e!=o.flipH?(this._matrix.a=-1,this._matrix.tx=o.rect.x+o.rect.width+u.x,this._matrix.ty=u.y-o.rect.y):(this._matrix.a=1,this._matrix.tx=u.x-o.rect.x,this._matrix.ty=u.y-o.rect.y);const l=new wt(o.texture);l.tint=o.colorTransform,l.setFromMatrix(this._matrix),n.addChild(l)}return new pI(null,n.getLocalBounds().rectangle,r,e,null,n)}};Q0.DEFAULT_MAX_CACHE_STORAGE_TIME_MS=6e4;let Z_=Q0;const an=class an{constructor(t,e,s,r,n,a=null){this._structure=t,this._assets=e,this._figure=s,this._scale=r,this._effectManager=n,this._effectListener=a,this._disposed=!1,this._canvasOffsets=[],this._actions=[],this._activeTexture=null,this._defaultAction=null,this._frameCounter=0,this._directionOffset=0,this._changes=!0,this._isAnimating=!1,this._animationHasResetOnToggle=!1,this._actionsSorted=!1,this._lastActionsString=null,this._currentActionsString=null,this._effectIdInUse=-1,this._animationFrameCount=-1,this._cachedBodyParts=[],this._cachedBodyPartsDirection=-1,this._cachedBodyPartsGeometryType=null,this._cachedBodyPartsAvatarSet=null,this._figure||(this._figure=new Zu("hr-893-45.hd-180-2.ch-210-66.lg-270-82.sh-300-91.wa-2007-.ri-1-")),this._scale||(this._scale=ti.LARGE),this._cache=new Z_(this._structure,this,this._assets,this._scale),this.setDirection(an.DEFAULT_AVATAR_SET,an.DEFAULT_DIRECTION),this._defaultAction=new $_(et.POSTURE_STAND),this._defaultAction.definition=this._structure.getActionDefinition(an.DEFAULT_ACTION),this.resetActions(),this._animationFrameCount=0}dispose(){this._disposed||(this._structure=null,this._assets=null,this._mainAction=null,this._figure=null,this._avatarSpriteData=null,this._actions=null,this._activeTexture&&(wr().putTexture(this._activeTexture),this._activeTexture=null),this._cache&&(this._cache.dispose(),this._cache=null),this._canvasOffsets=null,this._disposed=!0)}get disposed(){return this._disposed}getFigure(){return this._figure}getScale(){return this._scale}getPartColor(t){return this._structure.getPartColor(this._figure,t)}setDirection(t,e){e+=this._directionOffset,e<Pr.MIN_DIRECTION?e=Pr.MAX_DIRECTION+(e+1):e>Pr.MAX_DIRECTION&&(e-=Pr.MAX_DIRECTION+1),this._structure.isMainAvatarSet(t)&&(this._mainDirection=e),(t===as.HEAD||t===as.FULL)&&(t===as.HEAD&&this.isHeadTurnPreventedByAction()&&(e=this._mainDirection),this._headDirection=e),this._cache.setDirection(t,e),this._changes=!0}setDirectionAngle(t,e){this.setDirection(t,Math.floor(e/45))}getSprites(){return this._sprites}getCanvasOffsets(){return this._canvasOffsets}getLayerData(t){return this._structure.getBodyPartData(t.animation.id,this._frameCounter,t.id)}updateAnimationByFrames(t=1){this._frameCounter+=t,this._changes=!0}resetAnimationFrameCounter(){this._frameCounter=0,this._changes=!0}getBodyParts(t,e,s){return(s!==this._cachedBodyPartsDirection||e!==this._cachedBodyPartsGeometryType||t!==this._cachedBodyPartsAvatarSet)&&(this._cachedBodyPartsDirection=s,this._cachedBodyPartsGeometryType=e,this._cachedBodyPartsAvatarSet=t,this._cachedBodyParts=this._structure.getBodyParts(t,e,s)),this._cachedBodyParts}buildAvatarContainer(t,e){const s=this.getBodyParts(e,this._mainAction.definition.geometryType,this._mainDirection),r=new $t;let n=s.length-1;for(;n>=0;){const a=s[n],o=this._cache.getImageContainer(a,this._frameCounter);if(o){const u=o.image;if(u){const l=new $t;l.addChild(u);const c=o.regPoint.clone();c.x+=t.offset.x,c.y+=t.offset.y,c.x+=t.regPoint.x,c.y+=t.regPoint.y,l.x=Math.floor(c.x),l.y=Math.floor(c.y),r.addChild(l)}}n--}return r.filters=[],this._avatarSpriteData&&(this._avatarSpriteData.colorTransform&&(r.filters=[...Array.from(r.filters),this._avatarSpriteData.colorTransform]),this._avatarSpriteData.paletteIsGrayscale&&(r.filters=[...Array.from(r.filters),yx(),new I_({palette:this._avatarSpriteData.reds,channel:0})],console.log(r.filters))),r}processAsTexture(t,e=!1){if(!this._changes)return this._activeTexture;if(!this._mainAction)return null;this._actionsSorted||this.endActionAppends();const s=this._structure.getCanvas(this._scale,this._mainAction.definition.geometryType);if(!s||(this._activeTexture&&(this._activeTexture.width!==s.width||this._activeTexture.height!==s.height)&&(wr().putTexture(this._activeTexture),this._activeTexture=null),this._activeTexture||(this._activeTexture=wr().getTexture(s.width,s.height)),!this._activeTexture))return null;const r=this.buildAvatarContainer(s,t);return Mn().render({target:this._activeTexture,container:r,clear:!0}),r.destroy(),this._activeTexture.source.hitMap=null,this._changes=!1,this._activeTexture}processAsImageUrl(t,e=1){const s=this.processAsTexture(t,!1);return Mn().texture.generateCanvas(s).toDataURL("image/png")}processAsContainer(t){if(!this._mainAction)return null;this._actionsSorted||this.endActionAppends();const e=this._structure.getCanvas(this._scale,this._mainAction.definition.geometryType);return e?this.buildAvatarContainer(e,t):null}applyPalette(t,e=[],s=[],r=[]){const n=ue.generateCanvas(t),a=n.getContext("2d"),o=a.getImageData(0,0,n.width,n.height),u=o.data;for(let c=0;c<u.length;c+=4){if(e.length==256){let h=e[u[c]];h===void 0&&(h=0),u[c]=h>>16&255,u[c+1]=h>>8&255,u[c+2]=h&255}if(s.length==256){let h=s[u[c+1]];h===void 0&&(h=0),u[c]=h>>16&255,u[c+1]=h>>8&255,u[c+2]=h&255}if(r.length==256){let h=s[u[c+2]];h===void 0&&(h=0),u[c]=h>>16&255,u[c+1]=h>>8&255,u[c+2]=h&255}}a.putImageData(o,0,0);const l=new wt(W.from(n));return ue.writeToTexture(l,t,!0),t}getDirection(){return this._mainDirection}initActionAppends(){this._actions=[],this._actionsSorted=!1,this._currentActionsString=""}endActionAppends(){if(this.sortActions()){for(const t of this._sortedActions)t.actionType===et.EFFECT&&(this._effectManager.isAvatarEffectReady(parseInt(t.actionParameter))||this._effectManager.downloadAvatarEffect(parseInt(t.actionParameter),this));this.resetActions(),this.setActionsToParts()}}appendAction(t,...e){let s="";switch(this._actionsSorted=!1,e&&e.length>0&&(s=e[0]),s!=null&&(s=s.toString()),t){case et.POSTURE:switch(s){case et.POSTURE_LAY:case et.POSTURE_WALK:case et.POSTURE_STAND:case et.POSTURE_SWIM:case et.POSTURE_FLOAT:case et.POSTURE_SIT:case et.SNOWWAR_RUN:case et.SNOWWAR_DIE_FRONT:case et.SNOWWAR_DIE_BACK:case et.SNOWWAR_PICK:case et.SNOWWAR_THROW:(s===et.POSTURE_LAY||s===et.POSTURE_LAY||s===et.POSTURE_LAY)&&s===et.POSTURE_LAY&&(this._mainDirection==0?this.setDirection(as.FULL,4):this.setDirection(as.FULL,2)),this.addActionData(s);break}break;case et.GESTURE:switch(s){case et.GESTURE_AGGRAVATED:case et.GESTURE_SAD:case et.GESTURE_SMILE:case et.GESTURE_SURPRISED:this.addActionData(s);break}break;case et.EFFECT:case et.DANCE:case et.TALK:case et.EXPRESSION_WAVE:case et.SLEEP:case et.SIGN:case et.EXPRESSION_RESPECT:case et.EXPRESSION_BLOW_A_KISS:case et.EXPRESSION_LAUGH:case et.EXPRESSION_CRY:case et.EXPRESSION_IDLE:case et.EXPRESSION_SNOWBOARD_OLLIE:case et.EXPRESSION_SNOWBORD_360:case et.EXPRESSION_RIDE_JUMP:et.EFFECT,this.addActionData(t,s);break;case et.CARRY_OBJECT:case et.USE_OBJECT:{const r=this._structure.getActionDefinitionWithState(t);r&&(s=r.getParameterValue(s)),this.addActionData(t,s);break}}return!0}addActionData(t,e=""){this._actions||(this._actions=[]),this._actions.some(r=>r.actionType===t&&r.actionParameter===e)||this._actions.push(new $_(t,e,this._frameCounter))}isAnimating(){return this._isAnimating||this._animationFrameCount>1}resetActions(){return this._animationHasResetOnToggle=!1,this._isAnimating=!1,this._sprites=[],this._avatarSpriteData=null,this._directionOffset=0,this._structure.removeDynamicItems(this),this._mainAction=this._defaultAction,this._mainAction.definition=this._defaultAction.definition,this.resetBodyPartCache(this._defaultAction),!0}isHeadTurnPreventedByAction(){if(!this._sortedActions)return!1;for(const t of this._sortedActions){const e=this._structure.getActionDefinitionWithState(t.actionType);if(e!=null&&e.getPreventHeadTurn(t.actionParameter))return!0}return!1}sortActions(){let t=!1,e=!1,s=!1;if(this._currentActionsString="",this._sortedActions=this._structure.sortActions(this._actions),this._animationFrameCount=this._structure.maxFrames(this._sortedActions),!this._sortedActions)this._canvasOffsets=[0,0,0],this._lastActionsString!==""&&(t=!0,this._lastActionsString="");else{this._canvasOffsets=this._structure.getCanvasOffsets(this._sortedActions,this._scale,this._mainDirection);for(const r of this._sortedActions)if(this._currentActionsString+=r.actionType+r.actionParameter,r.actionType===et.EFFECT){const n=parseInt(r.actionParameter);this._effectIdInUse!==n&&(s=!0),this._effectIdInUse=n,e=!0}e||(this._effectIdInUse>-1&&(s=!0),this._effectIdInUse=-1),s&&this._cache.disposeInactiveActions(),this._lastActionsString!=this._currentActionsString&&(t=!0,this._lastActionsString=this._currentActionsString)}return this._actionsSorted=!0,t}setActionsToParts(){if(!this._sortedActions)return;const t=Nt(),e=[];for(const s of this._sortedActions)e.push(s.actionType);for(const s of this._sortedActions)if(s&&s.definition&&s.definition.isAnimation){const r=this._structure.getAnimation(`${s.definition.state}.${s.actionParameter}`);if(r&&r.hasOverriddenActions()){const n=r.overriddenActionNames();if(n)for(const a of n)e.includes(a)&&(s.overridingAction=r.overridingAction(a))}r&&r.resetOnToggle&&(this._animationHasResetOnToggle=!0)}for(const s of this._sortedActions)if(s&&s.definition&&(s.definition.isAnimation&&s.actionParameter===""&&(s.actionParameter="1"),this.setActionToParts(s,t),s.definition.isAnimation)){this._isAnimating=s.definition.isAnimated(s.actionParameter);const r=this._structure.getAnimation(`${s.definition.state}.${s.actionParameter}`);r&&(this._sprites=[...this._sprites,...r.spriteData],r.hasDirectionData()&&(this._directionOffset=r.directionData.offset),r.hasAvatarData()&&(this._avatarSpriteData=r.avatarData))}}setActionToParts(t,e){!t||!t.definition||t.definition.assetPartDefinition===""||(t.definition.isMain&&(this._mainAction=t,this._cache.setGeometryType(t.definition.geometryType)),this._cache.setAction(t,e),this._changes=!0)}resetBodyPartCache(t){!t||t.definition.assetPartDefinition===""||(t.definition.isMain&&(this._mainAction=t,this._cache.setGeometryType(t.definition.geometryType)),this._cache.resetBodyPartCache(t),this._changes=!0)}isPlaceholder(){return!1}get animationHasResetOnToggle(){return this._animationHasResetOnToggle}resetEffect(t){t===this._effectIdInUse&&(this.resetActions(),this.setActionsToParts(),this._animationHasResetOnToggle=!0,this._changes=!0,this._effectListener&&this._effectListener.resetEffect(t))}};an.DEFAULT_ACTION="Default",an.DEFAULT_DIRECTION=2,an.DEFAULT_AVATAR_SET=as.FULL;let Ih=an;class Ju{constructor(t){this._number=t.number,this._assetPartDefinition=t.assetPartDefinition||null}get number(){return this._number}get assetPartDefinition(){return this._assetPartDefinition}}class HP{constructor(t){if(this._frames=[],t.frames&&t.frames.length>0)for(const e of t.frames){if(!e)continue;this._frames.push(new Ju(e));let s=e.repeats||0;if(s>1)for(;--s>0;)this._frames.push(this._frames[this._frames.length-1])}}get frames(){return this._frames}}const vo=class vo{constructor(t){if(this._id=t.id,this._actionParts=new Map,this._bodyPartOffsets=new Map,this._frameCount=0,this._frameIndexes=[],t.parts&&t.parts.length>0)for(const e of t.parts){if(!e)continue;const s=new HP(e);this._actionParts.set(e.setType,s),this._frameCount=Math.max(this._frameCount,s.frames.length)}if(t.offsets&&t.offsets.frames&&t.offsets.frames.length>0)for(const e of t.offsets.frames){if(!e)continue;const s=e.id;this._frameCount=Math.max(this._frameCount,s);const r=new Map;if(this._bodyPartOffsets.set(s,r),e.directions&&e.directions.length>0)for(const n of e.directions){if(!n)continue;const a=n.id,o=new Map;if(r.set(a,o),n.bodyParts&&n.bodyParts.length>0)for(const u of n.bodyParts){if(!u)continue;const l=u.id;let c=0,h=0;u.dx!==void 0&&(c=u.dx),u.dy!==void 0&&(h=u.dy),o.set(l,new st(c,h))}}if(this._frameIndexes.push(s),e.repeats!==void 0){let n=e.repeats||0;if(n>1)for(;--n>0;)this._frameIndexes.push(s)}}}getPart(t){if(!t)return null;const e=this._actionParts.get(t);return e||null}getFrameBodyPartOffset(t,e,s){const r=e%this._frameIndexes.length,n=this._frameIndexes[r],a=this._bodyPartOffsets.get(n);if(!a)return vo.DEFAULT_OFFSET;const o=a.get(t);if(!o)return vo.DEFAULT_OFFSET;const u=o.get(s);return u||vo.DEFAULT_OFFSET}get id(){return this._id}get parts(){return this._actionParts}get frameCount(){return this._frameCount}};vo.DEFAULT_OFFSET=new st(0,0);let au=vo;class YP{constructor(){this._actions=new Map}parse(t){if(t&&t.length>0)for(const e of t){if(!e)continue;const s=new au(e);this._actions.set(s.id,s)}return!0}appendJSON(t){for(const e of t.action)this._actions.set(e.id,new au(e));return!0}getAction(t){const e=this._actions.get(t.id);return e||null}getFrameCount(t){const e=this.getAction(t);return e?e.frameCount:0}}class WP{constructor(t,e){this._id=t.id,this._width=t.width,this._height=t.height,this._offset=new st(t.dx,t.dy),e==ti.LARGE?this._regPoint=new st((this._width-64)/2,0):this._regPoint=new st((this._width-32)/2,0)}get width(){return this._width}get height(){return this._height}get offset(){return this._offset}get id(){return this._id}get regPoint(){return this._regPoint}}class jP{constructor(t){if(!t)throw new Error("invalid_data");this._id=t.id,this._type=t.type,this._index=t.index,this._colorLayerIndex=t.colorindex,this._paletteMapId=-1,this._breed=-1}get id(){return this._id}get type(){return this._type}get breed(){return this._breed}get index(){return this._index}get colorLayerIndex(){return this._colorLayerIndex}get paletteMap(){return this._paletteMapId}}class KP{constructor(t,e){if(!t||!e)throw new Error("invalid_data");this._id=e.id,this._type=t,this._gender=e.gender,this._clubLevel=e.club,this._isColorable=e.colorable,this._isSelectable=e.selectable,this._parts=[],this._hiddenLayers=[],this._isPreSelectable=e.preselectable,this._isSellable=e.sellable;for(const s of e.parts){const r=new jP(s),n=this.getPartIndex(r);n!==-1?this._parts.splice(n,0,r):this._parts.push(r)}if(e.hiddenLayers)for(const s of e.hiddenLayers)this._hiddenLayers.push(s.partType)}dispose(){this._parts=null,this._hiddenLayers=null}getPartIndex(t){const e=this._parts.length;if(!e)return-1;for(let s=0;s<e;s++){const r=this._parts[s];if(r&&!(r.type!==t.type||r.index>t.index))return s}return-1}getPart(t,e){for(const s of this._parts)if(!(s.type!==t||s.id!==e))return s;return null}get id(){return this._id}get type(){return this._type}get gender(){return this._gender}get clubLevel(){return this._clubLevel}get isColorable(){return this._isColorable}get isSelectable(){return this._isSelectable}get parts(){return this._parts}get hiddenLayers(){return this._hiddenLayers}get isPreSelectable(){return this._isPreSelectable}get isSellable(){return this._isSellable}}class XP{constructor(t){if(!t)throw new Error("invalid_data");this._id=t.id,this._index=t.index,this._clubLevel=t.club||0,this._isSelectable=t.selectable,this._rgb=parseInt("0x"+t.hexCode,16)}get id(){return this._id}get index(){return this._index}get clubLevel(){return this._clubLevel}get isSelectable(){return this._isSelectable}get rgb(){return this._rgb}}class mI{constructor(t){if(!t)throw new Error("invalid_data");this._id=t.id,this._colors=new xe,this.append(t)}append(t){for(const e of t.colors){const s=new XP(e);this._colors.add(e.id.toString(),s)}}getColor(t){return t===void 0||t<0?null:this._colors.getValue(t.toString())||null}get id(){return this._id}get colors(){return this._colors}}class Hc{constructor(t){if(!t)throw new Error("invalid_data");this._type=t.type,this._paletteId=t.paletteId,this._isMandatory={},this._isMandatory.F=[t.mandatory_f_0,t.mandatory_f_1],this._isMandatory.M=[t.mandatory_m_0,t.mandatory_m_1],this._partSets=new xe,this.append(t)}dispose(){for(const t of this._partSets.getValues())t.dispose();this._partSets=null}cleanUp(t){for(const e of t.sets){const s=e.id.toString(),r=this._partSets.getValue(s);r&&(r.dispose(),this._partSets.remove(s))}}append(t){if(!(!t||!t.sets))for(const e of t.sets)this._partSets.add(e.id.toString(),new KP(this._type,e))}getDefaultPartSet(t){for(const e of this._partSets.getValues())if(e&&e.clubLevel===0&&(e.gender===t||e.gender==="U"))return e;return null}getPartSet(t){return this._partSets.getValue(t.toString())}get type(){return this._type}get paletteID(){return this._paletteId}isMandatory(t,e){return this._isMandatory[t.toUpperCase()][Math.min(e,1)]}optionalFromClubLevel(t){return this._isMandatory[t.toUpperCase()].indexOf(!1)}get partSets(){return this._partSets}}class qP{constructor(){this._palettes=new Map,this._setTypes=new Map}dispose(){}parse(t){if(!t)return!1;for(const e of t.palettes){const s=new mI(e);s&&this._palettes.set(s.id.toString(),s)}for(const e of t.setTypes){const s=new Hc(e);s&&this._setTypes.set(s.type,s)}return!0}injectJSON(t){for(const e of t.setTypes){const s=this._setTypes.get(e.type);s?s.cleanUp(e):this._setTypes.set(e.type,new Hc(e))}this.appendJSON(t)}appendJSON(t){if(!t)return!1;for(const e of t.palettes){const s=e.id.toString(),r=this._palettes.get(s);r?r.append(e):this._palettes.set(s,new mI(e))}for(const e of t.setTypes){const s=e.type,r=this._setTypes.get(s);r?r.append(e):this._setTypes.set(s,new Hc(e))}return!1}getMandatorySetTypeIds(t,e){const s=[];for(const r of this._setTypes.values())!r||!r.isMandatory(t,e)||s.push(r.type);return s}getDefaultPartSet(t,e){const s=this._setTypes.get(t);return s?s.getDefaultPartSet(e):null}getSetType(t){return this._setTypes.get(t)||null}getPalette(t){return this._palettes.get(t.toString())||null}getFigurePartSet(t){for(const e of this._setTypes.values()){const s=e.getPartSet(t);if(s)return s}return null}}class EI{constructor(t){if(this._id=t.id,this._parts=[],t.activeParts&&t.activeParts.length>0)for(const e of t.activeParts)e&&this._parts.push(e.setType)}get parts(){return this._parts}}class Yc{constructor(t){if(!t)throw new Error("invalid_data");this._setType=t.setType,this._flippedSetType=t.flippedSetType||null,this._removeSetType=t.removeSetType||null,this._appendToFigure=!1,this._staticId=-1}hasStaticId(){return this._staticId>=0}get staticId(){return this._staticId}set staticId(t){this._staticId=t}get setType(){return this._setType}get flippedSetType(){return this._flippedSetType}set flippedSetType(t){this._flippedSetType=t}get removeSetType(){return this._removeSetType}get appendToFigure(){return this._appendToFigure}set appendToFigure(t){this._appendToFigure=t}}class $P{constructor(){this._parts=new Map,this._activePartSets=new Map}parse(t){if(t.partSet&&t.partSet.length>0)for(const e of t.partSet)e&&this._parts.set(e.setType,new Yc(e));if(t.activePartSets&&t.activePartSets.length>0)for(const e of t.activePartSets)e&&this._activePartSets.set(e.id,new EI(e));return!0}appendJSON(t){if(t.partSet&&t.partSet.length>0)for(const e of t.partSet)e&&this._parts.set(e.setType,new Yc(e));if(t.activePartSets&&t.activePartSets.length>0)for(const e of t.activePartSets)e&&this._activePartSets.set(e.id,new EI(e));return!1}getActiveParts(t){const e=this._activePartSets.get(t.activePartSet);return e?e.parts:[]}getPartDefinition(t){const e=this._parts.get(t);return e||null}addPartDefinition(t){const e=t.setType;let s=this._parts.get(e);return s||(s=new Yc(t),this._parts.set(e,s)),s}getActivePartSet(t){const e=this._activePartSets.get(t.activePartSet);return e||null}get parts(){return this._parts}get activePartSets(){return this._activePartSets}}class Wc{constructor(t,e,s,r,n,a,o,u,l="",c=!1,h=1){this._bodyPartId=t,this._partType=e,this._partId=s,this._color=r,this._frames=n,this._action=a,this._isColorable=o,this._paletteMapId=u,this._flippedPartType=l,this._isBlendable=c,this._partType==="ey"&&(this._isColorable=!1)}getFrameIndex(t){if(!this._frames||!this._frames.length)return 0;const e=t%this._frames.length;return this._frames[e]instanceof Ju?this._frames[e].number:e}getFrameDefinition(t){const e=t%this._frames.length;return this._frames&&this._frames.length>e&&this._frames[e]instanceof Ju?this._frames[e]:null}getCacheableKey(t){const e=t%this._frames.length;if(this._frames&&this._frames.length>e&&this._frames[e]instanceof Ju){const s=this._frames[e];return this.partId+":"+s.assetPartDefinition+":"+s.number}return this.partId+":"+e}get bodyPartId(){return this._bodyPartId}get partType(){return this._partType}get partId(){return this._partId}get color(){return this._color}get action(){return this._action}get isColorable(){return this._isColorable}set isColorable(t){this._isColorable=t}get paletteMapId(){return this._paletteMapId}get flippedPartType(){return this._flippedPartType}get isBlendable(){return this._isBlendable}toString(){return[this._bodyPartId,this._partType,this._partId].join(":")}}class Dm{constructor(t){if(this._id=t.id,this._isMain=t.main||!1,this._avatarSets=new Map,this._bodyParts=[],this._allBodyParts=[],t.avatarSets&&t.avatarSets.length>0)for(const s of t.avatarSets){if(!s)continue;const r=new Dm(s);this._avatarSets.set(r.id,r)}if(t.bodyParts&&t.bodyParts.length>0)for(const s of t.bodyParts)s&&this._bodyParts.push(s.id);let e=this._bodyParts.concat();for(const s of this._avatarSets.values())s&&(e=e.concat(s.getBodyParts()));this._allBodyParts=e}findAvatarSet(t){if(t===this._id)return this;for(const e of this._avatarSets.values())if(e&&e.findAvatarSet(t))return e;return null}getBodyParts(){return this._allBodyParts.concat()}get id(){return this._id}get isMain(){if(this._isMain)return!0;for(const t of this._avatarSets.values())if(t&&t.isMain)return!0;return!1}}class TI extends mS{constructor(t,e=!1){super(parseFloat(t.x),parseFloat(t.y),parseFloat(t.z)),this._id=t.id,this._radius=parseFloat(t.radius),this._normal=new v(parseFloat(t.nx),parseFloat(t.ny),parseFloat(t.nz)),this._isDoubleSided=t.double||!1,this._isDynamic=e}getDistance(t){const e=Math.abs(t.z-this.transformedLocation.z-this._radius),s=Math.abs(t.z-this.transformedLocation.z+this._radius);return Math.min(e,s)}get id(){return this._id}get normal(){return this._normal}get isDoubleSided(){return this._isDoubleSided}toString(){return`${this._id}: ${this.location.toString()} - ${this.transformedLocation.toString()}`}get isDynamic(){return this._isDynamic}}class QP extends mS{constructor(t){if(super(parseFloat(t.x),parseFloat(t.y),parseFloat(t.z)),this._id=t.id,this._radius=parseFloat(t.radius),this._parts=new Map,this._dynamicParts=new Map,t.items&&t.items.length>0)for(const e of t.items){if(!e)continue;const s=new TI(e);this._parts.set(s.id,s)}}getDynamicParts(t){const e=this._dynamicParts.get(t),s=[];if(e)for(const r in e){const n=e[r];n&&s.push(n)}return s}getPartIds(t){const e=[];for(const s of this._parts.values())s&&e.push(s.id);if(t){const s=this._dynamicParts.get(t);if(s)for(const r in s){const n=s[r];n&&e.push(n.id)}}return e}removeDynamicParts(t){return this._dynamicParts.delete(t),!0}addPart(t,e){if(this.hasPart(t.id,e))return!1;let s=this._dynamicParts.get(e);return s||(s={},this._dynamicParts.set(e,s)),s[t.id]=new TI(t,!0),!0}hasPart(t,e){let s=this._parts.get(t)||null;return!s&&this._dynamicParts.get(e)!==void 0&&(s=this._dynamicParts.get(e)[t]||null),s!==null}getParts(t,e,s,r){const n=[];for(const u of this._parts.values())u&&(u.applyTransform(t),n.push([u.getDistance(e),u]));const a=this._dynamicParts.get(r);if(a)for(const u in a){const l=a[u];l&&(l.applyTransform(t),n.push([l.getDistance(e),l]))}n.sort((u,l)=>{const c=u[0],h=l[0];return c<h?-1:c>h?1:0});const o=[];for(const u of n)u&&o.push(u[1].id);return o}getDistance(t){const e=Math.abs(t.z-this.transformedLocation.z-this._radius),s=Math.abs(t.z-this.transformedLocation.z+this._radius);return Math.min(e,s)}get id(){return this._id}get radius(){return this._radius}}class ZP{constructor(t){this._camera=new v(0,0,10),this._avatarSet=new Dm(t.avatarSets[0]),this._geometryTypes=new Map,this._itemIdToBodyPartMap=new Map,this._transformation=new Wo,this._canvases=new Map;const e=t.camera;if(e&&(this._camera.x=parseFloat(e.x),this._camera.y=parseFloat(e.y),this._camera.z=parseFloat(e.z)),t.canvases&&t.canvases.length>0)for(const s of t.canvases){if(!s)continue;const r=s.scale,n=new Map;if(s.geometries&&s.geometries.length>0)for(const a of s.geometries){if(!a)continue;const o=new WP(a,r);n.set(o.id,o)}this._canvases.set(r,n)}if(t.types&&t.types.length>0)for(const s of t.types){if(!s)continue;const r=new Map,n=new Map;if(s.bodyParts&&s.bodyParts.length>0)for(const a of s.bodyParts){if(!a)continue;const o=new QP(a);r.set(o.id,o);for(const u of o.getPartIds(null))n.set(u,o)}this._geometryTypes.set(s.id,r),this._itemIdToBodyPartMap.set(s.id,n)}}removeDynamicItems(t){for(const e of this._geometryTypes.values())if(e)for(const s of e.values())s&&s.removeDynamicParts(t)}getBodyPartIdsInAvatarSet(t){const e=this._avatarSet.findAvatarSet(t);return e?e.getBodyParts():[]}isMainAvatarSet(t){const e=this._avatarSet.findAvatarSet(t);return e?e.isMain:!1}getCanvas(t,e){const s=this._canvases.get(t);return s&&s.get(e)||null}typeExists(t){return!!this._geometryTypes.get(t)}hasBodyPart(t,e){if(this.typeExists(t)){const s=this._geometryTypes.get(t);if(s&&s.get(e))return!0}return!1}getBodyPartIDs(t){const e=this.getBodyPartsOfType(t),s=[];if(e)for(const r of e.values())r&&s.push(r.id);return s}getBodyPartsOfType(t){return this.typeExists(t)?this._geometryTypes.get(t):new Map}getBodyPart(t,e){return this.getBodyPartsOfType(t).get(e)||null}getBodyPartOfItem(t,e,s){const r=this._itemIdToBodyPartMap.get(t);if(r){const n=r.get(e);if(n)return n;const a=this.getBodyPartsOfType(t);if(a){for(const o of a.values())if(o&&o.hasPart(e,s))return o}}return null}getBodyPartsInAvatarSet(t,e){const s=this.getBodyPartIdsInAvatarSet(e),r=[];for(const n of s){if(!n)continue;const a=t.get(n);a&&r.push(a)}return r}getBodyPartsAtAngle(t,e,s){if(!s)return[];const r=this.getBodyPartsOfType(s),n=this.getBodyPartsInAvatarSet(r,t),a=[],o=[];this._transformation=Wo.getYRotationMatrix(e);for(const u of n.values())u&&(u.applyTransform(this._transformation),a.push([u.getDistance(this._camera),u]));a.sort((u,l)=>{const c=u[0],h=l[0];return c<h?-1:c>h?1:0});for(const u of a)u&&o.push(u[1].id);return o}getParts(t,e,s,r,n){if(this.hasBodyPart(t,e)){const a=this.getBodyPartsOfType(t).get(e);return this._transformation=Wo.getYRotationMatrix(s),a.getParts(this._transformation,this._camera,r,n)}return[]}}class JP{constructor(t){this._renderManager=t,this._geometry=null,this._figureData=new qP,this._partSetsData=new $P,this._animationData=new YP,this._animationManager=new zP,this._mandatorySetTypeIds={},this._actionManager=null,this._defaultAction=null}init(){}initGeometry(t){t&&(this._geometry=new ZP(t))}initActions(t,e){e&&(this._actionManager=new jx(t,e),this._defaultAction=this._actionManager.getDefaultAction())}updateActions(t){this._actionManager.updateActions(t),this._defaultAction=this._actionManager.getDefaultAction()}initPartSets(t){return t&&this._partSetsData.parse(t)?(this._partSetsData.getPartDefinition("ri").appendToFigure=!0,this._partSetsData.getPartDefinition("li").appendToFigure=!0,!0):!1}initAnimation(t){return t?this._animationData.parse(t):!1}initFigureData(t){return t?this._figureData.parse(t):!1}injectFigureData(t){this._figureData.injectJSON(t)}registerAnimations(t,e="fx",s=200){let r=0;for(;r<s;){const n=t.getCollection(e+r);if(n){const a=n.data;this._animationManager.registerAnimation(this,a.animations)}r++}}registerAnimation(t){this._animationManager.registerAnimation(this,t)}getPartColor(t,e,s=0){const r=t.getPartColorIds(e);if(!r||r.length<s)return null;const n=this._figureData.getSetType(e);if(n==null)return null;const a=this._figureData.getPalette(n.paletteID);return a?a.getColor(r[s]):null}getBodyPartData(t,e,s){return this._animationManager.getLayerData(t,e,s)}getAnimation(t){return this._animationManager.getAnimation(t)}getActionDefinition(t){return this._actionManager.getActionDefinition(t)}getActionDefinitionWithState(t){return this._actionManager.getActionDefinitionWithState(t)}isMainAvatarSet(t){return this._geometry.isMainAvatarSet(t)}sortActions(t){return this._actionManager.sortActions(t)}maxFrames(t){let e=0;for(const s of t)e=Math.max(e,this._animationData.getFrameCount(s.definition));return e}getMandatorySetTypeIds(t,e){return this._mandatorySetTypeIds[t]||(this._mandatorySetTypeIds[t]=[]),this._mandatorySetTypeIds[t][e]?this._mandatorySetTypeIds[t][e]:(this._mandatorySetTypeIds[t][e]=this._figureData.getMandatorySetTypeIds(t,e),this._mandatorySetTypeIds[t][e])}getDefaultPartSet(t,e){return this._figureData.getDefaultPartSet(t,e)}getCanvasOffsets(t,e,s){return this._actionManager.getCanvasOffsets(t,e,s)}getCanvas(t,e){return this._geometry.getCanvas(t,e)}removeDynamicItems(t){this._geometry.removeDynamicItems(t)}getActiveBodyPartIds(t,e){let s=[];const r=[],n=t.definition.geometryType;if(t.definition.isAnimation){const a=t.definition.state+"."+t.actionParameter,o=this._animationManager.getAnimation(a);if(o&&(s=o.getAnimatedBodyPartIds(0,t.overridingAction),o.hasAddData())){const u={id:"",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:1},l={setType:""};for(const c of o.addData){const h=this._geometry.getBodyPart(n,c.align);if(h){u.id=c.id,h.addPart(u,e),l.setType=c.id;const _=this._partSetsData.addPartDefinition(l);_.appendToFigure=!0,c.base===""&&(_.staticId=1),r.indexOf(h.id)===-1&&r.push(h.id)}}}for(const u of s){const l=this._geometry.getBodyPart(n,u);l&&r.indexOf(l.id)===-1&&r.push(l.id)}}else{s=this._partSetsData.getActiveParts(t.definition);for(const a of s){const o=this._geometry.getBodyPartOfItem(n,a,e);o&&r.indexOf(o.id)===-1&&r.push(o.id)}}return r}getBodyPartsUnordered(t){return this._geometry.getBodyPartIdsInAvatarSet(t)}getBodyParts(t,e,s){const r=Pr.DIRECTION_TO_ANGLE[s];return this._geometry.getBodyPartsAtAngle(t,r,e)}getFrameBodyPartOffset(t,e,s,r){const n=this._animationData.getAction(t.definition);return n?n.getFrameBodyPartOffset(e,s,r):au.DEFAULT_OFFSET}getParts(t,e,s,r,n,a,o,u=null){let l=null,c=[],h=null;if(!s)return[];const _=this._partSetsData.getActiveParts(s.definition),d=[];let f=[0];const p=this._animationData.getAction(s.definition);if(s.definition.isAnimation){const y=s.definition.state+"."+s.actionParameter,C=this._animationManager.getAnimation(y);if(C){f=this.getPopulatedArray(C.frameCount(s.overridingAction));for(const P of C.getAnimatedBodyPartIds(0,s.overridingAction))if(P===t){const L=this._geometry.getBodyPart(r,P);if(L)for(const N of L.getDynamicParts(o))_.push(N.id)}}}const g=this._geometry.getParts(r,t,n,_,o),m=e.getPartTypeIds();for(const y of m){if(u&&u.get(y))continue;const C=e.getPartSetId(y),P=e.getPartColorIds(y),L=this._figureData.getSetType(y);if(L){const N=this._figureData.getPalette(L.paletteID);if(N){const F=L.getPartSet(C);if(F){a=a.concat(F.hiddenLayers);for(const x of F.parts)if(g.indexOf(x.type)>-1){if(p){const Y=p.getPart(x.type);Y?c=Y.frames:c=f}else c=f;l=s.definition,_.indexOf(x.type)===-1&&(l=this._defaultAction);const U=this._partSetsData.getPartDefinition(x.type);let k=U?U.flippedSetType:x.type;(!k||k==="")&&(k=x.type),P&&P.length>x.colorLayerIndex-1&&(h=N.getColor(P[x.colorLayerIndex-1]));const gt=x.colorLayerIndex>0,X=new Wc(t,x.type,x.id.toString(),h,c,l,gt,x.paletteMap,k);d.push(X)}}}}}const O=[];for(const y of g){let C=null,P=!1;const L=u&&u.get(y);for(const N of d)N.partType===y&&(L?C=N.color:(P=!0,a.indexOf(y)===-1&&O.push(N)));if(!P){if(L){const N=u.get(y);let F=0,x=0;for(;x<N.length;)F=F+N.charCodeAt(x),x++;if(p){const k=p.getPart(y);k?c=k.frames:c=f}else c=f;const U=new Wc(t,y,N,C,c,s.definition,C!=null,-1,y,!1,1);O.push(U)}else if(_.indexOf(y)>-1){const N=this._geometry.getBodyPartOfItem(r,y,o);if(t===N.id){const F=this._partSetsData.getPartDefinition(y);let x=!1,U=1;if(F.appendToFigure){let k="1";if(s.actionParameter!==""&&(k=s.actionParameter),F.hasStaticId()&&(k=F.staticId.toString()),p){const X=p.getPart(y);X?c=X.frames:c=f}else c=f;const gt=new Wc(t,y,k,null,c,s.definition,!1,-1,y,x,U);O.push(gt)}}}}}return O}getPopulatedArray(t){const e=[];let s=0;for(;s<t;)e.push(s),s++;return e}getItemIds(){if(this._actionManager){const t=this._actionManager.getActionDefinition("CarryItem").params,e=[];for(const s of t.values())e.push(s);return e}return[]}get renderManager(){return this._renderManager}get figureData(){return this._figureData}get partData(){return this._partSetsData}get animationManager(){return this._animationManager}}const Ws=class Ws{constructor(t,e,s,r){this._state=Ws.NOT_LOADED,this._animation=null,this._libraryName=t,this._revision=e,this._downloadUrl=s,this._assetManager=r,this._downloadUrl=this._downloadUrl.replace(/%libname%/gi,this._libraryName),this._downloadUrl=this._downloadUrl.replace(/%revision%/gi,this._revision),this.checkIsLoaded()}async downloadAsset(){if(!(!this._assetManager||this._state===Ws.LOADING||this._state===Ws.LOADED)){if(!this.checkIsLoaded()&&(this._state=Ws.LOADING,!await this._assetManager.downloadAsset(this._downloadUrl)))throw new Error("Could not download asset");this.checkIsLoaded()&&M().dispatchEvent(new y_(Qe.AVATAR_EFFECT_DOWNLOADED,this))}}checkIsLoaded(){const t=this._assetManager.getCollection(this._libraryName);return t?(this._state=Ws.LOADED,this._animation=t.data.animations,!0):!1}get libraryName(){return this._libraryName}get animation(){return this._animation}get isLoaded(){return this._state===Ws.LOADED}};Ws.DOWNLOAD_COMPLETE="EADL_DOWNLOAD_COMPLETE",Ws.NOT_LOADED=0,Ws.LOADING=1,Ws.LOADED=2;let J_=Ws;class tb{constructor(t,e){this._missingMandatoryLibs=[],this._effectMap=new Map,this._effectListeners=new Map,this._incompleteEffects=new Map,this._currentDownloads=[],this._libraryNames=[],this._assets=t,this._structure=e}async init(){this._missingMandatoryLibs=vt().getValue("avatar.mandatory.effect.libraries");const t=vt().getValue("avatar.effectmap.url");if(!t||!t.length)throw new Error("Invalid effect map url");const e=await fetch(t);if(e.status!==200)throw new Error("Invalid effect map file");const s=await e.json();this.processEffectMap(s.effects),M().addEventListener(Qe.AVATAR_EFFECT_DOWNLOADED,r=>this.onLibraryLoaded(r)),await this.processMissingLibraries()}processEffectMap(t){if(!t)return;const e=vt().getValue("avatar.asset.effect.url");for(const s of t){if(!s)continue;const r=s.id,n=s.lib,a=s.revision||"";if(this._libraryNames.indexOf(n)>=0)continue;this._libraryNames.push(n);const o=new J_(n,a,e,this._assets);let u=this._effectMap.get(r);u||(u=[]),u.push(o),this._effectMap.set(r,u)}}async processMissingLibraries(){const t=[];this._missingMandatoryLibs.forEach(e=>{const s=this._effectMap.get(e);if(s)for(const r of s)t.push(r.downloadAsset())}),this._missingMandatoryLibs=[],await Promise.all(t)}onLibraryLoaded(t){if(!t||!t.library)return;const e=[];this._structure.registerAnimation(t.library.animation);for(const[r,n]of this._incompleteEffects.entries()){let a=!0;for(const o of n)if(!(!o||o.isLoaded)){a=!1;break}if(a){e.push(r);const o=this._effectListeners.get(r);for(const u of o)!u||u.disposed||u.resetEffect(parseInt(r));this._effectListeners.delete(r),M().dispatchEvent(new Xt(Qe.AVATAR_EFFECT_LOADED))}}for(const r of e)this._incompleteEffects.delete(r);let s=0;for(;s<this._currentDownloads.length;){const r=this._currentDownloads[s];r&&r.libraryName===t.library.libraryName&&this._currentDownloads.splice(s,1),s++}}isAvatarEffectReady(t){return!this.getAvatarEffectPendingLibraries(t).length}getAvatarEffectPendingLibraries(t){const e=[];if(!this._structure)return e;const s=this._effectMap.get(t.toString());if(s)for(const r of s)!r||r.isLoaded||e.indexOf(r)===-1&&e.push(r);return e}downloadAvatarEffect(t,e){const s=this.getAvatarEffectPendingLibraries(t);if(s&&s.length){if(e&&!e.disposed){let r=this._effectListeners.get(t.toString());r||(r=[]),r.push(e),this._effectListeners.set(t.toString(),r)}this._incompleteEffects.set(t.toString(),s);for(const r of s)r&&r.downloadAsset()}else e&&!e.disposed&&e.resetEffect(t)}}const dt=class dt{constructor(){this._gender="M",this._avatarEffectType=-1}loadAvatarData(t,e){this._data=new Map,this._colors=new Map,this._gender=e,this.parseFigureString(t)}dispose(){this._data=null,this._colors=null,this._isDisposed=!0}get disposed(){return this._isDisposed}parseFigureString(t){if(t)for(const e of t.split(".")){const s=e.split("-");if(s.length>0){const r=s[0],n=parseInt(s[1]),a=[];let o=2;for(;o<s.length;)a.push(parseInt(s[o])),o++;a.length||a.push(0),this.savePartSetId(r,n,!1),this.savePartSetColourId(r,a,!1)}}}hasSetType(t){return!!this._data.get(t)}getPartSetId(t){return this.hasSetType(t)?this._data.get(t):-1}getColourIds(t){return this._colors.get(t)?this._colors.get(t):[]}getFigureString(){let t="";const e=[];for(const[r,n]of this._data.entries()){let a=r+"-"+n;const o=this._colors.get(r);if(o)for(const u of o)a=a+("-"+u);e.push(a)}let s=0;for(;s<e.length;)t=t+e[s],s<e.length-1&&(t=t+"."),s++;return t}savePartData(t,e,s,r=!1){this.savePartSetId(t,e,r),this.savePartSetColourId(t,s,r)}savePartSetId(t,e,s=!0){switch(t){case dt.HD:case dt.HAIR:case dt.HAT:case dt.HEAD_ACCESSORIES:case dt.EYE_ACCESSORIES:case dt.FACE_ACCESSORIES:case dt.SHIRT:case dt.JACKET:case dt.CHEST_ACCESSORIES:case dt.CHEST_PRINTS:case dt.TROUSERS:case dt.SHOES:case dt.TROUSER_ACCESSORIES:e>=0?this._data.set(t,e):this._data.delete(t)}}savePartSetColourId(t,e,s=!0){switch(t){case dt.HD:case dt.HAIR:case dt.HAT:case dt.HEAD_ACCESSORIES:case dt.EYE_ACCESSORIES:case dt.FACE_ACCESSORIES:case dt.SHIRT:case dt.JACKET:case dt.CHEST_ACCESSORIES:case dt.CHEST_PRINTS:case dt.TROUSERS:case dt.SHOES:case dt.TROUSER_ACCESSORIES:this._colors.set(t,e);return}}getFigureStringWithFace(t){const e=[dt.HD];let s="";const r=[];for(const a of e){const o=this._colors.get(a);if(o){let u=this._data.get(a);a===dt.HD&&(u=t);let l=a+"-"+u;if(u>=0){let c=0;for(;c<o.length;)l=l+("-"+o[c]),c++}r.push(l)}}let n=0;for(;n<r.length;)s=s+r[n],n<r.length-1&&(s=s+"."),n++;return s}get gender(){return this._gender}};dt.MALE="M",dt.FEMALE="F",dt.UNISEX="U",dt.SCALE="h",dt.STD="std",dt.DEFAULT_FRAME="0",dt.HD="hd",dt.HAIR="hr",dt.HAT="ha",dt.HEAD_ACCESSORIES="he",dt.EYE_ACCESSORIES="ea",dt.FACE_ACCESSORIES="fa",dt.JACKET="cc",dt.SHIRT="ch",dt.CHEST_ACCESSORIES="ca",dt.CHEST_PRINTS="cp",dt.TROUSERS="lg",dt.SHOES="sh",dt.TROUSER_ACCESSORIES="wa",dt.BLOCKED_FX_TYPES=[28,29,30,33,34,35,36,37,38,39,40,41,42,43,68];let td=dt;class eb extends Ih{constructor(t,e,s,r,n){super(t,e,s,r,n,null)}isPlaceholder(){return!0}}class sb{constructor(t,e){this._name=t,this._link=e.link,this._flipH=e.flipH,this._flipV=e.flipV}get name(){return this._name}get link(){return this._link}get flipH(){return this._flipH}get flipV(){return this._flipV}}class ib{constructor(t,e){this._avatarRenderManager=t,this._aliases=new Map,this._assets=e,this._missingAssetNames=[]}dispose(){this._assets=null,this._aliases=null}reset(){this.init()}init(){for(const t of this._assets.collections.values()){if(!t)continue;const e=t.data&&t.data.aliases;if(e)for(const s in e){const r=e[s];r&&this._aliases.set(s,new sb(s,r))}}}hasAlias(t){return!!this._aliases.get(t)}getAssetName(t){let e=t,s=5;for(;this.hasAlias(e)&&s>=0;)e=this._aliases.get(e).link,s--;return e}getAsset(t){if(!this._assets)return null;t=this.getAssetName(t);const e=this._assets.getAsset(t);return e||null}}const rb={animations:[{id:"Move",parts:[{setType:"bd",frames:[{number:0,assetPartDefinition:"wlk"},{number:1,assetPartDefinition:"wlk"},{number:2,assetPartDefinition:"wlk"},{number:3,assetPartDefinition:"wlk"}]},{setType:"bds",frames:[{number:0,assetPartDefinition:"wlk"},{number:1,assetPartDefinition:"wlk"},{number:2,assetPartDefinition:"wlk"},{number:3,assetPartDefinition:"wlk"}]},{setType:"ss",frames:[{number:0,assetPartDefinition:"wlk"},{number:1,assetPartDefinition:"wlk"},{number:2,assetPartDefinition:"wlk"},{number:3,assetPartDefinition:"wlk"}]},{setType:"lg",frames:[{number:0,assetPartDefinition:"wlk"},{number:1,assetPartDefinition:"wlk"},{number:2,assetPartDefinition:"wlk"},{number:3,assetPartDefinition:"wlk"}]},{setType:"sh",frames:[{number:0,assetPartDefinition:"wlk"},{number:1,assetPartDefinition:"wlk"},{number:2,assetPartDefinition:"wlk"},{number:3,assetPartDefinition:"wlk"}]},{setType:"lh",frames:[{number:0,assetPartDefinition:"wlk"},{number:1,assetPartDefinition:"wlk"},{number:2,assetPartDefinition:"wlk"},{number:3,assetPartDefinition:"wlk"}]},{setType:"lhs",frames:[{number:0,assetPartDefinition:"wlk"},{number:1,assetPartDefinition:"wlk"},{number:2,assetPartDefinition:"wlk"},{number:3,assetPartDefinition:"wlk"}]},{setType:"ls",frames:[{number:0,assetPartDefinition:"wlk"},{number:1,assetPartDefinition:"wlk"},{number:2,assetPartDefinition:"wlk"},{number:3,assetPartDefinition:"wlk"}]},{setType:"lc",frames:[{number:0,assetPartDefinition:"wlk"},{number:1,assetPartDefinition:"wlk"},{number:2,assetPartDefinition:"wlk"},{number:3,assetPartDefinition:"wlk"}]},{setType:"rh",frames:[{number:0,assetPartDefinition:"wlk"},{number:1,assetPartDefinition:"wlk"},{number:2,assetPartDefinition:"wlk"},{number:3,assetPartDefinition:"wlk"}]},{setType:"rhs",frames:[{number:0,assetPartDefinition:"wlk"},{number:1,assetPartDefinition:"wlk"},{number:2,assetPartDefinition:"wlk"},{number:3,assetPartDefinition:"wlk"}]},{setType:"rs",frames:[{number:0,assetPartDefinition:"wlk"},{number:1,assetPartDefinition:"wlk"},{number:2,assetPartDefinition:"wlk"},{number:3,assetPartDefinition:"wlk"}]},{setType:"rc",frames:[{number:0,assetPartDefinition:"wlk"},{number:1,assetPartDefinition:"wlk"},{number:2,assetPartDefinition:"wlk"},{number:3,assetPartDefinition:"wlk"}]},{setType:"ch",frames:[{number:0,assetPartDefinition:"wlk"},{number:1,assetPartDefinition:"wlk"},{number:2,assetPartDefinition:"wlk"},{number:3,assetPartDefinition:"wlk"}]}]},{id:"Wave",parts:[{setType:"lh",frames:[{number:0,assetPartDefinition:"wav"},{number:1,assetPartDefinition:"wav"}]},{setType:"lhs",frames:[{number:0,assetPartDefinition:"wav"},{number:1,assetPartDefinition:"wav"}]},{setType:"ls",frames:[{number:0,assetPartDefinition:"wav"},{number:1,assetPartDefinition:"wav"}]},{setType:"lc",frames:[{number:0,assetPartDefinition:"wav"},{number:1,assetPartDefinition:"wav"}]},{setType:"ch",frames:[{number:0,assetPartDefinition:"wav"},{number:1,assetPartDefinition:"wav"},{number:2,assetPartDefinition:"wav"},{number:3,assetPartDefinition:"wav"}]}]},{id:"Talk",parts:[{setType:"hd",frames:[{number:0,assetPartDefinition:"spk"},{number:1,assetPartDefinition:"spk"}]},{setType:"fc",frames:[{number:0,assetPartDefinition:"spk"},{number:1,assetPartDefinition:"spk"}]},{setType:"fa",frames:[{number:0,assetPartDefinition:"spk"},{number:1,assetPartDefinition:"spk"}]}]},{id:"Sign",parts:[{setType:"lh",frames:[{number:0,assetPartDefinition:"sig"}]},{setType:"li",frames:[{number:0,assetPartDefinition:"sig"}]},{setType:"ls",frames:[{number:0,assetPartDefinition:"wav"}]},{setType:"lc",frames:[{number:0,assetPartDefinition:"wav"}]}]},{id:"Respect",parts:[{setType:"lh",frames:[{number:0,assetPartDefinition:"respect",repeats:15},{number:1,assetPartDefinition:"respect",repeats:15}]},{setType:"ls",frames:[{number:0,assetPartDefinition:"wav",repeats:15},{number:1,assetPartDefinition:"wav",repeats:15}]},{setType:"lc",frames:[{number:0,assetPartDefinition:"wav",repeats:15},{number:1,assetPartDefinition:"wav",repeats:15}]}]},{id:"Blow",parts:[{setType:"rh",frames:[{number:0,assetPartDefinition:"blw",repeats:10},{number:1,assetPartDefinition:"blw",repeats:10}]},{setType:"rs",frames:[{number:0,assetPartDefinition:"drk"}]},{setType:"rc",frames:[{number:0,assetPartDefinition:"drk"}]},{setType:"ri",frames:[{number:0,assetPartDefinition:""}]},{setType:"ey",frames:[{number:0,assetPartDefinition:"std",repeats:10},{number:0,assetPartDefinition:"eyb",repeats:10}]},{setType:"fc",frames:[{number:0,assetPartDefinition:"std",repeats:10},{number:0,assetPartDefinition:"blw",repeats:10}]}]},{id:"Laugh",parts:[{setType:"rh",frames:[{number:0,assetPartDefinition:"blw"}]},{setType:"rs",frames:[{number:0,assetPartDefinition:"drk"}]},{setType:"rc",frames:[{number:0,assetPartDefinition:"drk"}]},{setType:"ri",frames:[{number:0,assetPartDefinition:""}]},{setType:"ey",frames:[{number:0,assetPartDefinition:"std",repeats:2}]},{setType:"fc",frames:[{number:0,assetPartDefinition:"sml"}]}],offsets:{frames:[{id:0,directions:[{id:0,bodyParts:[{id:"head",dx:0,dy:1}]},{id:1,bodyParts:[{id:"head",dx:0,dy:1}]},{id:2,bodyParts:[{id:"head",dx:0,dy:1}]},{id:3,bodyParts:[{id:"head",dx:0,dy:1}]},{id:4,bodyParts:[{id:"head",dx:0,dy:1}]},{id:5,bodyParts:[{id:"head",dx:0,dy:1}]},{id:6,bodyParts:[{id:"head",dx:0,dy:1}]},{id:7,bodyParts:[{id:"head",dx:0,dy:1}]}]},{id:1,directions:[{id:0,bodyParts:[{id:"head",dx:0,dy:0}]},{id:1,bodyParts:[{id:"head",dx:0,dy:0}]},{id:2,bodyParts:[{id:"head",dx:0,dy:0}]},{id:3,bodyParts:[{id:"head",dx:0,dy:0}]},{id:4,bodyParts:[{id:"head",dx:0,dy:0}]},{id:5,bodyParts:[{id:"head",dx:0,dy:0}]},{id:6,bodyParts:[{id:"head",dx:0,dy:0}]},{id:7,bodyParts:[{id:"head",dx:0,dy:0}]}]}]}},{id:"Swim",parts:[{setType:"bds",frames:[{number:0,assetPartDefinition:"swm"},{number:1,assetPartDefinition:"swm"},{number:2,assetPartDefinition:"swm"},{number:3,assetPartDefinition:"swm"}]},{setType:"ss",frames:[{number:0,assetPartDefinition:"swm"},{number:1,assetPartDefinition:"swm"},{number:2,assetPartDefinition:"swm"},{number:3,assetPartDefinition:"swm"}]},{setType:"lhs",frames:[{number:0,assetPartDefinition:"swm"},{number:1,assetPartDefinition:"swm"},{number:2,assetPartDefinition:"swm"},{number:3,assetPartDefinition:"swm"}]},{setType:"rhs",frames:[{number:0,assetPartDefinition:"swm"},{number:1,assetPartDefinition:"swm"},{number:2,assetPartDefinition:"swm"},{number:3,assetPartDefinition:"swm"}]}]},{id:"Float",parts:[{setType:"bds",frames:[{number:3,assetPartDefinition:"sws"},{number:3,assetPartDefinition:"sws"},{number:2,assetPartDefinition:"sws"},{number:1,assetPartDefinition:"sws"},{number:0,assetPartDefinition:"sws"}]},{setType:"ss",frames:[{number:0,assetPartDefinition:"sws"}]},{setType:"lhs",frames:[{number:0,assetPartDefinition:"sws"},{number:0,assetPartDefinition:"sws"},{number:1,assetPartDefinition:"sws"},{number:1,assetPartDefinition:"sws"},{number:2,assetPartDefinition:"sws"},{number:3,assetPartDefinition:"sws"},{number:3,assetPartDefinition:"sws"},{number:2,assetPartDefinition:"sws"},{number:1,assetPartDefinition:"sws"},{number:1,assetPartDefinition:"sws"}]},{setType:"rhs",frames:[{number:0,assetPartDefinition:"sws"},{number:0,assetPartDefinition:"sws"},{number:1,assetPartDefinition:"sws"},{number:1,assetPartDefinition:"sws"},{number:2,assetPartDefinition:"sws"},{number:3,assetPartDefinition:"sws"},{number:3,assetPartDefinition:"sws"},{number:2,assetPartDefinition:"sws"},{number:1,assetPartDefinition:"sws"},{number:1,assetPartDefinition:"sws"}]}]}]},nb={geometry:{direction:0,camera:{x:0,y:0,z:10},canvases:[{scale:"h",geometries:[{id:"vertical",width:90,height:130,dx:0,dy:0},{id:"sitting",width:90,height:130,dx:0,dy:0},{id:"horizontal",width:128,height:80,dx:30,dy:0},{id:"swhorizontal",width:192,height:120,dx:0,dy:-40}]},{scale:"sh",geometries:[{id:"vertical",width:45,height:72,dx:0,dy:0},{id:"sitting",width:45,height:72,dx:0,dy:0},{id:"horizontal",width:64,height:50,dx:15,dy:-10},{id:"swhorizontal",width:96,height:70,dx:0,dy:-20},{id:"swim",width:64,height:70,dx:0,dy:0}]}],avatarSets:[{id:"full",avatarSets:[{id:"body",main:!0,bodyParts:[{id:"top"},{id:"bottom"},{id:"behind"},{id:"torso"},{id:"leftitem"},{id:"rightitem"},{id:"leftarm"},{id:"rightarm"}]},{id:"head",bodyParts:[{id:"head"}]}]}],types:[{id:"vertical",bodyParts:[{id:"top",x:0,y:0,z:0,radius:2},{id:"bottom",x:0,y:0,z:0,radius:.001},{id:"behind",x:0,y:0,z:.2,radius:.3},{id:"torso",x:0,y:0,z:0,radius:.4,items:[{id:"bd",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!0},{id:"bds",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!0},{id:"ch",x:0,y:0,z:0,radius:.04,nx:0,ny:0,nz:-1,double:!1},{id:"sh",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"lg",x:0,y:0,z:0,radius:.03,nx:0,ny:0,nz:-1,double:!1},{id:"ss",x:0,y:0,z:0,radius:.04,nx:0,ny:0,nz:-1,double:!1},{id:"cp",x:0,y:0,z:0,radius:.045,nx:0,ny:0,nz:-1,double:!1},{id:"wa",x:0,y:0,z:0,radius:.05,nx:0,ny:0,nz:-1,double:!1},{id:"cc",x:0,y:0,z:0,radius:.06,nx:0,ny:0,nz:-1,double:!1},{id:"ca",x:0,y:0,z:0,radius:.07,nx:0,ny:0,nz:-1,double:!1}]},{id:"leftitem",x:0,y:0,z:-.29,radius:.3,items:[{id:"li",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1}]},{id:"rightitem",x:0,y:0,z:-.29,radius:.3,items:[{id:"ri",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1}]},{id:"leftarm",x:-1,y:0,z:-.51,radius:.5,items:[{id:"lh",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"lhs",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"ls",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"lc",x:0,y:0,z:0,radius:.025,nx:0,ny:0,nz:-1,double:!1}]},{id:"rightarm",x:1,y:0,z:-.51,radius:.5,items:[{id:"rh",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"rhs",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"rs",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"rc",x:0,y:0,z:0,radius:.025,nx:0,ny:0,nz:-1,double:!1}]},{id:"head",x:0,y:0,z:0,radius:.5,items:[{id:"hd",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!0},{id:"fc",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"ey",x:0,y:0,z:0,radius:.03,nx:0,ny:0,nz:-1,double:!1},{id:"hr",x:0,y:0,z:0,radius:.04,nx:0,ny:0,nz:-1,double:!0},{id:"hrb",x:0,y:0,z:0,radius:.05,nx:0,ny:0,nz:-1,double:!0},{id:"fa",x:0,y:0,z:0,radius:.06,nx:0,ny:0,nz:-1,double:!1},{id:"ea",x:0,y:0,z:0,radius:.07,nx:0,ny:0,nz:-1,double:!1},{id:"ha",x:0,y:0,z:0,radius:.08,nx:0,ny:0,nz:-1,double:!1},{id:"he",x:0,y:0,z:0,radius:.09,nx:0,ny:0,nz:-1,double:!1}]}]},{id:"sitting",bodyParts:[{id:"top",x:0,y:0,z:0,radius:2},{id:"bottom",x:0,y:0,z:0,radius:.001},{id:"behind",x:0,y:0,z:.2,radius:.3},{id:"torso",x:0,y:0,z:0,radius:.4,items:[{id:"bd",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!0},{id:"bds",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!0},{id:"ch",x:0,y:0,z:0,radius:.03,nx:0,ny:0,nz:-1,double:!1},{id:"sh",x:0,y:0,z:0,radius:.04,nx:0,ny:0,nz:-1,double:!1},{id:"lg",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"ss",x:0,y:0,z:0,radius:.04,nx:0,ny:0,nz:-1,double:!1},{id:"cp",x:0,y:0,z:0,radius:.045,nx:0,ny:0,nz:-1,double:!1},{id:"wa",x:0,y:0,z:0,radius:.05,nx:0,ny:0,nz:-1,double:!1},{id:"cc",x:0,y:0,z:0,radius:.06,nx:0,ny:0,nz:-1,double:!1},{id:"ca",x:0,y:0,z:0,radius:.07,nx:0,ny:0,nz:-1,double:!1}]},{id:"leftitem",x:0,y:0,z:-.29,radius:.3,items:[{id:"li",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1}]},{id:"rightitem",x:0,y:0,z:-.29,radius:.3,items:[{id:"ri",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1}]},{id:"leftarm",x:-1,y:0,z:-.51,radius:.5,items:[{id:"lh",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"lhs",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"ls",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"lc",x:0,y:0,z:0,radius:.025,nx:0,ny:0,nz:-1,double:!1}]},{id:"rightarm",x:1,y:0,z:-.51,radius:.5,items:[{id:"rh",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"rhs",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"rs",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"rc",x:0,y:0,z:0,radius:.025,nx:0,ny:0,nz:-1,double:!1}]},{id:"head",x:0,y:0,z:0,radius:.5,items:[{id:"hd",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!0},{id:"fc",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"ey",x:0,y:0,z:0,radius:.03,nx:0,ny:0,nz:-1,double:!1},{id:"hr",x:0,y:0,z:0,radius:.04,nx:0,ny:0,nz:-1,double:!0},{id:"hrb",x:0,y:0,z:0,radius:.05,nx:0,ny:0,nz:-1,double:!0},{id:"fa",x:0,y:0,z:0,radius:.06,nx:0,ny:0,nz:-1,double:!1},{id:"ea",x:0,y:0,z:0,radius:.07,nx:0,ny:0,nz:-1,double:!1},{id:"ha",x:0,y:0,z:0,radius:.08,nx:0,ny:0,nz:-1,double:!1},{id:"he",x:0,y:0,z:0,radius:.09,nx:0,ny:0,nz:-1,double:!1}]}]},{id:"horizontal",bodyParts:[{id:"torso",x:0,y:0,z:0,radius:.4,items:[{id:"bd",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!0},{id:"bds",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!0},{id:"ch",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"cp",x:0,y:0,z:0,radius:.025,nx:0,ny:0,nz:-1,double:!1},{id:"sh",x:0,y:0,z:0,radius:.04,nx:0,ny:0,nz:-1,double:!1},{id:"lg",x:0,y:0,z:0,radius:.03,nx:0,ny:0,nz:-1,double:!1},{id:"ss",x:0,y:0,z:0,radius:.03,nx:0,ny:0,nz:-1,double:!1},{id:"wa",x:0,y:0,z:0,radius:.05,nx:0,ny:0,nz:-1,double:!1},{id:"cc",x:0,y:0,z:0,radius:.06,nx:0,ny:0,nz:-1,double:!1},{id:"ca",x:0,y:0,z:0,radius:.07,nx:0,ny:0,nz:-1,double:!1}]},{id:"leftitem",x:0,y:0,z:-.29,radius:.3,items:[{id:"li",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1}]},{id:"rightitem",x:0,y:0,z:-.29,radius:.3,items:[{id:"ri",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1}]},{id:"leftarm",x:-1,y:0,z:-.51,radius:.6,items:[{id:"lh",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"lhs",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"ls",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"lc",x:0,y:0,z:0,radius:.025,nx:0,ny:0,nz:-1,double:!1}]},{id:"rightarm",x:1,y:0,z:-.51,radius:.6,items:[{id:"rh",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"rhs",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"rs",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"rc",x:0,y:0,z:0,radius:.025,nx:0,ny:0,nz:-1,double:!1}]},{id:"head",x:0,y:0,z:0,radius:.5,items:[{id:"hd",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!0},{id:"fc",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"ey",x:0,y:0,z:0,radius:.03,nx:0,ny:0,nz:-1,double:!1},{id:"hr",x:0,y:0,z:0,radius:.04,nx:0,ny:0,nz:-1,double:!0},{id:"hrb",x:0,y:0,z:0,radius:.05,nx:0,ny:0,nz:-1,double:!0},{id:"fa",x:0,y:0,z:0,radius:.06,nx:0,ny:0,nz:-1,double:!1},{id:"ea",x:0,y:0,z:0,radius:.07,nx:0,ny:0,nz:-1,double:!1},{id:"ha",x:0,y:0,z:0,radius:.08,nx:0,ny:0,nz:-1,double:!1},{id:"he",x:0,y:0,z:0,radius:.09,nx:0,ny:0,nz:-1,double:!1}]}]},{id:"swhorizontal",bodyParts:[{id:"torso",x:0,y:0,z:0,radius:.4,items:[{id:"bd",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!0},{id:"bds",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!0},{id:"ch",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"cp",x:0,y:0,z:0,radius:.025,nx:0,ny:0,nz:-1,double:!1},{id:"sh",x:0,y:0,z:0,radius:.04,nx:0,ny:0,nz:-1,double:!1},{id:"lg",x:0,y:0,z:0,radius:.03,nx:0,ny:0,nz:-1,double:!1},{id:"ss",x:0,y:0,z:0,radius:.03,nx:0,ny:0,nz:-1,double:!1},{id:"wa",x:0,y:0,z:0,radius:.05,nx:0,ny:0,nz:-1,double:!1},{id:"cc",x:0,y:0,z:0,radius:.06,nx:0,ny:0,nz:-1,double:!1},{id:"ca",x:0,y:0,z:0,radius:.07,nx:0,ny:0,nz:-1,double:!1}]},{id:"leftitem",x:0,y:0,z:-.29,radius:.3,items:[{id:"li",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1}]},{id:"rightitem",x:0,y:0,z:-.29,radius:.3,items:[{id:"ri",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1}]},{id:"leftarm",x:-1,y:0,z:-.51,radius:.6,items:[{id:"lh",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"lhs",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"ls",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"lc",x:0,y:0,z:0,radius:.025,nx:0,ny:0,nz:-1,double:!1}]},{id:"rightarm",x:1,y:0,z:-.51,radius:.6,items:[{id:"rh",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"rhs",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1},{id:"rs",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"rc",x:0,y:0,z:0,radius:.025,nx:0,ny:0,nz:-1,double:!1}]},{id:"head",x:0,y:0,z:0,radius:.5,items:[{id:"hd",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!0},{id:"fc",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"ey",x:0,y:0,z:0,radius:.03,nx:0,ny:0,nz:-1,double:!1},{id:"hr",x:0,y:0,z:0,radius:.04,nx:0,ny:0,nz:-1,double:!0},{id:"hrb",x:0,y:0,z:0,radius:.05,nx:0,ny:0,nz:-1,double:!0},{id:"fa",x:0,y:0,z:0,radius:.06,nx:0,ny:0,nz:-1,double:!1},{id:"ea",x:0,y:0,z:0,radius:.07,nx:0,ny:0,nz:-1,double:!1},{id:"ha",x:0,y:0,z:0,radius:.08,nx:0,ny:0,nz:-1,double:!1},{id:"he",x:0,y:0,z:0,radius:.09,nx:0,ny:0,nz:-1,double:!1}]}]},{id:"swim",bodyParts:[{id:"torso",x:0,y:0,z:0,radius:.4,items:[{id:"bds",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!0},{id:"ss",x:0,y:0,z:0,radius:.03,nx:0,ny:0,nz:-1,double:!1}]},{id:"leftarm",x:-1,y:0,z:0,radius:.6,items:[{id:"lhs",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1}]},{id:"rightarm",x:1,y:0,z:0,radius:.6,items:[{id:"rhs",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!1}]},{id:"head",x:0,y:0,z:0,radius:.5,items:[{id:"hd",x:0,y:0,z:0,radius:.01,nx:0,ny:0,nz:-1,double:!0},{id:"fc",x:0,y:0,z:0,radius:.02,nx:0,ny:0,nz:-1,double:!1},{id:"ey",x:0,y:0,z:0,radius:.03,nx:0,ny:0,nz:-1,double:!1},{id:"hr",x:0,y:0,z:0,radius:.04,nx:0,ny:0,nz:-1,double:!0},{id:"hrb",x:0,y:0,z:0,radius:.05,nx:0,ny:0,nz:-1,double:!0},{id:"fa",x:0,y:0,z:0,radius:.06,nx:0,ny:0,nz:-1,double:!1},{id:"ea",x:0,y:0,z:0,radius:.07,nx:0,ny:0,nz:-1,double:!1},{id:"ha",x:0,y:0,z:0,radius:.08,nx:0,ny:0,nz:-1,double:!1},{id:"he",x:0,y:0,z:0,radius:.09,nx:0,ny:0,nz:-1,double:!1}]}]}]}},ab={partSets:{partSet:[{setType:"ri",flippedSetType:"ri"},{setType:"ri",flippedSetType:"ri"},{setType:"rh",flippedSetType:"lh"},{setType:"rhs",flippedSetType:"lhs"},{setType:"rs",swim:"0",flippedSetType:"ls"},{setType:"rc",flippedSetType:"lc"},{setType:"bd"},{setType:"bds"},{setType:"ss"},{setType:"sh"},{setType:"lg"},{setType:"ch"},{setType:"cp"},{setType:"cc"},{setType:"hd"},{setType:"fc"},{setType:"ey"},{setType:"hr"},{setType:"hrb",removeSetType:"hr"},{setType:"li",flippedSetType:"li"},{setType:"lh",flippedSetType:"rh"},{setType:"lhs",flippedSetType:"rhs"},{setType:"ls",flippedSetType:"rs"},{setType:"lc",flippedSetType:"rc"},{setType:"wa"},{setType:"ea"},{setType:"ca"},{setType:"fa"},{setType:"ha"},{setType:"he"}],activePartSets:[{id:"figure",activeParts:[{setType:"rh"},{setType:"rh"},{setType:"rhs"},{setType:"rs"},{setType:"rc"},{setType:"bd"},{setType:"bds"},{setType:"ss"},{setType:"sh"},{setType:"lg"},{setType:"ch"},{setType:"cp"},{setType:"cc"},{setType:"wa"},{setType:"hd"},{setType:"fc"},{setType:"ey"},{setType:"hr"},{setType:"hrb"},{setType:"lh"},{setType:"lhs"},{setType:"ls"},{setType:"lc"},{setType:"ea"},{setType:"ca"},{setType:"fa"},{setType:"ha"},{setType:"he"}]},{id:"head",activeParts:[{setType:"hd"},{setType:"fc"},{setType:"ey"},{setType:"hr"},{setType:"hrb"},{setType:"ea"},{setType:"fa"},{setType:"ha"},{setType:"he"}]},{id:"speak",activeParts:[{setType:"hd"},{setType:"hr"},{setType:"hrb"},{setType:"fc"},{setType:"fa"},{setType:"ha"}]},{id:"gesture",activeParts:[{setType:"ey"},{setType:"fc"}]},{id:"eye",activeParts:[{setType:"ey"}]},{id:"handRight",activeParts:[{setType:"rh"},{setType:"rhs"},{setType:"rs"},{setType:"rc"},{setType:"ri"}]},{id:"handRightAndHead",activeParts:[{setType:"rh"},{setType:"rhs"},{setType:"rs"},{setType:"rc"},{setType:"ri"},{setType:"ey"},{setType:"fc"},{setType:"hd"}]},{id:"handLeft",activeParts:[{setType:"lh"},{setType:"lhs"},{setType:"ls"},{setType:"lc"},{setType:"li"}]},{id:"walk",activeParts:[{setType:"bd"},{setType:"bds"},{setType:"ss"},{setType:"lg"},{setType:"lh"},{setType:"lhs"},{setType:"rh"},{setType:"rhs"},{setType:"ls"},{setType:"lc"},{setType:"rs"},{setType:"rc"},{setType:"sh"}]},{id:"sit",activeParts:[{setType:"bd"},{setType:"bds"},{setType:"ss"},{setType:"lg"},{setType:"sh"},{setType:"cc"}]},{id:"itemRight",activeParts:[{setType:"ri"}]},{id:"swim",activeParts:[{setType:"bds"},{setType:"ss"},{setType:"lhs"},{setType:"rhs"}]},{id:"snowwarrun",activeParts:[{setType:"ch"}]},{id:"snowwarpick",activeParts:[{setType:"ch"},{setType:"hd"}]},{id:"snowwardiefront",activeParts:[{setType:"ch"},{setType:"hd"}]},{id:"snowwardieback",activeParts:[{setType:"ch"},{setType:"hd"}]},{id:"snowwarthrow",activeParts:[{setType:"ch"}]}]}},Lp=class Lp{constructor(){this._structure=new JP(this),this._aliasCollection=new ib(this,Rt()),this._avatarAssetDownloadManager=new Hx(Rt(),this._structure),this._effectAssetDownloadManager=new tb(Rt(),this._structure),this._placeHolderFigure=new Zu(Lp.DEFAULT_FIGURE)}async init(){var t,e,s;(t=this._structure)==null||t.initGeometry(nb.geometry),(e=this._structure)==null||e.initPartSets(ab.partSets),await this.loadActions(),(s=this._structure)==null||s.initAnimation(rb.animations),await this.loadFigureData(),this._aliasCollection.init(),M().addEventListener(Qe.AVATAR_ASSET_LOADED,()=>this._aliasCollection.reset()),M().addEventListener(Qe.AVATAR_EFFECT_LOADED,()=>this._aliasCollection.reset()),await this._avatarAssetDownloadManager.init(),await this._effectAssetDownloadManager.init()}async loadActions(){const t=vt().getValue("avatar.default.actions");t&&this._structure.initActions(Rt(),t);const e=vt().getValue("avatar.actions.url");if(!e||!e.length)throw new Error("Invalid avatar action url");const s=await fetch(e);if(s.status!==200)throw new Error("Invalid avatar action file");this._structure.updateActions(await s.json())}async loadFigureData(){var r;const t=vt().getValue("avatar.default.figuredata");t&&((r=this._structure)==null||r.initFigureData(t));const e=vt().getValue("avatar.figuredata.url");if(!e||!e.length)throw new Error("Invalid figure data url");const s=await fetch(e);if(s.status!==200)throw new Error("Invalid figure data file");this._structure.figureData.appendJSON(await s.json()),this._structure.init()}createFigureContainer(t){return new Zu(t)}isFigureContainerReady(t){return this._avatarAssetDownloadManager?this._avatarAssetDownloadManager.isAvatarFigureContainerReady(t):!1}createAvatarImage(t,e,s,r=null,n=null){if(!this._structure||!this._avatarAssetDownloadManager)return null;const a=new Zu(t);return s&&this.validateAvatarFigure(a,s),this._avatarAssetDownloadManager.isAvatarFigureContainerReady(a)?new Ih(this._structure,this._aliasCollection,a,e,this._effectAssetDownloadManager,n):(this._avatarAssetDownloadManager.downloadAvatarFigure(a,r),new eb(this._structure,this._aliasCollection,this._placeHolderFigure,e,this._effectAssetDownloadManager))}downloadAvatarFigure(t,e){this._avatarAssetDownloadManager&&this._avatarAssetDownloadManager.downloadAvatarFigure(t,e)}validateAvatarFigure(t,e){let s=!1;const r=this._structure.getMandatorySetTypeIds(e,2);if(r){const n=this._structure.figureData;for(const a of r)if(t.hasPartType(a)){const o=n.getSetType(a);if(o&&!o.getPartSet(t.getPartSetId(a))){const l=this._structure.getDefaultPartSet(a,e);l&&(t.updatePart(a,l.id,[0]),s=!0)}}else{const o=this._structure.getDefaultPartSet(a,e);o&&(t.updatePart(a,o.id,[0]),s=!0)}}return!s}getFigureClubLevel(t,e,s=null){if(!this._structure)return 0;const r=this._structure.figureData,n=Array.from(t.getPartTypeIds());let a=0;for(const o of n){const u=r.getSetType(o);if(!u)continue;const l=t.getPartSetId(o),c=u.getPartSet(l);if(c){a=Math.max(c.clubLevel,a);const h=r.getPalette(u.paletteID),_=t.getPartColorIds(o);for(const d of _){const f=h.getColor(d);f&&(a=Math.max(f.clubLevel,a))}}}s||(s=this._structure.getBodyPartsUnordered(as.FULL));for(const o of s){const u=r.getSetType(o);u&&n.indexOf(o)===-1&&(a=Math.max(u.optionalFromClubLevel(e),a))}return a}isValidFigureSetForGender(t,e){const r=this.structureData.getFigurePartSet(t);return!!(r&&(r.gender.toUpperCase()==="U"||r.gender.toUpperCase()===e.toUpperCase()))}getFigureStringWithFigureIds(t,e,s){const r=new td;r.loadAvatarData(t,e);const n=this.resolveFigureSets(s);for(const a of n)r.savePartData(a.type,a.id,r.getColourIds(a.type));return r.getFigureString()}resolveFigureSets(t){const e=this.structureData,s=[];for(const r of t){const n=e.getFigurePartSet(r);n&&s.push(n)}return s}getMandatoryAvatarPartSetIds(t,e){return this._structure?this._structure.getMandatorySetTypeIds(t,e):null}getAssetByName(t){return this._aliasCollection.getAsset(t)}get assets(){return Rt()}get structure(){return this._structure}get structureData(){return this._structure?this._structure.figureData:null}get downloadManager(){return this._avatarAssetDownloadManager}};Lp.DEFAULT_FIGURE="hd-99999-99999";let ed=Lp;const Nrt=new ed,II=()=>Nrt;class ob{constructor(t,e=-1,s=null,r=null,n=null){this._minLevel=-1,this._texture=null,this._colorMatrix=null,this._blendMode=null,this._name=t,this._minLevel=e,this._texture=s,this._colorMatrix=r,this._blendMode=n}get name(){return this._name}get texture(){return this._texture}set texture(t){this._texture=t}get colorMatrix(){return this._colorMatrix}set colorMatrix(t){this._colorMatrix=t}get blendMode(){return this._blendMode}set blendMode(t){this._blendMode=t}get minLevel(){return this._minLevel}}class ub{constructor(){this._effects=new Map,this._isLoaded=!1}async init(){if(this._isLoaded)return;this._isLoaded=!0;const t=vt().getValue("image.library.url")+"Habbo-Stories/",e=vt().getValue("camera.available.effects");for(const s of e){if(!s.enabled)continue;const r=new ob(s.name,s.minLevel);if(s.colorMatrix.length)r.colorMatrix=s.colorMatrix;else{const n=`${t}${s.name}.png`;await Rt().downloadAsset(n),r.texture=Rt().getTexture(n),r.blendMode=s.blendMode}this._effects.set(r.name,r)}M().dispatchEvent(new ch(ch.INITIALIZED))}async applyEffects(t,e,s){const r=new $t,n=new wt(t);r.addChild(n),s&&n.scale.set(2);const a=[],o=(u,l,c)=>{const h=new ju;{const _=[],d=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0];for(let f=0;f<u.length;f++)_.push(u[f]*c+d[f]*(1-c));h.matrix=_}return h};for(const u of e){const l=u.effect;if(l)if(l.colorMatrix){const c=o(l.colorMatrix,!1,u.strength);a.push(c)}else{const c=new wt(l.texture);c.alpha=u.strength,c.blendMode=l.blendMode,r.addChild(c)}}return r.filters=a,await ue.generateImage(n)}get effects(){return this._effects}get isLoaded(){return this._isLoaded}}const Urt=new ub,Drt=()=>Urt;class Lrt{constructor(t,e){this._effect=t,this._strength=e}get effect(){return this._effect}get strength(){return this._strength}}class lb{constructor(){this._messageIdByEvent=new Map,this._messageIdByComposer=new Map,this._messageInstancesById=new Map}dispose(){this._messageIdByEvent.clear(),this._messageIdByComposer.clear(),this._messageInstancesById.clear()}registerMessages(t){for(const[e,s]of t.events)this.registerMessageEventClass(e,s);for(const[e,s]of t.composers)this.registerMessageComposerClass(e,s)}registerMessageEventClass(t,e){!t||!e||this._messageIdByEvent.set(e,t)}registerMessageComposerClass(t,e){!t||!e||this._messageIdByComposer.set(e,t)}registerMessageEvent(t){if(!t)return;const e=this.getEventId(t);if(!e)return;let s=this._messageInstancesById.get(e);(!s||!s.length)&&(s=[],this._messageInstancesById.set(e,s)),s.push(t)}removeMessageEvent(t){if(!t)return;const e=this.getEventId(t);if(!e)return;const s=this._messageInstancesById.get(e);if(s){for(const[r,n]of s.entries())if(n&&n===t){s.splice(r,1),s.length===0&&this._messageInstancesById.delete(e),n.dispose();return}}}getEvents(t){if(!t)return;const e=this._messageInstancesById.get(t);if(e)return e}getEventId(t){if(!t)return-1;const e=t instanceof R?t.constructor:t,s=this._messageIdByEvent.get(e);return s||-1}getComposerId(t){if(!t)return-1;const e=this._messageIdByComposer.get(t.constructor);return e||-1}}const E=class E{};E.AREA_HIDE=6001,E.ACHIEVEMENT_LIST=305,E.AUTHENTICATED=2491,E.AUTHENTICATION=-1,E.AVAILABILITY_STATUS=2033,E.BUILDERS_CLUB_EXPIRED=1452,E.CLUB_OFFERS=2405,E.CATALOG_PAGE=804,E.CATALOG_PAGE_LIST=1032,E.CATALOG_PURCHASE_OK=869,E.CATALOG_PURCHASE_ERROR=1404,E.CATALOG_PURCHASE_NOT_ALLOWED=3770,E.PRODUCT_OFFER=3388,E.LIMITED_SOLD_OUT=377,E.CATALOG_PUBLISHED=1866,E.CFH_RESULT_MESSAGE=3635,E.CLIENT_LATENCY=10,E.CLIENT_PING=3928,E.DESKTOP_CAMPAIGN=1745,E.DESKTOP_NEWS=286,E.DESKTOP_VIEW=122,E.BUNDLE_DISCOUNT_RULESET=2347,E.FIRST_LOGIN_OF_DAY=793,E.FURNITURE_ALIASES=1723,E.FURNITURE_DATA=2547,E.FURNITURE_FLOOR=1778,E.FURNITURE_FLOOR_ADD=1534,E.FURNITURE_FLOOR_REMOVE=2703,E.FURNITURE_FLOOR_UPDATE=3776,E.FURNITURE_ITEMDATA=2202,E.FURNITURE_STATE=2376,E.FURNITURE_GROUP_CONTEXT_MENU_INFO=3293,E.FURNITURE_POSTIT_STICKY_POLE_OPEN=2366,E.GAME_CENTER_ACHIEVEMENTS=2265,E.GAME_CENTER_GAME_LIST=222,E.GAME_CENTER_STATUS=2893,E.GAME_CENTER_IN_ARENA_QUEUE=872,E.GAME_CENTER_STOP_COUNTER=3191,E.GAME_CENTER_USER_LEFT_GAME=3138,E.GAME_CENTER_DIRECTORY_STATUS=2246,E.GAME_CENTER_STARTING_GAME_FAILED=2142,E.GAME_CENTER_JOINING_FAILED=1730,E.GAMESTATUSMESSAGE=3805,E.GAMEACHIEVEMENTS=1689,E.GAMEINVITE=904,E.JOININGQUEUEFAILED=3035,E.JOINEDQUEUEMESSAGE=2260,E.LEFTQUEUE=1477,E.LOAD_GAME_URL=2624,E.LOADGAME=3654,E.UNLOADGAME=1715,E.ACHIEVEMENTRESOLUTIONCOMPLETED=740,E.ACHIEVEMENTRESOLUTIONPROGRESS=3370,E.ACHIEVEMENTRESOLUTIONS=66,E.GENERIC_ALERT=3801,E.MODERATOR_MESSAGE=2030,E.GENERIC_ERROR=1600,E.GIFT_WRAPPER_CONFIG=2234,E.GROUP_BADGES=2402,E.GROUP_CREATE_OPTIONS=2159,E.GROUP_FORUM_DATA=3011,E.GROUP_FORUM_LIST=3001,E.GROUP_FORUM_THREADS=1073,E.GROUP_FORUM_POST=2049,E.GROUP_FORUM_POST_THREAD=1862,E.GROUP_FORUM_THREAD_MESSAGES=509,E.GROUP_FORUM_UNREAD_COUNT=2379,E.GROUP_FORUM_UPDATE_MESSAGE=324,E.GROUP_FORUM_UPDATE_THREAD=2528,E.GROUP_INFO=1702,E.GROUP_LIST=420,E.GROUP_MEMBER=265,E.GROUP_MEMBERS=1200,E.GROUP_MEMBERS_REFRESH=2445,E.GROUP_MEMBER_REMOVE_CONFIRM=1876,E.GROUP_PURCHASED=2808,E.GROUP_SETTINGS=3965,E.GROUP_BADGE_PARTS=2238,E.GROUP_MEMBERSHIP_REQUESTED=1180,E.GROUP_DETAILS_CHANGED=1459,E.GROUP_HABBO_JOIN_FAILED=762,E.GUILD_EDIT_FAILED=3988,E.GUILD_MEMBER_MGMT_FAILED=818,E.ITEM_DIMMER_SETTINGS=2710,E.ITEM_STACK_HELPER=2816,E.ITEM_WALL=1369,E.ITEM_WALL_ADD=2187,E.ITEM_WALL_REMOVE=3208,E.ITEM_WALL_UPDATE=2009,E.MARKETPLACE_CONFIG=1823,E.MESSENGER_ACCEPT_FRIENDS=896,E.MESSENGER_CHAT=1587,E.MESSENGER_FIND_FRIENDS=1210,E.MESSENGER_FOLLOW_FAILED=3048,E.MESSENGER_FRIEND_NOTIFICATION=3082,E.MESSENGER_FRIENDS=3130,E.MESSENGER_INIT=1605,E.MESSENGER_INSTANCE_MESSAGE_ERROR=3359,E.MESSENGER_INVITE=3870,E.MESSENGER_INVITE_ERROR=462,E.MESSENGER_MESSAGE_ERROR=892,E.MESSENGER_MINIMAIL_COUNT=2803,E.MESSENGER_MINIMAIL_NEW=1911,E.MESSENGER_RELATIONSHIPS=2016,E.MESSENGER_REQUEST=2219,E.MESSENGER_REQUEST_ERROR=892,E.MESSENGER_REQUESTS=280,E.MESSENGER_SEARCH=973,E.MESSENGER_UPDATE=2800,E.MODERATION_REPORT_DISABLED=1651,E.MODERATION_TOOL=2696,E.MODERATION_USER_INFO=2866,E.MOTD_MESSAGES=2035,E.NAVIGATOR_CATEGORIES=1562,E.NAVIGATOR_COLLAPSED=1543,E.NAVIGATOR_EVENT_CATEGORIES=3244,E.NAVIGATOR_LIFTED=3104,E.NAVIGATOR_METADATA=3052,E.NAVIGATOR_OPEN_ROOM_CREATOR=2064,E.NAVIGATOR_SEARCH=2690,E.NAVIGATOR_SEARCHES=3984,E.NAVIGATOR_SETTINGS=518,E.THUMBNAIL_UPDATE_RESULT=1927,E.CAN_CREATE_ROOM=378,E.CATEGORIES_WITH_VISITOR_COUNT=1455,E.COMPETITION_ROOMS_DATA=3954,E.CONVERTED_ROOM_ID=1331,E.GUEST_ROOM_SEARCH_RESULT=52,E.NOTIFICATION_LIST=1992,E.NOTIFICATION_OFFER_REWARD_DELIVERED=2125,E.NOTIFICATION_SIMPLE_ALERT=5100,E.NOTIFICATION_ELEMENT_POINTER=1787,E.PET_FIGURE_UPDATE=1924,E.PET_INFO=2901,E.PET_TRAINING_PANEL=1164,E.PET_LEVEL_UPDATE=2824,E.PET_SCRATCH_FAILED=1130,E.PET_OPEN_PACKAGE_REQUESTED=2380,E.PET_OPEN_PACKAGE_RESULT=546,E.PET_BREEDING=1746,E.PET_CONFIRM_BREEDING_RESULT=1625,E.PET_GO_TO_BREEDING_NEST_FAILURE=2621,E.PET_NEST_BREEDING_SUCCESS=2527,E.PET_CONFIRM_BREEDING_REQUEST=634,E.PET_BREEDING_RESULT=1553,E.RECYCLER_PRIZES=3164,E.RECYCLER_STATUS=3433,E.RECYCLER_FINISHED=468,E.ROOM_BAN_LIST=1869,E.ROOM_BAN_REMOVE=3429,E.ROOM_CREATED=1304,E.ROOM_DOORBELL=2309,E.ROOM_DOORBELL_ACCEPTED=3783,E.ROOM_DOORBELL_REJECTED=878,E.ROOM_ENTER=758,E.ROOM_ENTER_ERROR=899,E.ROOM_FORWARD=160,E.ROOM_HEIGHT_MAP=2753,E.ROOM_HEIGHT_MAP_UPDATE=558,E.ROOM_INFO=687,E.ROOM_INFO_OWNER=749,E.ROOM_MODEL=1301,E.ROOM_MODEL_BLOCKED_TILES=3990,E.ROOM_MODEL_DOOR=1664,E.ROOM_MODEL_NAME=2031,E.ROOM_MUTED=2533,E.ROOM_MUTE_USER=826,E.ROOM_PAINT=2454,E.ROOM_PROMOTION=2274,E.ROOM_QUEUE_STATUS=2208,E.ROOM_RIGHTS=780,E.ROOM_RIGHTS_CLEAR=2392,E.ROOM_RIGHTS_LIST=1284,E.ROOM_RIGHTS_LIST_ADD=2088,E.ROOM_RIGHTS_LIST_REMOVE=1327,E.ROOM_RIGHTS_OWNER=339,E.ROOM_ROLLING=3207,E.ROOM_SCORE=482,E.ROOM_SETTINGS=1498,E.ROOM_SETTINGS_CHAT=1191,E.ROOM_SETTINGS_SAVE=948,E.ROOM_SETTINGS_SAVE_ERROR=1555,E.ROOM_INFO_UPDATED=3297,E.ROOM_SPECTATOR=1033,E.ROOM_THICKNESS=3547,E.ROOM_GET_FILTER_WORDS=2937,E.ROOM_MESSAGE_NOTIFICATION=1634,E.ROOM_POPULAR_TAGS_RESULT=2012,E.INFO_FEED_ENABLE=3284,E.SECURITY_MACHINE=1488,E.MYSTERY_BOX_KEYS=2833,E.GOTMYSTERYBOXPRIZEMESSAGE=3712,E.CANCELMYSTERYBOXWAITMESSAGE=596,E.SHOWMYSTERYBOXWAITMESSAGE=3201,E.TRADE_ACCEPTED=2568,E.TRADE_CLOSED=1373,E.TRADE_COMPLETED=1001,E.TRADE_CONFIRMATION=2720,E.TRADE_LIST_ITEM=2024,E.TRADE_NOT_OPEN=3128,E.TRADE_OPEN=2505,E.TRADE_OPEN_FAILED=217,E.TRADE_OTHER_NOT_ALLOWED=1254,E.TRADE_YOU_NOT_ALLOWED=3058,E.TRADE_NO_SUCH_ITEM=2873,E.UNIT=374,E.UNIT_CHANGE_NAME=2182,E.UNIT_CHAT=1446,E.UNIT_CHAT_SHOUT=1036,E.UNIT_CHAT_WHISPER=2704,E.UNIT_DANCE=2233,E.UNIT_EFFECT=1167,E.UNIT_EXPRESSION=1631,E.UNIT_HAND_ITEM=1474,E.UNIT_IDLE=1797,E.UNIT_INFO=3920,E.UNIT_NUMBER=2324,E.UNIT_REMOVE=2661,E.UNIT_STATUS=1640,E.UNIT_TYPING=1717,E.UNSEEN_ITEMS=2103,E.USER_ACHIEVEMENT_SCORE=1968,E.USER_BADGES=717,E.USER_BADGES_ADD=2493,E.USER_BADGES_CURRENT=1087,E.USER_BOT_REMOVE=233,E.USER_BOTS=3086,E.USER_CHANGE_NAME=118,E.USER_CLOTHING=1450,E.USER_CREDITS=3475,E.USER_CURRENCY=2018,E.ACTIVITY_POINT_NOTIFICATION=2275,E.USER_EFFECTS=340,E.USER_FAVORITE_ROOM=2524,E.USER_FAVORITE_ROOM_COUNT=151,E.USER_FIGURE=2429,E.USER_FURNITURE=994,E.USER_FURNITURE_ADD=104,E.USER_FURNITURE_POSTIT_PLACED=1501,E.USER_FURNITURE_REFRESH=3151,E.USER_FURNITURE_REMOVE=159,E.USER_HOME_ROOM=2875,E.ROOM_EVENT_CANCEL=3479,E.ROOM_EVENT=1840,E.USER_IGNORED=126,E.USER_IGNORED_RESULT=207,E.USER_INFO=2725,E.USER_OUTFITS=3315,E.USER_PERKS=2586,E.USER_PERMISSIONS=411,E.USER_PET_ADD=2101,E.USER_PET_REMOVE=3253,E.USER_PETS=3522,E.USER_PROFILE=3898,E.USER_RESPECT=2815,E.USER_SANCTION_STATUS=3679,E.USER_SETTINGS=513,E.USER_SUBSCRIPTION=954,E.USER_WARDROBE_PAGE=3315,E.USER_CLASSIFICATION=966,E.GET_USER_TAGS=1255,E.WIRED_ACTION=1434,E.WIRED_CONDITION=1108,E.WIRED_ERROR=156,E.WIRED_OPEN=1830,E.WIRED_REWARD=178,E.WIRED_SAVE=1155,E.WIRED_TRIGGER=383,E.PLAYING_GAME=448,E.FURNITURE_STATE_2=3431,E.REMOVE_BOT_FROM_INVENTORY=233,E.ADD_BOT_TO_INVENTORY=1352,E.ACHIEVEMENT_PROGRESSED=2107,E.MODTOOL_ROOM_INFO=1333,E.MODTOOL_USER_CHATLOG=3377,E.MODTOOL_ROOM_CHATLOG=3434,E.MODTOOL_VISITED_ROOMS_USER=1752,E.MODERATOR_ACTION_RESULT=2335,E.ISSUE_DELETED=3192,E.ISSUE_INFO=3609,E.ISSUE_PICK_FAILED=3150,E.CFH_CHATLOG=607,E.MODERATOR_TOOL_PREFERENCES=1576,E.LOVELOCK_FURNI_START=3753,E.LOVELOCK_FURNI_FRIEND_COMFIRMED=382,E.LOVELOCK_FURNI_FINISHED=770,E.GIFT_RECEIVER_NOT_FOUND=1517,E.GIFT_OPENED=56,E.FLOOD_CONTROL=566,E.REMAINING_MUTE=826,E.USER_EFFECT_LIST=340,E.USER_EFFECT_LIST_ADD=2867,E.USER_EFFECT_LIST_REMOVE=2228,E.USER_EFFECT_ACTIVATE=1959,E.AVATAR_EFFECT_SELECTED=3473,E.CLUB_GIFT_INFO=619,E.REDEEM_VOUCHER_ERROR=714,E.REDEEM_VOUCHER_OK=3336,E.IN_CLIENT_LINK=2023,E.BOT_COMMAND_CONFIGURATION=1618,E.BOT_SKILL_LIST_UPDATE=69,E.BOT_FORCE_OPEN_CONTEXT_MENU=296,E.HAND_ITEM_RECEIVED=354,E.PET_PLACING_ERROR=2913,E.BOT_ERROR=639,E.MARKETPLACE_SELL_ITEM=54,E.MARKETPLACE_ITEM_STATS=725,E.MARKETPLACE_OWN_ITEMS=3884,E.MARKETPLACE_CANCEL_SALE=3264,E.MARKETPLACE_ITEM_POSTED=1359,E.MARKETPLACE_ITEMS_SEARCHED=680,E.MARKETPLACE_AFTER_ORDER_STATUS=2032,E.CATALOG_RECEIVE_PET_BREEDS=3331,E.CATALOG_APPROVE_NAME_RESULT=1503,E.OBJECTS_DATA_UPDATE=1453,E.PET_EXPERIENCE=2156,E.COMMUNITY_GOAL_VOTE_EVENT=1435,E.PROMO_ARTICLES=286,E.COMMUNITY_GOAL_EARNED_PRIZES=3319,E.COMMUNITY_GOAL_PROGRESS=2525,E.CONCURRENT_USERS_GOAL_PROGRESS=2737,E.QUEST_DAILY=1878,E.QUEST_CANCELLED=3027,E.QUEST_COMPLETED=949,E.COMMUNITY_GOAL_HALL_OF_FAME=3005,E.EPIC_POPUP=3945,E.SEASONAL_QUESTS=1122,E.QUESTS=3625,E.QUEST=230,E.BONUS_RARE_INFO=1533,E.CRAFTABLE_PRODUCTS=1e3,E.CRAFTING_RECIPE=2774,E.CRAFTING_RECIPES_AVAILABLE=2124,E.CRAFTING_RESULT=618,E.CAMERA_PUBLISH_STATUS=2057,E.CAMERA_PURCHASE_OK=2783,E.CAMERA_STORAGE_URL=3696,E.CAMERA_SNAPSHOT=463,E.COMPETITION_STATUS=133,E.INIT_CAMERA=3878,E.THUMBNAIL_STATUS=3595,E.ACHIEVEMENT_NOTIFICATION=806,E.CLUB_GIFT_NOTIFICATION=2188,E.INTERSTITIAL_MESSAGE=1808,E.ROOM_AD_ERROR=1759,E.AVAILABILITY_TIME=600,E.HOTEL_CLOSED_AND_OPENS=3728,E.HOTEL_CLOSES_AND_OPENS_AT=2771,E.HOTEL_WILL_CLOSE_MINUTES=1050,E.HOTEL_MAINTENANCE=1350,E.JUKEBOX_PLAYLIST_FULL=105,E.JUKEBOX_SONG_DISKS=34,E.NOW_PLAYING=469,E.OFFICIAL_SONG_ID=1381,E.PLAYLIST=1748,E.PLAYLIST_SONG_ADDED=1140,E.TRAX_SONG_INFO=3365,E.USER_SONG_DISKS_INVENTORY=2602,E.CHECK_USER_NAME=563,E.CFH_SANCTION=2782,E.CFH_TOPICS=325,E.CFH_SANCTION_STATUS=2221,E.CAMPAIGN_CALENDAR_DATA=2531,E.CAMPAIGN_CALENDAR_DOOR_OPENED=2551,E.BUILDERS_CLUB_FURNI_COUNT=3828,E.BUILDERS_CLUB_SUBSCRIPTION=1452,E.CATALOG_PAGE_EXPIRATION=2668,E.CATALOG_EARLIEST_EXPIRY=2515,E.CLUB_GIFT_SELECTED=659,E.TARGET_OFFER_NOT_FOUND=1237,E.TARGET_OFFER=119,E.DIRECT_SMS_CLUB_BUY=195,E.ROOM_AD_PURCHASE=2468,E.NOT_ENOUGH_BALANCE=3914,E.LIMITED_OFFER_APPEARING_NEXT=44,E.IS_OFFER_GIFTABLE=761,E.CLUB_EXTENDED_OFFER=3964,E.SEASONAL_CALENDAR_OFFER=1889,E.COMPETITION_ENTRY_SUBMIT=1177,E.COMPETITION_VOTING_INFO=3506,E.COMPETITION_TIMING_CODE=1745,E.COMPETITION_USER_PART_OF=3841,E.COMPETITION_NO_OWNED_ROOMS=2064,E.COMPETITION_SECONDS_UNTIL=3926,E.BADGE_POINT_LIMITS=2501,E.BADGE_REQUEST_FULFILLED=2998,E.HELPER_TALENT_TRACK=3406,E.TALENT_TRACK_LEVEL=1203,E.TALENT_TRACK_LEVEL_UP=638,E.USER_BANNED=1683,E.BOT_RECEIVED=3684,E.PET_LEVEL_NOTIFICATION=859,E.PET_RECEIVED=1111,E.MODERATION_CAUTION=1890,E.YOUTUBE_CONTROL_VIDEO=1554,E.YOUTUBE_DISPLAY_PLAYLISTS=1112,E.YOUTUBE_DISPLAY_VIDEO=1411,E.CFH_DISABLED_NOTIFY=1651,E.QUESTION=2665,E.POLL_CONTENTS=2997,E.POLL_ERROR=662,E.POLL_OFFER=3785,E.POLL_ROOM_RESULT=5201,E.POLL_START_ROOM=5200,E.QUESTION_ANSWERED=2589,E.QUESTION_FINISHED=1066,E.CFH_PENDING_CALLS=1121,E.GUIDE_ON_DUTY_STATUS=1548,E.GUIDE_SESSION_ATTACHED=1591,E.GUIDE_SESSION_DETACHED=138,E.GUIDE_SESSION_ENDED=1456,E.GUIDE_SESSION_ERROR=673,E.GUIDE_SESSION_INVITED_TO_GUIDE_ROOM=219,E.GUIDE_SESSION_MESSAGE=841,E.GUIDE_SESSION_PARTNER_IS_TYPING=1016,E.GUIDE_SESSION_REQUESTER_ROOM=1847,E.GUIDE_SESSION_STARTED=3209,E.GUIDE_TICKET_CREATION_RESULT=3285,E.GUIDE_TICKET_RESOLUTION=2674,E.GUIDE_REPORTING_STATUS=3463,E.HOTEL_MERGE_NAME_CHANGE=1663,E.ISSUE_CLOSE_NOTIFICATION=934,E.QUIZ_DATA=2927,E.QUIZ_RESULTS=2772,E.CFH_PENDING_CALLS_DELETED=77,E.CFH_REPLY=3796,E.CHAT_REVIEW_SESSION_DETACHED=30,E.CHAT_REVIEW_SESSION_OFFERED_TO_GUIDE=735,E.CHAT_REVIEW_SESSION_RESULTS=3276,E.CHAT_REVIEW_SESSION_STARTED=143,E.CHAT_REVIEW_SESSION_VOTING_STATUS=1829,E.SCR_SEND_KICKBACK_INFO=3277,E.PET_STATUS=1907,E.GROUP_DEACTIVATE=3129,E.PET_RESPECTED=2788,E.PET_SUPPLEMENT=3441,E.NOOBNESS_LEVEL=3738,E.DISCONNECT_REASON=4e3,E.CAN_CREATE_ROOM_EVENT=2599,E.FAVORITE_GROUP_UDPATE=3403,E.NO_SUCH_FLAT=84,E.ROOM_SETTINGS_ERROR=2897,E.SHOW_ENFORCE_ROOM_CATEGORY=3896,E.CUSTOM_USER_NOTIFICATION=909,E.NEW_USER_EXPERIENCE_GIFT_OFFER=3575,E.RESTORE_CLIENT=426,E.FIREWORK_CHARGE_DATA=5210,E.NEW_USER_EXPERIENCE_NOT_COMPLETE=3639,E.CONNECTION_ERROR=1004,E.ACCOUNT_SAFETY_LOCK_STATUS_CHANGE=1243,E.PHONE_COLLECTION_STATE=2890,E.PHONE_TRY_NUMBER_RESULT=800,E.PHONE_TRY_VERIFICATION_CODE_RESULT=91,E.EXTENDED_PROFILE_CHANGED=876,E.WELCOME_GIFT_CHANGE_EMAIL_RESULT=2293,E.WELCOME_GIFT_STATUS=2707,E.HANDSHAKE_INIT_DIFFIE=1347,E.HANDSHAKE_COMPLETE_DIFFIE=3885,E.RENTABLE_SPACE_RENT_OK=2046,E.RENTABLE_SPACE_STATUS=3559,E.RENTABLE_SPACE_RENT_FAILED=1868,E.EMAIL_STATUS=612,E.CHANGE_EMAIL_RESULT=1815,E.WEEKLY_GAME_REWARD=2641,E.WEEKLY_GAME_REWARD_WINNERS=3097,E.WEEKLY_COMPETITIVE_LEADERBOARD=3512,E.WEEKLY_COMPETITIVE_FRIENDS_LEADERBOARD=3560,E.WEEKLY_GAME2_FRIENDS_LEADERBOARD=2270,E.WEEKLY_GAME2_LEADERBOARD=2196,E.RENTABLE_FURNI_RENT_OR_BUYOUT_OFFER=35,E.HANDSHAKE_IDENTITY_ACCOUNT=3523;let A=E;class hb{flush(){return this._canShowInterstitial=!1,!0}parse(t){return t?(this._canShowInterstitial=t.readBoolean(),!0):!1}get canShowInterstitial(){return this._canShowInterstitial}}class cb{flush(){return this._errorCode=0,this._filteredText=null,!0}parse(t){return t?(this._errorCode=t.readInt(),this._filteredText=t.readString(),!0):!1}get errorCode(){return this._errorCode}get filteredText(){return this._filteredText}}class _b{flush(){return this._isOpen=!1,this._onShutdown=!1,this._isAuthenticUser=!1,!0}parse(t){return t?(this._isOpen=t.readBoolean(),this._onShutdown=t.readBoolean(),t.bytesAvailable&&(this._isAuthenticUser=t.readBoolean()),!0):!1}get isOpen(){return this._isOpen}get onShutdown(){return this._onShutdown}get isAuthenticUser(){return this._isAuthenticUser}}class db{flush(){return this._isOpen=!1,this._minutesUntilChange=0,!0}parse(t){return t?(this._isOpen=t.readInt()>0,this._minutesUntilChange=t.readInt(),!0):!1}get isOpen(){return this._isOpen}get minutesUntilChange(){return this._minutesUntilChange}}class fb{flush(){return this._openHour=0,this._openMinute=0,!0}parse(t){return t?(this._openHour=t.readInt(),this._openMinute=t.readInt(),!0):!1}get openHour(){return this._openHour}get openMinute(){return this._openMinute}}class gb{flush(){return this._openHour=0,this._openMinute=0,this._userThrownOutAtClose=!1,!0}parse(t){return t?(this._openHour=t.readInt(),this._openMinute=t.readInt(),this._userThrownOutAtClose=t.readBoolean(),!0):!1}get openHour(){return this._openHour}get openMinute(){return this._openMinute}get userThrowOutAtClose(){return this._userThrownOutAtClose}}class pb{flush(){return this._minutes=0,!0}parse(t){return t?(this._minutes=t.readInt(),!0):!1}get openMinute(){return this._minutes}}class mb{flush(){return this._isInMaintenance=!1,this._minutesUntilMaintenance=0,this._duration=15,!0}parse(t){return t?(this._isInMaintenance=t.readBoolean(),this._minutesUntilMaintenance=t.readInt(),t.bytesAvailable&&(this._duration=t.readInt()),!0):!1}get isInMaintenance(){return this._isInMaintenance}get minutesUntilMaintenance(){return this._minutesUntilMaintenance}get duration(){return this._duration}}class Eb{flush(){return this._resultCode=-1,this._name="",this._nameSuggestions=[],!0}parse(t){if(!t)return!1;this._resultCode=t.readInt(),this._name=t.readString();let e=t.readInt();for(;e>0;)this._nameSuggestions.push(t.readString()),e--;return!0}get resultCode(){return this._resultCode}get name(){return this._name}get nameSuggestions(){return this._nameSuggestions}}class Tb{flush(){return this._resultCode=-1,this._name="",this._nameSuggestions=[],!0}parse(t){if(!t)return!1;this._resultCode=t.readInt(),this._name=t.readString();let e=t.readInt();for(;e>0;)this._nameSuggestions.push(t.readString()),e--;return!0}get resultCode(){return this._resultCode}get name(){return this._name}get nameSuggestions(){return this._nameSuggestions}}class Ib{flush(){return this._figure="",this._gender="",!0}parse(t){return t?(this._figure=t.readString(),this._gender=t.readString(),this._gender&&(this._gender=this._gender.toUpperCase()),!0):!1}get figure(){return this._figure}get gender(){return this._gender}}class Sb{constructor(t){this._slotId=t.readInt(),this._figureString=t.readString(),this._gender=t.readString()}get slotId(){return this._slotId}get figureString(){return this._figureString}get gender(){return this._gender}}class Rb{flush(){return this._state=0,this._outfits=[],!0}parse(t){if(!t)return!1;this._state=t.readInt();let e=t.readInt();for(;e>0;)this._outfits.push(new Sb(t)),e--;return!0}get state(){return this._state}get outfits(){return this._outfits}}class Lm{constructor(t){if(!t)throw new Error("invalid_parser");this._id=t.readInt(),this._name=t.readString(),this._motto=t.readString(),this._gender=t.readString(),this._figure=t.readString()}get id(){return this._id}get name(){return this._name}get motto(){return this._motto}get figure(){return this._figure}get gender(){return this._gender}}class Ab{flush(){return this._item=null,this._openInventory=!1,!0}parse(t){return t?(this._item=new Lm(t),this._openInventory=t.readBoolean(),!0):!1}get item(){return this._item}openInventory(){return this._openInventory}}class Ob{flush(){return this._items=null,!0}parse(t){this._items=new Map;let e=t.readInt();for(;e>0;){const s=new Lm(t);this._items.set(s.id,s),e--}return!0}get items(){return this._items}}class yb{flush(){return this._boughtAsGift=!1,this._item=null,!0}parse(t){return t?(this._boughtAsGift=t.readBoolean(),this._item=new Lm(t),!0):!1}get boughtAsGift(){return this._boughtAsGift}get item(){return this._item}}class vb{flush(){return this._itemId=0,!0}parse(t){return t?(this._itemId=t.readInt(),!0):!1}get itemId(){return this._itemId}}class Cb{constructor(t){this._name=t.readString(),this._id=t.readInt(),this._consequence=t.readString()}get name(){return this._name}get id(){return this._id}get consequence(){return this._consequence}}class Mb{constructor(t){this._topics=[],this._name=t.readString();let e=t.readInt();for(;e>0;)this._topics.push(new Cb(t)),e--}dispose(){this._disposed||(this._disposed=!0,this._topics=null)}get disposed(){return this._disposed}get name(){return this._name}get topics(){return this._topics}}class xb{constructor(t){this._tradeLockInfo="",this._machineBanInfo="",this._name=t.readString(),this._sanctionLengthInHours=t.readInt(),this._probationDays=t.readInt(),this._avatarOnly=t.readBoolean(),t.bytesAvailable&&(this._tradeLockInfo=t.readString()),t.bytesAvailable&&(this._machineBanInfo=t.readString())}get name(){return this._name}get sanctionLengthInHours(){return this._sanctionLengthInHours}get avatarOnly(){return this._avatarOnly}get tradeLockInfo(){return this._tradeLockInfo}get machineBanInfo(){return this._machineBanInfo}}class Pb{flush(){return this._issueId=-1,this._accountId=1,this._sanctionType=null,!0}parse(t){return t?(this._issueId=t.readInt(),this._accountId=t.readInt(),this._sanctionType=new xb(t),!0):!1}get issueId(){return this._issueId}get accountId(){return this._accountId}get sanctionType(){return this._sanctionType}}class bb{flush(){return this._callForHelpCategories=null,!0}parse(t){if(!t)return!1;this._callForHelpCategories=[];let e=t.readInt();for(;e>0;)this._callForHelpCategories.push(new Mb(t)),e--;return!0}get callForHelpCategories(){return this._callForHelpCategories}}class Nb{flush(){return this._isSanctionNew=!1,this._isSanctionActive=!1,this._sanctionName=null,this._sanctionLengthHours=0,this._sanctionReason=null,this._sanctionCreationTime=null,this._probationHoursLeft=0,this._nextSanctionName=null,this._nextSanctionLengthHours=0,this._hasCustomMute=!1,this._tradeLockExpiryTime=null,!0}parse(t){return t?(this._isSanctionNew=t.readBoolean(),this._isSanctionActive=t.readBoolean(),this._sanctionName=t.readString(),this._sanctionLengthHours=t.readInt(),t.readInt(),this._sanctionReason=t.readString(),this._sanctionCreationTime=t.readString(),this._probationHoursLeft=t.readInt(),this._nextSanctionName=t.readString(),this._nextSanctionLengthHours=t.readInt(),t.readInt(),this._hasCustomMute=t.readBoolean(),t.bytesAvailable&&(this._tradeLockExpiryTime=t.readString()),!0):!1}get isSanctionNew(){return this._isSanctionNew}get isSanctionActive(){return this._isSanctionActive}get sanctionName(){return this._sanctionName}get sanctionLengthHours(){return this._sanctionLengthHours}get sanctionReason(){return this._sanctionReason}get sanctionCreationTime(){return this._sanctionCreationTime}get probationHoursLeft(){return this._probationHoursLeft}get nextSanctionName(){return this._nextSanctionName}get nextSanctionLengthHours(){return this._nextSanctionLengthHours}get hasCustomMute(){return this._hasCustomMute}get tradeLockExpiryTime(){return this._tradeLockExpiryTime}}class Ub{constructor(){this._ok=!1,this._secondsToWait=0}flush(){return this._ok=!1,this._secondsToWait=0,this._extraDataId=null,!0}parse(t){return t?(this._ok=t.readBoolean(),this._secondsToWait=t.readInt(),this._ok&&t.bytesAvailable&&(this._extraDataId=t.readString()),!0):!1}get ok(){return this._ok}get secondsToWait(){return this._secondsToWait}get extraDataId(){return this._extraDataId}}class Db{flush(){return!0}parse(t){return!!t}}class Lb{flush(){return this._roomType=null,this._roomId=-1,!0}parse(t){return t?(this._roomType=t.readString(),this._roomId=t.readInt(),!0):!1}get roomType(){return this._roomType}get roomId(){return this._roomId}}class Fb{flush(){return this._url="",!0}parse(t){return t?(this._url=t.readString(),!0):!1}get url(){return this._url}}class wb{constructor(){this._ok=!1,this._errorReason=null}flush(){return this._ok=!1,this._errorReason=null,!0}parse(t){return t?(this._ok=t.readBoolean(),this._errorReason=t.readString(),!0):!1}get ok(){return this._ok}get errorReason(){return this._errorReason}}class Gb{constructor(){this._creditPrice=0,this._ducketPrice=0,this._publishDucketPrice=0}flush(){return this._creditPrice=0,this._ducketPrice=0,this._publishDucketPrice=0,!0}parse(t){return t?(this._creditPrice=t.readInt(),this._ducketPrice=t.readInt(),t.bytesAvailable&&(this._publishDucketPrice=t.readInt()),!0):!1}get creditPrice(){return this._creditPrice}get ducketPrice(){return this._ducketPrice}get publishDucketPrice(){return this._publishDucketPrice}}class Bb{constructor(){this._ok=!0,this._renderLimitHit=!1}flush(){return this._ok=!0,this._renderLimitHit=!1,!0}parse(t){return t?(t.bytesAvailable&&(this._ok=t.readBoolean(),this._renderLimitHit=t.readBoolean()),!0):!1}get ok(){return this._ok}get isRenderLimitHit(){return this._renderLimitHit}}class Fm{parse(t){if(!t)return!1;this._campaignName=t.readString(),this._campaignImage=t.readString(),this._currentDay=t.readInt(),this._campaignDays=t.readInt(),this._openedDays=[];let e=t.readInt();for(let s=0;s<e;s++)this._openedDays.push(t.readInt());this._missedDays=[],e=t.readInt();for(let s=0;s<e;s++)this._missedDays.push(t.readInt());return!0}clone(){const t=new Fm;return t.campaignDays=this._campaignDays,t.campaignImage=this._campaignImage,t.campaignName=this._campaignName,t.currentDay=this._currentDay,t.missedDays=this._missedDays,t.openedDays=this._openedDays,t}get campaignName(){return this._campaignName}set campaignName(t){this._campaignName=t}get campaignImage(){return this._campaignImage}set campaignImage(t){this._campaignImage=t}get currentDay(){return this._currentDay}set currentDay(t){this._currentDay=t}get campaignDays(){return this._campaignDays}set campaignDays(t){this._campaignDays=t}get openedDays(){return this._openedDays}set openedDays(t){this._openedDays=t}get missedDays(){return this._missedDays}set missedDays(t){this._missedDays=t}}class kb{flush(){return this._calendarData=null,!0}parse(t){return t?(this._calendarData=new Fm,this._calendarData.parse(t),!0):!1}get calendarData(){return this._calendarData}}class zb{flush(){return this._doorOpened=!1,this._productName=null,this._customImage=null,this._furnitureClassName=null,!0}parse(t){return t?(this._doorOpened=t.readBoolean(),this._productName=t.readString(),this._customImage=t.readString(),this._furnitureClassName=t.readString(),!0):!1}get doorOpened(){return this._doorOpened}get productName(){return this._productName}get customImage(){return this._customImage}get furnitureClassName(){return this._furnitureClassName}}class Vb{flush(){return this._totalCoinsForBonus=-1,this._coinsStillRequiredToBuy=-1,this._productType="",this._productClassId=-1,!0}parse(t){return t?(this._productType=t.readString(),this._productClassId=t.readInt(),this._totalCoinsForBonus=t.readInt(),this._coinsStillRequiredToBuy=t.readInt(),!0):!1}get totalCoinsForBonus(){return this._totalCoinsForBonus}get coinsStillRequiredToBuy(){return this._coinsStillRequiredToBuy}get productType(){return this._productType}get productClassId(){return this._productClassId}}class Hb{flush(){return this._furniCount=0,!0}parse(t){return t?(this._furniCount=t.readInt(),!0):!1}get furniCount(){return this._furniCount}}class Yb{flush(){return this._secondsLeft=0,this._furniLimit=0,this._maxFurniLimit=0,this._secondsLeftWithGrace=0,!0}parse(t){return t?(this._secondsLeft=t.readInt(),this._furniLimit=t.readInt(),this._maxFurniLimit=t.readInt(),t.bytesAvailable?this._secondsLeftWithGrace=t.readInt():this._secondsLeftWithGrace=this._secondsLeft,!0):!1}get secondsLeft(){return this._secondsLeft}get furniLimit(){return this._furniLimit}get maxFurniLimit(){return this._maxFurniLimit}get secondsLeftWithGrace(){return this._secondsLeftWithGrace}}class Wb{constructor(t){this._maxPurchaseSize=t.readInt(),this._bundleSize=t.readInt(),this._bundleDiscountSize=t.readInt(),this._bonusThreshold=t.readInt(),this._additionalBonusDiscountThresholdQuantities=[];let e=t.readInt();for(;e>0;)this._additionalBonusDiscountThresholdQuantities.push(t.readInt()),e--}get maxPurchaseSize(){return this._maxPurchaseSize}get bundleSize(){return this._bundleSize}get bundleDiscountSize(){return this._bundleDiscountSize}get bonusThreshold(){return this._bonusThreshold}get additionalBonusDiscountThresholdQuantities(){return this._additionalBonusDiscountThresholdQuantities}}class jb{flush(){return this._bundleDiscountRuleset=null,!0}parse(t){return t?(this._bundleDiscountRuleset=new Wb(t),!0):!1}get bundleDiscountRuleset(){return this._bundleDiscountRuleset}}class wm{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._visible=!1,this._icon=0,this._pageId=-1,this._pageName=null,this._localization=null,this._children=[],this._offerIds=[],!0}parse(t){if(!t)return!1;this._visible=t.readBoolean(),this._icon=t.readInt(),this._pageId=t.readInt(),this._pageName=t.readString(),this._localization=t.readString();let e=t.readInt();for(;e>0;)this._offerIds.push(t.readInt()),e--;let s=t.readInt();for(;s>0;)this._children.push(new wm(t)),s--;return!0}get visible(){return this._visible}get icon(){return this._icon}get pageId(){return this._pageId}get pageName(){return this._pageName}get localization(){return this._localization}get children(){return this._children}get offerIds(){return this._offerIds}}class Kb{flush(){return this._root=null,!0}parse(t){return t?(this._root=new wm(t),this._newAdditionsAvailable=t.readBoolean(),this._catalogType=t.readString(),!0):!1}get root(){return this._root}get newAdditionsAvailable(){return this._newAdditionsAvailable}get catalogType(){return this._catalogType}}class Xb{constructor(t){this._images=[],this._texts=[];let e=t.readInt();for(;e>0;)this._images.push(t.readString()),e--;let s=t.readInt();for(;s>0;)this._texts.push(t.readString()),s--}get images(){return this._images}get texts(){return this._texts}}class qb{flush(){return this._pageName=null,this._pageId=0,this._secondsToExpiry=0,this._image=null,!0}parse(t){return t?(this._pageId=t.readInt(),this._pageName=t.readString(),this._secondsToExpiry=t.readInt(),this._image=t.readString(),!0):!1}get pageName(){return this._pageName}get pageId(){return this._pageId}get secondsToExpiry(){return this._secondsToExpiry}get image(){return this._image}}class rc{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._productType=null,this._furniClassId=-1,this._extraParam=null,this._productCount=0,this._uniqueLimitedItem=!1,this._uniqueLimitedItemSeriesSize=0,this._uniqueLimitedItemsLeft=0,!0}parse(t){switch(this._productType=t.readString().toUpperCase(),this._productType){case Nr.BADGE:return this._extraParam=t.readString(),this._productCount=1,!0;default:return this._furniClassId=t.readInt(),this._extraParam=t.readString(),this._productCount=t.readInt(),this._uniqueLimitedItem=t.readBoolean(),this._uniqueLimitedItem&&(this._uniqueLimitedItemSeriesSize=t.readInt(),this._uniqueLimitedItemsLeft=t.readInt()),!0}}get productType(){return this._productType}get furniClassId(){return this._furniClassId}get extraParam(){return this._extraParam}get productCount(){return this._productCount}get uniqueLimitedItem(){return this._uniqueLimitedItem}get uniqueLimitedSeriesSize(){return this._uniqueLimitedItemSeriesSize}get uniqueLimitedItemsLeft(){return this._uniqueLimitedItemsLeft}}class nc{constructor(t){this._offerId=t.readInt(),this._localizationId=t.readString(),this._rent=t.readBoolean(),this._priceCredits=t.readInt(),this._priceActivityPoints=t.readInt(),this._priceActivityPointsType=t.readInt(),this._giftable=t.readBoolean(),this._products=[];let e=t.readInt();for(;e>0;)this._products.push(new rc(t)),e--;this._clubLevel=t.readInt(),this._bundlePurchaseAllowed=t.readBoolean(),this._isPet=t.readBoolean(),this._previewImage=t.readString()}get offerId(){return this._offerId}get localizationId(){return this._localizationId}get rent(){return this._rent}get priceCredits(){return this._priceCredits}get priceActivityPoints(){return this._priceActivityPoints}get priceActivityPointsType(){return this._priceActivityPointsType}get clubLevel(){return this._clubLevel}get giftable(){return this._giftable}get bundlePurchaseAllowed(){return this._bundlePurchaseAllowed}get isPet(){return this._isPet}get previewImage(){return this._previewImage}get products(){return this._products}}const on=class on{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._type=-1,this._position=null,this._itemName=null,this._itemPromoImage=null,this._catalogPageLocation=null,this._productCode=null,this._productOfferId=0,this._expirationTime=0,!0}parse(t){if(!t)return!1;switch(this._position=t.readInt(),this._itemName=t.readString(),this._itemPromoImage=t.readString(),this._type=t.readInt(),this._type){case on.ITEM_CATALOGUE_PAGE:this._catalogPageLocation=t.readString();break;case on.ITEM_PRODUCT_OFFER:this._productOfferId=t.readInt();break;case on.ITEM_IAP:this._productCode=t.readString();break}const e=t.readInt();return this._expirationTime=e>0?e*1e3+0:0,!0}get type(){return this._type}get position(){return this._position}get itemName(){return this._itemName}get itemPromoImage(){return this._itemPromoImage}get catalogPageLocation(){return this._catalogPageLocation}get productCode(){return this._productCode}get productOfferId(){return this._productOfferId}get expirationTime(){return this._expirationTime}};on.ITEM_CATALOGUE_PAGE=0,on.ITEM_PRODUCT_OFFER=1,on.ITEM_IAP=2;let sd=on;class $b{flush(){return this._pageId=-1,this._catalogType=null,this._layoutCode=null,this._localization=null,this._offers=[],this._offerId=-1,this._acceptSeasonCurrencyAsCredits=!1,this._frontPageItems=[],!0}parse(t){if(!t)return!1;this._pageId=t.readInt(),this._catalogType=t.readString(),this._layoutCode=t.readString(),this._localization=new Xb(t);let e=t.readInt();for(;e>0;)this._offers.push(new nc(t)),e--;if(this._offerId=t.readInt(),this._acceptSeasonCurrencyAsCredits=t.readBoolean(),t.bytesAvailable){let s=t.readInt();for(;s>0;)this._frontPageItems.push(new sd(t)),s--}return!0}get pageId(){return this._pageId}get catalogType(){return this._catalogType}get layoutCode(){return this._layoutCode}get localization(){return this._localization}get offers(){return this._offers}get offerId(){return this._offerId}get acceptSeasonCurrencyAsCredits(){return this._acceptSeasonCurrencyAsCredits}get frontPageItems(){return this._frontPageItems}}class Qb{flush(){return this._pageName=null,this._secondsToExpiry=0,this._image=null,!0}parse(t){return t?(this._pageName=t.readString(),this._secondsToExpiry=t.readInt(),this._image=t.readString(),!0):!1}get pageName(){return this._pageName}get secondsToExpiry(){return this._secondsToExpiry}get image(){return this._image}}class Zb{flush(){return this._instantlyRefreshCatalogue=!1,this._newFurniDataHash=null,!0}parse(t){return t?(this._instantlyRefreshCatalogue=t.readBoolean(),t.bytesAvailable&&(this._newFurniDataHash=t.readString()),!0):!1}get instantlyRefreshCatalogue(){return this._instantlyRefreshCatalogue}get newFurniDataHash(){return this._newFurniDataHash}}class Jb{constructor(t){this._offerId=t.readInt(),this._isVip=t.readBoolean(),this._daysRequired=t.readInt(),this._isSelectable=t.readBoolean()}get offerId(){return this._offerId}get isVip(){return this._isVip}get isSelectable(){return this._isSelectable}get daysRequired(){return this._daysRequired}}class tN{flush(){return!0}parse(t){if(!t)return!1;this._offers=[],this._giftData=new Map,this._daysUntilNextGift=t.readInt(),this._giftsAvailable=t.readInt();const e=t.readInt();for(let r=0;r<e;r++)this._offers.push(new nc(t));const s=t.readInt();for(let r=0;r<s;r++){const n=new Jb(t);this._giftData.set(n.offerId,n)}return!0}get offers(){return this._offers}get daysUntilNextGift(){return this._daysUntilNextGift}get giftsAvailable(){return this._giftsAvailable}set giftsAvailable(t){this._giftsAvailable=t}getOfferExtraData(t){return t?this._giftData.get(t):null}get giftData(){return this._giftData}}class eN{flush(){return this._productCode=null,this._products=[],!0}parse(t){if(!t)return!1;this._productCode=t.readString();let e=t.readInt();for(;e>0;)this._products.push(new rc(t)),e--;return!0}get productCode(){return this._productCode}get products(){return this._products}}class IS{constructor(t){if(!t)throw new Error("invalid_wrapper");this._offerId=t.readInt(),this._productCode=t.readString(),t.readBoolean(),this._priceCredits=t.readInt(),this._priceActivityPoints=t.readInt(),this._priceActivityPointsType=t.readInt(),this._vip=t.readBoolean(),this._months=t.readInt(),this._extraDays=t.readInt(),this._giftable=t.readBoolean(),this._daysLeftAfterPurchase=t.readInt(),this._year=t.readInt(),this._month=t.readInt(),this._day=t.readInt()}get offerId(){return this._offerId}get productCode(){return this._productCode}get priceCredits(){return this._priceCredits}get priceActivityPoints(){return this._priceActivityPoints}get priceActivityPointsType(){return this._priceActivityPointsType}get vip(){return this._vip}get months(){return this._months}get extraDays(){return this._extraDays}get daysLeftAfterPurchase(){return this._daysLeftAfterPurchase}get year(){return this._year}get month(){return this._month}get day(){return this._day}get giftable(){return this._giftable}}class sN extends IS{constructor(t){super(t),this._originalPrice=t.readInt(),this._originalActivityPointPrice=t.readInt(),this._originalActivityPointType=t.readInt(),this._subscriptionDaysLeft=t.readInt()}get originalPrice(){return this._originalPrice*this.months}get originalActivityPointPrice(){return this._originalActivityPointPrice*this.months}get originalActivityPointType(){return this._originalActivityPointType}get discountCreditAmount(){return this._originalPrice*this.months-this.priceCredits}get discountActivityPointAmount(){return this.originalActivityPointPrice*this.months-this.priceActivityPoints}get subscriptionDaysLeft(){return this._subscriptionDaysLeft}}class iN{flush(){return this._available=!1,this._pricePointUrl=null,this._market=null,this._lengthInDays=0,!0}parse(t){return t?(this._pricePointUrl=t.readString(),this._pricePointUrl!==""&&(this._available=!0),this._market=t.readString(),this._lengthInDays=t.readInt(),!0):!1}get available(){return this._available}get pricePointUrl(){return this._pricePointUrl}get market(){return this._market}get lengthInDays(){return this._lengthInDays}}class rN{constructor(t){this._stuffId=t.readInt(),this._charges=t.readInt(),this._SafeStr_6935=t.readInt(),this._SafeStr_6936=t.readInt(),this._SafeStr_6518=t.readInt(),this._SafeStr_7875=t.readInt()}get stuffId(){return this._stuffId}get charges(){return this._charges}get _SafeStr_5946(){return this._SafeStr_6935}get _SafeStr_5944(){return this._SafeStr_6936}get _SafeStr_7876(){return this._SafeStr_7875}get _SafeStr_5945(){return this._SafeStr_6518}}class nN{flush(){return this._fireworkChargeData=null,!0}parse(t){return t?(this._fireworkChargeData=new rN(t),!0):!1}get fireworkChargeData(){return this._fireworkChargeData}}class aN{flush(){return!0}parse(t){return!!t}}class oN{constructor(){this._isEnabled=!1,this._price=null,this._giftWrappers=null,this._boxTypes=null,this._ribbonTypes=null,this._giftFurnis=null}flush(){return this._boxTypes=null,this._giftFurnis=null,this._giftWrappers=null,this._ribbonTypes=null,this._isEnabled=null,this._price=null,!0}parse(t){if(!t)return!1;const e=[],s=[],r=[],n=[];this._isEnabled=t.readBoolean(),this._price=t.readInt();let a=t.readInt(),o=0;for(;o<a;)e.push(t.readInt()),o++;for(a=t.readInt(),o=0;o<a;)s.push(t.readInt()),o++;for(a=t.readInt(),o=0;o<a;)r.push(t.readInt()),o++;for(a=t.readInt(),o=0;o<a;)n.push(t.readInt()),o++;return this._giftWrappers=e,this._ribbonTypes=r,this._giftFurnis=n,this._boxTypes=s,!0}get giftWrappers(){return this._giftWrappers}get ribbonTypes(){return this._ribbonTypes}get giftFurnis(){return this._giftFurnis}get boxTypes(){return this._boxTypes}get isEnabled(){return this._isEnabled}get price(){return this._price}}class uN{flush(){return this._offer=null,!0}parse(t){return t?(this._offer=new sN(t),!0):!1}get offer(){return this._offer}}class lN{flush(){return this._offers=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._offers.push(new IS(t)),e--;return!0}get offers(){return this._offers}}class hN{flush(){return this._offerId=0,this._isGiftable=!1,!0}parse(t){return t?(this._offerId=t.readInt(),this._isGiftable=t.readBoolean(),!0):!1}get offerId(){return this._offerId}get isGiftable(){return this._isGiftable}}class cN{flush(){return!0}parse(t){return!!t}}class _N{flush(){return this._appearsInSeconds=-1,this._pageId=-1,this._offerId=-1,this._productType="",!0}parse(t){return t?(this._appearsInSeconds=t.readInt(),this._pageId=t.readInt(),this._offerId=t.readInt(),this._productType=t.readString(),!0):!1}get appearsInSeconds(){return this._appearsInSeconds}get pageId(){return this._pageId}get offerId(){return this._offerId}get productType(){return this._productType}}class dN{constructor(){this._notEnoughCredits=!1,this._notEnoughActivityPoints=!1,this._activityPointType=0}flush(){return this._notEnoughCredits=!1,this._notEnoughActivityPoints=!1,this._activityPointType=0,!0}parse(t){return t?(this._notEnoughCredits=t.readBoolean(),this._notEnoughActivityPoints=t.readBoolean(),t.bytesAvailable&&(this._activityPointType=t.readInt()),!0):!1}get notEnoughCredits(){return this._notEnoughCredits}get notEnoughActivityPoints(){return this._notEnoughActivityPoints}get activityPointType(){return this._activityPointType}}class fN{flush(){return this._offer=null,!0}parse(t){return t?(this._offer=new nc(t),!0):!1}get offer(){return this._offer}}class gN{flush(){return this._code=0,!0}parse(t){return t?(this._code=t.readInt(),!0):!1}get code(){return this._code}}class pN{flush(){return this._code=0,!0}parse(t){return t?(this._code=t.readInt(),!0):!1}get code(){return this._code}}class mN{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._offerId=-1,this._localizationId=null,this._rent=!1,this._priceCredits=0,this._priceActivityPoints=0,this._priceActivityPointsType=0,this._clubLevel=0,this._giftable=!1,this._bundlePurchaseAllowed=!1,this._products=[],!0}parse(t){if(!t)return!1;this._offerId=t.readInt(),this._localizationId=t.readString(),this._rent=t.readBoolean(),this._priceCredits=t.readInt(),this._priceActivityPoints=t.readInt(),this._priceActivityPointsType=t.readInt(),this._giftable=t.readBoolean();let e=t.readInt();for(;e>0;)this._products.push(new rc(t)),e--;return this._clubLevel=t.readInt(),this._bundlePurchaseAllowed=t.readBoolean(),!0}get offerId(){return this._offerId}get localizationId(){return this._localizationId}get rent(){return this._rent}get priceCredits(){return this._priceCredits}get priceActivityPoints(){return this._priceActivityPoints}get priceActivityPointsType(){return this._priceActivityPointsType}get clubLevel(){return this._clubLevel}get giftable(){return this._giftable}get bundlePurchaseAllowed(){return this._bundlePurchaseAllowed}get products(){return this._products}}class EN{flush(){return this._offer=null,!0}parse(t){return t?(this._offer=new mN(t),!0):!1}get offer(){return this._offer}}class TN{flush(){return this._clubLevel=0,this._securityLevel=0,this._isAmbassador=!1,!0}parse(t){return t?(this._clubLevel=t.readInt(),this._securityLevel=t.readInt(),this._isAmbassador=t.readBoolean(),!0):!1}get clubLevel(){return this._clubLevel}get securityLevel(){return this._securityLevel}get isAmbassador(){return this._isAmbassador}}const Fp=class Fp{flush(){return!0}parse(t){return t?(this._status=t.readInt(),!0):!1}get status(){return this._status}};Fp.SAFETY_LOCK_STATUS_LOCKED=0,Fp.SAFETY_LOCK_STATUS_UNLOCKED=1;let Sh=Fp;class IN{flush(){return this._result=-1,this._validationInfo="",!0}parse(t){return t?(this._result=t.readInt(),this._validationInfo=t.readString(),!0):!1}get result(){return this._result}get validationInfo(){return this._validationInfo}}const Z0=class Z0{flush(){return this._result=-1,!0}parse(t){return t?(this._result=t.readInt(),!0):!1}get result(){return this._result}};Z0.EMAIL_STATUS_OK=0;let id=Z0;class SN{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._relationshipStatusType=u_.NONE,this._friendCount=0,this._randomFriendId=0,this._randomFriendFigure=null,this._randomFriendName=null,!0}parse(t){return t?(this._relationshipStatusType=t.readInt(),this._friendCount=t.readInt(),this._randomFriendId=t.readInt(),this._randomFriendName=t.readString(),this._randomFriendFigure=t.readString(),!0):!1}get relationshipStatusType(){return this._relationshipStatusType}get friendCount(){return this._friendCount}get randomFriendId(){return this._randomFriendId}get randomFriendName(){return this._randomFriendName}get randomFriendFigure(){return this._randomFriendFigure}}class RN{flush(){return this._userId=0,this._relationshipStatusMap=null,!0}parse(t){if(!t)return!1;this._userId=t.readInt(),this._relationshipStatusMap=new xe;const e=t.readInt();for(let s=0;s<e;s++){const r=new SN(t);this._relationshipStatusMap.add(r.relationshipStatusType,r)}return!0}get userId(){return this._userId}get relationshipStatusMap(){return this._relationshipStatusMap}}class AN{flush(){return this._userId=null,this._badges=[],!0}parse(t){if(!t)return!1;this._userId=t.readInt();let e=t.readInt();for(;e>0;){t.readInt();const s=t.readString();this._badges.push(s),e--}return!0}get userId(){return this._userId}get badges(){return this._badges}}class Frt{flush(){return this._figure=null,this._gender=null,!0}parse(t){return t?(this._figure=t.readString(),this._gender=t.readString(),!0):!1}get figure(){return this._figure}get gender(){return this._gender}}class ON{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._userId=0,this._username=null,this._figure=null,this._gender=null,this._motto=null,this._realName=null,this._directMail=!1,this._respectsReceived=0,this._respectsRemaining=0,this._respectsPetRemaining=0,this._streamPublishingAllowed=!1,this._lastAccessDate=null,this._canChangeName=!1,this._safetyLocked=!1,!0}parse(t){return t?(this._userId=t.readInt(),this._username=t.readString(),this._figure=t.readString(),this._gender=t.readString(),this._motto=t.readString(),this._realName=t.readString(),this._directMail=t.readBoolean(),this._respectsReceived=t.readInt(),this._respectsRemaining=t.readInt(),this._respectsPetRemaining=t.readInt(),this._streamPublishingAllowed=t.readBoolean(),this._lastAccessDate=t.readString(),this._canChangeName=t.readBoolean(),this._safetyLocked=t.readBoolean(),!0):!1}get userId(){return this._userId}get username(){return this._username}get figure(){return this._figure}get gender(){return this._gender}get motto(){return this._motto}get realName(){return this._realName}get directMail(){return this._directMail}get respectsReceived(){return this._respectsReceived}get respectsRemaining(){return this._respectsRemaining}get respectsPetRemaining(){return this._respectsPetRemaining}get streamPublishingAllowed(){return this._streamPublishingAllowed}get lastAccessedDate(){return this._lastAccessDate}get canChangeName(){return this._canChangeName}get safetyLocked(){return this._safetyLocked}}class yN{flush(){return this._userInfo=null,!0}parse(t){return!(!t||(this._userInfo=new ON(t),!this._userInfo))}get userInfo(){return this._userInfo}}class vN{flush(){return this._webId=-1,this._id=-1,this._newName="",!0}parse(t){return t?(this._webId=t.readInt(),this._id=t.readInt(),this._newName=t.readString(),!0):!1}get webId(){return this._webId}get id(){return this._id}get newName(){return this._newName}}class SS{constructor(t){this._groupId=t.readInt(),this._groupName=t.readString(),this._badgeCode=t.readString(),this._colorA=t.readString(),this._colorB=t.readString(),this._favourite=t.readBoolean(),this._ownerId=t.readInt(),this._hasForum=t.readBoolean()}get groupId(){return this._groupId}get groupName(){return this._groupName}get badgeCode(){return this._badgeCode}get colorA(){return this._colorA}get colorB(){return this._colorB}get favourite(){return this._favourite}get ownerId(){return this._ownerId}get hasForum(){return this._hasForum}}class CN{flush(){return this._id=0,this._username=null,this._figure=null,this._motto=null,this._registration=null,this._achievementPoints=0,this._friendsCount=0,this._isMyFriend=!1,this._requestSent=!1,this._isOnline=!1,this._groups=[],this._secondsSinceLastVisit=0,this._openProfileWindow=!1,!0}parse(t){if(!t)return!1;this._id=t.readInt(),this._username=t.readString(),this._figure=t.readString(),this._motto=t.readString(),this._registration=t.readString(),this._achievementPoints=t.readInt(),this._friendsCount=t.readInt(),this._isMyFriend=t.readBoolean(),this._requestSent=t.readBoolean(),this._isOnline=t.readBoolean();const e=t.readInt();for(let s=0;s<e;s++)this._groups.push(new SS(t));return this._secondsSinceLastVisit=t.readInt(),this._openProfileWindow=t.readBoolean(),!0}get id(){return this._id}get username(){return this._username}get figure(){return this._figure}get motto(){return this._motto}get registration(){return this._registration}get achievementPoints(){return this._achievementPoints}get friendsCount(){return this._friendsCount}get isMyFriend(){return this._isMyFriend}get requestSent(){return this._requestSent}get isOnline(){return this._isOnline}get groups(){return this._groups}get secondsSinceLastVisit(){return this._secondsSinceLastVisit}get openProfileWindow(){return this._openProfileWindow}}class MN{flush(){return this._volumeSystem=0,this._volumeFurni=0,this._volumeTrax=0,this._oldChat=!1,this._roomInvites=!1,this._cameraFollow=!1,this._flags=0,this._chatType=0,!0}parse(t){return t?(this._volumeSystem=t.readInt(),this._volumeFurni=t.readInt(),this._volumeTrax=t.readInt(),this._oldChat=t.readBoolean(),this._roomInvites=t.readBoolean(),this._cameraFollow=t.readBoolean(),this._flags=t.readInt(),this._chatType=t.readInt(),!0):!1}get volumeSystem(){return this._volumeSystem}get volumeFurni(){return this._volumeFurni}get volumeTrax(){return this._volumeTrax}get oldChat(){return this._oldChat}get roomInvites(){return this._roomInvites}get cameraFollow(){return this._cameraFollow}get flags(){return this._flags}get chatType(){return this._chatType}}class xN{flush(){return this._roomUnitId=-1,this._tags=[],!0}parse(t){if(!t)return!1;this._roomUnitId=t.readInt();let e=t.readInt();for(;e>0;)this._tags.push(t.readString()),e--;return!0}get roomUnitId(){return this._roomUnitId}get tags(){return this._tags}}class PN{flush(){return this._email=null,this._isVerified=!1,this._allowChange=!1,!0}parse(t){return t?(this._email=t.readString(),this._isVerified=t.readBoolean(),this._allowChange=t.readBoolean(),!0):!1}get email(){return this._email}get isVerified(){return this._isVerified}get allowChange(){return this._allowChange}}class bN{flush(){return this._userId=-1,!0}parse(t){return t?(this._userId=t.readInt(),!0):!1}get userId(){return this._userId}}class NN{flush(){return this._groupId=-1,!0}parse(t){return t?(this._groupId=t.readInt(),!0):!1}get groupId(){return this._groupId}}class UN{flush(){return this._groupId=-1,this._requester=null,!0}parse(t){return t?(this._groupId=t.readInt(),this._requester=new Rf(t),!0):!1}get groupId(){return this._groupId}get requester(){return this._requester}}const J0=class J0{flush(){return this._reason=-1,!0}parse(t){return t?(this._reason=t.readInt(),!0):!1}get reason(){return this._reason}};J0.INSUFFICIENT_SUBSCRIPTION_LEVEL=2;let rd=J0;class DN{flush(){return this._guildId=-1,this._reason=-1,!0}parse(t){return t?(this._guildId=t.readInt(),this._reason=t.readInt(),!0):!1}get guildId(){return this._guildId}get reason(){return this._reason}}class LN{flush(){return this._groups=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._groups.push(new SS(t)),e--;return!0}get groups(){return this._groups}}class FN{flush(){return this._badges=new Map,!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;){const s=t.readInt(),r=t.readString();this._badges.set(s,r),e--}return!0}get badges(){return this._badges}}const tO=class tO{flush(){return this._reason=-1,!0}parse(t){return t?(this._reason=t.readInt(),!0):!1}get reason(){return this._reason}};tO.INSUFFICIENT_SUBSCRIPTION_LEVEL=4;let nd=tO;class wN{flush(){return this._ignoredUsers=[],!0}parse(t){if(!t)return!1;this._ignoredUsers=[];let e=t.readInt();for(;e>0;)this._ignoredUsers.push(t.readString()),e--;return!0}get ignoredUsers(){return this._ignoredUsers}}class GN{flush(){return this._result=-1,this._name=null,!0}parse(t){return t?(this._result=t.readInt(),this._name=t.readString(),!0):!1}get result(){return this._result}get name(){return this._name}}class BN{flush(){return this._link=null,!0}parse(t){return t?(this._link=t.readString(),!0):!1}get link(){return this._link}}class kN{flush(){return this._credits=null,!0}parse(t){return t?(this._credits=t.readString(),!0):!1}get credits(){return this._credits}}class zN{flush(){return this._currencies=new Map,!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._currencies.set(t.readInt(),t.readInt()),e--;return!0}get currencies(){return this._currencies}}const Co=class Co{flush(){return this._productName=null,this._daysToPeriodEnd=0,this._memberPeriods=0,this._periodsSubscribedAhead=0,this._responseType=0,this._hasEverBeenMember=!1,this._isVip=!1,this._pastClubDays=0,this._pastVipDays=0,this._minutesUntilExpiration=0,this._minutesSinceLastModified=0,!0}parse(t){return t?(this._productName=t.readString(),this._daysToPeriodEnd=t.readInt(),this._memberPeriods=t.readInt(),this._periodsSubscribedAhead=t.readInt(),this._responseType=t.readInt(),this._hasEverBeenMember=t.readBoolean(),this._isVip=t.readBoolean(),this._pastClubDays=t.readInt(),this._pastVipDays=t.readInt(),this._minutesUntilExpiration=t.readInt(),t.bytesAvailable&&(this._minutesSinceLastModified=t.readInt()),!0):!1}get productName(){return this._productName}get daysToPeriodEnd(){return this._daysToPeriodEnd}get memberPeriods(){return this._memberPeriods}get periodsSubscribedAhead(){return this._periodsSubscribedAhead}get responseType(){return this._responseType}get hasEverBeenMember(){return this._hasEverBeenMember}get isVip(){return this._isVip}get pastClubDays(){return this._pastClubDays}get pastVipDays(){return this._pastVipDays}get minutesUntilExpiration(){return this._minutesUntilExpiration}get minutesSinceLastModified(){return this._minutesSinceLastModified}};Co.RESPONSE_TYPE_LOGIN=1,Co.RESPONSE_TYPE_PURCHASE=2,Co.RESPONSE_TYPE_DISCOUNT_AVAILABLE=3,Co.RESPONSE_TYPE_CITIZENSHIP_DISCOUNT=4;let ad=Co;const Mo=class Mo{constructor(t){if(this._unseen=0,!t)throw new Error("invalid_parser");this._achievementId=t.readInt(),this._level=t.readInt(),this._badgeId=t.readString(),this._scoreAtStartOfLevel=t.readInt(),this._scoreLimit=Math.max(1,t.readInt()),this._levelRewardPoints=t.readInt(),this._levelRewardPointType=t.readInt(),this._currentPoints=t.readInt(),this._finalLevel=t.readBoolean(),this._category=t.readString(),this._subCategory=t.readString(),this._levelCount=t.readInt(),this._displayMethod=t.readInt()}get achievementId(){return this._achievementId}get badgeId(){return this._badgeId}get level(){return this._level}get scoreAtStartOfLevel(){return this._scoreAtStartOfLevel}get scoreLimit(){return this._scoreLimit-this._scoreAtStartOfLevel}get levelRewardPoints(){return this._levelRewardPoints}get levelRewardPointType(){return this._levelRewardPointType}get currentPoints(){return this._currentPoints-this._scoreAtStartOfLevel}get finalLevel(){return this._finalLevel}get category(){return this._category}get subCategory(){return this._subCategory}get levelCount(){return this._levelCount}get firstLevelAchieved(){return this._level>1||this._finalLevel}setMaxProgress(){this._currentPoints=this._scoreLimit}get displayMethod(){return this._displayMethod}get progress(){return this._currentPoints}get toNextProgress(){return this._scoreLimit}set unseen(t){this._unseen=t}get unseen(){return this._unseen}reset(t){this._achievementId=t._achievementId,this._level=t._level,this._badgeId=t._badgeId,this._scoreAtStartOfLevel=t._scoreAtStartOfLevel,this._scoreLimit=t._scoreLimit,this._levelRewardPoints=t._levelRewardPoints,this._levelRewardPointType=t._levelRewardPointType,this._currentPoints=t._currentPoints,this._finalLevel=t._finalLevel,this._category=t.category,this._subCategory=t._subCategory,this._levelCount=t._levelCount,this._displayMethod=t._displayMethod}};Mo.DISPLAY_METHOD_OBSOLETE=-1,Mo.DISPLAY_METHOD_SHOW_LEVEL_PROGRESS=0,Mo.DISPLAY_METHOD_NEVER_SHOW_PROGRESS=1,Mo.DISPLAY_METHOD_SHOW_TOTAL_PROGRESS=2;let Rh=Mo;class VN{flush(){return this._achievement=null,!0}parse(t){return t?(this._achievement=new Rh(t),!0):!1}get achievement(){return this._achievement}}const wp=class wp{constructor(t){this._achievementId=t.readInt(),this._level=t.readInt(),this._badgeId=t.readString(),this._requiredLevel=t.readInt(),this._state=t.readInt()}dispose(){this._achievementId=0,this._level=0,this._badgeId="",this._requiredLevel=0}get achievementId(){return this._achievementId}get level(){return this._level}get badgeId(){return this._badgeId}get requiredLevel(){return this._requiredLevel}get enabled(){return this._state===wp.STATE_SELECTABLE}get state(){return this._state}};wp.STATE_SELECTABLE=0;let od=wp;class HN{flush(){return this._achievements=[],this._defaultCategory=null,!0}parse(t){if(!t)return!1;this._achievements=[];let e=t.readInt();for(;e>0;)this._achievements.push(new Rh(t)),e--;return this._defaultCategory=t.readString(),!0}get achievements(){return this._achievements}get defaultCategory(){return this._defaultCategory}}class YN{flush(){return this._score=0,!0}parse(t){return t?(this._score=t.readInt(),!0):!1}get score(){return this._score}}class WN{get type(){return this._type}set type(t){this._type=t}get subType(){return this._subType}set subType(t){this._subType=t}get duration(){return this._duration}set duration(t){this._duration=t}get inactiveEffectsInInventory(){return this._inactiveEffectsInInventory}set inactiveEffectsInInventory(t){this._inactiveEffectsInInventory=t}get secondsLeftIfActive(){return this._secondsLeftIfActive}set secondsLeftIfActive(t){this._secondsLeftIfActive=t}get isPermanent(){return this._permanent}set isPermanent(t){this._permanent=t}}class jN{flush(){return this._type=0,this._duration=0,this._isPermanent=!1,!0}parse(t){return t?(this._type=t.readInt(),this._duration=t.readInt(),this._isPermanent=t.readBoolean(),!0):!1}get type(){return this._type}get duration(){return this._duration}get isPermanent(){return this._isPermanent}}class KN{flush(){return this._type=0,this._subType=0,this._duration=0,this._permanent=!1,!0}parse(t){return t?(this._type=t.readInt(),this._subType=t.readInt(),this._duration=t.readInt(),this._permanent=t.readBoolean(),!0):!1}get type(){return this._type}get subType(){return this._subType}get duration(){return this._duration}get isPermanent(){return this._permanent}}class XN{flush(){return this._type=0,!0}parse(t){return t?(this._type=t.readInt(),!0):!1}get type(){return this._type}}class qN{flush(){return this._type=0,!0}parse(t){return t?(this._type=t.readInt(),!0):!1}get type(){return this._type}}class $N{flush(){return this._effects=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;){const s=new WN;s.type=t.readInt(),s.subType=t.readInt(),s.duration=t.readInt(),s.inactiveEffectsInInventory=t.readInt(),s.secondsLeftIfActive=t.readInt(),s.isPermanent=t.readBoolean(),this._effects.push(s),e--}return!0}get effects(){return this._effects}}class QN{constructor(t,e){if(!e)throw new Error("invalid_parser");this._badgeId="ACH_"+t+e.readInt(),this._limit=e.readInt()}get badgeId(){return this._badgeId}get limit(){return this._limit}}class ZN{flush(){return this._data=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;){const s=t.readString(),r=t.readInt();let n=0;for(;n<r;)this._data.push(new QN(s,t)),n++;e--}return!0}get data(){return this._data}}class JN{flush(){return this._badgeId=0,this._badgeCode=null,!0}parse(t){return t?(this._badgeId=t.readInt(),this._badgeCode=t.readString(),!0):!1}get badgeId(){return this._badgeId}get badgeCode(){return this._badgeCode}}class tU{flush(){return this._allBadgeCodes=[],this._activeBadgeCodes=null,this._badgeIds=null,!0}parse(t){if(!t)return!1;this._allBadgeCodes=[],this._activeBadgeCodes=[],this._badgeIds=new xe;let e=t.readInt();for(;e>0;){const s=t.readInt(),r=t.readString();this._badgeIds.add(r,s),this._allBadgeCodes.push(r),e--}for(e=t.readInt();e>0;){t.readInt();const s=t.readString();this._activeBadgeCodes.push(s),e--}return!0}getBadgeId(t){return this._badgeIds.getValue(t)}getAllBadgeCodes(){return this._allBadgeCodes}getActiveBadgeCodes(){return this._activeBadgeCodes}}class eU{flush(){return!0}parse(t){return t?(this._requestCode=t.readString(),this._fulfilled=t.readBoolean(),!0):!1}get requestCode(){return this._requestCode}get fulfilled(){return this._fulfilled}}class sU{flush(){return this._figureSetIds=[],this._boundFurnitureNames=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._figureSetIds.push(t.readInt()),e--;let s=t.readInt();for(;s>0;)this._boundFurnitureNames.push(t.readString()),s--;return!0}get figureSetIds(){return this._figureSetIds}get boundsFurnitureNames(){return this._boundFurnitureNames}}class iU{flush(){return this._itemId=0,!0}parse(t){return t?(this._itemId=t.readInt(),!0):!1}get itemId(){return this._itemId}}class rU{flush(){return this._itemId=0,!0}parse(t){return t?(this._itemId=t.readInt(),!0):!1}get itemId(){return this._itemId}}const xo=class xo{flush(){return this._reason=0,this._parameter="",!0}parse(t){return t?(this._reason=t.readInt(),this._parameter=t.readString(),!0):!1}get reason(){return this._reason}get parameter(){return this._parameter}};xo.REASON_FULL=1,xo.REASON_CLOSED=2,xo.REASON_QUEUE_ERROR=3,xo.REASON_BANNED=4;let ud=xo;class nU{flush(){return this._userName=null,!0}parse(t){return t?(this._userName=t.readString(),!0):!1}get userName(){return this._userName}}class aU{flush(){return!0}parse(t){return!!t}}class oU{flush(){return!0}parse(t){return!!t}}class uU{flush(){return this._controllerLevel=$i.NONE,!0}parse(t){return t?(this._controllerLevel=t.readInt(),!0):!1}get controllerLevel(){return this._controllerLevel}}class lU{flush(){return!0}parse(t){return!!t}}class hU{flush(){return this._roomId=0,!0}parse(t){return t?(this._roomId=t.readInt(),!0):!1}get roomId(){return this._roomId}}class cU{flush(){return this._botId=-1,this._commandId=-1,this._data="",!0}parse(t){return t?(this._botId=t.readInt(),this._commandId=t.readInt(),this._data=t.readString(),!0):!1}get botId(){return this._botId}get commandId(){return this._commandId}get data(){return this._data}}class _U{flush(){return this._botId=-1,!0}parse(t){return t?(this._botId=t.readInt(),!0):!1}get botId(){return this._botId}}class dU{constructor(t){this._id=t.readInt(),this._data=t.readString()}get id(){return this._id}get data(){return this._data}}class fU{flush(){return this._botId=-1,this._skillList=[],!0}parse(t){if(!t)return!1;this._botId=t.readInt();let e=t.readInt();for(;e>0;)this._skillList.push(new dU(t)),e--;return!0}get botId(){return this._botId}get skillList(){return this._skillList}}class gU{constructor(t){this._userId=t.readInt(),this._userName=t.readString()}get userId(){return this._userId}get userName(){return this._userName}}class pU{flush(){return this._roomId=0,this._bannedUsers=[],!0}parse(t){if(!t)return!1;this._roomId=t.readInt();let e=t.readInt();for(;e>0;)this._bannedUsers.push(new gU(t)),e--;return!0}get roomId(){return this._roomId}get bannedUsers(){return this._bannedUsers}}class mU{constructor(t){this._userId=t.readInt(),this._userName=t.readString()}get userId(){return this._userId}get userName(){return this._userName}get selected(){return this._selected}set selected(t){this._selected=t}}class EU{flush(){return this._roomId=0,this._data=null,!0}parse(t){return t?(this._roomId=t.readInt(),this._data=new mU(t),!0):!1}get roomId(){return this._roomId}get data(){return this._data}}class TU{flush(){return this._roomId=0,this._userId=0,!0}parse(t){return t?(this._roomId=t.readInt(),this._userId=t.readInt(),!0):!1}get roomId(){return this._roomId}get userId(){return this._userId}}class IU{flush(){return this._roomId=0,this._users=new Map,!0}parse(t){if(!t)return!1;this._roomId=t.readInt();let e=t.readInt();for(;e>0;){const s=t.readInt(),r=t.readString();this._users.set(s,r),e--}return!0}get roomId(){return this._roomId}get users(){return this._users}}class SU{flush(){return!0}parse(t){return t?(this._isMuted=t.readBoolean(),!0):!1}get isMuted(){return this._isMuted}}class RU{flush(){return this._roomId=0,!0}parse(t){return t?(this._roomId=t.readInt(),!0):!1}get roomId(){return this._roomId}}const xs=class xs{constructor(t){if(!t)throw new Error("invalid_wrapper");this._mode=t.readInt(),this._weight=t.readInt(),this._speed=t.readInt(),this._distance=t.readInt(),this._protection=t.readInt()}get mode(){return this._mode}get weight(){return this._weight}get speed(){return this._speed}get distance(){return this._distance}get protection(){return this._protection}};xs.CHAT_MODE_FREE_FLOW=0,xs.CHAT_MODE_LINE_BY_LINE=1,xs.CHAT_BUBBLE_WIDTH_WIDE=0,xs.CHAT_BUBBLE_WIDTH_NORMAL=1,xs.CHAT_BUBBLE_WIDTH_THIN=2,xs.CHAT_SCROLL_SPEED_FAST=0,xs.CHAT_SCROLL_SPEED_NORMAL=1,xs.CHAT_SCROLL_SPEED_SLOW=2,xs.FLOOD_FILTER_STRICT=0,xs.FLOOD_FILTER_NORMAL=1,xs.FLOOD_FILTER_LOOSE=2;let ou=xs;const pl=class pl{constructor(t){this._allowMute=t.readInt(),this._allowKick=t.readInt(),this._allowBan=t.readInt()}get allowMute(){return this._allowMute}get allowKick(){return this._allowKick}get allowBan(){return this._allowBan}};pl.MODERATION_LEVEL_NONE=0,pl.MODERATION_LEVEL_USER_WITH_RIGHTS=1,pl.MODERATION_LEVEL_ALL=2;let Ah=pl;const we=class we{constructor(){this._roomId=-1,this._name=null,this._description=null,this._doorMode=we.DOORMODE_OPEN,this._categoryId=-1,this._maximumVisitors=0,this._maximumVisitorsLimit=0,this._tags=[],this._tradeMode=we.TRADEMODE_NOT_ALLOWED,this._allowPets=!1,this._allowFoodConsume=!1,this._allowWalkThrough=!1,this._hideWalls=!1,this._wallThickness=0,this._floorThickness=0,this._controllersById=new Map,this._controllerList=null,this._highlightedUserId=-1,this._bannedUsersById=new Map,this._bannedUsersList=null,this._roomModerationSettings=null,this._chatSettings=null,this._allowNavigatorDynamicCats=!1}static from(t){const e=new we;return e._roomId=t._roomId,e._name=t._name,e._description=t._description,e._doorMode=t._doorMode,e._categoryId=t._categoryId,e._maximumVisitors=t._maximumVisitors,e._maximumVisitorsLimit=t._maximumVisitorsLimit,e._tags=t._tags,e._tradeMode=t._tradeMode,e._allowPets=t._allowPets,e._allowFoodConsume=t._allowFoodConsume,e._allowWalkThrough=t._allowWalkThrough,e._hideWalls=t._hideWalls,e._wallThickness=t._wallThickness,e._floorThickness=t._floorThickness,e._controllersById=t._controllersById,e._controllerList=t._controllerList,e._highlightedUserId=t._highlightedUserId,e._bannedUsersById=t._bannedUsersById,e._bannedUsersList=t._bannedUsersList,e._roomModerationSettings=t._roomModerationSettings,e._chatSettings=t._chatSettings,e._allowNavigatorDynamicCats=t._allowNavigatorDynamicCats,e}static getDoorModeLocalizationKey(t){switch(t){case we.DOORMODE_OPEN:return"${navigator.door.mode.open}";case we.DOORMODE_CLOSED:return"${navigator.door.mode.closed}";case we.DOORMODE_PASSWORD:return"${navigator.door.mode.password}";case we.DOORMODE_INVISIBLE:return"${navigator.door.mode.invisible}";case we.DOORMODE_NOOBS_ONLY:return"${navigator.door.mode.noobs_only}"}return""}get tradeMode(){return this._tradeMode}set tradeMode(t){this._tradeMode=t}get allowPets(){return this._allowPets}set allowPets(t){this._allowPets=t}get allowFoodConsume(){return this._allowFoodConsume}set allowFoodConsume(t){this._allowFoodConsume=t}get allowWalkThrough(){return this._allowWalkThrough}set allowWalkThrough(t){this._allowWalkThrough=t}get hideWalls(){return this._hideWalls}set hideWalls(t){this._hideWalls=t}get wallThickness(){return this._wallThickness}set wallThickness(t){this._wallThickness=t}get floorThickness(){return this._floorThickness}set floorThickness(t){this._floorThickness=t}get roomId(){return this._roomId}set roomId(t){this._roomId=t}get name(){return this._name}set name(t){this._name=t}get description(){return this._description}set description(t){this._description=t}get doorMode(){return this._doorMode}set doorMode(t){this._doorMode=t}get categoryId(){return this._categoryId}set categoryId(t){this._categoryId=t}get maximumVisitors(){return this._maximumVisitors}set maximumVisitors(t){this._maximumVisitors=t}get maximumVisitorsLimit(){return this._maximumVisitorsLimit}set maximumVisitorsLimit(t){this._maximumVisitorsLimit=t}get tags(){return this._tags}set tags(t){this._tags=t}setFlatController(t,e){this._controllersById.set(t,e),this._controllerList=null,this._highlightedUserId=t}get roomModerationSettings(){return this._roomModerationSettings}set roomModerationSettings(t){this._roomModerationSettings=t}get controllersById(){return this._controllersById}set controllersById(t){this._controllersById=t}get controllerList(){if(!this._controllerList){this._controllerList=[];for(const t of this._controllersById.values())this._controllerList.push(t);this._controllerList.sort((t,e)=>t.userName.localeCompare(e.userName))}return this._controllerList}get highlightedUserId(){return this._highlightedUserId}setBannedUser(t,e){this._bannedUsersById.set(t,e),this._bannedUsersList=null}get bannedUsersById(){return this._bannedUsersById}get bannedUsersList(){if(!this._bannedUsersList){this._bannedUsersList=[];for(const t of this._bannedUsersById.values())this._bannedUsersList.push(t);this._bannedUsersList.sort((t,e)=>t.userName.localeCompare(e.userName))}return this._bannedUsersList}get chatSettings(){return this._chatSettings}set chatSettings(t){this._chatSettings=t}get allowNavigatorDynamicCats(){return this._allowNavigatorDynamicCats}set allowNavigatorDynamicCats(t){this._allowNavigatorDynamicCats=t}};we.DOORMODE_OPEN=0,we.DOORMODE_CLOSED=1,we.DOORMODE_PASSWORD=2,we.DOORMODE_INVISIBLE=3,we.DOORMODE_NOOBS_ONLY=4,we.TRADEMODE_NOT_ALLOWED=0,we.TRADEMODE_WITH_CONTROLLER=1,we.TRADEMODE_ALLOWED=2;let ld=we;class AU{flush(){return this._roomSettingsData=null,!0}parse(t){if(!t)return!1;this._roomSettingsData=new ld,this._roomSettingsData.roomId=t.readInt(),this._roomSettingsData.name=t.readString(),this._roomSettingsData.description=t.readString(),this._roomSettingsData.doorMode=t.readInt(),this._roomSettingsData.categoryId=t.readInt(),this._roomSettingsData.maximumVisitors=t.readInt(),this._roomSettingsData.maximumVisitorsLimit=t.readInt(),this._roomSettingsData.tags=[];let e=t.readInt();for(;e>0;)this._roomSettingsData.tags.push(t.readString()),e--;return this._roomSettingsData.tradeMode=t.readInt(),this._roomSettingsData.allowPets=t.readInt()===1,this._roomSettingsData.allowFoodConsume=t.readInt()===1,this._roomSettingsData.allowWalkThrough=t.readInt()===1,this._roomSettingsData.hideWalls=t.readInt()===1,this._roomSettingsData.wallThickness=t.readInt(),this._roomSettingsData.floorThickness=t.readInt(),this._roomSettingsData.chatSettings=new ou(t),this._roomSettingsData.allowNavigatorDynamicCats=t.readBoolean(),this._roomSettingsData.roomModerationSettings=new Ah(t),!0}get data(){return this._roomSettingsData}}class OU{flush(){return this._roomId=0,this._code=0,!0}parse(t){return t?(this._roomId=t.readInt(),this._code=t.readInt(),!0):!1}get roomId(){return this._roomId}get code(){return this._code}}class yU{flush(){return this._roomId=0,!0}parse(t){return t?(this._roomId=t.readInt(),!0):!1}get roomId(){return this._roomId}}const ss=class ss{flush(){return this._roomId=0,this._code=0,this._message=null,!0}parse(t){return t?(this._roomId=t.readInt(),this._code=t.readInt(),this._message=t.readString(),!0):!1}get roomId(){return this._roomId}get code(){return this._code}get message(){return this._message}};ss.ERROR_ROOM_NOT_FOUND=1,ss.ERROR_NOT_OWNER=2,ss.ERROR_INVALID_DOOR_MODE=3,ss.ERROR_INVALID_USER_LIMIT=4,ss.ERROR_INVALID_PASSWORD=5,ss.ERROR_INVALID_CATEGORY=6,ss.ERROR_INVALID_NAME=7,ss.ERROR_UNACCEPTABLE_NAME=8,ss.ERROR_INVALID_DESCRIPTION=9,ss.ERROR_UNACCEPTABLE_DESCRIPTION=10,ss.ERROR_INVALID_TAG=11,ss.ERROR_NON_USER_CHOOSABLE_TAG=12,ss.ERROR_TOO_MANY_CHARACTERS_IN_TAG=13;let hd=ss;class vU{flush(){return this._selectionType=0,!0}parse(t){return t?(this._selectionType=t.readInt(),!0):!1}get selectionType(){return this._selectionType}}class CU{flush(){return this._roomId=0,this._userId=0,!0}parse(t){return t?(this._roomId=t.readInt(),this._userId=t.readInt(),!0):!1}get roomId(){return this._roomId}get userId(){return this._userId}}class MU{flush(){return this._chat=null,!0}parse(t){return t?(this._chat=new ou(t),!0):!1}get chat(){return this._chat}}const be=class be{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._roomId=0,this._roomName=null,this._ownerId=0,this._ownerName=null,this._doorMode=0,this._userCount=0,this._maxUserCount=0,this._description=null,this._tradeMode=2,this._score=0,this._ranking=0,this._categoryId=0,this._totalStars=0,this._groupId=0,this._groupName=null,this._groupBadge=null,this._tags=[],this._bitMask=0,this._thumbnail=null,this._allowPets=!1,this._showOwner=!0,this._displayAd=!1,this._adName=null,this._adDescription=null,this._adExpiresIn=0,this._allInRoomMuted=!1,this._canMute=!1,this._officialRoomPicRef=null,!0}parse(t){return t?(this._roomId=t.readInt(),this._roomName=t.readString(),this._ownerId=t.readInt(),this._ownerName=t.readString(),this._doorMode=t.readInt(),this._userCount=t.readInt(),this._maxUserCount=t.readInt(),this._description=t.readString(),this._tradeMode=t.readInt(),this._score=t.readInt(),this._ranking=t.readInt(),this._categoryId=t.readInt(),this.parseTags(t),this.parseBitMask(t),!0):!1}parseTags(t){if(!t)return!1;this._tags=[];let e=t.readInt();for(;e>0;)this._tags.push(t.readString()),e--;return!0}parseBitMask(t){return t?(this._bitMask=t.readInt(),this._bitMask&be.THUMBNAIL_BITMASK&&(this._officialRoomPicRef=t.readString()),this._bitMask&be.GROUPDATA_BITMASK&&(this._groupId=t.readInt(),this._groupName=t.readString(),this._groupBadge=t.readString()),this._bitMask&be.ROOMAD_BITMASK&&(this._adName=t.readString(),this._adDescription=t.readString(),this._adExpiresIn=t.readInt()),this._showOwner=(this._bitMask&be.SHOWOWNER_BITMASK)>0,this._allowPets=(this._bitMask&be.ALLOW_PETS_BITMASK)>0,this._displayAd=(this._bitMask&be.DISPLAY_ROOMAD_BITMASK)>0,this._thumbnail=null,!0):!1}get roomId(){return this._roomId}get roomName(){return this._roomName}set roomName(t){this._roomName=t}get ownerId(){return this._ownerId}get ownerName(){return this._ownerName}get doorMode(){return this._doorMode}get userCount(){return this._userCount}get maxUserCount(){return this._maxUserCount}get description(){return this._description}get tradeMode(){return this._tradeMode}get score(){return this._score}get ranking(){return this._ranking}get categoryId(){return this._categoryId}get tags(){return this._tags}get officialRoomPicRef(){return this._officialRoomPicRef}get habboGroupId(){return this._groupId}get groupName(){return this._groupName}get groupBadgeCode(){return this._groupBadge}get roomAdName(){return this._adName}get roomAdDescription(){return this._adDescription}get roomAdExpiresInMin(){return this._adExpiresIn}get showOwner(){return this._showOwner}get allowPets(){return this._allowPets}get displayRoomEntryAd(){return this._displayAd}get canMute(){return this._canMute}set canMute(t){this._canMute=t}get allInRoomMuted(){return this._allInRoomMuted}set allInRoomMuted(t){this._allInRoomMuted=t}};be.THUMBNAIL_BITMASK=1,be.GROUPDATA_BITMASK=2,be.ROOMAD_BITMASK=4,be.SHOWOWNER_BITMASK=8,be.ALLOW_PETS_BITMASK=16,be.DISPLAY_ROOMAD_BITMASK=32,be.OPEN_STATE=0,be.DOORBELL_STATE=1,be.PASSWORD_STATE=2,be.INVISIBLE_STATE=3,be.NOOB_STATE=4;let Wa=be;class xU{flush(){return this._roomId=0,this._isOwner=!1,!0}parse(t){return t?(this._roomId=t.readInt(),this._isOwner=t.readBoolean(),!0):!1}get roomId(){return this._roomId}get isOwner(){return this._isOwner}}class PU{flush(){return this._totalLikes=0,this._canLike=!1,!0}parse(t){return t?(this._totalLikes=t.readInt(),this._canLike=t.readBoolean(),!0):!1}get totalLikes(){return this._totalLikes}get canLike(){return this._canLike}}class bU{constructor(t){this._furniId=t.readInt(),this._on=t.readBoolean(),this._rootX=t.readInt(),this._rootY=t.readInt(),this._width=t.readInt(),this._length=t.readInt(),this._invert=t.readBoolean()}get furniId(){return this._furniId}get on(){return this._on}get rootX(){return this._rootX}get rootY(){return this._rootY}get width(){return this._width}get length(){return this._length}get invert(){return this._invert}}class NU{flush(){return this._roomIndex=-1,this._groupId=-1,this._status=0,this._groupName=null,!0}parse(t){return t?(this._roomIndex=t.readInt(),this._groupId=t.readInt(),this._status=t.readInt(),this._groupName=t.readString(),!0):!1}get roomIndex(){return this._roomIndex}get groupId(){return this._groupId}get status(){return this._status}get groupName(){return this._groupName}}class UU{constructor(t,e,s){this._id=0,this._state=0,this._id=t,this._state=e,this._data=s}get id(){return this._id}get state(){return this._state}get data(){return this._data}}class DU{flush(){return this._areaData=null,!0}parse(t){return t?(this._areaData=new bU(t),!0):!1}get areaData(){return this._areaData}}class LU{flush(){return this._code=0,!0}parse(t){return t?(this._code=t.readInt(),!0):!1}get count(){return this._code}}class FU{flush(){return this._itemId=0,this._value=0,!0}parse(t){return t?(this._itemId=t.readInt(),this._value=t.readInt(),!0):!1}get itemId(){return this._itemId}get value(){return this._value}}class wU{flush(){return this._isWallItem=!1,this._furniTypeName=null,this._buyout=!1,this._priceInCredits=-1,this._priceInActivityPoints=-1,this._activityPointType=-1,!0}parse(t){return t?(this._isWallItem=t.readBoolean(),this._furniTypeName=t.readString(),this._buyout=t.readBoolean(),this._priceInCredits=t.readInt(),this._priceInActivityPoints=t.readInt(),this._activityPointType=t.readInt(),!0):!1}get isWallItem(){return this._isWallItem}get furniTypeName(){return this._furniTypeName}get buyout(){return this._buyout}get priceInCredits(){return this._priceInCredits}get priceInActivityPoints(){return this._priceInActivityPoints}get activityPointType(){return this._activityPointType}}class GU{flush(){return this._aliases=new Map,!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._aliases.set(t.readString(),t.readString()),e--;return!0}get aliases(){return this._aliases}}class jr{flush(){return this._itemId=0,this._data=null,!0}parse(t){return t?(this._itemId=parseInt(t.readString()),this._data=jr.parseObjectData(t),!0):!1}static parseObjectData(t){if(!t)return null;const e=br.getData(t.readInt());return e?(e.parseWrapper(t),e):null}get furnitureId(){return this._itemId}get objectData(){return this._data}}class BU{flush(){return this._furniId=-1,this._height=0,!0}parse(t){return t?(this._furniId=t.readInt(),this._height=t.readInt()/100,!0):!1}get furniId(){return this._furniId}get height(){return this._height}}class kU{flush(){return this._objectId=0,this._guildId=0,this._guildName=null,this._guildHomeRoomId=0,this._userIsMember=!1,this._guildHasReadableForum=!1,!0}parse(t){return t?(this._objectId=t.readInt(),this._guildId=t.readInt(),this._guildName=t.readString(),this._guildHomeRoomId=t.readInt(),this._userIsMember=t.readBoolean(),this._guildHasReadableForum=t.readBoolean(),!0):!1}get objectId(){return this._objectId}get guildId(){return this._guildId}get guildName(){return this._guildName}get guildHomeRoomId(){return this._guildHomeRoomId}get userIsMember(){return this._userIsMember}get guildHasReadableForum(){return this._guildHasReadableForum}}class zU{flush(){return this._itemId=0,this._data="",!0}parse(t){return t?(this._itemId=parseInt(t.readString()),this._data=t.readString(),!0):!1}get furnitureId(){return this._itemId}get data(){return this._data}}class VU{get furniId(){return this._furniId}flush(){return this._furniId=-1,!0}parse(t){return this._furniId=t.readInt(),!0}}class HU{get furniId(){return this._furniId}flush(){return this._furniId=-1,!0}parse(t){return this._furniId=t.readInt(),!0}}class YU{get furniId(){return this._furniId}get start(){return this._start}flush(){return this._furniId=-1,this._start=!1,!0}parse(t){return this._furniId=t.readInt(),this._start=t.readBoolean(),!0}}class WU{flush(){return this._itemId=0,this._state=0,!0}parse(t){return t?(this._itemId=t.readInt(),this._state=t.readInt(),!0):!1}get itemId(){return this._itemId}get state(){return this._state}}class jU{flush(){return!0}parse(t){return t?(this._reason=t.readInt(),!0):!1}get reason(){return this._reason}}class KU{flush(){return!0}parse(t){return t?(this._expiryTime=t.readInt(),!0):!1}get expiryTime(){return this._expiryTime}}const js=class js{flush(){return this._rented=!1,this._renterId=-1,this._renterName=null,this._canRent=!1,this._canRentErrorCode=-1,this._timeRemaining=-1,this._price=-1,!0}parse(t){return t?(this._rented=t.readBoolean(),this._canRentErrorCode=t.readInt(),this._canRent=this._canRentErrorCode===0,this._renterId=t.readInt(),this._renterName=t.readString(),this._timeRemaining=t.readInt(),this._price=t.readInt(),this._rented||(this._renterId=-1,this._renterName=""),!0):!1}get rented(){return this._rented}get renterId(){return this._renterId}get renterName(){return this._renterName}get canRent(){return this._canRent}get price(){return this._price}get timeRemaining(){return this._timeRemaining}get canRentErrorCode(){return this._canRentErrorCode}};js.SPACE_ALREADY_RENTED=100,js.SPACE_EXTEND_NOT_RENTED=101,js.SPACE_EXTEND_NOT_RENTED_BY_YOU=102,js.CAN_RENT_ONLY_ONE_SPACE=103,js.NOT_ENOUGH_CREDITS=200,js.NOT_ENOUGH_PIXELS=201,js.CANT_RENT_NO_PERMISSION=202,js.CANT_RENT_NO_HABBO_CLUB=203,js.CANT_RENT=300,js.CANT_RENT_GENERIC=400;let cd=js;class XU{flush(){return this._itemId=-1,this._location="",!0}parse(t){return t?(this._itemId=t.readInt(),this._location=t.readString(),!0):!1}get itemId(){return this._itemId}get location(){return this._location}}class qU{constructor(t,e,s,r){this.id=t,this.type=e,this.color=s,this.brightness=r}}class $U{constructor(){this._selectedPresetId=0,this._presets=[]}flush(){return this._presets=[],!0}parse(t){const e=t.readInt();this._selectedPresetId=t.readInt();for(let s=0;s<e;s++){const r=t.readInt(),n=t.readInt(),a=parseInt(t.readString().substr(1),16),o=t.readInt();this._presets.push(new qU(r,n,a,o))}return!0}getPreset(t){return t<0||t>=this.presetCount?null:this._presets[t]}get presetCount(){return this._presets.length}get selectedPresetId(){return this._selectedPresetId}}class QU{flush(){return this._roomId=-1,this._roomName=null,this._messageCount=-1,!0}parse(t){return t?(this._roomId=t.readInt(),this._roomName=t.readString(),this._messageCount=t.readInt(),!0):!1}get roomId(){return this._roomId}get roomName(){return this._roomName}get messageCount(){return this._messageCount}}class ZU{flush(){return this._email=null,this._isVerified=!1,this._allowChange=!1,this._furniId=-1,this._requestedByUser=!1,!0}parse(t){return t?(this._email=t.readString(),this._isVerified=t.readBoolean(),this._allowChange=t.readBoolean(),this._furniId=t.readInt(),this._requestedByUser=t.readBoolean(),!0):!1}get email(){return this._email}get isVerified(){return this._isVerified}get allowChange(){return this._allowChange}get furniId(){return this._furniId}get requestedByUser(){return this._requestedByUser}}class Gm{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._itemId=0,this._spriteId=0,this._spriteName=null,this._x=0,this._y=0,this._direction=0,this._z=0,this._stackHeight=0,this._extra=0,this._data=null,this._state=0,this._expires=0,this._usagePolicy=0,this._userId=0,this._username=null,!0}parse(t){return t?(this._itemId=t.readInt(),this._spriteId=t.readInt(),this._x=t.readInt(),this._y=t.readInt(),this._direction=t.readInt()%8*45,this._z=parseFloat(t.readString()),this._stackHeight=parseFloat(t.readString()),this._extra=t.readInt(),this._data=jr.parseObjectData(t),this._state=parseFloat(this._data&&this._data.getLegacyString())||0,this._expires=t.readInt(),this._usagePolicy=t.readInt(),this._userId=t.readInt(),this._username=null,this._spriteId<0&&(this._spriteName=t.readString()),!0):!1}get itemId(){return this._itemId}get spriteId(){return this._spriteId}get x(){return this._x}get y(){return this._y}get direction(){return this._direction}get z(){return isNaN(this._z)?0:this._z}get stackHeight(){return isNaN(this._stackHeight)?0:this._stackHeight}get extra(){return this._extra}get data(){return this._data}get state(){return this._state}get expires(){return this._expires}get usagePolicy(){return this._usagePolicy}get userId(){return this._userId}get username(){return this._username}set username(t){this._username=t}get spriteName(){return this._spriteName}set spriteName(t){this._spriteName=t}}class JU{flush(){return this._item=null,!0}parse(t){return t?(this._item=new Gm(t),this._item.username=t.readString(),!0):!1}get item(){return this._item}}class tD{flush(){return this._owners=new Map,this._items=[],!0}parse(t){if(!t||!this.parseOwners(t))return!1;let e=t.readInt();for(;e>0;){const s=new Gm(t);if(!s)continue;const r=this._owners.get(s.userId);r&&(s.username=r),this._items.push(s),e--}return!0}parseOwners(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._owners.set(t.readInt(),t.readString()),e--;return!0}get owners(){return this._owners}get items(){return this._items}}class eD{flush(){return this._itemId=0,this._isExpired=!0,this._userId=0,this._delay=0,!0}parse(t){return t?(this._itemId=parseInt(t.readString()),this._isExpired=t.readBoolean(),this._userId=t.readInt(),this._delay=t.readInt(),!0):!1}get itemId(){return this._itemId}get isExpired(){return this._isExpired}get userId(){return this._userId}get delay(){return this._delay}}class sD{flush(){return this._item=null,!0}parse(t){return t?(this._item=new Gm(t),!0):!1}get item(){return this._item}}class Bm{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._itemId=0,this._spriteId=0,this._location=null,this._stuffData=null,this._state=0,this._secondsToExpiration=0,this._usagePolicy=-1,this._userId=0,this._username=null,this._width=0,this._height=0,this._localX=0,this._localY=0,this._y=0,this._z=0,this._direction=null,this._isOldFormat=!1,!0}parse(t){if(!t)return!1;this._itemId=parseInt(t.readString()),this._spriteId=t.readInt(),this._location=t.readString(),this._stuffData=t.readString(),this._secondsToExpiration=t.readInt(),this._usagePolicy=t.readInt(),this._userId=t.readInt(),this._username=null;const e=parseFloat(this._stuffData);if(isNaN(e)||(this._state=Math.trunc(e)),this._location.indexOf(":")===0){this._isOldFormat=!1;let s=this._location.split(" ");if(s.length>=3){let r=s[0],n=s[1];const a=s[2];if(r.length>3&&n.length>2&&(r=r.substr(3),n=n.substr(2),s=r.split(","),s.length>=2)){const o=parseInt(s[0]),u=parseInt(s[1]);if(s=n.split(","),s.length>=2){const l=parseInt(s[0]),c=parseInt(s[1]);this._width=o,this._height=u,this._localX=l,this._localY=c,this._direction=a}}}}else this._isOldFormat=!0;return!0}get itemId(){return this._itemId}get spriteId(){return this._spriteId}get wallPosition(){return this._location}get stuffData(){return this._stuffData}get state(){return this._state}get secondsToExpiration(){return this._secondsToExpiration}get usagePolicy(){return this._usagePolicy}get userId(){return this._userId}get username(){return this._username}set username(t){this._username=t}get width(){return this._width}get height(){return this._height}get localX(){return this._localX}get localY(){return this._localY}get direction(){return this._direction}get isOldFormat(){return this._isOldFormat}}class iD{flush(){return this._item=null,!0}parse(t){return t?(this._item=new Bm(t),this._item.username=t.readString(),!0):!1}get item(){return this._item}}class rD{flush(){return this._owners=new Map,this._items=[],!0}parse(t){if(!t||!this.parseOwners(t))return!1;let e=t.readInt();for(;e>0;){const s=new Bm(t);if(!s)continue;const r=this._owners.get(s.userId);r&&(s.username=r),this._items.push(s),e--}return!0}parseOwners(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._owners.set(t.readInt(),t.readString()),e--;return!0}get owners(){return this._owners}get items(){return this._items}}class nD{flush(){return this._itemId=0,this._userId=0,!0}parse(t){return t?(this._itemId=parseInt(t.readString()),this._userId=t.readInt(),!0):!1}get itemId(){return this._itemId}get userId(){return this._userId}}class aD{flush(){return this._item=null,!0}parse(t){return t?(this._item=new Bm(t),!0):!1}get item(){return this._item}}class oD{parse(t){return this._furniId=t.readInt(),this._commandId=t.readInt(),!0}flush(){return this._furniId=-1,this._commandId=-1,!0}get furniId(){return this._furniId}get commandId(){return this._commandId}}class uD{constructor(t,e,s){this._video=t,this._title=e,this._description=s}get video(){return this._video}get title(){return this._title}get description(){return this._description}}class lD{flush(){return this._furniId=-1,this._playlists=null,this._selectedPlaylistId=null,!0}parse(t){this._furniId=t.readInt();const e=t.readInt();this._playlists=[];for(let s=0;s<e;s++)this._playlists.push(new uD(t.readString(),t.readString(),t.readString()));return this._selectedPlaylistId=t.readString(),!0}get furniId(){return this._furniId}get playlists(){return this._playlists}get selectedPlaylistId(){return this._selectedPlaylistId}}class hD{flush(){return!0}parse(t){return this._furniId=t.readInt(),this._videoId=t.readString(),this._startAtSeconds=t.readInt(),this._endAtSeconds=t.readInt(),this._state=t.readInt(),!0}get furniId(){return this._furniId}get videoId(){return this._videoId}get state(){return this._state}get startAtSeconds(){return this._startAtSeconds}get endAtSeconds(){return this._endAtSeconds}}class cD{flush(){return this._objects=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;){const s=t.readInt(),r=jr.parseObjectData(t),n=parseFloat(r.getLegacyString());this._objects.push(new UU(s,n,r)),e--}return!0}get objects(){return this._objects}}class _D{flush(){return this._rollerId=0,this._itemsRolling=[],this._unitRolling=null,!0}parse(t){if(!t)return!1;const e=t.readInt(),s=t.readInt(),r=t.readInt(),n=t.readInt();let a=t.readInt();for(;a>0;){const h=t.readInt(),_=parseFloat(t.readString()),d=parseFloat(t.readString()),f=new ji(h,new v(e,s,_),new v(r,n,d));this._itemsRolling.push(f),a--}if(this._rollerId=t.readInt(),!t.bytesAvailable)return!0;const o=t.readInt(),u=t.readInt(),l=parseFloat(t.readString()),c=parseFloat(t.readString());switch(o){case 0:break;case 1:this._unitRolling=new ji(u,new v(e,s,l),new v(r,n,c),ji.MOVE);break;case 2:this._unitRolling=new ji(u,new v(e,s,l),new v(r,n,c),ji.SLIDE);break}return!0}get rollerId(){return this._rollerId}get itemsRolling(){return this._itemsRolling}get unitRolling(){return this._unitRolling}}const ml=class ml{flush(){return this._model=null,this._width=0,this._height=0,this._wallHeight=-1,this._heightMap=[],this._scale=64,this._model=null,!0}parse(t){if(!t)return!1;const e=t.readBoolean(),s=t.readInt(),r=t.readString();return this.parseExplicitly(r,s,e)}parseModel(t,e,s=!0){return this.parseExplicitly(t,e,s)}parseExplicitly(t,e,s=!0){this._scale=s?32:64,this._wallHeight=e,this._model=t;const r=this._model.split("\r"),n=r.length;let a=0,o=0;for(;o<n;){const u=r[o];u.length>a&&(a=u.length),o++}for(this._heightMap=[],o=0;o<n;){const u=[];let l=0;for(;l<a;)u.push(ml.TILE_BLOCKED),l++;this._heightMap.push(u),o++}for(this._width=a,this._height=n,o=0;o<n;){const u=this._heightMap[o],l=r[o];if(l.length>0){let c=0;for(;c<l.length;){const h=l.charAt(c);let _=ml.TILE_BLOCKED;h!=="x"&&h!=="X"&&(_=parseInt(h,36)),u[c]=_,c++}}o++}return!0}getHeight(t,e){if(t<0||t>=this._width||e<0||e>=this._height)return-110;const s=this._heightMap[e];if(s===void 0)return-110;const r=s[t];return r===void 0?-110:r}get model(){return this._model}get width(){return this._width}get height(){return this._height}get heightMap(){return this._heightMap}get wallHeight(){return this._wallHeight}get scale(){return this._scale}};ml.TILE_BLOCKED=-110;let Oh=ml;class dD{flush(){return this._x=0,this._y=0,this._direction=0,!0}parse(t){return t?(this._x=t.readInt(),this._y=t.readInt(),this._direction=t.readInt(),!0):!1}get x(){return this._x}get y(){return this._y}get direction(){return this._direction}}class Br{static decodeTileHeight(t){return t<0?-1:(t&16383)/256}static decodeIsStackingBlocked(t){return!!(t&16384)}static decodeIsRoomTile(t){return t>=0}getTileHeight(t,e){return t<0||t>=this._width||e<0||e>=this._height?-1:Br.decodeTileHeight(this._heights[e*this._width+t])}getStackingBlocked(t,e){return t<0||t>=this._width||e<0||e>=this._height?!0:Br.decodeIsStackingBlocked(this._heights[e*this._width+t])}isRoomTile(t,e){return t<0||t>=this._width||e<0||e>=this._height?!1:Br.decodeIsRoomTile(this._heights[e*this._width+t])}flush(){return this._width=0,this._height=0,this._heights=[],!0}parse(t){if(!t)return!1;this._width=t.readInt();const e=t.readInt();this._height=e/this._width;let s=0;for(;s<e;)this._heights[s]=t.readShort(),s++;return!0}get width(){return this._width}get height(){return this._height}get heights(){return this._heights}}class fD{flush(){return this._wrapper=null,this._count=0,this._x=0,this._y=0,this._value=0,!0}tileHeight(){return Br.decodeTileHeight(this._value)}isStackingBlocked(){return Br.decodeIsStackingBlocked(this._value)}isRoomTile(){return Br.decodeIsRoomTile(this._value)}next(){return this._count?(this._count--,this._x=this._wrapper.readByte(),this._y=this._wrapper.readByte(),this._value=this._wrapper.readShort(),!0):!1}parse(t){return t?(this._wrapper=t,this._count=t.readByte(),!0):!1}get x(){return this._x}get y(){return this._y}get height(){return this._value}}class gD{flush(){return this._blockedTilesMap=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;){const s=t.readInt(),r=t.readInt();this._blockedTilesMap[r]||(this._blockedTilesMap[r]=[]),this._blockedTilesMap[r][s]=!0,e--}return!0}get blockedTilesMap(){return this._blockedTilesMap}}class pD{flush(){return this._floorType=null,this._wallType=null,this._landscapeType=null,this._landscapeAnimation=null,!0}parse(t){if(!t)return!1;const e=t.readString(),s=t.readString();switch(e){case"floor":this._floorType=s;break;case"wallpaper":this._wallType=s;break;case"landscape":this._landscapeType=s;break;case"landscapeanim":this._landscapeAnimation=s;break}return!0}get floorType(){return this._floorType}get wallType(){return this._wallType}get landscapeType(){return this._landscapeType}get landscapeAnimation(){return this._landscapeAnimation}}class mD{flush(){return this._name=null,this._roomId=0,!0}parse(t){return t?(this._name=t.readString(),this._roomId=t.readInt(),!0):!1}get name(){return this._name}get roomId(){return this._roomId}}class ED{flush(){return this._hideWalls=!1,this._thicknessWall=0,this._thicknessFloor=0,!0}parse(t){if(!t)return!1;this._hideWalls=t.readBoolean();let e=t.readInt(),s=t.readInt();return e=e<-2?-2:e>1?1:e,s=s<-2?-2:s>1?1:s,this._thicknessWall=Math.pow(2,e),this._thicknessFloor=Math.pow(2,s),!0}get hideWalls(){return this._hideWalls}get thicknessWall(){return this._thicknessWall}get thicknessFloor(){return this._thicknessFloor}}class TD{flush(){return this._resultData=null,this._otherResultData=null,!0}parse(t){return t?(this._resultData=new DT(t),this._otherResultData=new DT(t),!0):!1}get resultData(){return this._resultData}get otherResultData(){return this._otherResultData}}class ID{flush(){return this._petId=-1,this._roomIndex=-1,this._gainedExperience=0,!0}parse(t){return t?(this._petId=t.readInt(),this._roomIndex=t.readInt(),this._gainedExperience=t.readInt(),!0):!1}get petId(){return this._petId}get roomIndex(){return this._roomIndex}get gainedExperience(){return this._gainedExperience}}class SD{flush(){return!0}parse(t){return t?(this._roomIndex=t.readInt(),this._petId=t.readInt(),this._figureData=new zm(t),this._hasSaddle=t.readBoolean(),this._isRiding=t.readBoolean(),!0):!1}get roomIndex(){return this._roomIndex}get petId(){return this._petId}get figureData(){return this._figureData}get hasSaddle(){return this._hasSaddle}get isRiding(){return this._isRiding}}class RD{flush(){return this._id=-1,this._skillThresholds=[],!0}parse(t){if(!t)return!1;this._id=t.readInt(),this._name=t.readString(),this._level=t.readInt(),this._maximumLevel=t.readInt(),this._experience=t.readInt(),this._levelExperienceGoal=t.readInt(),this._energy=t.readInt(),this._maximumEnergy=t.readInt(),this._happyness=t.readInt(),this._maximumHappyness=t.readInt(),this._respect=t.readInt(),this._ownerId=t.readInt(),this._age=t.readInt(),this._ownerName=t.readString(),this._rarityLevel=t.readInt(),this._saddle=t.readBoolean(),this._rider=t.readBoolean();let e=t.readInt();for(;e>0;)this._skillThresholds.push(t.readInt()),e--;return this._skillThresholds.sort(),this._publiclyRideable=t.readInt(),this._breedable=t.readBoolean(),this._fullyGrown=t.readBoolean(),this._dead=t.readBoolean(),this._unknownRarity=t.readInt(),this._maximumTimeToLive=t.readInt(),this._remainingTimeToLive=t.readInt(),this._remainingGrowTime=t.readInt(),this._publiclyBreedable=t.readBoolean(),!0}get id(){return this._id}get name(){return this._name}get level(){return this._level}get maximumLevel(){return this._maximumLevel}get experience(){return this._experience}get energy(){return this._energy}get happyness(){return this._happyness}get levelExperienceGoal(){return this._levelExperienceGoal}get maximumEnergy(){return this._maximumEnergy}get maximumHappyness(){return this._maximumHappyness}get respect(){return this._respect}get ownerId(){return this._ownerId}get ownerName(){return this._ownerName}get age(){return this._age}get rarityLevel(){return this._rarityLevel}get saddle(){return this._saddle}get rider(){return this._rider}get breedable(){return this._breedable}get fullyGrown(){return this._fullyGrown}get dead(){return this._dead}get maximumTimeToLive(){return this._maximumTimeToLive}get remainingTimeToLive(){return this._remainingTimeToLive}get remainingGrowTime(){return this._remainingGrowTime}get skillTresholds(){return this._skillThresholds}get publiclyRideable(){return this._publiclyRideable}get unknownRarity(){return this._unknownRarity}get publiclyBreedable(){return this._publiclyBreedable}}class AD{flush(){return this._roomIndex=-1,this._petId=-1,this._canBreed=!1,this._canHarvest=!1,this._canRevive=!1,this._hasBreedingPermission=!1,!0}parse(t){return t?(this._roomIndex=t.readInt(),this._petId=t.readInt(),this._canBreed=t.readBoolean(),this._canHarvest=t.readBoolean(),this._canRevive=t.readBoolean(),this._hasBreedingPermission=t.readBoolean(),!0):!1}get roomIndex(){return this._roomIndex}get petId(){return this._petId}get canBreed(){return this._canBreed}get canHarvest(){return this._canHarvest}get canRevive(){return this._canRevive}get hasBreedingPermission(){return this._hasBreedingPermission}}class OD{flush(){return this._isPlaying=!1,!0}parse(t){return t?(this._isPlaying=t.readBoolean(),!0):!1}get isPlaying(){return this._isPlaying}}class yD{flush(){return!0}parse(t){return!0}}class vD{flush(){return this._seconds=0,!0}parse(t){return t?(this._seconds=t.readInt(),!0):!1}get seconds(){return this._seconds}}class CD{flush(){return this._seconds=0,!0}parse(t){return t?(this._seconds=t.readInt(),!0):!1}get seconds(){return this._seconds}}class km{flush(){return this._roomIndex=null,this._message=null,this._gesture=0,this._bubble=0,this._urls=[],this._messageLength=0,!0}parse(t){return t?(this._roomIndex=t.readInt(),this._message=t.readString(),this._gesture=t.readInt(),this._bubble=t.readInt(),this.parseUrls(t),this._messageLength=t.readInt(),!0):!1}parseUrls(t){if(!t)return!1;this._urls=[];let e=t.readInt();for(;e>0;)this._urls.push(t.readString()),e--;return!0}get roomIndex(){return this._roomIndex}get message(){return this._message}get gesture(){return this._gesture}get bubble(){return this._bubble}get urls(){return this._urls}get messageLength(){return this._messageLength}}class MD{flush(){return this._unitId=null,this._isTyping=!1,!0}parse(t){return t?(this._unitId=t.readInt(),this._isTyping=t.readInt()===1,!0):!1}get unitId(){return this._unitId}get isTyping(){return this._isTyping}}class xD{flush(){return this._unitId=null,this._danceId=0,!0}parse(t){return t?(this._unitId=t.readInt(),this._danceId=t.readInt(),!0):!1}get unitId(){return this._unitId}get danceId(){return this._danceId}}class PD{flush(){return this._unitId=null,this._effectId=0,this._delay=0,!0}parse(t){return t?(this._unitId=t.readInt(),this._effectId=t.readInt(),this._delay=t.readInt(),!0):!1}get unitId(){return this._unitId}get effectId(){return this._effectId}get delay(){return this._delay}}class bD{flush(){return this._unitId=null,this._expression=0,!0}parse(t){return t?(this._unitId=t.readInt(),this._expression=t.readInt(),!0):!1}get unitId(){return this._unitId}get expression(){return this._expression}}class ND{flush(){return this._unitId=null,this._handId=0,!0}parse(t){return t?(this._unitId=t.readInt(),this._handId=t.readInt(),!0):!1}get unitId(){return this._unitId}get handId(){return this._handId}}class UD{flush(){return this._giverUserId=-1,this._handItemType=-1,!0}parse(t){return t?(this._giverUserId=t.readInt(),this._handItemType=t.readInt(),!0):!1}get giverUserId(){return this._giverUserId}get handItemType(){return this._handItemType}}class DD{flush(){return this._unitId=null,this._isIdle=!1,!0}parse(t){return t?(this._unitId=t.readInt(),this._isIdle=t.readBoolean(),!0):!1}get unitId(){return this._unitId}get isIdle(){return this._isIdle}}class LD{flush(){return this._unitId=null,this._figure=null,this._gender="M",this._motto=null,this._achievementScore=0,!0}parse(t){return t?(this._unitId=t.readInt(),this._figure=t.readString(),this._gender=t.readString().toLocaleUpperCase(),this._motto=t.readString(),this._achievementScore=t.readInt(),!0):!1}get unitId(){return this._unitId}get figure(){return this._figure}get gender(){return this._gender}get motto(){return this._motto}get achievementScore(){return this._achievementScore}}class FD{flush(){return this._unitId=null,this._value=0,!0}parse(t){return t?(this._unitId=t.readInt(),this._value=t.readInt(),!0):!1}get unitId(){return this._unitId}get value(){return this._value}}const Gp=class Gp{constructor(t){this._roomIndex=0,this._x=0,this._y=0,this._z=0,this._dir=0,this._name="",this._userType=0,this._sex="",this._figure="",this._custom="",this._activityPoints=0,this._webID=0,this._groupID=0,this._groupStatus=0,this._groupName="",this._subType="",this._ownerId=0,this._ownerName="",this._rarityLevel=0,this._hasSaddle=!1,this._isRiding=!1,this._canBreed=!1,this._canHarvest=!1,this._canRevive=!1,this._hasBreedingPermission=!1,this._petLevel=0,this._petPosture="",this._botSkills=[],this._isModerator=!1,this._isReadOnly=!1,this._roomIndex=t}setReadOnly(){this._isReadOnly=!0}get roomIndex(){return this._roomIndex}get x(){return this._x}set x(t){this._isReadOnly||(this._x=t)}get y(){return this._y}set y(t){this._isReadOnly||(this._y=t)}get z(){return this._z}set z(t){this._isReadOnly||(this._z=t)}get dir(){return this._dir}set dir(t){this._isReadOnly||(this._dir=t)}get name(){return this._name}set name(t){this._isReadOnly||(this._name=t)}get userType(){return this._userType}set userType(t){this._isReadOnly||(this._userType=t)}get sex(){return this._sex}set sex(t){this._isReadOnly||(this._sex=t)}get figure(){return this._figure}set figure(t){this._isReadOnly||(this._figure=t)}get custom(){return this._custom}set custom(t){this._isReadOnly||(this._custom=t)}get activityPoints(){return this._activityPoints}set activityPoints(t){this._isReadOnly||(this._activityPoints=t)}get webID(){return this._webID}set webID(t){this._isReadOnly||(this._webID=t)}get groupID(){return this._groupID}set groupID(t){this._isReadOnly||(this._groupID=t)}get groupName(){return this._groupName}set groupName(t){this._isReadOnly||(this._groupName=t)}get groupStatus(){return this._groupStatus}set groupStatus(t){this._isReadOnly||(this._groupStatus=t)}get subType(){return this._subType}set subType(t){this._isReadOnly||(this._subType=t)}get ownerId(){return this._ownerId}set ownerId(t){this._isReadOnly||(this._ownerId=t)}get ownerName(){return this._ownerName}set ownerName(t){this._isReadOnly||(this._ownerName=t)}get rarityLevel(){return this._rarityLevel}set rarityLevel(t){this._isReadOnly||(this._rarityLevel=t)}get hasSaddle(){return this._hasSaddle}set hasSaddle(t){this._isReadOnly||(this._hasSaddle=t)}get isRiding(){return this._isRiding}set isRiding(t){this._isReadOnly||(this._isRiding=t)}get canBreed(){return this._canBreed}set canBreed(t){this._isReadOnly||(this._canBreed=t)}get canHarvest(){return this._canHarvest}set canHarvest(t){this._isReadOnly||(this._canHarvest=t)}get canRevive(){return this._canRevive}set canRevive(t){this._isReadOnly||(this._canRevive=t)}get hasBreedingPermission(){return this._hasBreedingPermission}set hasBreedingPermission(t){this._isReadOnly||(this._hasBreedingPermission=t)}get petLevel(){return this._petLevel}set petLevel(t){this._isReadOnly||(this._petLevel=t)}get petPosture(){return this._petPosture}set petPosture(t){this._isReadOnly||(this._petPosture=t)}get botSkills(){return this._botSkills}set botSkills(t){this._botSkills=t}get isModerator(){return this._isModerator}set isModerator(t){this._isReadOnly||(this._isModerator=t)}};Gp.M="M",Gp.F="F";let Ma=Gp;class wD{flush(){return this._users=[],!0}parse(t){if(!t)return!1;this._users=[];const e=t.readInt();let s=0;for(;s<e;){const r=t.readInt(),n=t.readString(),a=t.readString();let o=t.readString();const u=t.readInt(),l=t.readInt(),c=t.readInt(),h=parseFloat(t.readString()),_=t.readInt(),d=t.readInt(),f=new Ma(u);if(f.dir=_,f.name=n,f.custom=a,f.x=l,f.y=c,f.z=h,this._users.push(f),d===1){f.webID=r,f.userType=qi.USER,f.sex=this.resolveSex(t.readString()),f.groupID=t.readInt(),f.groupStatus=t.readInt(),f.groupName=t.readString();const p=t.readString();p!==""&&(o=this.convertSwimFigure(p,o,f.sex)),f.figure=o,f.activityPoints=t.readInt(),f.isModerator=t.readBoolean()}else if(d===2)f.userType=qi.PET,f.figure=o,f.webID=r,f.subType=t.readInt().toString(),f.ownerId=t.readInt(),f.ownerName=t.readString(),f.rarityLevel=t.readInt(),f.hasSaddle=t.readBoolean(),f.isRiding=t.readBoolean(),f.canBreed=t.readBoolean(),f.canHarvest=t.readBoolean(),f.canRevive=t.readBoolean(),f.hasBreedingPermission=t.readBoolean(),f.petLevel=t.readInt(),f.petPosture=t.readString();else if(d===3)f.userType=qi.BOT,f.webID=u*-1,o.indexOf("/")===-1?f.figure=o:f.figure="hr-100-.hd-180-1.ch-876-66.lg-270-94.sh-300-64",f.sex=Ma.M;else if(d===4){f.userType=qi.RENTABLE_BOT,f.webID=r,f.sex=this.resolveSex(t.readString()),f.figure=o,f.ownerId=t.readInt(),f.ownerName=t.readString();const p=t.readInt();if(p){const g=[];let m=0;for(;m<p;)g.push(t.readShort()),m++;f.botSkills=g}}s++}return!0}resolveSex(t){return t.substr(0,1).toLowerCase()==="f"?Ma.F:Ma.M}convertSwimFigure(t,e,s){const r=e.split(".");let n=1,a=1,o=1;const u=1e4;let l=0;for(;l<r.length;){const d=r[l].split("-");d.length>2&&d[0]==="hd"&&(n=parseInt(d[2])),l++}const c=["238,238,238","250,56,49","253,146,160","42,199,210","53,51,44","239,255,146","198,255,152","255,146,90","157,89,126","182,243,255","109,255,51","51,120,201","255,182,49","223,161,233","249,251,50","202,175,143","197,198,197","71,98,61","138,131,97","255,140,51","84,198,39","30,108,153","152,79,136","119,200,255","255,192,142","60,75,135","124,44,71","215,255,227","143,63,28","255,99,147","31,155,121","253,255,51"],h=t.split("=");if(h.length>1){const _=h[1].split("/");_[0];const d=_[1];s==="F"?o=10010:o=10011;const f=c.indexOf(d);a=u+f+1}return e+(".bds-10001-"+n+".ss-"+o+"-"+a)}get users(){return this._users}}class GD{flush(){return this._unitId=null,!0}parse(t){return t?(this._unitId=parseInt(t.readString()),!0):!1}get unitId(){return this._unitId}}class BD{constructor(t,e){this._action=t,this._value=e}get action(){return this._action}get value(){return this._value}}class kD{constructor(t,e,s,r,n,a,o,u=0,l=0,c=0,h,_,d){this._id=t,this._x=e,this._y=s,this._z=r,this._height=n,this._headDirection=a,this._direction=o,this._targetX=u,this._targetY=l,this._targetZ=c,this._didMove=h,this._canStandUp=_,this._actions=d||[]}get id(){return this._id}get x(){return this._x}get y(){return this._y}get z(){return this._z}get height(){return this._height}get headDirection(){return this._headDirection}get direction(){return this._direction}get targetX(){return this._targetX}get targetY(){return this._targetY}get targetZ(){return this._targetZ}get didMove(){return this._didMove}get canStandUp(){return this._canStandUp}get actions(){return this._actions}}class zD{flush(){return this._statuses=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;){const s=this.parseStatus(t);if(!s){e--;continue}this._statuses.push(s),e--}return!0}parseStatus(t){if(!t)return null;const e=t.readInt(),s=t.readInt(),r=t.readInt(),n=parseFloat(t.readString()),a=t.readInt()%8*45,o=t.readInt()%8*45,u=t.readString();let l=0,c=0,h=0,_=0,d=!1,f=!1;if(u){const p=u.split("/"),g=[];for(const m of p){const O=m.split(" ");if(O[0]!==""){if(O.length>=2)switch(O[0]){case"mv":{const y=O[1].split(",");y.length>=3&&(l=parseInt(y[0]),c=parseInt(y[1]),h=parseFloat(y[2]),f=!0);break}case"sit":{const y=parseFloat(O[1]);O.length>=3&&(d=O[2]==="1"),_=y;break}case"lay":{const y=parseFloat(O[1]);_=Math.abs(y);break}}g.push(new BD(O[0],O[1]))}}this._statuses.push(new kD(e,s,r,n,_,a,o,l,c,h,f,d,g))}}get statuses(){return this._statuses}}const Po=class Po{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._rentable=!1,this._itemId=0,this._furniType=null,this._ref=0,this._spriteId=0,this._category=0,this._stuffData=null,this._isGroupable=!1,this._isRecyclable=!1,this._tradable=!1,this._sellable=!1,this._secondsToExpiration=0,this._extra=0,this._flatId=0,this._isWallItem=!1,this._hasRentPeriodStarted=!1,this._expirationTimeStamp=0,this._slotId="",this._songId=-1,!0}parse(t){return t?(this._itemId=t.readInt(),this._furniType=t.readString(),this._ref=t.readInt(),this._spriteId=t.readInt(),this._category=t.readInt(),this._stuffData=jr.parseObjectData(t),this._isRecyclable=t.readBoolean(),this._tradable=t.readBoolean(),this._isGroupable=t.readBoolean(),this._sellable=t.readBoolean(),this._secondsToExpiration=t.readInt(),this._expirationTimeStamp=0,this.secondsToExpiration>-1?this._rentable=!0:(this._rentable=!1,this._secondsToExpiration=-1),this._hasRentPeriodStarted=t.readBoolean(),this._flatId=t.readInt(),this._isWallItem=this._furniType===Po.WALL_ITEM,this._furniType===Po.FLOOR_ITEM&&(this._slotId=t.readString(),this._extra=t.readInt()),!0):!1}get itemId(){return this._itemId}get furniType(){return this._furniType}get ref(){return this._ref}get spriteId(){return this._spriteId}get category(){return this._category}get stuffData(){return this._stuffData}get isGroupable(){return this._isGroupable}get isRecycleable(){return this._isRecyclable}get tradable(){return this._tradable}get sellable(){return this._sellable}get secondsToExpiration(){return this._secondsToExpiration}get flatId(){return this._flatId}get slotId(){return this._slotId}get songId(){return this._songId}get extra(){return this._extra}get rentable(){return this._rentable}get isWallItem(){return this._isWallItem}get hasRentPeriodStarted(){return this._hasRentPeriodStarted}get expirationTimeStamp(){return this._expirationTimeStamp}get creationDay(){return 0}get creationMonth(){return 0}get creationYear(){return 0}get isExternalImageFurni(){return this._furniType.indexOf("external_image")!==-1}};Po.WALL_ITEM="I",Po.FLOOR_ITEM="S";let yh=Po;class VD{flush(){return this._items=[],!0}parse(t){return t?(this._items.push(new yh(t)),!0):!1}get items(){return this._items}}class HD{flush(){return!0}parse(t){return!!t}}class YD{flush(){return this._totalFragments=0,this._fragmentNumber=0,this._fragment=new Map,!0}parse(t){if(!t)return!1;this._totalFragments=t.readInt(),this._fragmentNumber=t.readInt();let e=t.readInt();for(;e>0;){const s=new yh(t);s&&this._fragment.set(s.itemId,s),e--}return!0}get totalFragments(){return this._totalFragments}get fragmentNumber(){return this._fragmentNumber}get fragment(){return this._fragment}}class WD{flush(){return this._itemId=0,!0}parse(t){return t?(this._itemId=t.readInt(),!0):!1}get itemId(){return this._itemId}}class jD{flush(){return this._itemId=0,this._itemsLeft=0,!0}parse(t){return t?(this._itemId=t.readInt(),this._itemsLeft=t.readInt(),!0):!1}get itemId(){return this._itemId}get itemsLeft(){return this._itemsLeft}}class KD{flush(){return this._itemType="",this._classId=0,this._productCode="",!0}parse(t){return t?(this._itemType=t.readString(),this._classId=t.readInt(),this._productCode=t.readString(),this._placedItemId=t.readInt(),this._placedItemType=t.readString(),this._placedInRoom=t.readBoolean(),this._petFigureString=t.readString(),!0):!1}get itemType(){return this._itemType}get classId(){return this._classId}get productCode(){return this._productCode}get placedItemId(){return this._placedItemId}get placedItemType(){return this._placedItemType}get placedInRoom(){return this._placedInRoom}get petFigureString(){return this._petFigureString}}class XD{flush(){this._nestId=0,this._pet1&&(this._pet1.dispose(),this._pet1=null),this._pet2&&(this._pet2.dispose(),this._pet2=null);for(const t of this._rarityCategories)t&&t.dispose();return this._rarityCategories=[],!0}parse(t){if(!t)return!1;this._nestId=t.readInt(),this._pet1=new UT(t),this._pet2=new UT(t);let e=t.readInt();for(;e>0;)this._rarityCategories.push(new kM(t)),e--;return this._resultPetType=t.readInt(),!0}get nestId(){return this._nestId}get pet1(){return this._pet1}get pet2(){return this._pet2}get rarityCategories(){return this._rarityCategories}get resultPetType(){return this._resultPetType}}class qD{flush(){return this._breedingNestStuffId=0,this._result=0,!0}parse(t){return t?(this._breedingNestStuffId=t.readInt(),this._result=t.readInt(),!0):!1}get breedingNestStuffId(){return this._breedingNestStuffId}get result(){return this._result}}const eO=class eO{flush(){return!0}parse(t){return this._reason=t.readInt(),!0}get reason(){return this._reason}};eO.PET_TOO_TIRED_TO_BREED=6;let _d=eO;class $D{flush(){return this._petId=-1,this._rarityCategory=-1,!0}parse(t){return this._petId=t.readInt(),this._rarityCategory=t.readInt(),!0}get rarityCategory(){return this._rarityCategory}get petId(){return this._petId}}class zm{constructor(t){this._typeId=t.readInt(),this._paletteId=t.readInt(),this._color=t.readString(),this._breedId=t.readInt(),this._customParts=[],this._customPartCount=t.readInt();let e=0;for(;e<this._customPartCount;)this._customParts.push(new uS(t.readInt(),t.readInt(),t.readInt())),e++}get typeId(){return this._typeId}get paletteId(){return this._paletteId}get color(){return this._color}get breedId(){return this._breedId}get figuredata(){let t=this.typeId+" "+this.paletteId+" "+this.color;t=t+(" "+this.customPartCount);for(const e of this.customParts)t=t+(" "+e.layerId+" "+e.partId+" "+e.paletteId);return t}get customParts(){return this._customParts}get customPartCount(){return this._customPartCount}}class ac{constructor(t){if(!t)throw new Error("invalid_wrapper");this._id=t.readInt(),this._name=t.readString(),this._figureData=new zm(t),this._level=t.readInt()}get id(){return this._id}get name(){return this._name}get typeId(){return this._figureData.typeId}get paletteId(){return this._figureData.paletteId}get color(){return this._figureData.color}get breedId(){return this._figureData.breedId}get customPartCount(){return this._figureData.customPartCount}get figureString(){return this._figureData.figuredata}get figureData(){return this._figureData}get level(){return this._level}}class QD{flush(){return this._pet=null,this._boughtAsGift=!1,!0}parse(t){return this._pet=new ac(t),this._boughtAsGift=t.readBoolean(),!0}get pet(){return this._pet}get boughtAsGift(){return this._boughtAsGift}}const El=class El{flush(){return this._state=0,this._ownPetId=0,this._otherPetId=0,!0}parse(t){return t?(this._state=t.readInt(),this._ownPetId=t.readInt(),this._otherPetId=t.readInt(),!0):!1}get state(){return this._state}get ownPetId(){return this._ownPetId}get otherPetId(){return this._otherPetId}};El.STATE_CANCEL=1,El.STATE_ACCEPT=2,El.STATE_REQUEST=3;let dd=El;class ZD{flush(){return this._fragment=null,!0}parse(t){this._totalFragments=t.readInt(),this._fragmentNumber=t.readInt();let e=t.readInt();for(this._fragment=new Map;e>0;){const s=new ac(t);this._fragment.set(s.id,s),e--}return!0}get totalFragments(){return this._totalFragments}get fragmentNumber(){return this._fragmentNumber}get fragment(){return this._fragment}}class JD{flush(){return this._boughtAsGift=!1,this._pet=null,!0}parse(t){return this._boughtAsGift=t.readBoolean(),this._pet=new ac(t),!0}get boughtAsGift(){return this._boughtAsGift}get pet(){return this._pet}}class tL{flush(){return!0}parse(t){return t?(this._petId=t.readInt(),!0):!1}get petId(){return this._petId}}class wrt{parse(t){return t?(this._balance=parseFloat(t.readString()),!0):!1}flush(){return!0}get balance(){return this._balance}}class eL{constructor(t){this._itemId=t.readInt(),this._furniType=t.readString().toUpperCase(),this._ref=t.readInt(),this._spriteId=t.readInt(),this._category=t.readInt(),this._isGroupable=t.readBoolean(),this._stuffData=jr.parseObjectData(t),this._secondsToExpiration=-1,this._expirationTimeStamp=Nt(),this._hasRentPeriodStarted=!1,this._creationDay=t.readInt(),this._creationMonth=t.readInt(),this._creationYear=t.readInt(),this._extra=this.furniType==="S"?t.readInt():-1,this._flatId=-1,this._rentable=!1,this._isWallItem=this._furniType==="I"}get itemId(){return this._itemId}get furniType(){return this._furniType}get ref(){return this._ref}get spriteId(){return this._spriteId}get category(){return this._category}get stuffData(){return this._stuffData}get extra(){return this._extra}get secondsToExpiration(){return this._secondsToExpiration}get creationDay(){return this._creationDay}get creationMonth(){return this._creationMonth}get creationYear(){return this._creationYear}get isGroupable(){return this._isGroupable}get songId(){return this._extra}get flatId(){return this._flatId}get rentable(){return this._rentable}get isWallItem(){return this._isWallItem}get hasRentPeriodStarted(){return this._hasRentPeriodStarted}get expirationTimeStamp(){return this._expirationTimeStamp}get isRecycleable(){return!0}get tradable(){return!0}get sellable(){return!0}get slotId(){return null}get isExternalImageFurni(){return this._furniType.indexOf("external_image")!==-1}}class sL{flush(){return this._userID=-1,this._userAccepts=!1,!0}parse(t){return t?(this._userID=t.readInt(),this._userAccepts=t.readInt()>0,!0):!1}get userID(){return this._userID}get userAccepts(){return this._userAccepts}}const sO=class sO{flush(){return!0}parse(t){return t?(this._userId=t.readInt(),this._reason=t.readInt(),!0):!1}get userID(){return this._userId}get reason(){return this._reason}};sO.ERROR_WHILE_COMMIT=1;let fd=sO;class iL{flush(){return!0}parse(t){return!!t}}class rL{flush(){return!0}parse(t){return!!t}}class nL{flush(){return this._firstUserID=-1,this._firstUserItemArray=null,this._firstUserNumItems=0,this._firstUserNumCredits=0,this._secondUserID=-1,this._secondUserItemArray=null,this._secondUserNumItems=0,this._secondUserNumCredits=0,!0}parse(t){return!t||(this._firstUserID=t.readInt(),this._firstUserItemArray=[],!this.parseItems(t,this._firstUserItemArray))||(this._firstUserNumItems=t.readInt(),this._firstUserNumCredits=t.readInt(),this._secondUserID=t.readInt(),this._secondUserItemArray=[],!this.parseItems(t,this._secondUserItemArray))?!1:(this._secondUserNumItems=t.readInt(),this._secondUserNumCredits=t.readInt(),!0)}parseItems(t,e){let s=t.readInt();for(;s>0;)e.push(new eL(t)),s--;return!0}get firstUserID(){return this._firstUserID}get firstUserItemArray(){return this._firstUserItemArray}get firstUserNumItems(){return this._firstUserNumItems}get firstUserNumCredits(){return this._firstUserNumCredits}get secondUserID(){return this._secondUserID}get secondUserItemArray(){return this._secondUserItemArray}get secondUserNumItems(){return this._secondUserNumItems}get secondUserNumCredits(){return this._secondUserNumCredits}}class aL{flush(){return!0}parse(t){return!!t}}class oL{flush(){return!0}parse(t){return!!t}}const Bp=class Bp{flush(){return!0}parse(t){return t?(this._reason=t.readInt(),this._otherUserName=t.readString(),!0):!1}get reason(){return this._reason}get otherUserName(){return this._otherUserName}};Bp.REASON_YOU_ARE_ALREADY_TRADING=7,Bp.REASON_OTHER_USER_ALREADY_TRADING=8;let gd=Bp;class uL{flush(){return this._userId=-1,this._userCanTrade=!1,this._otherUserId=-1,this._otherUserCanTrade=!1,!0}parse(t){return t?(this._userId=t.readInt(),this._userCanTrade=t.readInt()===1,this._otherUserId=t.readInt(),this._otherUserCanTrade=t.readInt()===1,!0):!1}get userID(){return this._userId}get userCanTrade(){return this._userCanTrade}get otherUserID(){return this._otherUserId}get otherUserCanTrade(){return this._otherUserCanTrade}}class lL{flush(){return!0}parse(t){return!!t}}class hL{flush(){return!0}parse(t){return!!t}}class cL{flush(){return this._respect=0,this._petOwnerId=0,this._petData=null,!0}parse(t){return t?(this._respect=t.readInt(),this._petOwnerId=t.readInt(),this._petData=new ac(t),!0):!1}get respect(){return this._respect}get petOwnerId(){return this._petOwnerId}get petData(){return this._petData}get isTreat(){return this._petData.typeId===tu.MONSTERPLANT}}class _L{flush(){return this._petId=0,this._userId=0,this._supplementType=0,!0}parse(t){return t?(this._petId=t.readInt(),this._userId=t.readInt(),this._supplementType=t.readInt(),!0):!1}get petId(){return this._petId}get userId(){return this._userId}get supplementType(){return this._supplementType}}const aa=class aa{};aa.WATER=0,aa.LIGHT=1,aa.REVIVE=2,aa.REBREED_FERTILIZER=3,aa.SPEED_FERTILIZER=4;let Ko=aa;class dL{flush(){return this._userId=0,this._respectsReceived=0,!0}parse(t){return t?(this._userId=t.readInt(),this._respectsReceived=t.readInt(),!0):!1}get userId(){return this._userId}get respectsReceived(){return this._respectsReceived}}class fL{constructor(t,e,s){this._hasControllers=!1,this._roomId=t,this._roomName=e,this._hasControllers=s}get roomId(){return this._roomId}get roomName(){return this._roomName}get hasControllers(){return this._hasControllers}}class gL{constructor(t){this._currentHcStreak=t.readInt(),this._firstSubscriptionDate=t.readString(),this._kickbackPercentage=t.readDouble(),this._totalCreditsMissed=t.readInt(),this._totalCreditsRewarded=t.readInt(),this._totalCreditsSpent=t.readInt(),this._creditRewardForStreakBonus=t.readInt(),this._creditRewardForMonthlySpent=t.readInt(),this._timeUntilPayday=t.readInt()}get currentHcStreak(){return this._currentHcStreak}get firstSubscriptionDate(){return this._firstSubscriptionDate}get kickbackPercentage(){return this._kickbackPercentage}get totalCreditsMissed(){return this._totalCreditsMissed}get totalCreditsRewarded(){return this._totalCreditsRewarded}get totalCreditsSpent(){return this._totalCreditsSpent}get creditRewardForStreakBonus(){return this._creditRewardForStreakBonus}get creditRewardForMonthlySpent(){return this._creditRewardForMonthlySpent}get timeUntilPayday(){return this._timeUntilPayday}}class pL{flush(){return this._data=null,!0}parse(t){return this._data=new gL(t),!0}get data(){return this._data}}class mL{flush(){return this._looks=new Map,!0}parse(t){if(!t)return!1;t.readInt();let e=t.readInt();for(;e>0;){const s=t.readInt(),r=t.readString(),n=t.readString();this._looks.set(s,[r,n]),e--}return!0}get looks(){return this._looks}}class EL{flush(){return this._result=-1,!0}parse(t){return t?(this._result=t.readInt(),!0):!1}get result(){return this._result}}class TL{flush(){return this._isVip=!1,this._rooms=[],!0}parse(t){if(!t)return!1;this._isVip=t.readBoolean();let e=t.readInt();for(;e>0;)this._rooms.push(new fL(t.readInt(),t.readString(),t.readBoolean())),e--;return!0}get isVip(){return this._isVip}get rooms(){return this._rooms}}class IL{flush(){return this._pageId=-1,this._data=null,!0}parse(t){return t?(this._pageId=t.readInt(),this._data=new nc(t),!0):!1}get pageId(){return this._pageId}get data(){return this._data}}class SL{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._type=-1,this._breedId=-1,this._paletteId=-1,this._sellable=!1,this._rare=!1,!0}parse(t){return t?(this._type=t.readInt(),this._breedId=t.readInt(),this._paletteId=t.readInt(),this._sellable=t.readBoolean(),this._rare=t.readBoolean(),!0):!1}get type(){return this._type}get breedId(){return this._breedId}get paletteId(){return this._paletteId}get sellable(){return this._sellable}get rare(){return this._rare}}class RL{flush(){return this._productCode="",this._palettes=[],!0}parse(t){if(!t)return!1;this._productCode=t.readString();let e=t.readInt();for(;e>0;)this._palettes.push(new SL(t)),e--;return!0}get productCode(){return this._productCode}get palettes(){return this._palettes}}class AL{constructor(t){this._trackingState=t.readInt(),this._id=t.readInt(),this._identifier=t.readString(),this._productCode=t.readString(),this._priceInCredits=t.readInt(),this._priceInActivityPoints=t.readInt(),this._activityPointType=t.readInt(),this._purchaseLimit=t.readInt();const e=t.readInt();this._expirationTime=e>0?e*1e3+Date.now():0,this._title=t.readString(),this._description=t.readString(),this._imageUrl=t.readString(),this._iconImageUrl=t.readString(),this._type=t.readInt(),this._subProductCodes=[];let s=t.readInt();for(;s>0;)this._subProductCodes.push(t.readString()),s--;return this}populate(t){t&&(this._id=t.id,this._identifier=t.identifier,this._type=t.type,this._title=t.title,this._description=t.description,this._imageUrl=t.imageUrl,this._iconImageUrl=t.iconImageUrl,this._productCode=t.productCode,this._purchaseLimit=t.purchaseLimit,this._expirationTime=t.expirationTime,this._priceInCredits=t.priceInCredits,this._priceInActivityPoints=t.priceInActivityPoints,this._activityPointType=t.activityPointType,this._subProductCodes=t.subProductCodes,this._trackingState=t.trackingState)}purchase(t){this._purchaseLimit=this._purchaseLimit-t}get id(){return this._id}get identifier(){return this._identifier}get type(){return this._type}get title(){return this._title}get description(){return this._description}get imageUrl(){return this._imageUrl}get iconImageUrl(){return this._iconImageUrl}get productCode(){return this._productCode}get purchaseLimit(){return this._purchaseLimit}get expirationTime(){return this._expirationTime}get priceInCredits(){return this._priceInCredits}get priceInActivityPoints(){return this._priceInActivityPoints}get activityPointType(){return this._activityPointType}get subProductCodes(){return this._subProductCodes}get trackingState(){return this._trackingState}}class OL{flush(){return!0}parse(t){return!!t}}class yL{flush(){return this._data=null,!0}parse(t){return t?(this._data=new AL(t),!0):!1}get data(){return this._data}}class vL{constructor(){this._errorCode=""}flush(){return this._errorCode="",!0}parse(t){return t?(this._errorCode=t.readString(),!0):!1}get errorCode(){return this._errorCode}}class CL{constructor(){this._productName="",this._productDescription=""}flush(){return this._productDescription="",this._productName="",!0}parse(t){return t?(this._productDescription=t.readString(),this._productName=t.readString(),!0):!1}get productName(){return this._productName}get productDescription(){return this._productDescription}}class ML{flush(){return!0}parse(t){return!!t}}const gr=class gr{flush(){return this._goalId=0,this._goalCode=null,this._result=0,this._requiredFurnis=null,this._missingFurnis=null,!0}parse(t){this._goalId=t.readInt(),this._goalCode=t.readString(),this._result=t.readInt(),this._requiredFurnis=[];let e=t.readInt();for(;e>0;)this._requiredFurnis.push(t.readString()),e--;for(e=t.readInt();e>0;)this._missingFurnis[t.readString()]="",e--;return!0}get goalId(){return this._goalId}get goalCode(){return this._goalCode}get result(){return this._result}get requiredFurnis(){return this._requiredFurnis}isMissing(t){return!!this._missingFurnis[t]}};gr.SUBMITTED=0,gr.ASK_FOR_SUBMIT=1,gr.ASK_FOR_CONFIRM=2,gr.PREREQUISITES_NOT_MET=3,gr.ROOM_DOOR_NOT_OPEN=4,gr.ROOM_TOO_OLD=5,gr.ASK_FOR_ACCEPT_RULES=6;let pd=gr;const Tl=class Tl{};Tl.ALLOWED=0,Tl.REQUIRED_PERK_MISSING=1,Tl.REQUIRED_BADGE_MISSING=2;let md=Tl;class xL{flush(){return this._goalId=0,this._goalCode=null,this._resultCode=0,this._votesRemaining=0,!0}parse(t){return this._goalId=t.readInt(),this._goalCode=t.readString(),this._resultCode=t.readInt(),this._votesRemaining=t.readInt(),!0}get goalId(){return this._goalId}get goalCode(){return this._goalCode}get isVotingAllowedForUser(){return this._resultCode===md.ALLOWED}get votesRemaining(){return this._votesRemaining}get resultCode(){return this._resultCode}}class PL{flush(){return this._schedulingStr=null,this._code=null,!0}parse(t){return this._schedulingStr=t.readString(),this._code=t.readString(),!0}get schedulingStr(){return this._schedulingStr}get code(){return this._code}}class bL{flush(){return this._isPartOf=!1,this._targetId=0,!0}parse(t){return this._isPartOf=t.readBoolean(),this._targetId=t.readInt(),!0}get isPartOf(){return this._isPartOf}get targetId(){return this._targetId}}class NL{flush(){return!0}parse(t){return!0}}class UL{flush(){return this._timeStr=null,this._secondsUntil=0,!0}parse(t){return this._timeStr=t.readString(),this._secondsUntil=t.readInt(),!0}get timeStr(){return this._timeStr}get secondsUntil(){return this._secondsUntil}}class RS{constructor(t){this._recipeName=t.readString(),this._itemName=t.readString()}get recipeName(){return this._recipeName}get itemName(){return this._itemName}}class DL{constructor(){this._recipes=[],this._ingredients=[]}flush(){return this._recipes=[],this._ingredients=[],!0}parse(t){if(!t)return!1;const e=t.readInt();for(let r=0;r<e;r++)this._recipes.push(new RS(t));const s=t.readInt();for(let r=0;r<s;r++)this._ingredients.push(t.readString());return!0}get recipes(){return this._recipes}get ingredients(){return this._ingredients}isActive(){return this._recipes.length>0||this._ingredients.length>0}}class LL{constructor(t){this._count=t.readInt(),this._itemName=t.readString()}get count(){return this._count}get itemName(){return this._itemName}}class FL{constructor(){this._ingredients=[]}parse(t){if(!t)return!1;const e=t.readInt();for(let s=0;s<e;s++)this._ingredients.push(new LL(t));return!0}flush(){return this._ingredients=[],!0}get ingredients(){return this._ingredients}}class wL{parse(t){return t?(this._count=t.readInt(),this._hasRecipes=t.readBoolean(),!0):!1}flush(){return this._count=0,this._hasRecipes=!1,!0}get count(){return this._count}get hasRecipes(){return this._hasRecipes}}class GL{parse(t){return t?(this._success=t.readBoolean(),this._success&&(this._result=new RS(t)),!0):!1}flush(){return this._success=!1,!0}get success(){return this._success}get result(){return this._result}}class BL{flush(){return!0}parse(t){return!!t}}class kL{constructor(t){if(!t)throw new Error("invalid_wrapper");this._senderId=t.readInt(),this._errorCode=t.readInt()}get senderId(){return this._senderId}get errorCode(){return this._errorCode}}class zL{flush(){return this._failuers=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._failuers.push(new kL(t)),e--;return!0}get failures(){return this._failuers}}class VL{flush(){return this._success=!1,!0}parse(t){return t?(this._success=t.readBoolean(),!0):!1}get success(){return this._success}}class HL{flush(){return this._errorCode=0,!0}parse(t){return t?(this._errorCode=t.readInt(),!0):!1}get errorCode(){return this._errorCode}}class AS{constructor(t){if(!t)throw new Error("invalid_wrapper");this._id=t.readInt(),this._name=t.readString()}get id(){return this._id}get name(){return this._name}}class Ed{constructor(t){if(!t)throw new Error("invalid_wrapper");this._id=t.readInt(),this._name=t.readString(),this._gender=t.readInt(),this._online=t.readBoolean(),this._followingAllowed=t.readBoolean(),this._figure=t.readString(),this._categoryId=t.readInt(),this._motto=t.readString(),this._realName=t.readString(),this._lastAccess=t.readString(),this._persistedMessageUser=t.readBoolean(),this._vipMember=t.readBoolean(),this._pocketHabboUser=t.readBoolean(),this._relationshipStatus=t.readShort()}get id(){return this._id}get name(){return this._name}get gender(){return this._gender}get online(){return this._online}get followingAllowed(){return this._followingAllowed}get figure(){return this._figure}get categoryId(){return this._categoryId}get motto(){return this._motto}get lastAccess(){return this._lastAccess}get realName(){return this._realName}get persistedMessageUser(){return this._persistedMessageUser}get vipMember(){return this._vipMember}get pocketHabboUser(){return this._pocketHabboUser}get relationshipStatus(){return this._relationshipStatus}}class YL{flush(){return this._totalFragments=0,this._fragmentNumber=0,this._fragment=[],!0}parse(t){if(!t)return!1;this._totalFragments=t.readInt(),this._fragmentNumber=t.readInt();let e=t.readInt();for(;e>0;)this._fragment.push(new Ed(t)),e--;return!0}get totalFragments(){return this._totalFragments}get fragmentNumber(){return this._fragmentNumber}get fragment(){return this._fragment}}class WL{flush(){return this._categories=[],this._removedFriendIds=[],this._addedFriends=[],this._updatedFriends=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._categories.push(new AS(t)),e--;let s=t.readInt();for(;s>0;){const r=t.readInt();r===-1?this._removedFriendIds.push(t.readInt()):r===0?this._updatedFriends.push(new Ed(t)):r===1&&this._addedFriends.push(new Ed(t)),s--}return!0}get categories(){return this._categories}get removedFriendIds(){return this._removedFriendIds}get addedFriends(){return this._addedFriends}get updatedFriends(){return this._updatedFriends}}class jL{flush(){return this._typeCode=-1,this._avatarId=0,this._message=null,!0}parse(t){return t?(this._typeCode=t.readInt(),this._avatarId=t.readInt(),this._message=t.readString(),!0):!1}get typeCode(){return this._typeCode}get avatarId(){return this._avatarId}get message(){return this._message}}class OS{constructor(t){if(!t)throw new Error("invalid_wrapper");this._requestId=t.readInt(),this._requesterName=t.readString(),this._figureString=t.readString(),this._requesterUserId=this._requestId}get requestId(){return this._requestId}get requesterName(){return this._requesterName}get requesterUserId(){return this._requesterUserId}get figureString(){return this._figureString}}class KL{flush(){return this._totalRequests=0,this._requests=[],!0}parse(t){if(!t)return!1;this._totalRequests=t.readInt();let e=t.readInt();for(;e>0;)this._requests.push(new OS(t)),e--;return!0}get totalRequests(){return this._totalRequests}get requests(){return this._requests}}class SI{constructor(t){if(!t)throw new Error("invalid_wrapper");this._avatarId=t.readInt(),this._avatarName=t.readString(),this._avatarMotto=t.readString(),this._isAvatarOnline=t.readBoolean(),this._canFollow=t.readBoolean(),this._lastOnlineData=t.readString(),this._avatarGender=t.readInt(),this._avatarFigure=t.readString(),this._realName=t.readString()}get avatarId(){return this._avatarId}get avatarName(){return this._avatarName}get avatarMotto(){return this._avatarMotto}get isAvatarOnline(){return this._isAvatarOnline}get canFollow(){return this._canFollow}get avatarGender(){return this._avatarGender}get avatarFigure(){return this._avatarFigure}get lastOnlineData(){return this._lastOnlineData}get realName(){return this._realName}}class XL{flush(){return this._friends=[],this._others=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._friends.push(new SI(t)),e--;let s=t.readInt();for(;s>0;)this._others.push(new SI(t)),s--;return!0}get friends(){return this._friends}get others(){return this._others}}class qL{flush(){return this._errorCode=0,this._userId=0,this._message=null,!0}parse(t){return t?(this._errorCode=t.readInt(),this._userId=t.readInt(),this._message=t.readString(),!0):!1}get errorCode(){return this._errorCode}get userId(){return this._userId}get message(){return this._message}}class $L{flush(){return this._clientMessageId=0,this._errorCode=0,!0}parse(t){return t?(this._clientMessageId=t.readInt(),this._errorCode=t.readInt(),!0):!1}get clientMessageId(){return this._clientMessageId}get errorCode(){return this._errorCode}}class QL{flush(){return this._userFriendLimit=0,this._normalFriendLimit=0,this._extendedFriendLimit=0,this._categories=[],!0}parse(t){if(!t)return!1;this._userFriendLimit=t.readInt(),this._normalFriendLimit=t.readInt(),this._extendedFriendLimit=t.readInt();let e=t.readInt();for(;e>0;)this._categories.push(new AS(t)),e--;return!0}get userFriendLimit(){return this._userFriendLimit}get normalFriendLimit(){return this._normalFriendLimit}get extendedFriendLimit(){return this._extendedFriendLimit}get categories(){return this._categories}}class ZL{flush(){return!0}parse(t){return!!t}}class JL{flush(){return this._count=0,!0}parse(t){return t?(this._count=t.readInt(),!0):!1}get count(){return this._count}}class t1{flush(){return this._senderId=0,this._messageText=null,this._secondsSinceSent=0,this._extraData=null,!0}parse(t){return t?(this._senderId=t.readInt(),this._messageText=t.readString(),this._secondsSinceSent=t.readInt(),t.bytesAvailable&&(this._extraData=t.readString()),!0):!1}get senderId(){return this._senderId}get messageText(){return this._messageText}get secondsSinceSent(){return this._secondsSinceSent}get extraData(){return this._extraData}}class e1{flush(){return this._request=null,!0}parse(t){return t?(this._request=new OS(t),!0):!1}get request(){return this._request}}class s1{flush(){return this._errorCode=0,this._failedRecipients=[],!0}parse(t){if(!t)return!1;this._errorCode=t.readInt();let e=t.readInt();for(;e>0;)this._failedRecipients.push(t.readInt()),e--;return!0}get errorCode(){return this._errorCode}get failedRecipients(){return this._failedRecipients}}class i1{flush(){return this._senderId=0,this._messageText=null,!0}parse(t){return t?(this._senderId=t.readInt(),this._messageText=t.readString(),!0):!1}get senderId(){return this._senderId}get messageText(){return this._messageText}}class r1{flush(){return!0}parse(t){return t?(this._gameTypeId=t.readInt(),this._freeGamesLeft=t.readInt(),this._gamesPlayedTotal=t.readInt(),!0):!1}get gameTypeId(){return this._gameTypeId}get freeGamesLeft(){return this._freeGamesLeft}get gamesPlayedTotal(){return this._gamesPlayedTotal}get hasUnlimitedGames(){return this._freeGamesLeft==-1}}const bo=class bo{flush(){return this._status=-1,this._blockLength=-1,this._gamesPlayed=-1,this._freeGamesLeft=-1,!0}parse(t){return t?(this._status=t.readInt(),this._blockLength=t.readInt(),this._gamesPlayed=t.readInt(),this._freeGamesLeft=t.readInt(),!0):!1}get status(){return this._status}get blockLength(){return this._blockLength}get gamesPlayed(){return this._gamesPlayed}get freeGamesLeft(){return this._freeGamesLeft}get hasUnlimitedGames(){return this._freeGamesLeft==-1}};bo.STATUS_OK=0,bo.STATUS_FAILED_REASON_UNKNOWN=1,bo.STATUS_FAILED_REASON_GAME_DIRECTORY_IS_NOT_AVAILABLE=2,bo.STATUS_FAILED_REASON_HOTEL_IS_CLOSED=3;let Td=bo;class n1{flush(){return this._position=-1,!0}parse(t){return t?(this._position=t.readInt(),!0):!1}get position(){return this._position}}const Di=class Di{flush(){return this._reason=-1,!0}parse(t){return t?(this._reason=t.readInt(),!0):!1}get reason(){return this._reason}};Di.KICKED=1,Di.DUPLICATE_MACHINEID=2,Di.INVITATION_REQUIRED=3,Di.NO_SPACE_IN_TEAM=4,Di.TEAM_NOT_FOUND=5,Di.USER_HAS_ACTIVE_INSTANCE=6,Di.USER_HAS_PENDING_INSTANCE_REQUEST=7,Di.USER_HAS_NO_FREE_GAMES_LEFT=8;let Id=Di;const kp=class kp{flush(){return this._reason=-1,!0}parse(t){return t?(this._reason=t.readInt(),!0):!1}get reason(){return this._reason}};kp.NOT_ENOUGH_PLAYERS=1,kp.GAME_HAS_NO_OWNER=2;let Sd=kp;class a1{flush(){return!0}parse(t){return!!t}}class o1{flush(){return this._userId=-1,!0}parse(t){return t?(this._userId=t.readInt(),!0):!1}get userId(){return this._userId}}class u1{flush(){return!0}parse(t){return t?(this._stuffCode=t.readString(),this._badgeCode=t.readString(),!0):!1}get stuffCode(){return this._stuffCode}get badgeCode(){return this._badgeCode}}class l1{flush(){return this._stuffId=-1,this._achievementId=0,this._requiredLevelBadgeCode="",this._userProgress=0,this._totalProgress=0,this._endTime=0,!0}parse(t){return t?(this._stuffId=t.readInt(),this._achievementId=t.readInt(),this._requiredLevelBadgeCode=t.readString(),this._userProgress=t.readInt(),this._totalProgress=t.readInt(),this._endTime=t.readInt(),!0):!1}get stuffId(){return this._stuffId}get achievementId(){return this._achievementId}get requiredLevelBadgeCode(){return this._requiredLevelBadgeCode}get userProgress(){return this._userProgress}get totalProgress(){return this._totalProgress}get endTime(){return this._endTime}}class h1{flush(){return!0}parse(t){if(!t)return!1;this._stuffId=t.readInt();const e=t.readInt();let s=0;for(;s<e;)this._achievements.push(new od(t)),s++;return this._endTime=t.readInt(),!0}get stuffId(){return this._stuffId}get achievements(){return this._achievements}get endTime(){return this._endTime}}class c1{constructor(t,e,s,r){this._gameTypeId=t,this._achievementId=e,this._achievementName=s,this._levels=r}get gameTypeId(){return this._gameTypeId}get achievementId(){return this._achievementId}get achievementName(){return this._achievementName}get levels(){return this._levels}}class _1{flush(){return!0}parse(t){if(!t)return!1;this._achievements=[];const e=t.readInt();let s=0;for(;s<e;){const r=t.readInt(),n=t.readInt();let a=0;for(;a<n;){const o=t.readInt(),u=t.readString(),l=t.readInt();this._achievements.push(new c1(r,o,u,l)),a++}s++}return!0}get achievements(){return this._achievements}}class d1{constructor(t,e,s,r,n,a){this._gameId=t,this._gameNameId=e,this._bgColor=s,this._textColor=r,this._assetUrl=n,this._supportUrl=a}get gameId(){return this._gameId}get gameNameId(){return this._gameNameId}get bgColor(){return this._bgColor}get textColor(){return this._textColor}get assetUrl(){return this._assetUrl}get supportUrl(){return this._supportUrl}}class f1{flush(){return!0}parse(t){return t?(this._gameTypeId=t.readInt(),this._inviterId=t.readInt(),!0):!1}get gameTypeId(){return this._gameTypeId}get inviterId(){return this._inviterId}}class g1{flush(){return!0}parse(t){if(!t)return!1;this._games=[];const e=t.readInt();for(let s=0;s<e;s++){const r=t.readInt(),n=t.readString(),a=t.readString();let o=parseInt(a,16);o=o|4278190080;const u=t.readString();let l=parseInt(u,16);l=l|4278190080;const c=t.readString(),h=t.readString();this._games.push(new d1(r,n,o,l,c,h))}return!0}get games(){return this._games}}const No=class No{flush(){return!0}parse(t){return t?(this._gameTypeId=t.readInt(),this._status=t.readInt(),!0):!1}get gameTypeId(){return this._gameTypeId}get isOk(){return this._status==No.OK}get isInMaintenance(){return this._status==No.MAINTENANCE}};No.OK=0,No.MAINTENANCE=1;let Rd=No;class p1{flush(){return!0}parse(t){return t?(this._gameTypeId=t.readInt(),!0):!1}get gameTypeId(){return this._gameTypeId}}const iO=class iO{flush(){return!0}parse(t){return t?(this._gameTypeId=t.readInt(),this._reason=t.readInt(),!0):!1}get gameTypeId(){return this._gameTypeId}get reason(){return this._reason}};iO.DUPLICATE_MACHINEID=1;let Ad=iO;class m1{flush(){return!0}parse(t){return t?(this._gameTypeId=t.readInt(),!0):!1}get gameTypeId(){return this._gameTypeId}}class E1{flush(){return!0}parse(t){if(!t)return!1;this._gameTypeId=t.readInt(),this._gameClientId=t.readString(),this._url=t.readString(),this._quality=t.readString(),this._scaleMode=t.readString(),this._frameRate=t.readInt(),this._minMajorVersion=t.readInt(),this._minMinorVersion=t.readInt(),this._params=new Map;const e=t.readInt();let s=0;for(;s<e;)this._params.set(t.readString(),t.readString()),s++;return!0}get gameTypeId(){return this._gameTypeId}get url(){return this._url}get quality(){return this._quality}get scaleMode(){return this._scaleMode}get frameRate(){return this._frameRate}get minMajorVersion(){return this._minMajorVersion}get minMinorVersion(){return this._minMinorVersion}get params(){return this._params}get gameClientId(){return this._gameClientId}}class T1{flush(){return this._gameTypeId=0,this._url=null,this._gameClientId=null,!0}parse(t){return t?(this._gameTypeId=t.readInt(),this._gameClientId=t.readString(),this._url=t.readString(),!0):!1}get gameTypeId(){return this._gameTypeId}get url(){return this._url}get gameClientId(){return this._gameClientId}}class I1{flush(){return!0}parse(t){return t?(this._gameTypeId=t.readInt(),this._gameClientId=t.readString(),!0):!1}get gameTypeId(){return this._gameTypeId}get gameClientId(){return this._gameClientId}}class S1{flush(){return!0}parse(t){return!!t}}class oc{flush(){return this._year=-1,this._week=-1,this._maxOffset=-1,this._currentOffset=-1,this._minutesUntilReset=-1,!0}parse(t){return t?(this._year=t.readInt(),this._week=t.readInt(),this._maxOffset=t.readInt(),this._currentOffset=t.readInt(),this._minutesUntilReset=t.readInt(),!0):!1}get year(){return this._year}get week(){return this._week}get maxOffset(){return this._maxOffset}get currentOffset(){return this._currentOffset}get minutesUntilReset(){return this._minutesUntilReset}}class R1{constructor(t){this._name=t.readString(),this._figure=t.readString(),this._gender=t.readString(),this._rank=t.readInt(),this._score=t.readInt()}get name(){return this._name}get figure(){return this._figure}get gender(){return this._gender}get rank(){return this._rank}get score(){return this._score}}class Grt{constructor(t){this._userId=t.readInt(),this._score=t.readInt(),this._rank=t.readInt(),this._name=t.readString(),this._figure=t.readString(),this._gender=t.readString()}get userId(){return this._userId}get score(){return this._score}get rank(){return this._rank}get figure(){return this._figure}get gender(){return this._gender}get name(){return this._name}}class A1{flush(){return this._gameTypeId=-1,this._products=[],this._minutesUntilNextWeek=0,this._rewardingOn=!0,!0}parse(t){if(!t)return!1;this._gameTypeId=t.readInt();let e=t.readInt();for(;e>0;)this._products.push(new rc(t)),e--;return this._minutesUntilNextWeek=t.readInt(),this._rewardingOn=t.readBoolean(),!0}get gameTypeId(){return this._gameTypeId}get products(){return this._products}get minutesUntilNextWeek(){return this._minutesUntilNextWeek}get rewardingOn(){return this._rewardingOn}}class O1{flush(){return this._gameTypeId=-1,this._winners=[],!0}parse(t){if(!t)return!1;this._gameTypeId=t.readInt();let e=t.readInt();for(;e>0;)this._winners.push(new R1(t)),e--;return!0}get gameTypeId(){return this._gameTypeId}get winners(){return this._winners}}class y1{flush(){return this._errorCode=0,!0}parse(t){return t?(this._errorCode=t.readInt(),!0):!1}get errorCode(){return this._errorCode}}class v1{flush(){return this._phoneStatusCode=-1,this._millisecondsToAllowProcessReset=-1,!0}parse(t){return t?(this._phoneStatusCode=t.readInt(),this._collectionStatusCode=t.readInt(),this._millisecondsToAllowProcessReset=t.readInt(),!0):!1}get phoneStatusCode(){return this._phoneStatusCode}get collectionStatusCode(){return this._collectionStatusCode}get millisecondsToAllowProcessReset(){return this._millisecondsToAllowProcessReset}}class C1{flush(){return this._resultCode=-1,!0}parse(t){return t?(this._resultCode=t.readInt(),this._millisToAllowProcessReset=t.readInt(),!0):!1}get resultCode(){return this._resultCode}get millisToAllowProcessReset(){return this._millisToAllowProcessReset}}class M1{flush(){return this._resultCode=-1,this._millisecondsToAllowProcessReset=-1,!0}parse(t){return t?(this._resultCode=t.readInt(),this._millisecondsToAllowProcessReset=t.readInt(),!0):!1}get resultCode(){return this._resultCode}get millisToAllowProcessReset(){return this._millisecondsToAllowProcessReset}}class x1{flush(){return this._bases=new Map,this._symbols=new Map,this._partColors=new Map,this._colorsA=new Map,this._colorsB=new Map,!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;){const o=t.readInt(),u=t.readString(),l=t.readString();this._bases.set(o,[u,l]),e--}let s=t.readInt();for(;s>0;){const o=t.readInt(),u=t.readString(),l=t.readString();this._symbols.set(o,[u,l]),s--}let r=t.readInt();for(;r>0;){const o=t.readInt(),u=t.readString();this._partColors.set(o,u),r--}let n=t.readInt();for(;n>0;){const o=t.readInt(),u=t.readString();this._colorsA.set(o,u),n--}let a=t.readInt();for(;a>0;){const o=t.readInt(),u=t.readString();this._colorsB.set(o,u),a--}return!0}get bases(){return this._bases}get symbols(){return this._symbols}get partColors(){return this._partColors}get colorsA(){return this._colorsA}get colorsB(){return this._colorsB}}class P1{flush(){return this._groupCost=0,this._availableRooms=new Map,!0}parse(t){if(!t)return!1;this._groupCost=t.readInt();let e=t.readInt();for(;e>0;){const s=t.readInt(),r=t.readString();t.readBoolean(),this._availableRooms.set(s,r),e--}return!0}get groupCost(){return this._groupCost}get availableRooms(){return this._availableRooms}}class b1{flush(){return this._userId=0,this._furnitureCount=0,!0}parse(t){return t?(this._userId=t.readInt(),this._furnitureCount=t.readInt(),!0):!1}get userId(){return this._userId}get furnitureCount(){return this._furnitureCount}}class N1{flush(){return this._id=0,this._type=0,this._title=null,this._description=null,this._badge=null,this._roomId=0,this._roomName=null,this._membershipType=0,this._membersCount=0,this._isFavorite=!1,this._createdAt=null,this._isOwner=!1,this._isAdmin=!1,this._ownerName=null,this._flag=!1,this._canMembersDecorate=!1,this._pendingRequestsCount=0,!0}parse(t){return t?(this._id=t.readInt(),t.readBoolean(),this._type=t.readInt(),this._title=t.readString(),this._description=t.readString(),this._badge=t.readString(),this._roomId=t.readInt(),this._roomName=t.readString(),this._membershipType=t.readInt(),this._membersCount=t.readInt(),this._isFavorite=t.readBoolean(),this._createdAt=t.readString(),this._isOwner=t.readBoolean(),this._isAdmin=t.readBoolean(),this._ownerName=t.readString(),this._flag=t.readBoolean(),this._canMembersDecorate=t.readBoolean(),this._pendingRequestsCount=t.readInt(),!0):!1}get id(){return this._id}get type(){return this._type}get title(){return this._title}get description(){return this._description}get badge(){return this._badge}get roomId(){return this._roomId}get roomName(){return this._roomName}get membershipType(){return this._membershipType}get membersCount(){return this._membersCount}get isFavorite(){return this._isFavorite}get createdAt(){return this._createdAt}get isOwner(){return this._isOwner}get isAdmin(){return this._isAdmin}get ownerName(){return this._ownerName}get flag(){return this._flag}get canMembersDecorate(){return this._canMembersDecorate}get pendingRequestsCount(){return this._pendingRequestsCount}}class U1{constructor(t){this.isBase=t,this.key=0,this.color=0,this.position=4}get code(){return this.key===0?null:(this.isBase?"b":"s")+(this.key<100?"0":"")+(this.key<10?"0":"")+this.key+(this.color<10?"0":"")+this.color+this.position}}const oa=class oa{};oa.OWNER=0,oa.ADMIN=1,oa.MEMBER=2,oa.REQUESTED=3,oa.DELETED=4;let RI=oa;class D1{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._rank=-1,this._id=0,this._name=null,this._figure=null,this._joinedAt=null,!0}parse(t){return t?(this._rank=t.readInt(),this._id=t.readInt(),this._name=t.readString(),this._figure=t.readString(),this._joinedAt=t.readString(),!0):!1}get id(){return this._id}get name(){return this._name}get figure(){return this._figure}get rank(){return this._rank}get joinedAt(){return this._joinedAt}}class L1{flush(){return this._groupId=0,this._groupTitle=null,this._roomId=0,this._badge=null,this._totalMembersCount=0,this._result=[],this._admin=!1,this._pageSize=0,this._pageIndex=0,this._level=0,this._query=null,!0}parse(t){if(!t)return!1;this._groupId=t.readInt(),this._groupTitle=t.readString(),this._roomId=t.readInt(),this._badge=t.readString(),this._totalMembersCount=t.readInt();let e=t.readInt();for(;e>0;)this._result.push(new D1(t)),e--;return this._admin=t.readBoolean(),this._pageSize=t.readInt(),this._pageIndex=t.readInt(),this._level=t.readInt(),this._query=t.readString(),!0}get groupId(){return this._groupId}get groupTitle(){return this._groupTitle}get roomId(){return this._roomId}get badge(){return this._badge}get totalMembersCount(){return this._totalMembersCount}get result(){return this._result}get admin(){return this._admin}get pageSize(){return this._pageSize}get pageIndex(){return this._pageIndex}get level(){return this._level}get query(){return this._query}}class F1{flush(){return this._roomId=0,this._groupId=0,!0}parse(t){return t?(this._roomId=t.readInt(),this._groupId=t.readInt(),!0):!1}get roomId(){return this._roomId}get guildId(){return this._groupId}}class w1{flush(){return this._roomId=0,this._roomName=null,this._id=0,this._title=null,this._description=null,this._colorA=0,this._colorB=0,this._state=0,this._canMembersDecorate=!1,this._badgeParts=new Map,this._badgeCode=null,this._membersCount=0,!0}parse(t){if(!t)return!1;t.readInt()===1&&(this._roomId=t.readInt(),this._roomName=t.readString(),t.readBoolean()),t.readBoolean(),this._id=t.readInt(),this._title=t.readString(),this._description=t.readString(),t.readInt(),this._colorA=t.readInt(),this._colorB=t.readInt(),this._state=t.readInt(),this._canMembersDecorate=t.readInt()===0,t.readBoolean(),t.readString();const s=t.readInt();for(let r=0;r<s;r++){const n=new U1(r===0);n.key=t.readInt(),n.color=t.readInt(),n.position=t.readInt(),n.key===0&&(n.position=4),this._badgeParts.set(r,n)}return this._badgeCode=t.readString(),this._membersCount=t.readInt(),!0}get roomId(){return this._roomId}get roomName(){return this._roomName}get id(){return this._id}get title(){return this._title}get description(){return this._description}get colorA(){return this._colorA}get colorB(){return this._colorB}get state(){return this._state}get canMembersDecorate(){return this._canMembersDecorate}get badgeParts(){return this._badgeParts}get badgeCode(){return this._badgeCode}get membersCount(){return this._membersCount}}class G1{flush(){return!0}parse(t){return this._groupId=t.readInt(),!0}get groupId(){return this._groupId}}class uu{static parse(t){return this.fillFromMessage(new uu,t)}static fillFromMessage(t,e){return t._groupId=e.readInt(),t._name=e.readString(),t._description=e.readString(),t._icon=e.readString(),t._totalThreads=e.readInt(),t._leaderboardScore=e.readInt(),t._totalMessages=e.readInt(),t._unreadMessages=e.readInt(),t._lastMessageId=e.readInt(),t._lastMessageAuthorId=e.readInt(),t._lastMessageAuthorName=e.readString(),t._lastMessageTimeAsSecondsAgo=e.readInt(),t}get groupId(){return this._groupId}get name(){return this._name}get description(){return this._description}get icon(){return this._icon}get totalThreads(){return this._totalThreads}get leaderboardScore(){return this._leaderboardScore}get totalMessages(){return this._totalMessages}get unreadMessages(){return this._unreadMessages}get lastMessageId(){return this._lastMessageId}get lastMessageAuthorId(){return this._lastMessageAuthorId}get lastMessageAuthorName(){return this._lastMessageAuthorName}get lastMessageTimeAsSecondsAgo(){return this._lastMessageTimeAsSecondsAgo}updateFrom(t){this._totalThreads=t._totalThreads,this._totalMessages=t._totalMessages,this._unreadMessages=t._unreadMessages,this._lastMessageAuthorId=t._lastMessageAuthorId,this._lastMessageAuthorName=t._lastMessageAuthorName,this._lastMessageId=t._lastMessageId,this._lastMessageTimeAsSecondsAgo=t._lastMessageTimeAsSecondsAgo}get lastReadMessageId(){return this._totalMessages-this._unreadMessages}set lastReadMessageId(t){this._unreadMessages=this._totalMessages-t,this._unreadMessages<0&&(this._unreadMessages=0)}addNewThread(t){this._lastMessageAuthorId=t.lastUserId,this._lastMessageAuthorName=t.lastUserName,this._lastMessageId=t.lastMessageId,this._lastMessageTimeAsSecondsAgo=t.lastCommentTime,this._totalThreads++,this._totalMessages++,this._unreadMessages=0}}class Vm extends uu{static parse(t){const e=new Vm;return uu.fillFromMessage(e,t),e._readPermissions=t.readInt(),e._postMessagePermissions=t.readInt(),e._postThreadPermissions=t.readInt(),e._moderatePermissions=t.readInt(),e._readPermissionError=t.readString(),e._postMessagePermissionError=t.readString(),e._postThreadPermissionError=t.readString(),e._moderatePermissionError=t.readString(),e._reportPermissionError=t.readString(),e._canChangeSettings=t.readBoolean(),e._isStaff=t.readBoolean(),e}get readPermissions(){return this._readPermissions}get postMessagePermissions(){return this._postMessagePermissions}get postThreadPermissions(){return this._postThreadPermissions}get moderatePermissions(){return this._moderatePermissions}get hasReadPermissionError(){return this._readPermissionError.length===0}get canReport(){return!0}get hasPostMessagePermissionError(){return this._postMessagePermissionError.length===0}get hasPostThreadPermissionError(){return this._postThreadPermissionError.length===0}get hasModeratePermissionError(){return this._moderatePermissionError.length===0}get canChangeSettings(){return this._canChangeSettings}get isStaf(){return this._isStaff}get readPermissionError(){return this._readPermissionError}get postMessagePermissionError(){return this._postMessagePermissionError}get postThreadPermissionError(){return this._postThreadPermissionError}get moderatePermissionError(){return this._moderatePermissionError}get reportPermissionError(){return this._reportPermissionError}}class B1{flush(){return this._extendedForumData=null,!0}parse(t){return t?(this._extendedForumData=Vm.parse(t),!0):!1}get extendedForumData(){return this._extendedForumData}}class k1{flush(){return this._listCode=-1,this._totalAmount=0,this._startIndex=-1,this._amount=0,this._forums=[],!0}parse(t){if(!t)return!1;this._listCode=t.readInt(),this._totalAmount=t.readInt(),this._startIndex=t.readInt(),this._amount=t.readInt(),this._forums=[];let e=0;for(;e<this._amount;)this._forums.push(uu.parse(t)),e++;return!0}get listCode(){return this._listCode}get totalAmount(){return this._totalAmount}get startIndex(){return this._startIndex}get amount(){return this._amount}get forums(){return this._forums}}class Ru{static parse(t){const e=new Ru;return e._threadId=t.readInt(),e._authorId=t.readInt(),e._authorName=t.readString(),e._header=t.readString(),e._isPinned=t.readBoolean(),e._isLocked=t.readBoolean(),e._creationTimeAsSecondsAgo=t.readInt(),e._totalMessages=t.readInt(),e._unreadMessagesCount=t.readInt(),e._lastMessageId=t.readInt(),e._lastUserId=t.readInt(),e._lastUserName=t.readString(),e._lastCommentTime=t.readInt(),e._state=t.readByte(),e._adminId=t.readInt(),e._adminName=t.readString(),e._adminOperationTimeAsSecondsAgo=t.readInt(),e}get adminOperationTimeAsSecondsAgo(){return this._adminOperationTimeAsSecondsAgo}set adminOperationTimeAsSecondsAgo(t){this._adminOperationTimeAsSecondsAgo=t}get lastCommentTime(){return this._lastCommentTime}set lastCommentTime(t){this._lastCommentTime=t}get threadId(){return this._threadId}set threadId(t){this._threadId=t}get authorId(){return this._authorId}set authorId(t){this._authorId=t}get authorName(){return this._authorName}set authorName(t){this._authorName=t}get creationTimeAsSecondsAgo(){return this._creationTimeAsSecondsAgo}set creationTimeAsSecondsAgo(t){this._creationTimeAsSecondsAgo=t}get header(){return this._header}set header(t){this._header=t}get lastMessageId(){return this._lastMessageId}set lastMessageId(t){this._lastMessageId=t}get lastUserId(){return this._lastUserId}set lastUserId(t){this._lastUserId=t}get lastUserName(){return this._lastUserName}set lastUserName(t){this._lastUserName=t}get totalMessages(){return this._totalMessages}set totalMessages(t){this._totalMessages=t}get unreadMessagesCount(){return this._unreadMessagesCount}set unreadMessagesCount(t){this._unreadMessagesCount=t}get state(){return this._state}set state(t){this._state=t}get adminId(){return this._adminId}set adminId(t){this._adminId=t}get adminName(){return this._adminName}set adminName(t){this._adminName=t}get isPinned(){return this._isPinned}set isPinned(t){this._isPinned=t}get isLocked(){return this._isLocked}set isLocked(t){this._isLocked=t}}class z1{flush(){return this._groupId=-1,this._startIndex=-1,this._amount=0,this._threads=[],!0}parse(t){if(!t)return!1;this._groupId=t.readInt(),this._startIndex=t.readInt(),this._amount=t.readInt(),this._threads=[];let e=0;for(;e<this._amount;)this._threads.push(Ru.parse(t)),e++;return!0}get groupId(){return this._groupId}get startIndex(){return this._startIndex}get amount(){return this._amount}get threads(){return this._threads}}class Au{static parse(t){const e=new Au;return e._messageId=t.readInt(),e._messageIndex=t.readInt(),e._authorId=t.readInt(),e._authorName=t.readString(),e._authorFigure=t.readString(),e._creationTime=t.readInt(),e._messageText=t.readString(),e._state=t.readByte(),e._adminId=t.readInt(),e._adminName=t.readString(),e._adminOperationTimeAsSeccondsAgo=t.readInt(),e._authorPostCount=t.readInt(),e}get state(){return this._state}set state(t){this._state=t}get adminId(){return this._adminId}set adminId(t){this._adminId=t}get adminName(){return this._adminName}set adminName(t){this._adminName=t}get adminOperationTimeAsSeccondsAgo(){return this._adminOperationTimeAsSeccondsAgo}set adminOperationTimeAsSeccondsAgo(t){this._adminOperationTimeAsSeccondsAgo=t}get messageId(){return this._messageId}set messageId(t){this._messageId=t}get creationTime(){return this._creationTime}set creationTime(t){this._creationTime=t}get authorName(){return this._authorName}set authorName(t){this._authorName=t}get authorFigure(){return this._authorFigure}set authorFigure(t){this._authorFigure=t}get threadId(){return this._threadId}set threadId(t){this._threadId=t}get messageIndex(){return this._messageIndex}set messageIndex(t){this._messageIndex=t}set groupID(t){this._groupId=t}get groupId(){return this._groupId}get authorId(){return this._authorId}set authorId(t){this._authorId=t}get messageText(){return this._messageText}set messageText(t){this._messageText=t}get authorPostCount(){return this._authorPostCount}set authorPostCount(t){this._authorPostCount=t}}class V1{flush(){return this._groupId=-1,this._threadId=-1,this._message=null,!0}parse(t){return t?(this._groupId=t.readInt(),this._threadId=t.readInt(),this._message=Au.parse(t),!0):!1}get groupId(){return this._groupId}get threadId(){return this._threadId}get message(){return this._message}}class H1{flush(){return this._groupId=-1,this._thread=null,!0}parse(t){return t?(this._groupId=t.readInt(),this._thread=Ru.parse(t),!0):!1}get groupId(){return this._groupId}get thread(){return this._thread}}class Y1{flush(){return this._groupId=-1,this._threadId=-1,this._startIndex=-1,this._amount=0,this._messages=[],!0}parse(t){if(!t)return!1;this._groupId=t.readInt(),this._threadId=t.readInt(),this._startIndex=t.readInt(),this._amount=t.readInt(),this._messages=[];let e=0;for(;e<this._amount;){const s=Au.parse(t);s.groupID=this._groupId,s.threadId=this._threadId,this._messages.push(s),e++}return!0}get groupId(){return this._groupId}get threadId(){return this._threadId}get startIndex(){return this._startIndex}get amount(){return this._amount}get messages(){return this._messages}}class W1{flush(){return this._count=0,!0}parse(t){return t?(this._count=t.readInt(),!0):!1}get count(){return this._count}}class j1{flush(){return this._groupId=-1,this._threadId=-1,this._message=null,!0}parse(t){return t?(this._groupId=t.readInt(),this._threadId=t.readInt(),this._message=Au.parse(t),!0):!1}get groupId(){return this._groupId}get threadId(){return this._threadId}get message(){return this._message}}class K1{flush(){return this._groupId=-1,this._thread=null,!0}parse(t){return t?(this._groupId=t.readInt(),this._thread=Ru.parse(t),!0):!1}get groupId(){return this._groupId}get thread(){return this._thread}}class X1{constructor(){this._encryptedPublicKey=null,this._serverClientEncryption=!1}flush(){return!0}parse(t){return t?(this._encryptedPublicKey=t.readString(),t.bytesAvailable&&(this._serverClientEncryption=t.readBoolean()),!0):!1}get encryptedPublicKey(){return this._encryptedPublicKey}get serverClientEncryption(){return this._serverClientEncryption}}class q1{flush(){return this._reason=-1,!0}parse(t){return t?(this._reason=0,t.bytesAvailable&&(this._reason=t.readInt()),!0):!1}get reason(){return this._reason}}class $1{flush(){return this._accounts&&(this._accounts=new Map),!0}parse(t){if(!t)return!1;this._accounts=new Map;let e=t.readInt();for(;e>0;)this._accounts.set(t.readInt(),t.readString()),e--;return!0}get accounts(){return this._accounts}}class Q1{flush(){return!0}parse(t){return t?(this._encryptedPrime=t.readString(),this._encryptedGenerator=t.readString(),!0):!1}get encryptedPrime(){return this._encryptedPrime}get encryptedGenerator(){return this._encryptedGenerator}}class Z1{flush(){return this._noobnessLevel=0,!0}parse(t){return t?(this._noobnessLevel=t.readInt(),!0):!1}get noobnessLevel(){return this._noobnessLevel}}class J1{flush(){return!0}parse(t){return t?(this._infoUrl=t.readString(),!0):!1}get infoUrl(){return this._infoUrl}}class tF{flush(){return!0}parse(t){return!0}}class eF{flush(){return this._calls=[],!0}parse(t){this._calls=[];const e=t.readInt();for(let s=0;s<e;s++){const r=t.readString(),n=t.readString(),a=t.readString();this._calls.push({callId:r,timeStamp:n,message:a})}return!0}get pendingCalls(){return this._calls}get count(){return this._calls.length}}class sF{flush(){return this._message=null,!0}parse(t){return this._message=t.readString(),!0}get message(){return this._message}}class iF{flush(){return this._resultType=0,this._messageText=null,!0}parse(t){return t?(this._resultType=t.readInt(),this._messageText=t.readString(),!0):!1}get resultType(){return this._resultType}get messageText(){return this._messageText}}class rF{flush(){return!0}parse(t){return!0}}class nF{flush(){return this._acceptanceTimeout=-1,!0}parse(t){return this._acceptanceTimeout=t.readInt(),!0}get acceptanceTimeout(){return this._acceptanceTimeout}}class aF{flush(){return this._winningVoteCode=-1,this._ownVoteCode=-1,this._finalStatus=null,!0}parse(t){this._finalStatus=[],this._winningVoteCode=t.readInt(),this._ownVoteCode=t.readInt();const e=t.readInt();for(let s=0;s<e;s++)this._finalStatus.push(t.readInt());return!0}get winningVoteCode(){return this._winningVoteCode}get ownVoteCode(){return this._ownVoteCode}get finalStatus(){return this._finalStatus}}class oF{flush(){return!0}parse(t){return this._votingTimeout=t.readInt(),this._chatRecord=t.readString(),!0}get votingTimeout(){return this._votingTimeout}get chatRecord(){return this._chatRecord}}const un=class un{flush(){return this._status=null,!0}parse(t){this._status=[];const e=t.readInt();for(let s=0;s<e;s++)this._status.push(t.readInt());return!0}get status(){return this._status}};un.AWAITING_VOTE=0,un.VOTED_OK=1,un.VOTED_BAD=2,un.VOTED_VERY_BAD=3,un.NO_VOTE=4,un.FINDING_NEW_VOTER=5;let Od=un;class uF{flush(){return this._onDuty=!1,this._guidesOnDuty=0,this._helpersOnDuty=0,this._guardiansOnDuty=0,!0}parse(t){return t?(this._onDuty=t.readBoolean(),this._guidesOnDuty=t.readInt(),this._helpersOnDuty=t.readInt(),this._guardiansOnDuty=t.readInt(),!0):!1}get onDuty(){return this._onDuty}get guidesOnDuty(){return this._guidesOnDuty}get helpersOnDuty(){return this._helpersOnDuty}get guardiansOnDuty(){return this._guardiansOnDuty}}class lF{constructor(t,e,s,r,n,a,o){this._type=t,this._secondsAgo=e,this._isGuide=s,this._otherPartyName=r,this._otherPartyFigure=n,this._description=a,this._roomName=o}get type(){return this._type}set type(t){this._type=t}get secondsAgo(){return this._secondsAgo}set secondsAgo(t){this._secondsAgo=t}get isGuide(){return this._isGuide}set isGuide(t){this._isGuide=t}get otherPartyName(){return this._otherPartyName}set otherPartyName(t){this._otherPartyName=t}get otherPartyFigure(){return this._otherPartyFigure}set otherPartyFigure(t){this._otherPartyFigure=t}get description(){return this._description}set description(t){this._description=t}get roomName(){return this._roomName}set roomName(t){this._roomName=t}}const Uo=class Uo{flush(){return this._statusCode=0,this._pendingTicket=null,!0}parse(t){return t?(this._statusCode=t.readInt(),this._pendingTicket=new lF(t.readInt(),t.readInt(),t.readBoolean(),t.readString(),t.readString(),t.readString(),t.readString()),!0):!1}get statusCode(){return this._statusCode}get pendingTicket(){return this._pendingTicket}};Uo.GUIDE_REPORTING_STATUS_OK=0,Uo.GUIDE_REPORTING_STATUS_PENDING_TICKET=1,Uo.GUIDE_REPORTING_STATUS_ABUSIVE=2,Uo.GUIDE_REPORTING_STATUS_REPORTING_TOO_QUICKLY=3;let yd=Uo;class hF{flush(){return this._asGuide=!1,this._helpRequestType=0,this._helpRequestDescription=null,this._roleSpecificWaitTime=0,!0}parse(t){return t?(this._asGuide=t.readBoolean(),this._helpRequestType=t.readInt(),this._helpRequestDescription=t.readString(),this._roleSpecificWaitTime=t.readInt(),!0):!1}get asGuide(){return this._asGuide}get helpRequestType(){return this._helpRequestType}get helpRequestDescription(){return this._helpRequestDescription}get roleSpecificWaitTime(){return this._roleSpecificWaitTime}}class cF{flush(){return!0}parse(t){return!!t}}class _F{flush(){return this._endReason=0,!0}parse(t){return t?(this._endReason=t.readInt(),!0):!1}get endReason(){return this._endReason}}const ua=class ua{flush(){return this._errorCode=0,!0}parse(t){return t?(this._errorCode=t.readInt(),!0):!1}get errorCode(){return this._errorCode}};ua.ERROR_GENERIC=0,ua.ERROR_GUIDES_REJECT=1,ua.ERROR_NOT_ENOUGH_GUIDES=2,ua.ERROR_NOT_ENOUGH_VOTES=3,ua.ERROR_NO_CHATLOG_FOUND=4;let vd=ua;class dF{flush(){return this._roomId=0,this._roomName=null,!0}parse(t){return t?(this._roomId=t.readInt(),this._roomName=t.readString(),!0):!1}get roomId(){return this._roomId}get roomName(){return this._roomName}}class fF{flush(){return this._chatMessage=null,this._senderId=0,!0}parse(t){return t?(this._chatMessage=t.readString(),this._senderId=t.readInt(),!0):!1}get chatMessage(){return this._chatMessage}get senderId(){return this._senderId}}class gF{flush(){return this._isTyping=!1,!0}parse(t){return t?(this._isTyping=t.readBoolean(),!0):!1}get isTyping(){return this._isTyping}}class pF{flush(){return this._requesterRoomId=0,!0}parse(t){return t?(this._requesterRoomId=t.readInt(),!0):!1}get requesterRoomId(){return this._requesterRoomId}}class mF{flush(){return this._requesterUserId=0,this._requesterName=null,this._requesterFigure=null,this._guideUserId=0,this._guideName=null,this._guideFigure=null,!0}parse(t){return t?(this._requesterUserId=t.readInt(),this._requesterName=t.readString(),this._requesterFigure=t.readString(),this._guideUserId=t.readInt(),this._guideName=t.readString(),this._guideFigure=t.readString(),!0):!1}get requesterUserId(){return this._requesterUserId}get requesterName(){return this._requesterName}get requesterFigure(){return this._requesterFigure}get guideUserId(){return this._guideUserId}get guideName(){return this._guideName}get guideFigure(){return this._guideFigure}}const Do=class Do{flush(){return this._result=0,!0}parse(t){return t?(this._result=t.readInt(),!0):!1}get result(){return this._result}};Do.CREATION_RESULT_OK=0,Do.CREATION_RESULT_UNABLE_TO_REPORT=1,Do.CREATION_RESULT_NO_CHATLOG_FOUND=2,Do.CREATION_RESULT_BULLY_ALREADY_REPORTED=3;let Cd=Do;const Il=class Il{flush(){return this._resolution=0,!0}parse(t){return t?(this._resolution=t.readInt(),!0):!1}get resolution(){return this._resolution}};Il.RESOLUTION_GUARDIANS_TOOK_ACTION=0,Il.RESOLUTION_FORWARDED_TO_MODERATORS=1,Il.RESOLUTION_REPORTER_IS_ABUSIVE=2;let Md=Il;class EF{flush(){return!0}parse(t){return!!t}}class TF{flush(){return this._closeReason=0,this._messageText="",!0}parse(t){return t?(this._closeReason=t.readInt(),this._messageText=t.readString(),!0):!1}get closeReason(){return this._closeReason}get messageText(){return this._messageText}}class IF{flush(){return this._quizCode=null,this._questionIds=[],!0}parse(t){if(!t)return!1;this._quizCode=t.readString();const e=t.readInt();this._questionIds=[];for(let s=0;s<e;s++)this._questionIds.push(t.readInt());return!0}get quizCode(){return this._quizCode}get questionIds(){return this._questionIds}}class SF{flush(){return this._quizCode=null,this._questionIdsForWrongAnswers=[],!0}parse(t){if(!t)return!1;this._quizCode=t.readString();const e=t.readInt();this._questionIdsForWrongAnswers=[];for(let s=0;s<e;s++)this._questionIdsForWrongAnswers.push(t.readInt());return!0}get quizCode(){return this._quizCode}get questionIdsForWrongAnswers(){return this._questionIdsForWrongAnswers}}const Sl=class Sl{constructor(t){this._id=t.readInt(),this._title=t.readString(),this._bodyText=t.readString(),this._buttonText=t.readString(),this._linkType=t.readInt(),this._linkContent=t.readString(),this._imageUrl=t.readString()}get id(){return this._id}get title(){return this._title}get bodyText(){return this._bodyText}get buttonText(){return this._buttonText}get linkType(){return this._linkType}get linkContent(){return this._linkContent}get imageUrl(){return this._imageUrl}};Sl.LINK_TYPE_URL=0,Sl.LINK_TYPE_INTERNAL=1,Sl.LINK_TYPE_NO_LINK=2;let xd=Sl;class RF{flush(){return this._articles=[],!0}parse(t){if(!t)return!1;const e=t.readInt();for(let s=0;s<e;s++)this._articles.push(new xd(t));return!0}get articles(){return this._articles}}class AF{flush(){return!0}parse(t){return t?(this._acknowledged=t.readBoolean(),!0):!1}get acknowledged(){return this._acknowledged}}class OF{flush(){return this._newOfferId=-1,this._newPrice=0,this._requestedOfferId=-1,!0}parse(t){return t?(this._result=t.readInt(),this._newOfferId=t.readInt(),this._newPrice=t.readInt(),this._requestedOfferId=t.readInt(),!0):!1}get result(){return this._result}get offerId(){return this._newOfferId}get newPrice(){return this._newPrice}get requestedOfferId(){return this._requestedOfferId}}class yF{flush(){return this._offerId=0,this._success=!1,!0}parse(t){return t?(this._offerId=t.readInt(),this._success=t.readBoolean(),!0):!1}get offerId(){return this._offerId}get success(){return this._success}}class vF{flush(){return this._tokenCount=0,this._result=0,!0}parse(t){return t?(this._result=t.readInt(),this._tokenCount=t.readInt(),!0):!1}get tokenCount(){return this._tokenCount}get resultCode(){return this._result}}class CF{flush(){return this._enabled=!1,this._commission=0,this._credits=0,this._advertisements=0,this._maximumPrice=0,this._minimumPrice=0,this._offerTime=0,this._displayTime=0,!0}parse(t){return t?(this._enabled=t.readBoolean(),this._commission=t.readInt(),this._credits=t.readInt(),this._advertisements=t.readInt(),this._minimumPrice=t.readInt(),this._maximumPrice=t.readInt(),this._offerTime=t.readInt(),this._displayTime=t.readInt(),!0):!1}get enabled(){return this._enabled}get commission(){return this._commission}get credits(){return this._credits}get advertisements(){return this._advertisements}get minimumPrice(){return this._minimumPrice}get maximumPrice(){return this._maximumPrice}get offerTime(){return this._offerTime}get displayTime(){return this._displayTime}}class MF{flush(){return this._result=0,!0}parse(t){return t?(this._result=t.readInt(),!0):!1}get result(){return this._result}}class xF{flush(){return this._averagePrice=0,this._currentOfferCount=0,this._historyLength=0,this._dayOffsets=[],this._averagePrices=[],this._soldAmounts=[],this._furniTypeId=0,this._furniCategoryId=0,!0}parse(t){if(!t)return!1;this._averagePrice=t.readInt(),this._currentOfferCount=t.readInt(),this._historyLength=t.readInt();let e=t.readInt();for(;e>0;)this._dayOffsets.push(t.readInt()),this._averagePrices.push(t.readInt()),this._soldAmounts.push(t.readInt()),e--;return this._furniCategoryId=t.readInt(),this._furniTypeId=t.readInt(),!0}get averagePrice(){return this._averagePrice}get offerCount(){return this._currentOfferCount}get historyLength(){return this._historyLength}get dayOffsets(){return this._dayOffsets}get averagePrices(){return this._averagePrices}get soldAmounts(){return this._soldAmounts}get furniTypeId(){return this._furniTypeId}get furniCategoryId(){return this._furniCategoryId}}class yS{constructor(t,e,s,r,n,a,o,u,l,c=-1){this._timeLeftMinutes=-1,this._offerId=t,this._furniId=e,this._furniType=s,this._extraData=r,this._stuffData=n,this._price=a,this._status=o,this._timeLeftMinutes=u,this._averagePrice=l,this._offerCount=c}get offerId(){return this._offerId}get furniId(){return this._furniId}get furniType(){return this._furniType}get extraData(){return this._extraData}get stuffData(){return this._stuffData}get price(){return this._price}get status(){return this._status}get timeLeftMinutes(){return this._timeLeftMinutes}get averagePrice(){return this._averagePrice}get offerCount(){return this._offerCount}get isUniqueLimitedItem(){return this.stuffData!=null&&this.stuffData.uniqueSeries>0}}const zp=class zp{constructor(t,e,s,r,n,a,o,u,l=-1){this._timeLeftMinutes=-1,this._offerId=t,this._furniId=e,this._furniType=s,this._extraData=r,this._stuffData=n,this._price=a,this._status=o,this._averagePrice=u,this._offerCount=l}get offerId(){return this._offerId}set offerId(t){this._offerId=t}get furniId(){return this._furniId}get furniType(){return this._furniType}get extraData(){return this._extraData}get stuffData(){return this._stuffData}get price(){return this._price}set price(t){this._price=t}get averagePrice(){return this._averagePrice}get image(){return this._image}set image(t){this._image=t}get imageCallback(){return this._imageCallback}set imageCallback(t){this._imageCallback=t}get status(){return this._status}get timeLeftMinutes(){return this._timeLeftMinutes}set timeLeftMinutes(t){this._timeLeftMinutes=t}get offerCount(){return this._offerCount}set offerCount(t){this._offerCount=t}get isUniqueLimitedItem(){return this.stuffData&&this.stuffData.uniqueSeries>0}};zp.TYPE_LANDSCAPE=1,zp.TYPE_FLOOR=2;let AI=zp;const pr=class pr{constructor(){this.MAX_LIST_LENGTH=500}flush(){return this._offers=[],this._totalItemsFound=0,!0}parse(t){if(!t)return!1;const e=t.readInt();let s=0;for(;s<e;){const r=t.readInt(),n=t.readInt();let a=t.readInt(),o=-1,u="",l=null;a===pr.FURNITYPE_STUFF?(o=t.readInt(),l=jr.parseObjectData(t)):a===pr.FURNITYPE_WALL?(o=t.readInt(),u=t.readString()):a==pr.FAKE_FURNITYPE_UNIQUE&&(o=t.readInt(),l=br.getData(Ze.FORMAT_KEY),l.uniqueNumber=t.readInt(),l.uniqueSeries=t.readInt(),a=pr.FURNITYPE_STUFF);const c=t.readInt(),h=t.readInt(),_=t.readInt(),d=t.readInt(),f=new yS(r,o,a,u,l,c,n,h,_,d);s<this.MAX_LIST_LENGTH&&this._offers.push(f),s++}return this._totalItemsFound=t.readInt(),!0}get offers(){return this._offers}get totalItemsFound(){return this._totalItemsFound}};pr.FURNITYPE_STUFF=1,pr.FURNITYPE_WALL=2,pr.FAKE_FURNITYPE_UNIQUE=3;let Pd=pr;const Vp=class Vp{flush(){return this._offers=[],!0}parse(t){if(!t)return!1;this._offers=[],this._creditsWaiting=t.readInt();const e=t.readInt();for(let s=0;s<e;s++){const r=t.readInt(),n=t.readInt();let a=t.readInt(),o,u,l;a==1?(o=t.readInt(),l=this.getStuffData(t)):a==2?(o=t.readInt(),u=t.readString()):a==3&&(o=t.readInt(),l=br.getData(Ze.FORMAT_KEY),l.uniqueNumber=t.readInt(),l.uniqueSeries=t.readInt(),a=1);const c=t.readInt(),h=t.readInt(),_=t.readInt(),d=new yS(r,o,a,u,l,c,n,h,_);s<Vp.MAX_LIST_LENGTH&&this._offers.push(d)}return!0}get offers(){return this._offers}get creditsWaiting(){return this._creditsWaiting}getStuffData(t){const e=t.readInt(),s=br.getData(e);return s.parseWrapper(t),s}};Vp.MAX_LIST_LENGTH=500;let bd=Vp;class PF{constructor(t,e,s,r,n){this._timestamp=t,this._habboId=e,this._username=s,this._message=r,this._hasHighlighting=n}get timestamp(){return this._timestamp}get userId(){return this._habboId}get userName(){return this._username}get message(){return this._message}get hasHighlighting(){return this._hasHighlighting}}const mr=class mr{constructor(t){this._context=new Map,this._chatlog=[],this._recordType=t.readByte();const e=t.readShort();for(let r=0;r<e;r++){const n=t.readString(),a=t.readByte();switch(a){case 0:this._context.set(n,t.readBoolean());break;case 1:this._context.set(n,t.readInt());break;case 2:this._context.set(n,t.readString());break;default:throw new Error("Unknown data type "+a)}}const s=t.readShort();for(let r=0;r<s;r++){const n=t.readString(),a=t.readInt(),o=t.readString(),u=t.readString(),l=t.readBoolean();this._chatlog.push(new PF(n,a,o,u,l))}}get recordType(){return this._recordType}get context(){return this._context}get chatlog(){return this._chatlog}get roomId(){return this.getInt("roomId")}get roomName(){return this._context.get("roomName")}get groupId(){return this.getInt("groupId")}get threadId(){return this.getInt("threadId")}get messageId(){return this.getInt("messageId")}getInt(t){const e=this._context.get(t);return e||0}};mr.TYPE_SIMPLE=0,mr.TYPE_ROOM_CHAT=1,mr.TYPE_IM_SESSION=2,mr.TYPE_DISCUSSION_THREAD=3,mr.TYPE_DISCUSSION_MESSAGE=4,mr.TYPE_SELFIE=5,mr.TYPE_PHOTO=6;let lu=mr;class bF{constructor(t){this._issueId=t.readInt(),this._callerUserId=t.readInt(),this._reportedUserId=t.readInt(),this._chatRecordId=t.readInt(),this._chatRecord=new lu(t)}get issueId(){return this._issueId}get callerUserId(){return this._callerUserId}get reportedUserId(){return this._reportedUserId}get chatRecordId(){return this._chatRecordId}get chatRecord(){return this._chatRecord}}class NF{flush(){return this._data=null,!0}parse(t){return t?(this._data=new bF(t),!0):!1}get data(){return this._data}}class UF{flush(){return!0}parse(t){return this._issueId=parseInt(t.readString()),!0}get issueId(){return this._issueId}}const Rl=class Rl{constructor(t,e,s,r,n,a,o,u,l,c,h,_,d,f,p,g){this._disposed=!1,this._issueId=t,this._state=e,this._categoryId=s,this._reportedCategoryId=r,this._issueAgeInMilliseconds=n,this._priority=a,this._groupingId=o,this._reporterUserId=u,this._reporterUserName=l,this._reportedUserId=c,this._reportedUserName=h,this._pickerUserId=_,this._pickerUserName=d,this._message=f,this._chatRecordId=p,this._patterns=g,this._creationTimeInMilliseconds=0}get issueId(){return this._issueId}get state(){return this._state}get categoryId(){return this._categoryId}get reportedCategoryId(){return this._reportedCategoryId}get issueAgeInMilliseconds(){return this._issueAgeInMilliseconds}get priority(){return this._priority}get groupingId(){return this._groupingId}get reporterUserId(){return this._reporterUserId}get reporterUserName(){return this._reporterUserName}get reportedUserId(){return this._reportedUserId}get reportedUserName(){return this._reportedUserName}get pickerUserId(){return this._pickerUserId}get pickerUserName(){return this._pickerUserName}get message(){return this._message}get chatRecordId(){return this._chatRecordId}get patterns(){return this._patterns}dispose(){if(!this.disposed){for(const t of this._patterns)t.dispose();this._patterns=[],this._disposed=!0}}get disposed(){return this._disposed}getOpenTime(t){const s=(this._issueAgeInMilliseconds+t-this._creationTimeInMilliseconds)/1e3/60,r=s%60,n=s/60,a=(r<10?"0":"")+r;return(n<10?"0":"")+n+":"+a}};Rl.STATE_OPEN=1,Rl.STATE_PICKED=2,Rl.STATE_CLOSED=3;let vh=Rl;class DF{constructor(t){this._disposed=!1,this._pattern=t.readString(),this._startIndex=t.readInt(),this._endIndex=t.readInt()}dispose(){this._disposed=!0,this._pattern="",this._startIndex=-1,this._endIndex=-1}get disposed(){return this._disposed}get pattern(){return this._pattern}get startIndex(){return this._startIndex}get endIndex(){return this._endIndex}}class vS{get issueData(){return this._issueData}flush(){return this._issueData=null,!0}parse(t){const e=t.readInt(),s=t.readInt(),r=t.readInt(),n=t.readInt(),a=t.readInt(),o=t.readInt(),u=t.readInt(),l=t.readInt(),c=t.readString(),h=t.readInt(),_=t.readString(),d=t.readInt(),f=t.readString(),p=t.readString(),g=t.readInt(),m=t.readInt(),O=[];for(let y=0;y<m;y++)O.push(new DF(t));return this._issueData=new vh(e,s,r,n,a,o,u,l,c,h,_,d,f,p,g,O),!0}}class LF{flush(){return this._issues=null,!0}parse(t){this._issues=[];const e=t.readInt();for(let s=0;s<e;s++){const r=t.readInt(),n=t.readInt(),a=t.readString(),o=new vh(r,0,0,0,0,0,0,0,null,0,null,n,a,null,0,[]);this._issues.push(o)}return this._retryEnabled=t.readBoolean(),this._retryCount=t.readInt(),!0}get issues(){return this._issues}get retryEnabled(){return this._retryEnabled}get retryCount(){return this._retryCount}}class FF{flush(){return this._message="",this._url=null,!0}parse(t){return t?(this._message=t.readString(),this._url=t.readString(),!0):!1}get message(){return this._message}get url(){return this._url}}class wF{flush(){return this._userId=-1,this._success=!1,!0}parse(t){return this._userId=t.readInt(),this._success=t.readBoolean(),!0}get userId(){return this._userId}get success(){return this._success}}class GF{constructor(t){this._disposed=!1;const e=new vS;this._issues=[],this._messageTemplates=[],this._roomMessageTemplates=[];let s=t.readInt(),r=0;for(;r<s;)e.parse(t)&&this._issues.push(e.issueData),r++;for(s=t.readInt(),r=0;r<s;)this._messageTemplates.push(t.readString()),r++;for(s=t.readInt(),r=0;r<s;)t.readString(),r++;for(this._cfhPermission=t.readBoolean(),this._chatlogsPermission=t.readBoolean(),this._alertPermission=t.readBoolean(),this._kickPermission=t.readBoolean(),this._banPermission=t.readBoolean(),this._roomAlertPermission=t.readBoolean(),this._roomKickPermission=t.readBoolean(),s=t.readInt(),r=0;r<s;)this._roomMessageTemplates.push(t.readString()),r++}dispose(){this._disposed||(this._disposed=!0,this._messageTemplates=null,this._roomMessageTemplates=null,this._issues=null)}get disposed(){return this._disposed}get messageTemplates(){return this._messageTemplates}get roomMessageTemplates(){return this._roomMessageTemplates}get issues(){return this._issues}get cfhPermission(){return this._cfhPermission}get chatlogsPermission(){return this._chatlogsPermission}get alertPermission(){return this._alertPermission}get kickPermission(){return this._kickPermission}get banPermission(){return this._banPermission}get roomAlertPermission(){return this._roomAlertPermission}get roomKickPermission(){return this._roomKickPermission}}class BF{constructor(){this._data=null}flush(){return this._data=null,!0}parse(t){return this._data=new GF(t),!0}get data(){return this._data}}class kF{flush(){return this._message="",this._url="",!0}parse(t){return t?(this._message=t.readString(),this._url=t.readString(),!0):!1}get message(){return this._message}get url(){return this._url}}class zF{constructor(t){if(this._tags=[],this._exists=t.readBoolean(),!this.exists)return;this._name=t.readString(),this._desc=t.readString();const e=t.readInt();for(let s=0;s<e;s++)this._tags.push(t.readString())}get name(){return this._name}get desc(){return this._desc}get tags(){return this._tags}get exists(){return this._exists}get disposed(){return this._disposed}dispose(){this._disposed||(this._disposed=!0,this._tags=null)}}class VF{constructor(t){this._flatId=t.readInt(),this._userCount=t.readInt(),this._ownerInRoom=t.readBoolean(),this._ownerId=t.readInt(),this._ownerName=t.readString(),this._room=new zF(t)}get flatId(){return this._flatId}get userCount(){return this._userCount}get ownerInRoom(){return this._ownerInRoom}get ownerId(){return this._ownerId}get ownerName(){return this._ownerName}get room(){return this._room}get disposed(){return this._disposed}dispose(){this._disposed||(this._disposed=!0,this._room!=null&&(this._room.dispose(),this._room=null))}}class HF{flush(){return this._data=null,!0}parse(t){return t?(this._data=new VF(t),!0):!1}get data(){return this._data}}class YF{flush(){return this._windowX=0,this._windowY=0,this._windowWidth=0,this._windowHeight=0,!0}parse(t){return this._windowX=t.readInt(),this._windowY=t.readInt(),this._windowWidth=t.readInt(),this._windowHeight=t.readInt(),!0}get windowX(){return this._windowX}get windowY(){return this._windowY}get windowWidth(){return this._windowWidth}get windowHeight(){return this._windowHeight}}class WF{constructor(t){this._lastSanctionTime="",this._sanctionAgeHours=0,this._userId=t.readInt(),this._userName=t.readString(),this._figure=t.readString(),this._registrationAgeInMinutes=t.readInt(),this._minutesSinceLastLogin=t.readInt(),this._online=t.readBoolean(),this._cfhCount=t.readInt(),this._abusiveCfhCount=t.readInt(),this._cautionCount=t.readInt(),this._banCount=t.readInt(),this._tradingLockCount=t.readInt(),this._tradingExpiryDate=t.readString(),this._lastPurchaseDate=t.readString(),this._identityId=t.readInt(),this._identityRelatedBanCount=t.readInt(),this._primaryEmailAddress=t.readString(),this._userClassification=t.readString(),t.bytesAvailable&&(this._lastSanctionTime=t.readString(),this._sanctionAgeHours=t.readInt())}get userId(){return this._userId}get userName(){return this._userName}get figure(){return this._figure}get registrationAgeInMinutes(){return this._registrationAgeInMinutes}get minutesSinceLastLogin(){return this._minutesSinceLastLogin}get online(){return this._online}get cfhCount(){return this._cfhCount}get abusiveCfhCount(){return this._abusiveCfhCount}get cautionCount(){return this._cautionCount}get banCount(){return this._banCount}get tradingLockCount(){return this._tradingLockCount}get tradingExpiryDate(){return this._tradingExpiryDate}get lastPurchaseDate(){return this._lastPurchaseDate}get identityId(){return this._identityId}get identityRelatedBanCount(){return this._identityRelatedBanCount}get primaryEmailAddress(){return this._primaryEmailAddress}get userClassification(){return this._userClassification}get lastSanctionTime(){return this._lastSanctionTime}get sanctionAgeHours(){return this._sanctionAgeHours}}class jF{flush(){return this._data=null,!0}parse(t){return t?(this._data=new WF(t),!0):!1}get data(){return this._data}}class KF{flush(){return this._data=null,!0}parse(t){return t?(this._data=new lu(t),!0):!1}get data(){return this._data}}class XF{constructor(t){this._roomId=t.readInt(),this._roomName=t.readString(),this._enterHour=t.readInt(),this._enterMinute=t.readInt()}get roomId(){return this._roomId}get roomName(){return this._roomName}get enterHour(){return this._enterHour}get enterMinute(){return this._enterMinute}}class qF{constructor(t){this._rooms=[],this._userId=t.readInt(),this._userName=t.readString();const e=t.readInt();let s=0;for(;s<e;)this._rooms.push(new XF(t)),s++}get userId(){return this._userId}get userName(){return this._userName}get rooms(){return this._rooms}}class $F{flush(){return!0}parse(t){return this._data=new qF(t),!0}get data(){return this._data}}class QF{flush(){return this._message="",!0}parse(t){return t?(this._message=t.readString(),!0):!1}get message(){return this._message}}class ZF{constructor(t){this._roomChatlogs=[],this._userId=t.readInt(),this._username=t.readString();const e=t.readInt();for(let s=0;s<e;s++)this._roomChatlogs.push(new lu(t))}get userId(){return this._userId}get username(){return this._username}get roomChatlogs(){return this._roomChatlogs}}class JF{flush(){return this._data=null,!0}parse(t){return t?(this._data=new ZF(t),!0):!1}get data(){return this._data}}class t2{flush(){return!0}parse(t){return!!t}}class e2{flush(){return!0}parse(t){return t?(this._contentType=t.readString(),this._classId=t.readInt(),!0):!1}get contentType(){return this._contentType}get classId(){return this._classId}}class s2{flush(){return this._boxColor=null,this._keyColor=null,!0}parse(t){return t?(this._boxColor=t.readString(),this._keyColor=t.readString(),!0):!1}get boxColor(){return this._boxColor}get keyColor(){return this._keyColor}}class i2{flush(){return!0}parse(t){return!!t}}class r2{flush(){return this._canCreate=!1,this._errorCode=0,!0}parse(t){return t?(this._canCreate=t.readBoolean(),this._errorCode=t.readInt(),!0):!1}get canCreate(){return this._canCreate}get errorCode(){return this._errorCode}}const Hp=class Hp{flush(){return!0}parse(t){return t?(this._resultCode=t.readInt(),this._roomLimit=t.readInt(),!0):!1}get resultCode(){return this._resultCode}get roomLimit(){return this._roomLimit}};Hp.CREATION_ALLOWED=0,Hp.ROOM_LIMIT_REACHED=1;let Nd=Hp;class n2{constructor(t){this._categoryToCurrentUserCountMap=new Map,this._categoryToMaxUserCountMap=new Map;const e=t.readInt();for(let s=0;s<e;s++){const r=t.readInt(),n=t.readInt(),a=t.readInt();this._categoryToCurrentUserCountMap.set(r,n),this._categoryToMaxUserCountMap.set(r,a)}}get categoryToCurrentUserCountMap(){return this._categoryToCurrentUserCountMap}get categoryToMaxUserCountMap(){return this._categoryToMaxUserCountMap}}class a2{constructor(t,e=0,s=0){this._goalId=e,this._pageIndex=s,t&&(this._goalId=t.readInt(),this._pageIndex=t.readInt(),this._pageCount=t.readInt())}get goalId(){return this._goalId}get pageIndex(){return this._pageIndex}get pageCount(){return this._pageCount}}const Er=class Er{constructor(t){this._index=t.readInt(),this._popupCaption=t.readString(),this._popupDesc=t.readString(),this._showDetails=t.readInt()==1,this._picText=t.readString(),this._picRef=t.readString(),this._folderId=t.readInt(),this._userCount=t.readInt(),this._type=t.readInt(),this._type==Er.TYPE_TAG?this._tag=t.readString():this._type==Er.TYPE_GUEST_ROOM?this._guestRoomData=new Wa(t):this._open=t.readBoolean()}dispose(){this._disposed||(this._disposed=!0,this._guestRoomData!=null&&(this._guestRoomData.flush(),this._guestRoomData=null))}get disposed(){return this._disposed}get type(){return this._type}get index(){return this._index}get popupCaption(){return this._popupCaption}get popupDesc(){return this._popupDesc}get showDetails(){return this._showDetails}get picText(){return this._picText}get picRef(){return this._picRef}get folderId(){return this._folderId}get tag(){return this._tag}get userCount(){return this._userCount}get guestRoomData(){return this._guestRoomData}get open(){return this._open}toggleOpen(){this._open=!this._open}get maxUsers(){return this.type==Er.TYPE_TAG?0:this.type==Er.TYPE_GUEST_ROOM?this._guestRoomData.maxUserCount:0}};Er.TYPE_TAG=1,Er.TYPE_GUEST_ROOM=2,Er.TYPE_FOLDER=4;let Ud=Er;class o2{constructor(t){this._rooms=[],this._searchType=t.readInt(),this._searchParam=t.readString();const e=t.readInt();for(let r=0;r<e;r++)this._rooms.push(new Wa(t));t.readBoolean()&&(this._ad=new Ud(t))}dispose(){if(!this._disposed){if(this._disposed=!0,this._rooms!=null)for(const t of this._rooms)t.flush();this._ad!=null&&(this._ad.dispose(),this._ad=null),this._rooms=null}}get disposed(){return this._disposed}get searchType(){return this._searchType}get searchParam(){return this._searchParam}get rooms(){return this._rooms}get ad(){return this._ad}}class CS{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._id=-1,this._code=null,this._filter=null,this._localization=null,!0}parse(t){return t?(this._id=t.readInt(),this._code=t.readString(),this._filter=t.readString(),this._localization=t.readString(),!0):!1}get id(){return this._id}get code(){return this._code}get filter(){return this._filter}get localization(){return this._localization}}class u2{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._code=null,this._data=null,this._action=-1,this._closed=!1,this._mode=-1,this._rooms=[],!0}parse(t){if(!t)return!1;this._code=t.readString(),this._data=t.readString(),this._action=t.readInt(),this._closed=t.readBoolean(),this._mode=t.readInt();let e=t.readInt();for(;e>0;)this._rooms.push(new Wa(t)),e--;return!0}get code(){return this._code}get data(){return this._data}get action(){return this._action}get closed(){return this._closed}get mode(){return this._mode}get rooms(){return this._rooms}}class l2{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._code=null,this._data=null,this._results=[],!0}parse(t){if(!t)return!1;this._code=t.readString(),this._data=t.readString();let e=t.readInt();for(;e>0;)this._results.push(new u2(t)),e--;return!0}get code(){return this._code}get data(){return this._data}get results(){return this._results}}class h2{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._code=null,this._savedSearches=[],!0}parse(t){if(!t)return!1;this._code=t.readString();let e=t.readInt();for(;e>0;)this._savedSearches.push(new CS(t)),e--;return!0}get code(){return this._code}get savedSearches(){return this._savedSearches}}class c2{constructor(t){this._adId=t.readInt(),this._ownerAvatarId=t.readInt(),this._ownerAvatarName=t.readString(),this._flatId=t.readInt(),this._eventType=t.readInt(),this._eventName=t.readString(),this._eventDescription=t.readString();const e=t.readInt(),s=t.readInt(),r=new Date;let n=r.getTime();const a=e*60*1e3;n=n-a;const o=new Date(n);this._creationTime=o.getDate()+"-"+o.getMonth()+"-"+o.getFullYear()+" "+o.getHours()+":"+o.getMinutes();let u=r.getTime();const l=s*60*1e3;u=u+l,this._expirationDate=new Date(u),this._categoryId=t.readInt()}dispose(){this._disposed||(this._disposed=!0)}get disposed(){return this._disposed}get adId(){return this._adId}get ownerAvatarId(){return this._ownerAvatarId}get ownerAvatarName(){return this._ownerAvatarName}get flatId(){return this._flatId}get categoryId(){return this._categoryId}get eventType(){return this._eventType}get eventName(){return this._eventName}get eventDescription(){return this._eventDescription}get creationTime(){return this._creationTime}get expirationDate(){return this._expirationDate}}class _2{flush(){return!0}parse(t){return t?(this._data=new n2(t),!0):!1}get data(){return this._data}}class d2{flush(){return!0}parse(t){return t?(this._data=new a2(t),!0):!1}get data(){return this._data}}class f2{flush(){return!0}parse(t){return t?(this._globalId=t.readString(),this._convertedId=t.readInt(),!0):!1}get globalId(){return this._globalId}get convertedId(){return this._convertedId}}class g2{flush(){return this._userName=null,!0}parse(t){return t?(this._userName=t.readString(),!0):!1}get userName(){return this._userName}}class p2{flush(){return!0}parse(t){return t?(this._flatId=t.readInt(),this._added=t.readBoolean(),!0):!1}get flatId(){return this._flatId}get added(){return this._added}}class m2{flush(){return!0}parse(t){if(!t)return!1;this._favouriteRoomIds=[],this._limit=t.readInt();const e=t.readInt();for(let s=0;s<e;s++)this._favouriteRoomIds.push(t.readInt());return!0}get limit(){return this._limit}get favoriteRoomIds(){return this._favouriteRoomIds}}class E2{flush(){return this._userName=null,!0}parse(t){return t?(this._userName=t.readString(),!0):!1}get userName(){return this._userName}}class T2{flush(){return this._roomId=-1,this._roomName=null,!0}parse(t){return t?(this._roomId=t.readInt(),this._roomName=t.readString(),!0):!1}get roomId(){return this._roomId}get roomName(){return this._roomName}}class I2{flush(){return this._roomEnter=!1,this._roomForward=!1,this._data=null,this._staffPick=!1,this._isGroupMember=!1,this._moderation=null,this._chat=null,!0}parse(t){return t?(this._roomEnter=t.readBoolean(),this._data=new Wa(t),this._roomForward=t.readBoolean(),this._staffPick=t.readBoolean(),this._isGroupMember=t.readBoolean(),this.data.allInRoomMuted=t.readBoolean(),this._moderation=new Ah(t),this.data.canMute=t.readBoolean(),this._chat=new ou(t),!0):!1}get roomEnter(){return this._roomEnter}get roomForward(){return this._roomForward}get data(){return this._data}get staffPick(){return this._staffPick}get isGroupMember(){return this._isGroupMember}get moderation(){return this._moderation}get chat(){return this._chat}}class S2{flush(){return!0}parse(t){return t?(this._data=new o2(t),!0):!1}get data(){return this._data}}class R2{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._id=-1,this._name=null,this._visible=!1,this._automatic=!1,this._automaticCategoryKey=null,this._globalCategoryKey=null,this._staffOnly=!1,!0}parse(t){return t?(this._id=t.readInt(),this._name=t.readString(),this._visible=t.readBoolean(),this._automatic=t.readBoolean(),this._automaticCategoryKey=t.readString(),this._globalCategoryKey=t.readString(),this._staffOnly=t.readBoolean(),!0):!1}get id(){return this._id}get name(){return this._name}get visible(){return this._visible}get automatic(){return this._automatic}get automaticCategoryKey(){return this._automaticCategoryKey}get globalCategoryKey(){return this._globalCategoryKey}get staffOnly(){return this._staffOnly}}class A2{flush(){return this._categories=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._categories.push(t.readString()),e--;return!0}get categories(){return this._categories}}class O2{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._id=-1,this._name=null,this._visible=!1,!0}parse(t){return t?(this._id=t.readInt(),this._name=t.readString(),this._visible=t.readBoolean(),!0):!1}get id(){return this._id}get name(){return this._name}get visible(){return this._visible}}class y2{flush(){return this._homeRoomId=-1,this._roomIdToEnter=-1,!0}parse(t){return t?(this._homeRoomId=t.readInt(),this._roomIdToEnter=t.readInt(),!0):!1}get homeRoomId(){return this._homeRoomId}get roomIdToEnter(){return this._roomIdToEnter}}class v2{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._roomId=-1,this._areaId=-1,this._image=null,this._caption=null,!0}parse(t){return t?(this._roomId=t.readInt(),this._areaId=t.readInt(),this._image=t.readString(),this._caption=t.readString(),!0):!1}get roomId(){return this._roomId}get areaId(){return this._areaId}get image(){return this._image}get caption(){return this._caption}}class C2{flush(){return this._rooms=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._rooms.push(new v2(t)),e--;return!0}get rooms(){return this._rooms}}class M2{flush(){return this._topLevelContexts=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._topLevelContexts.push(new h2(t)),e--;return!0}get topLevelContexts(){return this._topLevelContexts}}class x2{flush(){return!0}parse(t){return!!t}}class P2{flush(){return this._searches=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._searches.push(new CS(t)),e--;return!0}get searches(){return this._searches}}class b2{flush(){return this._result=null,!0}parse(t){return t?(this._result=new l2(t),!0):!1}get result(){return this._result}}class N2{flush(){return this._windowX=0,this._windowY=0,this._windowWidth=0,this._windowHeight=0,this._leftPanelHidden=!1,this._resultsMode=0,!0}parse(t){return t?(this._windowX=t.readInt(),this._windowY=t.readInt(),this._windowWidth=t.readInt(),this._windowHeight=t.readInt(),this._leftPanelHidden=t.readBoolean(),this._resultsMode=t.readInt(),!0):!1}get windowX(){return this._windowX}get windowY(){return this._windowY}get windowWidth(){return this._windowWidth}get windowHeight(){return this._windowHeight}get leftPanelHidden(){return this._leftPanelHidden}get resultsMode(){return this._resultsMode}}class U2{constructor(t){this._tagName=t.readString(),this._userCount=t.readInt()}get tagName(){return this._tagName}get userCount(){return this._userCount}}class D2{constructor(t){if(!t)throw new Error("invalid_wrapper");this.flush(),this.parse(t)}flush(){return this._tags=[],!0}parse(t){if(!t)return!1;this._tags=[];const e=t.readInt();let s=0;for(;s<e;)this._tags.push(new U2(t)),s++;return!0}get tags(){return this._tags}}class L2{flush(){return this._data=null,!0}parse(t){return t?(this._data=new D2(t),!0):!1}get data(){return this._data}}class F2{flush(){return!0}parse(t){return!0}}class w2{flush(){return!0}parse(t){return this._data=new c2(t),!0}get data(){return this._data}}class G2{flush(){return this._words=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._words.push(t.readString()),e--;return!0}get words(){return this._words}}class B2{flush(){return this._roomId=0,!0}parse(t){return t?(this._roomId=t.readInt(),!0):!1}get roomId(){return this._roomId}}class k2{flush(){return!0}parse(t){return this._flatId=t.readInt(),this._resultCode=t.readInt(),!0}get flatId(){return this._flatId}get resultCode(){return this._resultCode}}class z2{flush(){return this._categories=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._categories.push(new O2(t)),e--;return!0}get categories(){return this._categories}}class V2{flush(){return this._categories=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._categories.push(new R2(t)),e--;return!0}get categories(){return this._categories}}class H2{constructor(t){this._badgeCode="",this._removedBadgeCode="",this._type=t.readInt(),this._level=t.readInt(),this._badgeId=t.readInt(),this._badgeCode=t.readString(),this._points=t.readInt(),this._levelRewardPoints=t.readInt(),this._levelRewardPointType=t.readInt(),this._bonusPoints=t.readInt(),this._achievementID=t.readInt(),this._removedBadgeCode=t.readString(),this._category=t.readString(),this._showDialogToUser=t.readBoolean()}get type(){return this._type}get level(){return this._level}get points(){return this._points}get levelRewardPoints(){return this._levelRewardPoints}get levelRewardPointType(){return this._levelRewardPointType}get bonusPoints(){return this._bonusPoints}get badgeId(){return this._badgeId}get badgeCode(){return this._badgeCode}get removedBadgeCode(){return this._removedBadgeCode}get achievementID(){return this._achievementID}get category(){return this._category}get showDialogToUser(){return this._showDialogToUser}}class Y2{flush(){return this._data=null,!0}parse(t){return t?(this._data=new H2(t),!0):!1}get data(){return this._data}}class W2{flush(){return this._amount=0,this._amountChanged=0,this._type=-1,!0}parse(t){return t?(this._amount=t.readInt(),this._amountChanged=t.readInt(),this._type=t.readInt(),!0):!1}get amount(){return this._amount}get amountChanged(){return this._amountChanged}get type(){return this._type}}class j2{flush(){return this._errorCode=-1,!0}parse(t){return t?(this._errorCode=t.readInt(),!0):!1}get errorCode(){return this._errorCode}}class K2{flush(){return this._numGifts=0,!0}parse(t){return t?(this._numGifts=t.readInt(),!0):!1}get numGifts(){return this._numGifts}}class X2{flush(){return this._errorCode=0,this._messageId=0,this._timestamp=null,!0}parse(t){return t?(this._messageId=t.readInt(),this._errorCode=t.readInt(),this._timestamp=t.readString(),!0):!1}get errorCode(){return this._errorCode}get messageId(){return this._messageId}get timestamp(){return this._timestamp}}class q2{flush(){return this._key=null,!0}parse(t){return t?(this._key=t.readString(),!0):!1}get key(){return this._key}}class $2{flush(){return this._message=null,!0}parse(t){return t?(this._message=t.readString(),!0):!1}get message(){return this._message}}class Q2{flush(){return this._minutes=null,!0}parse(t){return t?(this._minutes=t.readInt(),!0):!1}get minutes(){return this._minutes}}class Z2{flush(){return this._enabled=!1,!0}parse(t){return t?(this._enabled=t.readBoolean(),!0):!1}get enabled(){return this._enabled}}class J2{flush(){return this._messages=[],!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;)this._messages.push(t.readString()),e--;return!0}get messages(){return this._messages}}class tw{flush(){return this._type=null,this._parameters=new Map,!0}parse(t){if(!t)return!1;this._type=t.readString();let e=t.readInt();for(;e>0;)this._parameters.set(t.readString(),t.readString()),e--;return!0}get type(){return this._type}get parameters(){return this._parameters}}class ew{flush(){return this._contentType=null,this._classId=0,this._name=null,this._description=null,!0}parse(t){return t?(this._contentType=t.readString(),this._classId=t.readInt(),this._name=t.readString(),this._description=t.readString(),!0):!1}get contentType(){return this._contentType}get classId(){return this._classId}get name(){return this._name}get description(){return this._description}}class sw{flush(){return this._petId=-1,this._petName=null,this._level=0,this._figureData=null,!0}parse(t){return t?(this._petId=t.readInt(),this._petName=t.readString(),this._level=t.readInt(),this._figureData=new zm(t),!0):!1}get petId(){return this._petId}get petName(){return this._petName}get level(){return this._level}get figureData(){return this._figureData}}class iw{flush(){return this._errorCode=-1,!0}parse(t){return t?(this._errorCode=t.readInt(),!0):!1}get errorCode(){return this._errorCode}}class rw{flush(){return!0}parse(t){return!0}}class nw{flush(){return this._alertMessage=null,!0}parse(t){return t?(this._alertMessage=t.readString(),t.bytesAvailable&&(this._titleMessage=t.readString()),!0):!1}get alertMessage(){return this._alertMessage}get titleMessage(){return this._titleMessage}}class aw{flush(){return this._items=new xe,!0}parse(t){if(!t)return!1;let e=t.readInt();for(;e>0;){const s=t.readInt();let r=t.readInt();const n=[];for(;r>0;)n.push(t.readInt()),r--;this._items.add(s,n),e--}return!0}getItemsByCategory(t){return this._items.getValue(t)}get categories(){return this._items.getKeys()}}class ow{constructor(t){this._itemName=t.readString(),this._extraInfo=t.readString(),this._extraInfo==""&&(this._extraInfo=null)}get itemName(){return this._itemName}get extraInfo(){return this._extraInfo}}class uw{constructor(t){this._thumbnailUrl=t.readString(),this._thumbnailUrl==""&&(this._thumbnailUrl=null),this._productOfferList=[];const e=t.readInt();let s=0;for(;s<e;)this._productOfferList.push(new ow(t)),s++}get productOfferList(){return this._productOfferList}get thumbnailUrl(){return this._thumbnailUrl}}class lw extends R{constructor(t){super(t,_w)}getParser(){return this.parser}}class hw{constructor(t){this._dayIndex=t.readInt(),this._stepIndex=t.readInt(),this._options=[];const e=t.readInt();let s=0;for(;s<e;)this._options.push(new uw(t)),s++}get dayIndex(){return this._dayIndex}get stepIndex(){return this._stepIndex}get options(){return this._options}}class cw extends R{constructor(t){super(t,dw)}getParser(){return this.parser}}class _w{flush(){return!0}parse(t){if(!t)return!1;const e=t.readInt();this._giftOptions=[];let s=0;for(;s<e;)this._giftOptions.push(new hw(t)),s++;return!0}get giftOptions(){return this._giftOptions}}class dw{flush(){return!0}parse(t){return!!t}}class fw{constructor(t,e,s){this._code=t,this._errorMessage=e,this._isAllowed=s}get code(){return this._code}get errorMessage(){return this._errorMessage}get isAllowed(){return this._isAllowed}}const fs=class fs{};fs.USE_GUIDE_TOOL="USE_GUIDE_TOOL",fs.GIVE_GUIDE_TOUR="GIVE_GUIDE_TOUR",fs.JUDGE_CHAT_REVIEWS="JUDGE_CHAT_REVIEWS",fs.VOTE_IN_COMPETITIONS="VOTE_IN_COMPETITIONS",fs.CALL_ON_HELPERS="CALL_ON_HELPERS",fs.CITIZEN="CITIZEN",fs.TRADE="TRADE",fs.HEIGHTMAP_EDITOR_BETA="HEIGHTMAP_EDITOR_BETA",fs.BUILDER_AT_WORK="BUILDER_AT_WORK",fs.NAVIGATOR_ROOM_THUMBNAIL_CAMERA="NAVIGATOR_ROOM_THUMBNAIL_CAMERA",fs.CAMERA="CAMERA",fs.MOUSE_ZOOM="MOUSE_ZOOM";let OI=fs;class gw{flush(){return this._perks=[],!0}parse(t){if(!t)return!1;this._perks=[];const e=t.readInt();for(let s=0;s<e;s++)this._perks.push(new fw(t.readString(),t.readString(),t.readBoolean()));return!0}isAllowed(t){let e=!1;for(const s of this._perks)if(s.code===t){e=s.isAllowed;break}return e}get perks(){return this._perks}}class pw{flush(){return this._objectId=-1,this._figureData=null,!0}parse(t){return this._objectId=t.readInt(),t.bytesAvailable&&(this._figureData=new Xl(t.readString())),!0}get objectId(){return this._objectId}get figureData(){return this._figureData}}class mw{flush(){return this._objectId=0,this._nameValidationStatus=0,this._nameValidationInfo=null,!0}parse(t){return this._objectId=t.readInt(),this._nameValidationStatus=t.readInt(),this._nameValidationInfo=t.readString(),!0}get objectId(){return this._objectId}get nameValidationStatus(){return this._nameValidationStatus}get nameValidationInfo(){return this._nameValidationInfo}}class Ew{flush(){return this._roomIndex=-1,this._petId=-1,this._level=-1,!0}parse(t){return this._roomIndex=t.readInt(),this._petId=t.readInt(),this._level=t.readInt(),!0}get roomIndex(){return this._roomIndex}get petId(){return this._petId}get level(){return this._level}}class Tw{flush(){return this._currentAge=-1,this._requiredAge=-1,!0}parse(t){return this._currentAge=t.readInt(),this._requiredAge=t.readInt(),!0}get currentAge(){return this._currentAge}get requiredAge(){return this._requiredAge}}class Iw{flush(){return this._petId=-1,this._commands=[],this._enabledCommands=[],!0}parse(t){this._petId=t.readInt();let e=t.readInt();for(;e>0;)this._commands.push(t.readInt()),e--;let s=t.readInt();for(;s>0;)this._enabledCommands.push(t.readInt()),s--;return!0}get petId(){return this._petId}get commands(){return this._commands}get enabledCommands(){return this._enabledCommands}}class Sw{constructor(t,e,s){this._value=t,this._choiceText=e,this._choiceType=s}get value(){return this._value}set value(t){this._value=t}get choiceText(){return this._choiceText}set choiceText(t){this._choiceText=t}get choiceType(){return this._choiceType}set choiceType(t){this._choiceType=t}}class Rw{constructor(){this._children=[],this._questionChoices=[]}get questionId(){return this._questionId}set questionId(t){this._questionId=t}get questionType(){return this._questionType}set questionType(t){this._questionType=t}get sortOrder(){return this._sortOrder}set sortOrder(t){this._sortOrder=t}get questionText(){return this._questionText}set questionText(t){this._questionText=t}get questionCategory(){return this._questionCategory}set questionCategory(t){this._questionCategory=t}get questionAnswerType(){return this._questionAnswerType}set questionAnswerType(t){this._questionAnswerType=t}get questionAnswerCount(){return this._questionAnswerCount}set questionAnswerCount(t){this._questionAnswerCount=t}get children(){return this._children}set children(t){this._children=t}get questionChoices(){return this._questionChoices}set questionChoices(t){this._questionChoices=t}}class Aw{constructor(){this._id=-1,this._startMessage="",this._endMessage="",this._numQuestions=0,this._questionArray=[],this._npsPoll=!1}flush(){return this._id=-1,this._startMessage="",this._endMessage="",this._numQuestions=0,this._questionArray=[],!0}parse(t){this._id=t.readInt(),this._startMessage=t.readString(),this._endMessage=t.readString(),this._numQuestions=t.readInt();for(let e=0;e<this._numQuestions;e++){const s=this.parsePollQuestion(t),r=t.readInt();for(let n=0;n<r;n++)s.children.push(this.parsePollQuestion(t));this._questionArray.push(s)}return this._npsPoll=t.readBoolean(),!0}parsePollQuestion(t){const e=new Rw;if(e.questionId=t.readInt(),e.sortOrder=t.readInt(),e.questionType=t.readInt(),e.questionText=t.readString(),e.questionCategory=t.readInt(),e.questionAnswerType=t.readInt(),e.questionAnswerCount=t.readInt(),e.questionType==1||e.questionType==2)for(let s=0;s<e.questionAnswerCount;s++)e.questionChoices.push(new Sw(t.readString(),t.readString(),t.readInt()));return e}get id(){return this._id}get startMessage(){return this._startMessage}get endMessage(){return this._endMessage}get numQuestions(){return this._numQuestions}get questionArray(){return this._questionArray}get npsPoll(){return this._npsPoll}}class Ow{flush(){throw!0}parse(t){return!0}}class yw{constructor(){this._id=-1,this._type="",this._headline="",this._summary=""}flush(){return this._id=-1,this._type="",this._summary="",!0}parse(t){return this._id=t.readInt(),this._type=t.readString(),this._headline=t.readString(),this._summary=t.readString(),!0}get id(){return this._id}get type(){return this._type}get headline(){return this._headline}get summary(){return this._summary}}class vw{flush(){return this._userId=-1,this._value="",this._answerCounts=null,!0}parse(t){this._userId=t.readInt(),this._value=t.readString(),this._answerCounts=new Map;const e=t.readInt();for(let s=0;s<e;s++){const r=t.readString(),n=t.readInt();this._answerCounts.set(r,n)}return!0}get userId(){return this._userId}get value(){return this._value}get answerCounts(){return this._answerCounts}}class Cw{flush(){return this._questionId=-1,this._answerCounts=null,!0}parse(t){this._questionId=t.readInt(),this._answerCounts=new Map;const e=t.readInt();for(let s=0;s<e;s++){const r=t.readString(),n=t.readInt();this._answerCounts.set(r,n)}return!0}get questionId(){return this._questionId}get answerCounts(){return this._answerCounts}}class Mw{constructor(){this._pollType=null,this._pollId=-1,this._questionId=-1,this._duration=-1,this._question=null}flush(){return this._pollType=null,this._pollId=-1,this._questionId=-1,this._duration=-1,this._question=null,!0}parse(t){this._pollType=t.readString(),this._pollId=t.readInt(),this._questionId=t.readInt(),this._duration=t.readInt();const e=t.readInt(),s=t.readInt(),r=t.readInt(),n=t.readString();if(this._question={id:e,number:s,type:r,content:n},this._question.type==1||this._question.type==2){this._question.selection_min=t.readInt();const a=t.readInt();this._question.selections=[],this._question.selection_values=[],this._question.selection_count=a,this._question.selection_max=a;for(let o=0;o<a;o++)this._question.selection_values.push(t.readString()),this._question.selections.push(t.readString())}return!0}get pollType(){return this._pollType}get pollId(){return this._pollId}get questionId(){return this._questionId}get duration(){return this._duration}get question(){return this._question}}class xw{flush(){return this._question=null,this._choices=[],this._SafeStr_7651=[],this._SafeStr_7654=-1,!0}parse(t){this._question=t.readString(),this._choices=[],this._SafeStr_7651=[];let e=t.readInt();for(;e>0;)this._choices.push(t.readString()),this._SafeStr_7651.push(t.readInt()),e--;return this._SafeStr_7654=t.readInt(),!0}get question(){return this._question}get choices(){return this._choices}get SafeStr_7651(){return this._SafeStr_7651}get SafeStr_7654(){return this._SafeStr_7654}}class Pw{flush(){return this._question=null,this._choices=[],!0}parse(t){this._question=t.readString(),this._choices=[];const e=t.readInt();let s=0;for(;s<e;)this._choices.push(t.readString()),s++;return!0}get question(){return this._question}get choices(){return this._choices.slice()}}class bw{constructor(t){this._rewardUserLimits=[],this._hasGoalExpired=t.readBoolean(),this._personalContributionScore=t.readInt(),this._personalContributionRank=t.readInt(),this._communityTotalScore=t.readInt(),this._communityHighestAchievedLevel=t.readInt(),this._scoreRemainingUntilNextLevel=t.readInt(),this._percentCompletionTowardsNextLevel=t.readInt(),this._goalCode=t.readString(),this._timeRemainingInSeconds=t.readInt();const e=t.readInt();for(let s=0;s<e;s++)this._rewardUserLimits.push(t.readInt())}dispose(){this._rewardUserLimits=null}get disposed(){return this._rewardUserLimits==null}get hasGoalExpired(){return this._hasGoalExpired}get personalContributionScore(){return this._personalContributionScore}get personalContributionRank(){return this._personalContributionRank}get communityTotalScore(){return this._communityTotalScore}get communityHighestAchievedLevel(){return this._communityHighestAchievedLevel}get scoreRemainingUntilNextLevel(){return this._scoreRemainingUntilNextLevel}get percentCompletionTowardsNextLevel(){return this._percentCompletionTowardsNextLevel}get timeRemainingInSeconds(){return this._timeRemainingInSeconds}get rewardUserLimits(){return this._rewardUserLimits}get goalCode(){return this._goalCode}}class Nw{constructor(t){this._communityGoalId=t.readInt(),this._communityGoalCode=t.readString(),this._userRank=t.readInt(),this._rewardCode=t.readString(),this._badge=t.readBoolean(),this._localizedName=t.readString()}get communityGoalId(){return this._communityGoalId}get communityGoalCode(){return this._communityGoalCode}get userRank(){return this._userRank}get rewardCode(){return this._rewardCode}get badge(){return this._badge}get localizedName(){return this._localizedName}}class Uw{flush(){return this._prizes=[],!0}parse(t){if(!t)return!1;const e=t.readInt();for(let s=0;s<e;s++)this._prizes.push(new Nw(t));return!0}get prizes(){return this._prizes}}class Dw{constructor(t){this._userId=t.readInt(),this._userName=t.readString(),this._figure=t.readString(),this._rank=t.readInt(),this._currentScore=t.readInt()}get userId(){return this._userId}get userName(){return this._userName}get figure(){return this._figure}get rank(){return this._rank}get currentScore(){return this._currentScore}}class Lw{constructor(t){this._hof=[],this._goalCode=t.readString();const e=t.readInt();for(let s=0;s<e;s++)this._hof.push(new Dw(t))}dispose(){this._hof=null}get disposed(){return this._hof==null}get hof(){return this._hof}get goalCode(){return this._goalCode}}class Fw{flush(){return this._data=null,!0}parse(t){return t?(this._data=new Lw(t),!0):!1}get data(){return this._data}}class ww{flush(){return this._data=null,!0}parse(t){return t?(this._data=new bw(t),!0):!1}get data(){return this._data}}class Gw{flush(){return this._state=-1,this._userCount=-1,this._userCountGoal=-1,!0}parse(t){return t?(this._state=t.readInt(),this._userCount=t.readInt(),this._userCountGoal=t.readInt(),!0):!1}get state(){return this._state}get userCount(){return this._userCount}get userCountGoal(){return this._userCountGoal}}class Bw{flush(){return this._imageUri="",!0}parse(t){return t?(this._imageUri=t.readString(),!0):!1}get imageUri(){return this._imageUri}}class kw{flush(){return!0}parse(t){return t?(this._expired=t.readBoolean(),!0):!1}get expired(){return this._expired}}class Dn{constructor(t){this._receiveTime=new Date,this._campaignCode=t.readString(),this._completedQuestsInCampaign=t.readInt(),this._questCountInCampaign=t.readInt(),this._activityPointType=t.readInt(),this._id=t.readInt(),this._accepted=t.readBoolean(),this._type=t.readString(),this._imageVersion=t.readString(),this._rewardCurrencyAmount=t.readInt(),this._localizationCode=t.readString(),this._completedSteps=t.readInt(),this._totalSteps=t.readInt(),this._sortOrder=t.readInt(),this._catalogPageName=t.readString(),this._chainCode=t.readString(),this._easy=t.readBoolean()}static getCampaignLocalizationKeyForCode(t){return"quests."+t}get campaignCode(){return this._campaignCode}get localizationCode(){return this._localizationCode}get completedQuestsInCampaign(){return this._completedQuestsInCampaign}get questCountInCampaign(){return this._questCountInCampaign}get activityPointType(){return this._activityPointType}set accepted(t){this._accepted=t}get accepted(){return this._accepted}set id(t){this._id=t}get id(){return this._id}get type(){return this._type}get imageVersion(){return this._imageVersion}get rewardCurrencyAmount(){return this._rewardCurrencyAmount}get completedSteps(){return this._completedSteps}get totalSteps(){return this._totalSteps}get isCompleted(){return this._completedSteps==this._totalSteps}set waitPeriodSeconds(t){this._waitPeriodSeconds=t}get waitPeriodSeconds(){if(this._waitPeriodSeconds<1)return 0;const e=new Date().getTime()-this._receiveTime.getTime();return Math.max(0,this._waitPeriodSeconds-Math.floor(e/1e3))}getCampaignLocalizationKey(){return Dn.getCampaignLocalizationKeyForCode(this.campaignCode)}getQuestLocalizationKey(){return this.getCampaignLocalizationKey()+"."+this._localizationCode}get completedCampaign(){return this._id<1}get lastQuestInCampaign(){return this._completedQuestsInCampaign>=this._questCountInCampaign}get receiveTime(){return this._receiveTime}get sortOrder(){return this._sortOrder}get catalogPageName(){return this._catalogPageName}get chainCode(){return this._chainCode}get easy(){return this._easy}}class zw{flush(){return this._questData=null,!0}parse(t){return t?(this._questData=new Dn(t),this._showDialog=t.readBoolean(),!0):!1}get questData(){return this._questData}get showDialog(){return this._showDialog}}class Vw{flush(){return this._quest=null,!0}parse(t){return t?(t.readBoolean()&&(this._quest=new Dn(t),this._easyQuestCount=t.readInt(),this._hardQuestCount=t.readInt()),!0):!1}get quest(){return this._quest}get easyQuestCount(){return this._easyQuestCount}get hardQuestCount(){return this._hardQuestCount}}class Hw{flush(){return this._quest=null,!0}parse(t){return t?(this._quest=new Dn(t),!0):!1}get quest(){return this._quest}}class Yw{flush(){return this._quests=[],!0}parse(t){if(!t)return!1;const e=t.readInt();for(let s=0;s<e;s++)this._quests.push(new Dn(t));return this._openWindow=t.readBoolean(),!0}get quests(){return this._quests}get openWindow(){return this._openWindow}}class Ww{flush(){return this._quests=[],!0}parse(t){if(!t)return!1;const e=t.readInt();for(let s=0;s<e;s++)this._quests.push(new Dn(t));return!0}get quests(){return this._quests}}class jw{flush(){return this._recyclerFinishedStatus=-1,this._prizeId=0,!0}parse(t){return t?(this._recyclerFinishedStatus=t.readInt(),this._prizeId=t.readInt(),!0):!1}get recyclerFinishedStatus(){return this._recyclerFinishedStatus}get prizeId(){return this._prizeId}}class Kw{flush(){return this._recyclerStatus=-1,this._recyclerTimeoutSeconds=0,!0}parse(t){return t?(this._recyclerStatus=t.readInt(),this._recyclerTimeoutSeconds=t.readInt(),!0):!1}get recyclerStatus(){return this._recyclerStatus}get recyclerTimeoutSeconds(){return this._recyclerTimeoutSeconds}}class Hm{constructor(t){this._stuffIds=[],this._intParams=[],this._stuffTypeSelectionEnabled=t.readBoolean(),this._furniLimit=t.readInt();let e=t.readInt();for(;e>0;)this._stuffIds.push(t.readInt()),e--;for(this._stuffTypeId=t.readInt(),this._id=t.readInt(),this._stringParam=t.readString(),e=t.readInt();e>0;)this._intParams.push(t.readInt()),e--;this._stuffTypeSelectionCode=t.readInt()}getBoolean(t){return this._intParams[t]===1}get stuffTypeSelectionEnabled(){return this._stuffTypeSelectionEnabled}get stuffTypeSelectionCode(){return this._stuffTypeSelectionCode}set stuffTypeSelectionCode(t){this._stuffTypeSelectionCode=t}get maximumItemSelectionCount(){return this._furniLimit}get selectedItems(){return this._stuffIds}get id(){return this._id}get stringData(){return this._stringParam}get intData(){return this._intParams}get code(){return 0}get spriteId(){return this._stuffTypeId}}class Xw extends Hm{constructor(t){super(t),this._type=t.readInt()}get type(){return this._type}get code(){return this._type}}class qw extends Hm{constructor(t){super(t),this._conflictingActions=[],this._triggerConf=t.readInt();let e=t.readInt();for(;e>0;)this._conflictingActions.push(t.readInt()),e--}get code(){return this._triggerConf}get conflictingActions(){return this._conflictingActions}}class $w extends Hm{constructor(t){super(t),this._conflictingTriggers=[],this._type=t.readInt(),this._delayInPulses=t.readInt();let e=t.readInt();for(;e>0;)this._conflictingTriggers.push(t.readInt()),e--}get type(){return this._type}get code(){return this._type}get delayInPulses(){return this._delayInPulses}get conflictingTriggers(){return this._conflictingTriggers}}class Qw{flush(){return this._definition=null,!0}parse(t){return t?(this._definition=new $w(t),!0):!1}get definition(){return this._definition}}class Zw{flush(){return this._definition=null,!0}parse(t){return t?(this._definition=new Xw(t),!0):!1}get definition(){return this._definition}}class Jw{flush(){return this._definition=null,!0}parse(t){return t?(this._definition=new qw(t),!0):!1}get definition(){return this._definition}}class tG{flush(){return this._stuffId=0,!0}parse(t){return t?(this._stuffId=t.readInt(),!0):!1}get stuffId(){return this._stuffId}}class eG{flush(){return this._reason=0,!0}parse(t){return t?(this._reason=t.readInt(),!0):!1}get reason(){return this._reason}}class sG{flush(){return!0}parse(t){return!!t}}class iG{flush(){return this._info=null,!0}parse(t){return t?(this._info=t.readString(),!0):!1}get info(){return this._info}}class rG{flush(){return!0}parse(t){return!!t}}class nG{flush(){return!0}parse(t){return!0}}class aG{constructor(){this._songDisks=new xe}flush(){return this._songDisks.reset(),this._maxLength=0,!0}parse(t){this._maxLength=t.readInt();const e=t.readInt();for(let s=0;s<e;s++)this._songDisks.add(t.readInt(),t.readInt());return!0}get songDisks(){return this._songDisks}get maxLength(){return this._maxLength}}class oG{flush(){return this._currentSongId=-1,this._currentPosition=-1,this._nextSongId=-1,this._nextPosition=-1,this._syncCount=-1,!0}parse(t){return this._currentSongId=t.readInt(),this._currentPosition=t.readInt(),this._nextSongId=t.readInt(),this._nextPosition=t.readInt(),this._syncCount=t.readInt(),!0}get currentSongId(){return this._currentSongId}get currentPosition(){return this._currentPosition}get nextSongId(){return this._nextSongId}get nextPosition(){return this._nextPosition}get syncCount(){return this._syncCount}}class uG{flush(){return this._songId=0,this._officialSongId="",!0}parse(t){return this._officialSongId=t.readString(),this._songId=t.readInt(),!0}get songId(){return this._songId}get officialSongId(){return this._officialSongId}}class Ym{constructor(t,e,s,r){this._startPlayHead=0,this._id=t,this._length=e,this._name=s,this._creator=r}get id(){return this._id}get length(){return this._length}get name(){return this._name}get creator(){return this._creator}get startPlayHeadPos(){return this._startPlayHead}set startPlayHeadPos(t){this._startPlayHead=t}}class lG{flush(){return this._synchronizationCount=-1,this._playlist=[],!0}parse(t){this._synchronizationCount=t.readInt();const e=t.readInt();for(let s=0;s<e;s++)this._playlist.push(new Ym(t.readInt(),t.readInt(),t.readString(),t.readString()));return!0}get synchronizationCount(){return this._synchronizationCount}get playList(){return this._playlist}}class hG{flush(){return this._entry=null,!0}parse(t){return this._entry=new Ym(t.readInt(),t.readInt(),t.readString(),t.readString()),!0}get entry(){return this._entry}}class cG extends Ym{constructor(t,e,s,r,n){super(t,e,s,r),this._data="",this._data=n}get data(){return this._data}}class _G{flush(){return this._songs=[],!0}parse(t){const e=t.readInt();for(let s=0;s<e;s++){const r=t.readInt();t.readString();const n=t.readString(),a=t.readString(),o=t.readInt(),u=t.readString(),l=new cG(r,o,n,u,a);this._songs.push(l)}return!0}get songs(){return this._songs}}class dG{constructor(){this._songDiskInventory=new xe}flush(){return this._songDiskInventory.reset(),!0}parse(t){const e=t.readInt();for(let s=0;s<e;s++)this._songDiskInventory.add(t.readInt(),t.readInt());return!0}getDiskId(t){return t>=0&&t<this._songDiskInventory.length?this._songDiskInventory.getKey(t):-1}getSongId(t){return t>=0&&t<this._songDiskInventory.length?this._songDiskInventory.getWithIndex(t):-1}get songDiskCount(){return this._songDiskInventory.length}}class fG{constructor(t){this._perkId=t.readInt()}get perkId(){return this._perkId}}class MS{constructor(t,e){this._productCode=t,this._vipDays=e}get productCode(){return this._productCode}get vipDays(){return this._vipDays}}class gG{flush(){return this._talentTrackName=null,this._level=-1,this._rewardPerks=[],this._rewardProducts=[],!0}parse(t){if(!t)return!1;let e=0;this._talentTrackName=t.readString(),this._level=t.readInt();const s=t.readInt();for(;e<s;)this._rewardPerks.push(new fG(t)),e++;const r=t.readInt();if(e<r)for(let n=0;n<r;n++){const a=t.readString(),o=t.readInt();this._rewardProducts.push(new MS(a,o)),e++}return!0}get talentTrackName(){return this._talentTrackName}get level(){return this._level}get rewardPerks(){return this._rewardPerks}get rewardProducts(){return this._rewardProducts}}class pG{constructor(t,e,s,r,n){this._level=t,this._state=e,this._tasks=s,this._rewardPerks=r,this._rewardProducts=n}get level(){return this._level}get state(){return this._state}get tasks(){return this._tasks}get perks(){return this._rewardPerks}get items(){return this._rewardProducts}}class mG{flush(){return this._talentTrackName=null,this._level=-1,this._maxLevel=-1,!0}parse(t){return t?(this._talentTrackName=t.readString(),this._level=t.readInt(),this._maxLevel=t.readInt(),!0):!1}get talentTrackName(){return this._talentTrackName}get level(){return this._level}get maxLevel(){return this._maxLevel}}class EG{constructor(t,e,s,r,n,a){this._id=t,this._requiredLevel=e,this._badgeCode=s,this._state=r,this._currentScore=n,this._totalScore=a}get id(){return this._id}get requiredLevel(){return this._requiredLevel}get badgeCode(){return this._badgeCode}get state(){return this._state}get currentScore(){return this._currentScore}get totalScore(){return this._totalScore}}class TG{flush(){return this._type=null,this._levels=null,!0}parse(t){if(!t)return!1;this._type=t.readString(),this._levels=[];const e=t.readInt();for(let s=0;s<e;s++){const r=t.readInt(),n=t.readInt(),a=[],o=t.readInt();for(let _=0;_<o;_++){const d=t.readInt(),f=t.readInt(),p=t.readString(),g=t.readInt(),m=t.readInt(),O=t.readInt();a.push(new EG(d,f,p,g,m,O))}const u=[],l=t.readInt();for(let _=0;_<l;_++)u.push(t.readString());const c=[],h=t.readInt();for(let _=0;_<h;_++){const d=t.readString(),f=t.readInt();c.push(new MS(d,f))}this._levels.push(new pG(r,n,a,u,c))}return!0}get type(){return this._type}get levels(){return this._levels}}class IG{flush(){return this._classifiedUsersNames&&(this._classifiedUsersNames=new Map),this._classifiedUsersClass&&(this._classifiedUsersClass=new Map),!0}parse(t){if(!t)return!1;let e,s,r,n=t.readInt();for(this._classifiedUsersNames=new Map,this._classifiedUsersClass=new Map;n>0;)e=t.readInt(),s=t.readString(),r=t.readString(),this._classifiedUsersNames.set(e,s),this._classifiedUsersClass.set(e,r),n--;return!0}get classifiedUsernameMap(){return this._classifiedUsersNames}get classifiedUserTypeMap(){return this._classifiedUsersClass}}class SG extends R{constructor(t){super(t,hb)}getParser(){return this.parser}}class RG extends R{constructor(t){super(t,cb)}getParser(){return this.parser}}class xS extends R{constructor(t){super(t,_b)}getParser(){return this.parser}}class AG extends R{constructor(t){super(t,db)}getParser(){return this.parser}}class OG extends R{constructor(t){super(t,fb)}getParser(){return this.parser}}class yG extends R{constructor(t){super(t,gb)}getParser(){return this.parser}}class vG extends R{constructor(t){super(t,pb)}getParser(){return this.parser}}class CG extends R{constructor(t){super(t,mb)}getParser(){return this.parser}}const Li=class Li extends R{constructor(t){super(t,Eb)}getParser(){return this.parser}};Li.NAME_OK=0,Li.ERROR_NAME_REQUIRED=1,Li.ERROR_NAME_TOO_SHORT=2,Li.ERROR_NAME_TOO_LONG=3,Li.ERROR_NAME_NOT_VALID=4,Li.ERROR_NAME_IN_USE=5,Li.ERROR_NAME_CHANGE_NOT_ALLOWED=6,Li.ERROR_MERGE_HOTEL_DOWN=7;let hu=Li;class MG extends R{constructor(t){super(t,Tb)}getParser(){return this.parser}}class PS extends R{constructor(t){super(t,Ib)}getParser(){return this.parser}}class xG extends R{constructor(t){super(t,Rb)}getParser(){return this.parser}}class PG extends R{constructor(t){super(t,Ab)}getParser(){return this.parser}}class bG extends R{constructor(t){super(t,Ob)}getParser(){return this.parser}}class NG extends R{constructor(t){super(t,yb)}getParser(){return this.parser}}class UG extends R{constructor(t){super(t,vb)}getParser(){return this.parser}}class DG extends R{constructor(t){super(t,Pb)}getParser(){return this.parser}}class LG extends R{constructor(t){super(t,bb)}getParser(){return this.parser}}class FG extends R{constructor(t){super(t,Nb)}getParser(){return this.parser}}class wG extends R{constructor(t){super(t,Ub)}getParser(){return this.parser}}class GG extends R{constructor(t){super(t,Db)}getParser(){return this.parser}}class BG extends R{constructor(t){super(t,Lb)}getParser(){return this.parser}}class kG extends R{constructor(t){super(t,Fb)}getParser(){return this.parser}}class zG extends R{constructor(t){super(t,wb)}getParser(){return this.parser}}class VG extends R{constructor(t){super(t,Gb)}getParser(){return this.parser}}class HG extends R{constructor(t){super(t,Bb)}getParser(){return this.parser}}class YG extends R{constructor(t){super(t,kb)}getParser(){return this.parser}}class WG extends R{constructor(t){super(t,zb)}getParser(){return this.parser}}class jG extends R{constructor(t){super(t,Vb)}getParser(){return this.parser}}class KG extends R{constructor(t){super(t,Hb)}getParser(){return this.parser}}class XG extends R{constructor(t){super(t,Yb)}getParser(){return this.parser}}class qG extends R{constructor(t){super(t,jb)}getParser(){return this.parser}}class $G extends R{constructor(t){super(t,qb)}getParser(){return this.parser}}class QG extends R{constructor(t){super(t,$b)}getParser(){return this.parser}}class ZG extends R{constructor(t){super(t,Kb)}getParser(){return this.parser}}class JG extends R{constructor(t){super(t,Qb)}getParser(){return this.parser}}class tB extends R{constructor(t){super(t,Zb)}getParser(){return this.parser}}class eB extends R{constructor(t){super(t,tN)}getParser(){return this.parser}}class sB extends R{constructor(t){super(t,eN)}getParser(){return this.parser}}class iB extends R{constructor(t){super(t,iN)}getParser(){return this.parser}}class rB extends R{constructor(t){super(t,nN)}getParser(){return this.parser}}class nB extends R{constructor(t){super(t,aN)}getParser(){return this.parser}}class aB extends R{constructor(t){super(t,oN)}getParser(){return this.parser}}class oB extends R{constructor(t){super(t,uN)}getParser(){return this.parser}}class uB extends R{constructor(t){super(t,lN)}getParser(){return this.parser}}class lB extends R{constructor(t){super(t,hN)}getParser(){return this.parser}}class hB extends R{constructor(t){super(t,cN)}getParser(){return this.parser}}class cB extends R{constructor(t){super(t,_N)}getParser(){return this.parser}}class _B extends R{constructor(t){super(t,dN)}getParser(){return this.parser}}class dB extends R{constructor(t){super(t,fN)}getParser(){return this.parser}}class fB extends R{constructor(t){super(t,gN)}getParser(){return this.parser}}class gB extends R{constructor(t){super(t,pN)}getParser(){return this.parser}}class pB extends R{constructor(t){super(t,EN)}getParser(){return this.parser}}class mB extends R{constructor(t){super(t,TL)}getParser(){return this.parser}}class EB extends R{constructor(t){super(t,IL)}getParser(){return this.parser}}class TB extends R{constructor(t){super(t,RL)}getParser(){return this.parser}}class IB extends R{constructor(t){super(t,yL)}getParser(){return this.parser}}class SB extends R{constructor(t){super(t,OL)}getParser(){return this.parser}}class RB extends R{constructor(t){super(t,vL)}getParser(){return this.parser}}class AB extends R{constructor(t){super(t,CL)}getParser(){return this.parser}}class bS extends R{constructor(t){super(t,ML)}getParser(){return this.parser}}class OB extends R{constructor(t){super(t,pd)}getParser(){return this.parser}}class yB extends R{constructor(t){super(t,xL)}getParser(){return this.parser}}class vB extends R{constructor(t){super(t,PL)}getParser(){return this.parser}}class CB extends R{constructor(t){super(t,bL)}getParser(){return this.parser}}class MB extends R{constructor(t){super(t,NL)}getParser(){return this.parser}}class xB extends R{constructor(t){super(t,UL)}getParser(){return this.parser}}class PB extends R{constructor(t){super(t,DL)}getParser(){return this.parser}}class bB extends R{constructor(t){super(t,FL)}getParser(){return this.parser}}class NB extends R{constructor(t){super(t,wL)}getParser(){return this.parser}}class UB extends R{constructor(t){super(t,GL)}getParser(){return this.parser}}class Dd extends R{constructor(t){super(t,BL)}getParser(){return this.parser}}class DB extends R{constructor(t){super(t,zL)}getParser(){return this.parser}}class LB extends R{constructor(t){super(t,VL)}getParser(){return this.parser}}class FB extends R{constructor(t){super(t,HL)}getParser(){return this.parser}}class wB extends R{constructor(t){super(t,YL)}getParser(){return this.parser}}class GB extends R{constructor(t){super(t,WL)}getParser(){return this.parser}}class BB extends R{constructor(t){super(t,jL)}getParser(){return this.parser}}class kB extends R{constructor(t){super(t,KL)}getParser(){return this.parser}}class zB extends R{constructor(t){super(t,XL)}getParser(){return this.parser}}class VB extends R{constructor(t){super(t,qL)}getParser(){return this.parser}}class HB extends R{constructor(t){super(t,$L)}getParser(){return this.parser}}class YB extends R{constructor(t){super(t,QL)}getParser(){return this.parser}}class WB extends R{constructor(t){super(t,ZL)}getParser(){return this.parser}}class jB extends R{constructor(t){super(t,JL)}getParser(){return this.parser}}class KB extends R{constructor(t){super(t,t1)}getParser(){return this.parser}}class NS extends R{constructor(t){super(t,e1)}getParser(){return this.parser}}class XB extends R{constructor(t){super(t,s1)}getParser(){return this.parser}}class qB extends R{constructor(t){super(t,i1)}getParser(){return this.parser}}class $B extends R{constructor(t){super(t,r1)}getParser(){return this.parser}}class QB extends R{constructor(t){super(t,Td)}getParser(){return this.parser}}class ZB extends R{constructor(t){super(t,n1)}getParser(){return this.parser}}class JB extends R{constructor(t){super(t,Id)}getParser(){return this.parser}}class t3 extends R{constructor(t){super(t,Sd)}getParser(){return this.parser}}class e3 extends R{constructor(t){super(t,a1)}getParser(){return this.parser}}class s3 extends R{constructor(t){super(t,o1)}getParser(){return this.parser}}class i3 extends R{constructor(t){super(t,u1)}getParser(){return this.parser}}class r3 extends R{constructor(t){super(t,l1)}getParser(){return this.parser}}class n3 extends R{constructor(t){super(t,h1)}getParser(){return this.parser}}class a3 extends R{constructor(t){super(t,_1)}getParser(){return this.parser}}class o3 extends R{constructor(t){super(t,f1)}getParser(){return this.parser}}class u3 extends R{constructor(t){super(t,g1)}getParser(){return this.parser}}class l3 extends R{constructor(t){super(t,Rd)}getParser(){return this.parser}}class h3 extends R{constructor(t){super(t,p1)}getParser(){return this.parser}}class c3 extends R{constructor(t){super(t,Ad)}getParser(){return this.parser}}class _3 extends R{constructor(t){super(t,m1)}getParser(){return this.parser}}class d3 extends R{constructor(t){super(t,E1)}getParser(){return this.parser}}class f3 extends R{constructor(t){super(t,T1)}getParser(){return this.parser}}class g3 extends R{constructor(t){super(t,I1)}getParser(){return this.parser}}class p3 extends R{constructor(t){super(t,S1)}getParser(){return this.parser}}class m3 extends R{constructor(t){super(t,oc)}getParser(){return this.parser}}class E3 extends R{constructor(t){super(t,oc)}getParser(){return this.parser}}class T3 extends R{constructor(t){super(t,oc)}getParser(){return this.parser}}class I3 extends R{constructor(t){super(t,oc)}getParser(){return this.parser}}class S3 extends R{constructor(t){super(t,A1)}getParser(){return this.parser}}class R3 extends R{constructor(t){super(t,O1)}getParser(){return this.parser}}class Ld extends R{constructor(t){super(t,y1)}getParser(){return this.parser}}class A3 extends R{constructor(t){super(t,v1)}getParser(){return this.parser}}class O3 extends R{constructor(t){super(t,C1)}getParser(){return this.parser}}class y3 extends R{constructor(t){super(t,M1)}getParser(){return this.parser}}class US extends R{constructor(t){super(t,x1)}getParser(){return this.parser}}class v3 extends R{constructor(t){super(t,P1)}getParser(){return this.parser}}class C3 extends R{constructor(t){super(t,b1)}getParser(){return this.parser}}class M3 extends R{constructor(t){super(t,N1)}getParser(){return this.parser}}class x3 extends R{constructor(t){super(t,L1)}getParser(){return this.parser}}class P3 extends R{constructor(t){super(t,F1)}getParser(){return this.parser}}class b3 extends R{constructor(t){super(t,w1)}getParser(){return this.parser}}class N3 extends R{constructor(t){super(t,G1)}getParser(){return this.parser}}class U3 extends R{constructor(t){super(t,B1)}getParser(){return this.parser}}class D3 extends R{constructor(t){super(t,k1)}getParser(){return this.parser}}class L3 extends R{constructor(t){super(t,z1)}getParser(){return this.parser}}class F3 extends R{constructor(t){super(t,V1)}getParser(){return this.parser}}class w3 extends R{constructor(t){super(t,H1)}getParser(){return this.parser}}class G3 extends R{constructor(t){super(t,Y1)}getParser(){return this.parser}}class B3 extends R{constructor(t){super(t,W1)}getParser(){return this.parser}}class k3 extends R{constructor(t){super(t,j1)}getParser(){return this.parser}}class z3 extends R{constructor(t){super(t,K1)}getParser(){return this.parser}}class V3 extends R{constructor(t){super(t,X1)}getParser(){return this.parser}}const Et=class Et{};Et.LOGOUT=0,Et.JUST_BANNED=1,Et.CONCURRENT_LOGIN=2,Et.CONNECTION_LOST_TO_PEER=3,Et.AVATAR_IDENTITY_CHANGE=4,Et.REMOVE_FURNITURE_TOOL=5,Et.STILL_BANNED=10,Et.DUAL_LOGIN_BY_USERID=11,Et.HOTEL_CLOSED=12,Et.DUAL_LOGIN_BY_IP=13,Et.PEER_CONNECTION_MISSING=16,Et.NO_LOGIN_PERMISSION=17,Et.DUPLICATE_CONNECTION=18,Et.HOTEL_CLOSING=19,Et.INCORRECT_PASSWORD=20,Et.INVALID_LOGIN_TICKET=22,Et.VERSION_CHECK_URL=23,Et.VERSION_CHECK_PROPERTY=24,Et.VERSION_CHECK_MACHINE_ID=25,Et.NO_MESSENGER_SESSION=26,Et.USER_NOT_FOUND=27,Et.CRYPTO_NOT_INITIALIZED=28,Et.DEV_CRYPTO_NOT_ALLOWED=29,Et.DUPLICATE_UUID_DETECTED=100,Et.OLD_SESSION_IN_PROXY=101,Et.PUBLIC_KEY_NOT_NUMERIC=102,Et.PUBLIC_KEY_TOO_SHORT=103,Et.SOCKET_READ_GENERIC=104,Et.SOCKET_READ_FIRST_BYTE=105,Et.SOCKET_READ_LENGTH=106,Et.SOCKET_READ_BODY=107,Et.SOCKET_READ_POLICY=108,Et.SOCKET_IO_EXCEPTION=109,Et.SOCKET_WRONG_CRYPTO=110,Et.PROXY_RUNTIME_EXCEPTION=111,Et.IDLE_CONNECTION=112,Et.PONG_TIMEOUT=113,Et.IDLE_CONNECTION_NOT_AUTH=114,Et.IDLE_CONNECTION_NO_USER_ID=115,Et.WRITE_CLOSED_CHANNEL=116,Et.SOCKET_WRITE_EXCEPTION_1=117,Et.SOCKET_WRITE_EXCEPTION_2=118,Et.SOCKET_WRITE_EXCEPTION_3=119;let xa=Et;class H3 extends R{constructor(t){super(t,q1)}getParser(){return this.parser}get reasonString(){switch(this.getParser().reason){case xa.JUST_BANNED:case xa.STILL_BANNED:return"banned";case xa.CONCURRENT_LOGIN:return"concurrentlogin";case xa.INCORRECT_PASSWORD:return"incorrectpassword";default:return"logout"}}}class Y3 extends R{constructor(t){super(t,$1)}getParser(){return this.parser}}class W3 extends R{constructor(t){super(t,Q1)}getParser(){return this.parser}}class DS extends R{constructor(t){super(t,Z1)}getParser(){return this.parser}}class j3 extends R{constructor(t){super(t,J1)}getParser(){return this.parser}}class K3 extends R{constructor(t){super(t,tF)}getParser(){return this.parser}}class X3 extends R{constructor(t){super(t,eF)}getParser(){return this.parser}}class q3 extends R{constructor(t){super(t,sF)}getParser(){return this.parser}}class $3 extends R{constructor(t){super(t,iF)}getParser(){return this.parser}}class Q3 extends R{constructor(t){super(t,rF)}getParser(){return this.parser}}class Z3 extends R{constructor(t){super(t,nF)}getParser(){return this.parser}}class J3 extends R{constructor(t){super(t,aF)}getParser(){return this.parser}}class tk extends R{constructor(t){super(t,oF)}getParser(){return this.parser}}class ek extends R{constructor(t){super(t,Od)}getParser(){return this.parser}}class sk extends R{constructor(t){super(t,uF)}getParser(){return this.parser}}class ik extends R{constructor(t){super(t,yd)}getParser(){return this.parser}}class rk extends R{constructor(t){super(t,hF)}getParser(){return this.parser}}class nk extends R{constructor(t){super(t,cF)}getParser(){return this.parser}}class LS extends R{constructor(t){super(t,_F)}getParser(){return this.parser}}class FS extends R{constructor(t){super(t,vd)}getParser(){return this.parser}}class ak extends R{constructor(t){super(t,dF)}getParser(){return this.parser}}class ok extends R{constructor(t){super(t,fF)}getParser(){return this.parser}}class uk extends R{constructor(t){super(t,gF)}getParser(){return this.parser}}class lk extends R{constructor(t){super(t,pF)}getParser(){return this.parser}}class wS extends R{constructor(t){super(t,mF)}getParser(){return this.parser}}class hk extends R{constructor(t){super(t,Cd)}getParser(){return this.parser}}class ck extends R{constructor(t){super(t,Md)}getParser(){return this.parser}}class _k extends R{constructor(t){super(t,EF)}getParser(){return this.parser}}class dk extends R{constructor(t){super(t,TF)}getParser(){return this.parser}}class fk extends R{constructor(t){super(t,IF)}getParser(){return this.parser}}class gk extends R{constructor(t){super(t,SF)}getParser(){return this.parser}}class pk extends R{constructor(t){super(t,VN)}getParser(){return this.parser}}class mk extends R{constructor(t){super(t,HN)}getParser(){return this.parser}}class Ek extends R{constructor(t){super(t,YN)}getParser(){return this.parser}}class Tk extends R{constructor(t){super(t,jN)}getParser(){return this.parser}}class Ik extends R{constructor(t){super(t,KN)}getParser(){return this.parser}}class Sk extends R{constructor(t){super(t,XN)}getParser(){return this.parser}}class Rk extends R{constructor(t){super(t,qN)}getParser(){return this.parser}}class Ak extends R{constructor(t){super(t,$N)}getParser(){return this.parser}}class GS extends R{constructor(t){super(t,ZN)}getParser(){return this.parser}}class Ok extends R{constructor(t){super(t,JN)}getParser(){return this.parser}}class yk extends R{constructor(t){super(t,tU)}getParser(){return this.parser}}class vk extends R{constructor(t){super(t,eU)}getParser(){return this.parser}}class Ck extends R{constructor(t){super(t,sU)}getParser(){return this.parser}}class Brt extends R{constructor(t){super(t,iU)}getParser(){return this.parser}}class krt extends R{constructor(t){super(t,rU)}getParser(){return this.parser}}class Mk extends R{constructor(t){super(t,VD)}getParser(){return this.parser}}class xk extends R{constructor(t){super(t,YD)}getParser(){return this.parser}}class Pk extends R{constructor(t){super(t,HD)}getParser(){return this.parser}}class bk extends R{constructor(t){super(t,WD)}getParser(){return this.parser}}class Nk extends R{constructor(t){super(t,jD)}getParser(){return this.parser}}class BS extends R{constructor(t){super(t,KD)}getParser(){return this.parser}}class Uk extends R{constructor(t){super(t,XD)}getParser(){return this.parser}}class Dk extends R{constructor(t){super(t,qD)}getParser(){return this.parser}}class zrt extends R{constructor(t){super(t,_d)}getParser(){return this.parser}}class Lk extends R{constructor(t){super(t,$D)}getParser(){return this.parser}}class Fk extends R{constructor(t){super(t,QD)}getParser(){return this.parser}}class wk extends R{constructor(t){super(t,ZD)}getParser(){return this.parser}}class Gk extends R{constructor(t){super(t,JD)}getParser(){return this.parser}}class Bk extends R{constructor(t){super(t,tL)}getParser(){return this.parser}}class kk extends R{constructor(t){super(t,sL)}get userID(){return this.getParser().userID}get userAccepts(){return this.getParser().userAccepts}getParser(){return this.parser}}class zk extends R{constructor(t){super(t,fd)}get userID(){return this.getParser().userID}getParser(){return this.parser}}class Vk extends R{constructor(t){super(t,iL)}getParser(){return this.parser}}class Hk extends R{constructor(t){super(t,rL)}getParser(){return this.parser}}class Yk extends R{constructor(t){super(t,nL)}get firstUserID(){return this.getParser().firstUserID}get secondUserID(){return this.getParser().secondUserID}get firstUserNumItems(){return this.getParser().firstUserNumItems}get secondUserNumItems(){return this.getParser().secondUserNumItems}get firstUserNumCredits(){return this.getParser().firstUserNumCredits}get secondUserNumCredits(){return this.getParser().secondUserNumCredits}get firstUserItemArray(){return this.getParser().firstUserItemArray}get secondUserItemArray(){return this.getParser().secondUserItemArray}getParser(){return this.parser}}class Wk extends R{constructor(t){super(t,aL)}getParser(){return this.parser}}class jk extends R{constructor(t){super(t,oL)}getParser(){return this.parser}}class Kk extends R{constructor(t){super(t,uL)}get userID(){return this.getParser().userID}get userCanTrade(){return this.getParser().userCanTrade}get otherUserID(){return this.getParser().otherUserID}get otherUserCanTrade(){return this.getParser().otherUserCanTrade}getParser(){return this.parser}}class Xk extends R{constructor(t){super(t,gd)}getParser(){return this.parser}}class qk extends R{constructor(t){super(t,lL)}getParser(){return this.parser}}class $k extends R{constructor(t){super(t,hL)}getParser(){return this.parser}}class Qk extends R{constructor(t){super(t,RF)}getParser(){return this.parser}}class Zk extends R{constructor(t){super(t,AF)}getParser(){return this.parser}}class Jk extends R{constructor(t){super(t,OF)}getParser(){return this.parser}}class tz extends R{constructor(t){super(t,yF)}getParser(){return this.parser}}class ez extends R{constructor(t){super(t,vF)}getParser(){return this.parser}}class sz extends R{constructor(t){super(t,CF)}getParser(){return this.parser}}class iz extends R{constructor(t){super(t,xF)}getParser(){return this.parser}}class rz extends R{constructor(t){super(t,MF)}getParser(){return this.parser}}class nz extends R{constructor(t){super(t,Pd)}getParser(){return this.parser}}class az extends R{constructor(t){super(t,bd)}getParser(){return this.parser}}class oz extends R{constructor(t){super(t,NF)}getParser(){return this.parser}}class uz extends R{constructor(t){super(t,UF)}getParser(){return this.parser}}class lz extends R{constructor(t){super(t,vS)}getParser(){return this.parser}}class hz extends R{constructor(t){super(t,LF)}getParser(){return this.parser}}class cz extends R{constructor(t){super(t,wF)}getParser(){return this.parser}}class _z extends R{constructor(t){super(t,FF)}getParser(){return this.parser}}class dz extends R{constructor(t){super(t,BF)}getParser(){return this.parser}}class fz extends R{constructor(t){super(t,kF)}getParser(){return this.parser}}class gz extends R{constructor(t){super(t,HF)}getParser(){return this.parser}}class pz extends R{constructor(t){super(t,YF)}getParser(){return this.parser}}class mz extends R{constructor(t){super(t,jF)}getParser(){return this.parser}}class Ez extends R{constructor(t){super(t,KF)}getParser(){return this.parser}}class Tz extends R{constructor(t){super(t,$F)}getParser(){return this.parser}}class Iz extends R{constructor(t){super(t,QF)}getParser(){return this.parser}}class Sz extends R{constructor(t){super(t,JF)}getParser(){return this.parser}}class Rz extends R{constructor(t){super(t,t2)}getParser(){return this.parser}}class Az extends R{constructor(t){super(t,e2)}getParser(){return this.parser}}class kS extends R{constructor(t){super(t,s2)}getParser(){return this.parser}}class Oz extends R{constructor(t){super(t,i2)}getParser(){return this.parser}}class yz extends R{constructor(t){super(t,Nd)}getParser(){return this.parser}}class vz extends R{constructor(t){super(t,r2)}getParser(){return this.parser}}class Cz extends R{constructor(t){super(t,_2)}getParser(){return this.parser}}class Mz extends R{constructor(t){super(t,d2)}getParser(){return this.parser}}class xz extends R{constructor(t){super(t,f2)}getParser(){return this.parser}}class zS extends R{constructor(t){super(t,g2)}getParser(){return this.parser}get userName(){return this.getParser().userName}}class Pz extends R{constructor(t){super(t,p2)}getParser(){return this.parser}}class bz extends R{constructor(t){super(t,m2)}getParser(){return this.parser}}class Fd extends R{constructor(t){super(t,E2)}getParser(){return this.parser}}class Nz extends R{constructor(t){super(t,T2)}getParser(){return this.parser}}class wd extends R{constructor(t){super(t,I2)}getParser(){return this.parser}}class Uz extends R{constructor(t){super(t,S2)}getParser(){return this.parser}}class Dz extends R{constructor(t){super(t,A2)}getParser(){return this.parser}}class Lz extends R{constructor(t){super(t,y2)}getParser(){return this.parser}}class Fz extends R{constructor(t){super(t,C2)}getParser(){return this.parser}}class wz extends R{constructor(t){super(t,M2)}getParser(){return this.parser}}class Gz extends R{constructor(t){super(t,x2)}getParser(){return this.parser}}class Bz extends R{constructor(t){super(t,P2)}getParser(){return this.parser}}class kz extends R{constructor(t){super(t,b2)}getParser(){return this.parser}}class zz extends R{constructor(t){super(t,N2)}getParser(){return this.parser}}class yI extends R{constructor(t){super(t,L2)}getParser(){return this.parser}}class Vz extends R{constructor(t){super(t,F2)}getParser(){return this.parser}}class Hz extends R{constructor(t){super(t,w2)}getParser(){return this.parser}}class Yz extends R{constructor(t){super(t,G2)}getParser(){return this.parser}}class Wz extends R{constructor(t){super(t,B2)}getParser(){return this.parser}}class jz extends R{constructor(t){super(t,k2)}getParser(){return this.parser}}class Kz extends R{constructor(t){super(t,z2)}getParser(){return this.parser}}class Xz extends R{constructor(t){super(t,V2)}getParser(){return this.parser}}class qz extends R{constructor(t){super(t,Y2)}getParser(){return this.parser}}class $z extends R{constructor(t){super(t,W2)}getParser(){return this.parser}}class VS extends R{constructor(t){super(t,j2)}getParser(){return this.parser}}class Qz extends R{constructor(t){super(t,K2)}getParser(){return this.parser}}class Zz extends R{constructor(t){super(t,X2)}getParser(){return this.parser}}class Jz extends R{constructor(t){super(t,q2)}getParser(){return this.parser}}class tV extends R{constructor(t){super(t,$2)}getParser(){return this.parser}}class Vrt extends R{constructor(t){super(t,Q2)}getParser(){return this.parser}}class eV extends R{constructor(t){super(t,Z2)}getParser(){return this.parser}}class sV extends R{constructor(t){super(t,J2)}getParser(){return this.parser}}class iV extends R{constructor(t){super(t,tw)}getParser(){return this.parser}}class rV extends R{constructor(t){super(t,ew)}getParser(){return this.parser}}class nV extends R{constructor(t){super(t,sw)}getParser(){return this.parser}}class HS extends R{constructor(t){super(t,iw)}getParser(){return this.parser}}class aV extends R{constructor(t){super(t,rw)}getParser(){return this.parser}}class oV extends R{constructor(t){super(t,nw)}getParser(){return this.parser}}class uV extends R{constructor(t){super(t,aw)}getParser(){return this.parser}}class lV extends R{constructor(t){super(t,gw)}getParser(){return this.parser}}class hV extends R{constructor(t){super(t,dd)}getParser(){return this.parser}}class YS extends R{constructor(t){super(t,pw)}getParser(){return this.parser}}class WS extends R{constructor(t){super(t,mw)}getParser(){return this.parser}}class jS extends R{constructor(t){super(t,Ew)}getParser(){return this.parser}}class KS extends R{constructor(t){super(t,Tw)}getParser(){return this.parser}}class cV extends R{constructor(t){super(t,Iw)}getParser(){return this.parser}}class XS extends R{constructor(t){super(t,Aw)}getParser(){return this.parser}}class qS extends R{constructor(t){super(t,Ow)}getParser(){return this.parser}}class $S extends R{constructor(t){super(t,yw)}getParser(){return this.parser}}class QS extends R{constructor(t){super(t,vw)}getParser(){return this.parser}}class ZS extends R{constructor(t){super(t,Mw)}getParser(){return this.parser}}class JS extends R{constructor(t){super(t,Cw)}getParser(){return this.parser}}class tR extends R{constructor(t){super(t,xw)}getParser(){return this.parser}}class eR extends R{constructor(t){super(t,Pw)}getParser(){return this.parser}}class _V extends R{constructor(t){super(t,Uw)}getParser(){return this.parser}}class dV extends R{constructor(t){super(t,Fw)}getParser(){return this.parser}}class fV extends R{constructor(t){super(t,ww)}getParser(){return this.parser}}class gV extends R{constructor(t){super(t,Gw)}getParser(){return this.parser}}class pV extends R{constructor(t){super(t,Bw)}getParser(){return this.parser}}class mV extends R{constructor(t){super(t,kw)}getParser(){return this.parser}}class EV extends R{constructor(t){super(t,zw)}getParser(){return this.parser}}class TV extends R{constructor(t){super(t,Vw)}getParser(){return this.parser}}class IV extends R{constructor(t){super(t,Hw)}getParser(){return this.parser}}class SV extends R{constructor(t){super(t,Yw)}getParser(){return this.parser}}class RV extends R{constructor(t){super(t,Ww)}getParser(){return this.parser}}const Yp=class Yp extends R{constructor(t){super(t,jw)}getParser(){return this.parser}};Yp.FINISHED_OK=1,Yp.FINISHED_FAIL=2;let Gd=Yp;const Al=class Al extends R{constructor(t){super(t,Kw)}getParser(){return this.parser}};Al.SYSTEM_STATUS_ENABLED=1,Al.SYSTEM_STATUS_DISABLED=2,Al.SYSTEM_STATUS_TIMEOUT=3;let Bd=Al;class kd extends R{constructor(t){super(t,nU)}getParser(){return this.parser}}class zd extends R{constructor(t){super(t,aU)}getParser(){return this.parser}}class Vd extends R{constructor(t){super(t,uU)}getParser(){return this.parser}}class Hd extends R{constructor(t){super(t,oU)}getParser(){return this.parser}}class AV extends R{constructor(t){super(t,ud)}getParser(){return this.parser}}class Yd extends R{constructor(t){super(t,lU)}getParser(){return this.parser}}class OV extends R{constructor(t){super(t,hU)}getParser(){return this.parser}}class yV extends R{constructor(t){super(t,cU)}getParser(){return this.parser}}class vV extends R{constructor(t){super(t,_U)}getParser(){return this.parser}}class CV extends R{constructor(t){super(t,fU)}getParser(){return this.parser}}class MV extends R{constructor(t){super(t,MU)}getParser(){return this.parser}}class xV extends R{constructor(t){super(t,xU)}getParser(){return this.parser}}class PV extends R{constructor(t){super(t,PU)}getParser(){return this.parser}}class sR extends R{constructor(t){super(t,NU)}getParser(){return this.parser}}class Wd extends R{constructor(t){super(t,cD)}getParser(){return this.parser}}class jd extends R{constructor(t){super(t,_D)}getParser(){return this.parser}}class Kd extends R{constructor(t){super(t,DU)}getParser(){return this.parser}}class bV extends R{constructor(t){super(t,LU)}getParser(){return this.parser}}class Xd extends R{constructor(t){super(t,FU)}getParser(){return this.parser}}class NV extends R{constructor(t){super(t,wU)}getParser(){return this.parser}}class qd extends R{constructor(t){super(t,GU)}getParser(){return this.parser}}class $d extends R{constructor(t){super(t,jr)}getParser(){return this.parser}}class UV extends R{constructor(t){super(t,BU)}getParser(){return this.parser}}class DV extends R{constructor(t){super(t,kU)}getParser(){return this.parser}}class Qd extends R{constructor(t){super(t,zU)}getParser(){return this.parser}}class LV extends R{constructor(t){super(t,VU)}getParser(){return this.parser}}class FV extends R{constructor(t){super(t,HU)}getParser(){return this.parser}}class wV extends R{constructor(t){super(t,YU)}getParser(){return this.parser}}class Zd extends R{constructor(t){super(t,WU)}getParser(){return this.parser}}class GV extends R{constructor(t){super(t,jU)}getParser(){return this.parser}}class BV extends R{constructor(t){super(t,KU)}getParser(){return this.parser}}class kV extends R{constructor(t){super(t,cd)}getParser(){return this.parser}}class zV extends R{constructor(t){super(t,XU)}getParser(){return this.parser}}class iR extends R{constructor(t){super(t,$U)}getParser(){return this.parser}}class VV extends R{constructor(t){super(t,QU)}getParser(){return this.parser}}class HV extends R{constructor(t){super(t,ZU)}getParser(){return this.parser}}class Jd extends R{constructor(t){super(t,JU)}getParser(){return this.parser}}class tf extends R{constructor(t){super(t,tD)}getParser(){return this.parser}}class ef extends R{constructor(t){super(t,eD)}getParser(){return this.parser}}class sf extends R{constructor(t){super(t,sD)}getParser(){return this.parser}}class rf extends R{constructor(t){super(t,iD)}getParser(){return this.parser}}class nf extends R{constructor(t){super(t,rD)}getParser(){return this.parser}}class af extends R{constructor(t){super(t,nD)}getParser(){return this.parser}}class of extends R{constructor(t){super(t,aD)}getParser(){return this.parser}}class YV extends R{constructor(t){super(t,oD)}getParser(){return this.parser}}class WV extends R{constructor(t){super(t,lD)}getParser(){return this.parser}}class jV extends R{constructor(t){super(t,hD)}getParser(){return this.parser}}class uf extends R{constructor(t){super(t,Oh)}getParser(){return this.parser}}class lf extends R{constructor(t){super(t,dD)}getParser(){return this.parser}}class hf extends R{constructor(t){super(t,Br)}getParser(){return this.parser}}class cf extends R{constructor(t){super(t,fD)}getParser(){return this.parser}}class KV extends R{constructor(t){super(t,gD)}getParser(){return this.parser}}class _f extends R{constructor(t){super(t,pD)}getParser(){return this.parser}}class ja extends R{constructor(t){super(t,mD)}getParser(){return this.parser}}class df extends R{constructor(t){super(t,ED)}getParser(){return this.parser}}class rR extends R{constructor(t){super(t,TD)}getParser(){return this.parser}}class nR extends R{constructor(t){super(t,ID)}getParser(){return this.parser}}class Ch extends R{constructor(t){super(t,SD)}getParser(){return this.parser}}class aR extends R{constructor(t){super(t,RD)}getParser(){return this.parser}}class oR extends R{constructor(t){super(t,AD)}getParser(){return this.parser}}class uR extends R{constructor(t){super(t,OD)}getParser(){return this.parser}}class lR extends R{constructor(t){super(t,yD)}getParser(){return this.parser}}class hR extends R{constructor(t){super(t,vD)}getParser(){return this.parser}}class cR extends R{constructor(t){super(t,CD)}getParser(){return this.parser}}class Wm extends R{constructor(t){super(t,km)}getParser(){return this.parser}}class Mh extends R{constructor(t){super(t,km)}getParser(){return this.parser}}class xh extends R{constructor(t){super(t,km)}getParser(){return this.parser}}class ff extends R{constructor(t){super(t,MD)}getParser(){return this.parser}}class Ph extends R{constructor(t){super(t,xD)}getParser(){return this.parser}}class gf extends R{constructor(t){super(t,PD)}getParser(){return this.parser}}class bh extends R{constructor(t){super(t,wD)}getParser(){return this.parser}}class pf extends R{constructor(t){super(t,bD)}getParser(){return this.parser}}class mf extends R{constructor(t){super(t,ND)}getParser(){return this.parser}}class _R extends R{constructor(t){super(t,UD)}getParser(){return this.parser}}class Ef extends R{constructor(t){super(t,DD)}getParser(){return this.parser}}class Nh extends R{constructor(t){super(t,LD)}getParser(){return this.parser}}class Tf extends R{constructor(t){super(t,FD)}getParser(){return this.parser}}class Uh extends R{constructor(t){super(t,GD)}getParser(){return this.parser}}class If extends R{constructor(t){super(t,zD)}getParser(){return this.parser}}class XV extends R{constructor(t){super(t,Qw)}getParser(){return this.parser}}class qV extends R{constructor(t){super(t,Zw)}getParser(){return this.parser}}class $V extends R{constructor(t){super(t,Jw)}getParser(){return this.parser}}class QV extends R{constructor(t){super(t,tG)}getParser(){return this.parser}}const Wp=class Wp extends R{constructor(t){super(t,eG)}getParser(){return this.parser}};Wp.PRODUCT_DONATED_CODE=6,Wp.BADGE_DONATED_CODE=7;let Sf=Wp;class ZV extends R{constructor(t){super(t,sG)}getParser(){return this.parser}}class JV extends R{constructor(t){super(t,iG)}getParser(){return this.parser}}class t4 extends R{constructor(t){super(t,pU)}getParser(){return this.parser}}class e4 extends R{constructor(t){super(t,EU)}getParser(){return this.parser}}class s4 extends R{constructor(t){super(t,TU)}getParser(){return this.parser}}class i4 extends R{constructor(t){super(t,IU)}getParser(){return this.parser}}class r4 extends R{constructor(t){super(t,SU)}getParser(){return this.parser}}class n4 extends R{constructor(t){super(t,RU)}getParser(){return this.parser}}class a4 extends R{constructor(t){super(t,AU)}getParser(){return this.parser}}class o4 extends R{constructor(t){super(t,OU)}getParser(){return this.parser}}class u4 extends R{constructor(t){super(t,yU)}getParser(){return this.parser}}class l4 extends R{constructor(t){super(t,hd)}getParser(){return this.parser}}class h4 extends R{constructor(t){super(t,vU)}getParser(){return this.parser}}class c4 extends R{constructor(t){super(t,CU)}getParser(){return this.parser}}class dR extends R{constructor(t){super(t,rG)}getParser(){return this.parser}}class fR extends R{constructor(t){super(t,nG)}getParser(){return this.parser}}class gR extends R{constructor(t){super(t,aG)}getParser(){return this.parser}}class pR extends R{constructor(t){super(t,oG)}getParser(){return this.parser}}class _4 extends R{constructor(t){super(t,uG)}getParser(){return this.parser}}class d4 extends R{constructor(t){super(t,lG)}getParser(){return this.parser}}class f4 extends R{constructor(t){super(t,hG)}getParser(){return this.parser}}class mR extends R{constructor(t){super(t,_G)}getParser(){return this.parser}}class ER extends R{constructor(t){super(t,dG)}getParser(){return this.parser}}class g4 extends R{constructor(t){super(t,gG)}getParser(){return this.parser}}class p4 extends R{constructor(t){super(t,mG)}getParser(){return this.parser}}class m4 extends R{constructor(t){super(t,TG)}getParser(){return this.parser}}class TR extends R{constructor(t){super(t,TN)}getParser(){return this.parser}}class IR extends R{constructor(t){super(t,Sh)}getParser(){return this.parser}}class E4 extends R{constructor(t){super(t,IN)}getParser(){return this.parser}}class T4 extends R{constructor(t){super(t,id)}getParser(){return this.parser}}class I4 extends R{constructor(t){super(t,RN)}getParser(){return this.parser}}class SR extends R{constructor(t){super(t,AN)}getParser(){return this.parser}}class Dh extends R{constructor(t){super(t,yN)}getParser(){return this.parser}}class jm extends R{constructor(t){super(t,vN)}getParser(){return this.parser}}class S4 extends R{constructor(t){super(t,CN)}getParser(){return this.parser}}class R4 extends R{constructor(t){super(t,MN)}getParser(){return this.parser}}class RR extends R{constructor(t){super(t,xN)}getParser(){return this.parser}}class AR extends R{constructor(t){super(t,PN)}getParser(){return this.parser}}class A4 extends R{constructor(t){super(t,bN)}getParser(){return this.parser}}class O4 extends R{constructor(t){super(t,NN)}getParser(){return this.parser}}class y4 extends R{constructor(t){super(t,UN)}getParser(){return this.parser}}class v4 extends R{constructor(t){super(t,rd)}getParser(){return this.parser}}class C4 extends R{constructor(t){super(t,DN)}getParser(){return this.parser}}class M4 extends R{constructor(t){super(t,LN)}getParser(){return this.parser}}class OR extends R{constructor(t){super(t,FN)}getParser(){return this.parser}}class x4 extends R{constructor(t){super(t,nd)}getParser(){return this.parser}}class yR extends R{constructor(t){super(t,wN)}getParser(){return this.parser}}class Km extends R{constructor(t){super(t,GN)}getParser(){return this.parser}}class vR extends R{constructor(t){super(t,BN)}getParser(){return this.parser}}class P4 extends R{constructor(t){super(t,kN)}getParser(){return this.parser}}class b4 extends R{constructor(t){super(t,zN)}getParser(){return this.parser}}class N4 extends R{constructor(t){super(t,ad)}getParser(){return this.parser}}const Ks=class Ks{constructor(t){this._type=t.readInt(),this._userId=t.readInt(),this._userName=t.readString(),this._figure=t.readString(),this._memberSince=t.readString()}get userId(){return this._userId}get userName(){return this._userName}get admin(){return this._type==Ks.TYPE_ADMIN}get owner(){return this._type==Ks.TYPE_OWNER}get pending(){return this._type==Ks.TYPE_PENDING}get member(){return this._type!=Ks.TYPE_MEMBER}get blocked(){return this._type==Ks.TYPE_BLOCKED}get figure(){return this._figure}get memberSince(){return this._memberSince}};Ks.TYPE_OWNER=0,Ks.TYPE_ADMIN=1,Ks.TYPE_PENDING=2,Ks.TYPE_MEMBER=3,Ks.TYPE_BLOCKED=4;let Rf=Ks;class CR extends R{constructor(t){super(t,cL)}getParser(){return this.parser}}class MR extends R{constructor(t){super(t,_L)}getParser(){return this.parser}}class xR extends R{constructor(t){super(t,dL)}getParser(){return this.parser}}class U4 extends R{constructor(t){super(t,pL)}getParser(){return this.parser}}class D4 extends R{constructor(t){super(t,mL)}getParser(){return this.parser}}class L4 extends R{constructor(t){super(t,EL)}getParser(){return this.parser}}class F4 extends R{constructor(t){super(t,IG)}getParser(){return this.parser}}const T=class T{};T.CLICK_FURNI=6002,T.ACHIEVEMENT_LIST=219,T.AUTHENTICATION=-1,T.BOT_CONFIGURATION=1986,T.BOT_PICKUP=3323,T.BOT_PLACE=1592,T.BOT_SKILL_SAVE=2624,T.GET_CLUB_OFFERS=3285,T.GET_CLUB_GIFT_INFO=487,T.GET_CATALOG_INDEX=1195,T.GET_CATALOG_PAGE=412,T.CATALOG_PURCHASE=3492,T.CATALOG_PURCHASE_GIFT=1411,T.GET_PRODUCT_OFFER=2594,T.CLIENT_LATENCY=295,T.CLIENT_LATENCY_MEASURE=96,T.CLIENT_POLICY=26979,T.CLIENT_PONG=2596,T.CLIENT_TOOLBAR_TOGGLE=2313,T.CLIENT_VARIABLES=1053,T.GET_CURRENT_TIMING_CODE=2912,T.DESKTOP_NEWS=1827,T.DESKTOP_VIEW=105,T.GET_BUNDLE_DISCOUNT_RULESET=223,T.EVENT_TRACKER=3457,T.FIND_NEW_FRIENDS=516,T.FURNITURE_ALIASES=3898,T.FURNITURE_FLOOR_UPDATE=248,T.FURNITURE_MULTISTATE=99,T.FURNITURE_PICKUP=3456,T.FURNITURE_PLACE=1258,T.FURNITURE_POSTIT_PLACE=2248,T.FURNITURE_POSTIT_SAVE_STICKY_POLE=3283,T.FURNITURE_RANDOMSTATE=3617,T.FURNITURE_WALL_MULTISTATE=210,T.FURNITURE_WALL_UPDATE=168,T.GAMES_INIT=2914,T.GAMES_LIST=741,T.ACCEPTGAMEINVITE=3802,T.GAMEUNLOADEDMESSAGE=3207,T.GETGAMEACHIEVEMENTSMESSAGE=2399,T.GETGAMESTATUSMESSAGE=3171,T.GETUSERGAMEACHIEVEMENTSMESSAGE=389,T.JOINQUEUEMESSAGE=1458,T.LEAVEQUEUEMESSAGE=2384,T.RESETRESOLUTIONACHIEVEMENTMESSAGE=3144,T.GETWEEKLYGAMEREWARDWINNERS=1054,T.GAME2GETACCOUNTGAMESTATUSMESSAGE=11,T.GAME2CHECKGAMEDIRECTORYSTATUSMESSAGE=3259,T.GAME2EXITGAMEMESSAGE=1445,T.GAME2GAMECHATMESSAGE=2502,T.GAME2LOADSTAGEREADYMESSAGE=2415,T.GAME2PLAYAGAINMESSAGE=3196,T.GAME2REQUESTFULLSTATUSUPDATEMESSAGE=1598,T.GAME2GETWEEKLYFRIENDSLEADERBOARD=1232,T.GAME2GETWEEKLYLEADERBOARD=2565,T.GET_GIFT_WRAPPING_CONFIG=418,T.GROUP_ADMIN_ADD=2894,T.GROUP_ADMIN_REMOVE=722,T.GROUP_CREATE_OPTIONS=798,T.GROUP_FAVORITE=3549,T.GET_FORUM_STATS=3149,T.GET_FORUM_THREADS=873,T.GET_FORUMS_LIST=436,T.GET_FORUM_MESSAGES=232,T.GET_FORUM_THREAD=3900,T.GET_UNREAD_FORUMS_COUNT=2908,T.FORUM_MODERATE_MESSAGE=286,T.FORUM_MODERATE_THREAD=1397,T.FORUM_POST_MESSAGE=3529,T.UPDATE_FORUM_READ_MARKER=1855,T.UPDATE_FORUM_SETTINGS=2214,T.FORUM_UPDATE_THREAD=3045,T.GROUP_INFO=2991,T.GROUP_DELETE=1134,T.GROUP_MEMBER_REMOVE_CONFIRM=3593,T.GROUP_MEMBER_REMOVE=593,T.GROUP_MEMBERS=312,T.GROUP_MEMBERSHIPS=367,T.GROUP_REQUEST=998,T.GROUP_REQUEST_ACCEPT=3386,T.GROUP_REQUEST_DECLINE=1894,T.GROUP_SETTINGS=1004,T.GROUP_PARTS=813,T.GROUP_BUY=230,T.GROUP_SAVE_INFORMATION=3137,T.GROUP_SAVE_BADGE=1991,T.GROUP_SAVE_COLORS=1764,T.GROUP_SAVE_PREFERENCES=3435,T.GROUP_BADGES=21,T.GROUP_UNBLOCK_MEMBER=2864,T.GET_BADGE_POINTS_LIMITS=1371,T.REQUESTABADGE=3077,T.GETISBADGEREQUESTFULFILLED=1364,T.ITEM_CLOTHING_REDEEM=3374,T.ITEM_COLOR_WHEEL_CLICK=2144,T.ITEM_DICE_CLICK=1990,T.ITEM_DICE_CLOSE=1533,T.ITEM_DIMMER_SAVE=1648,T.ITEM_DIMMER_SETTINGS=2813,T.ITEM_DIMMER_TOGGLE=2296,T.ITEM_EXCHANGE_REDEEM=3115,T.ITEM_PAINT=711,T.SET_OBJECT_DATA=3608,T.ITEM_STACK_HELPER=3839,T.ITEM_WALL_CLICK=210,T.ITEM_WALL_UPDATE=168,T.MARKETPLACE_CONFIG=2597,T.ACCEPT_FRIEND=137,T.MESSENGER_CHAT=3567,T.DECLINE_FRIEND=2890,T.FOLLOW_FRIEND=3997,T.MESSENGER_FRIENDS=1523,T.MESSENGER_INIT=2781,T.MESSENGER_RELATIONSHIPS=2138,T.SET_RELATIONSHIP_STATUS=3768,T.REMOVE_FRIEND=1689,T.REQUEST_FRIEND=3157,T.GET_FRIEND_REQUESTS=2448,T.SEND_ROOM_INVITE=1276,T.HABBO_SEARCH=1210,T.FRIEND_LIST_UPDATE=1419,T.MOD_TOOL_USER_INFO=3295,T.GET_USER_FLAT_CATS=3027,T.NAVIGATOR_INIT=2110,T.NAVIGATOR_SEARCH=249,T.NAVIGATOR_SEARCH_CLOSE=1834,T.NAVIGATOR_SEARCH_OPEN=637,T.NAVIGATOR_SEARCH_SAVE=2226,T.GET_USER_EVENT_CATS=1782,T.NAVIGATOR_SETTINGS_SAVE=3159,T.NAVIGATOR_CATEGORY_LIST_MODE=1202,T.NAVIGATOR_DELETE_SAVED_SEARCH=1954,T.PET_INFO=2934,T.PET_PICKUP=1581,T.PET_PLACE=2647,T.PET_RESPECT=3202,T.PET_RIDE=1036,T.PET_MOVE=3449,T.PET_OPEN_PACKAGE=3698,T.PET_SELECTED=549,T.PETS_BREED=1638,T.PET_CANCEL_BREEDING=2713,T.PET_CONFIRM_BREEDING=3382,T.GET_PET_TRAINING_PANEL=2161,T.RECYCLER_PRIZES=398,T.RECYCLER_STATUS=1342,T.RECYCLER_ITEMS=2771,T.RELEASE_VERSION=4e3,T.CALL_FOR_HELP=1691,T.ROOM_AMBASSADOR_ALERT=2996,T.ROOM_BAN_GIVE=1477,T.ROOM_BAN_LIST=2267,T.ROOM_BAN_REMOVE=992,T.ROOM_CREATE=2752,T.ROOM_DELETE=532,T.ROOM_DOORBELL=1644,T.ROOM_ENTER=2312,T.ROOM_FAVORITE=3817,T.ROOM_FAVORITE_REMOVE=309,T.CAN_CREATE_ROOM=2128,T.CANCEL_ROOM_EVENT=2725,T.EDIT_ROOM_EVENT=3991,T.COMPETITION_ROOM_SEARCH=433,T.FORWARD_TO_RANDOM_PROMOTED_ROOM=10,T.FORWARD_TO_SOME_ROOM=1703,T.GET_CATEGORIES_WITH_USER_COUNT=3782,T.GET_GUEST_ROOM=2230,T.GET_OFFICIAL_ROOMS=1229,T.GET_POPULAR_ROOM_TAGS=826,T.GUILD_BASE_SEARCH=2930,T.MY_FAVOURITE_ROOMS_SEARCH=2578,T.MY_FREQUENT_ROOM_HISTORY_SEARCH=1002,T.MY_FRIENDS_ROOM_SEARCH=2266,T.MY_GUILD_BASES_SEARCH=39,T.MY_RECOMMENDED_ROOMS=2537,T.MY_ROOM_HISTORY_SEARCH=2264,T.MY_ROOM_RIGHTS_SEARCH=272,T.MY_ROOMS_SEARCH=2277,T.POPULAR_ROOMS_SEARCH=2758,T.ROOM_AD_EVENT_TAB_CLICKED=2412,T.ROOM_AD_EVENT_TAB_VIEWED=2668,T.ROOM_AD_SEARCH=2809,T.ROOM_TEXT_SEARCH=3943,T.ROOMS_WHERE_MY_FRIENDS_ARE=1786,T.ROOMS_WITH_HIGHEST_SCORE_SEARCH=2939,T.SET_ROOM_SESSION_TAGS=3305,T.UPDATE_ROOM_THUMBNAIL=2468,T.ROOM_KICK=1320,T.ROOM_LIKE=3582,T.ROOM_MODEL=2300,T.GET_OCCUPIED_TILES=1687,T.GET_ROOM_ENTRY_TILE=3559,T.ROOM_MODEL_SAVE=875,T.ROOM_MUTE=3637,T.ROOM_MUTE_USER=3485,T.ROOM_RIGHTS_GIVE=808,T.ROOM_RIGHTS_LIST=3385,T.ROOM_RIGHTS_REMOVE=2064,T.ROOM_RIGHTS_REMOVE_ALL=2683,T.ROOM_RIGHTS_REMOVE_OWN=3182,T.ROOM_SETTINGS=3129,T.ROOM_SETTINGS_SAVE=1969,T.ROOM_SETTINGS_UPDATE_ROOM_CATEGORY_AND_TRADE=1265,T.ROOM_STAFF_PICK=1918,T.ROOM_FILTER_WORDS=1911,T.ROOM_FILTER_WORDS_MODIFY=3001,T.MYSTERYBOXWAITINGCANCELEDMESSAGE=2012,T.MYSTERYBOX_OPEN_TROPHY=3074,T.SECURITY_MACHINE=2490,T.SECURITY_TICKET=2419,T.TRADE=1481,T.TRADE_ACCEPT=3863,T.TRADE_CANCEL=2341,T.TRADE_CLOSE=2551,T.TRADE_CONFIRM=2760,T.TRADE_ITEM=3107,T.TRADE_ITEM_REMOVE=3845,T.TRADE_ITEMS=1263,T.TRADE_UNACCEPT=1444,T.UNIT_ACTION=2456,T.UNIT_CHAT=1314,T.UNIT_CHAT_SHOUT=2085,T.UNIT_CHAT_WHISPER=1543,T.UNIT_DANCE=2080,T.UNIT_DROP_HAND_ITEM=2814,T.UNIT_GIVE_HANDITEM=2941,T.UNIT_LOOK=3301,T.UNIT_POSTURE=2235,T.UNIT_SIGN=1975,T.UNIT_TYPING=1597,T.UNIT_TYPING_STOP=1474,T.UNIT_WALK=3320,T.USER_BADGES=2769,T.USER_BADGES_CURRENT=2091,T.USER_BADGES_CURRENT_UPDATE=644,T.USER_BOTS=3848,T.USER_CURRENCY=273,T.USER_EFFECT_ACTIVATE=2959,T.USER_EFFECT_ENABLE=1752,T.USER_FIGURE=2730,T.USER_FURNITURE=3150,T.REQUESTFURNIINVENTORYWHENNOTINROOM=3500,T.USER_HOME_ROOM=1740,T.USER_INFO=357,T.USER_MOTTO=2228,T.USER_IGNORED=3878,T.USER_PETS=3095,T.USER_PROFILE=3265,T.USER_PROFILE_BY_NAME=2249,T.USER_RESPECT=2694,T.GET_SOUND_SETTINGS=2388,T.USER_SETTINGS_CAMERA=1461,T.USER_SETTINGS_CHAT_STYLE=1030,T.USER_SETTINGS_INVITES=1086,T.USER_SETTINGS_OLD_CHAT=1262,T.USER_SETTINGS_VOLUME=1367,T.USER_SUBSCRIPTION=3166,T.GET_WARDROBE=2742,T.SAVE_WARDROBE_OUTFIT=800,T.USER_TAGS=17,T.PEER_USERS_CLASSIFICATION=1160,T.USER_CLASSIFICATION=2285,T.VISIT_USER=2970,T.WIRED_ACTION_SAVE=2281,T.WIRED_APPLY_SNAPSHOT=3373,T.WIRED_CONDITION_SAVE=3203,T.WIRED_OPEN=768,T.WIRED_TRIGGER_SAVE=1520,T.GET_ITEM_DATA=3964,T.ONE_WAY_DOOR_CLICK=2765,T.REMOVE_WALL_ITEM=3336,T.SET_ITEM_DATA=3666,T.CATALOG_REDEEM_VOUCHER=339,T.ROOM_TONER_APPLY=2880,T.FRIEND_FURNI_CONFIRM_LOCK=3775,T.MANNEQUIN_SAVE_NAME=2850,T.MANNEQUIN_SAVE_LOOK=2209,T.PRESENT_OPEN_PRESENT=3558,T.CATALOG_SELECT_VIP_GIFT=2276,T.USER_IGNORE_ID=3314,T.USER_IGNORE=1117,T.USER_UNIGNORE=2061,T.MODTOOL_REQUEST_ROOM_INFO=707,T.MODTOOL_CHANGE_ROOM_SETTINGS=3260,T.MODTOOL_REQUEST_USER_CHATLOG=1391,T.MODTOOL_REQUEST_ROOM_CHATLOG=2587,T.MODTOOL_SANCTION_ALERT=229,T.MODTOOL_SANCTION_BAN=2766,T.MODTOOL_SANCTION_KICK=2582,T.MODTOOL_SANCTION_TRADELOCK=3742,T.MODTOOL_ALERTEVENT=1840,T.MODTOOL_SANCTION_MUTE=1945,T.MODTOOL_REQUEST_USER_ROOMS=3526,T.MODTOOL_ROOM_ALERT=3842,T.MODTOOL_PREFERENCES=31,T.CLOSE_ISSUE_DEFAULT_ACTION=2717,T.CLOSE_ISSUES=2067,T.DEFAULT_SANCTION=1681,T.GET_CFH_CHATLOG=211,T.MODTOOL_SANCTION=1392,T.PICK_ISSUES=15,T.RELEASE_ISSUES=1572,T.CONVERT_GLOBAL_ROOM_ID=314,T.REQUEST_SELL_ITEM=848,T.REQUEST_MARKETPLACE_ITEM_STATS=3288,T.MARKETPLACE_SELL_ITEM=3447,T.MARKETPLACE_REQUEST_OWN_ITEMS=2105,T.MARKETPLACE_TAKE_BACK_ITEM=434,T.MARKETPLACE_REDEEM_CREDITS=2650,T.MARKETPLACE_REQUEST_OFFERS=2407,T.MARKETPLACE_BUY_OFFER=1603,T.MARKETPLACE_BUY_TOKENS=1866,T.CATALOG_REQUESET_PET_BREEDS=1756,T.APPROVE_NAME=2109,T.UNIT_GIVE_HANDITEM_PET=2768,T.PET_MOUNT=1036,T.PET_SUPPLEMENT=749,T.FURNITURE_GROUP_INFO=2651,T.ACHIEVEMENT_RESOLUTION_OPEN=359,T.USE_PET_PRODUCT=1328,T.REMOVE_PET_SADDLE=186,T.TOGGLE_PET_RIDING=1472,T.TOGGLE_PET_BREEDING=3379,T.UNSEEN_RESET_CATEGORY=3493,T.UNSEEN_RESET_ITEMS=2343,T.COMMUNITY_GOAL_VOTE_COMPOSER=3536,T.GET_PROMO_ARTICLES=1827,T.ACCEPT_QUEST=3604,T.ACTIVATE_QUEST=793,T.CANCEL_QUEST=3133,T.FRIEND_REQUEST_QUEST_COMPLETE=1148,T.GET_COMMUNITY_GOAL_EARNED_PRIZES=2688,T.GET_COMMUNITY_GOAL_HALL_OF_FAME=2167,T.GET_COMMUNITY_GOAL_PROGRESS=1145,T.GET_CONCURRENT_USERS_GOAL_PROGRESS=1343,T.GET_CONCURRENT_USERS_REWARD=3872,T.GET_DAILY_QUEST=2486,T.GET_QUESTS=3333,T.GET_SEASONAL_QUESTS_ONLY=1190,T.OPEN_QUEST_TRACKER=2750,T.REDEEM_COMMUNITY_GOAL_PRIZE=90,T.REJECT_QUEST=2397,T.START_CAMPAIGN=1697,T.GET_BONUS_RARE_INFO=957,T.CRAFT=3591,T.CRAFT_SECRET=1251,T.GET_CRAFTABLE_PRODUCTS=633,T.GET_CRAFTING_RECIPE=1173,T.GET_CRAFTING_RECIPES_AVAILABLE=3086,T.PHOTO_COMPETITION=3959,T.PUBLISH_PHOTO=2068,T.PURCHASE_PHOTO=2408,T.RENDER_ROOM=3226,T.RENDER_ROOM_THUMBNAIL=1982,T.REQUEST_CAMERA_CONFIGURATION=796,T.ADD_JUKEBOX_DISK=753,T.GET_JUKEBOX_PLAYLIST=1435,T.GET_NOW_PLAYING=1325,T.GET_OFFICIAL_SONG_ID=3189,T.GET_SONG_INFO=3082,T.GET_SOUND_MACHINE_PLAYLIST=3498,T.GET_USER_SONG_DISKS=2304,T.REMOVE_JUKEBOX_DISK=3050,T.INTERSTITIAL_SHOWN=1109,T.GET_INTERSTITIAL=2519,T.CHANGE_USERNAME=2977,T.CHECK_USERNAME=3950,T.OPEN_CAMPAIGN_CALENDAR_DOOR_STAFF=3889,T.OPEN_CAMPAIGN_CALENDAR_DOOR=2257,T.BUILDERS_CLUB_PLACE_ROOM_ITEM=1051,T.BUILDERS_CLUB_PLACE_WALL_ITEM=462,T.BUILDERS_CLUB_QUERY_FURNI_COUNT=2529,T.GET_CATALOG_PAGE_EXPIRATION=742,T.GET_CATALOG_PAGE_WITH_EARLIEST_EXP=3135,T.GET_DIRECT_CLUB_BUY_AVAILABLE=801,T.GET_HABBO_BASIC_MEMBERSHIP_EXTEND_OFFER=603,T.GET_HABBO_CLUB_EXTEND_OFFER=2462,T.GET_IS_OFFER_GIFTABLE=1347,T.GET_LIMITED_OFFER_APPEARING_NEXT=410,T.GET_NEXT_TARGETED_OFFER=596,T.GET_ROOM_AD_PURCHASE_INFO=1075,T.GET_SEASONAL_CALENDAR_DAILY_OFFER=3257,T.GET_TARGETED_OFFER=2487,T.MARK_CATALOG_NEW_ADDITIONS_PAGE_OPENED=2150,T.PURCHASE_BASIC_MEMBERSHIP_EXTENSION=2735,T.PURCHASE_ROOM_AD=777,T.PURCHASE_TARGETED_OFFER=1826,T.PURCHASE_VIP_MEMBERSHIP_EXTENSION=3407,T.ROOM_AD_PURCHASE_INITIATED=2283,T.SET_TARGETTED_OFFER_STATE=2041,T.SHOP_TARGETED_OFFER_VIEWED=3483,T.HELPER_TALENT_TRACK=196,T.TALENT_TRACK_GET_LEVEL=2127,T.FORWARD_TO_A_COMPETITION_ROOM=172,T.FORWARD_TO_A_SUBMITTABLE_ROOM=1450,T.FORWARD_TO_RANDOM_COMPETITION_ROOM=865,T.GET_IS_USER_PART_OF_COMPETITION=2077,T.GET_SECONDS_UNTIL=271,T.ROOM_COMPETITION_INIT=1334,T.SUBMIT_ROOM_TO_COMPETITION=2595,T.VOTE_FOR_ROOM=143,T.GET_GIFT=2436,T.RESET_PHONE_NUMBER_STATE=2741,T.SET_PHONE_NUMBER_VERIFICATION_STATUS=1379,T.TRY_PHONE_NUMBER=790,T.VERIFY_CODE=2721,T.CONTROL_YOUTUBE_DISPLAY_PLAYBACK=3005,T.GET_YOUTUBE_DISPLAY_STATUS=336,T.SET_YOUTUBE_DISPLAY_PLAYLIST=2069,T.GO_TO_FLAT=685,T.CHANGE_QUEUE=3093,T.CALL_FOR_HELP_FROM_FORUM_MESSAGE=1412,T.CALL_FOR_HELP_FROM_FORUM_THREAD=534,T.CALL_FOR_HELP_FROM_IM=2950,T.CALL_FOR_HELP_FROM_PHOTO=2492,T.CALL_FOR_HELP_FROM_SELFIE=2755,T.CHAT_REVIEW_GUIDE_DECIDES=3365,T.CHAT_REVIEW_GUIDE_DETACHED=2501,T.CHAT_REVIEW_GUIDE_VOTE=3961,T.CHAT_REVIEW_SESSION_CREATE=3060,T.DELETE_PENDING_CALLS_FOR_HELP=3605,T.GET_CFH_STATUS=2746,T.GET_FAQ_CATEGORY=3445,T.GET_FAQ_TEXT=1849,T.GET_GUIDE_REPORTING_STATUS=3786,T.GET_PENDING_CALLS_FOR_HELP=3267,T.GET_QUIZ_QUESTIONS=1296,T.GUIDE_SESSION_CREATE=3338,T.GUIDE_SESSION_FEEDBACK=477,T.GUIDE_SESSION_GET_REQUESTER_ROOM=1052,T.GUIDE_SESSION_GUIDE_DECIDES=1424,T.GUIDE_SESSION_INVITE_REQUESTER=234,T.GUIDE_SESSION_IS_TYPING=519,T.GUIDE_SESSION_MESSAGE=3899,T.GUIDE_SESSION_ON_DUTY_UPDATE=1922,T.GUIDE_SESSION_REPORT=3969,T.GUIDE_SESSION_REQUESTER_CANCELS=291,T.GUIDE_SESSION_RESOLVED=887,T.POST_QUIZ_ANSWERS=3720,T.SEARCH_FAQS=2031,T.POLL_ANSWER=3505,T.POLL_REJECT=1773,T.POLL_START=109,T.POLL_VOTE_COUNTER=6200,T.DISCONNECT=2445,T.SCR_GET_KICKBACK_INFO=869,T.COMPOST_PLANT=3835,T.HARVEST_PET=1521,T.SET_CLOTHING_CHANGE_DATA=924,T.GROUP_UNFAVORITE=1820,T.NEW_USER_EXPERIENCE_GET_GIFTS=1822,T.NEW_USER_EXPERIENCE_SCRIPT_PROCEED=1299,T.HANDSHAKE_INIT_DIFFIE=3110,T.HANDSHAKE_COMPLETE_DIFFIE=773,T.WELCOME_OPEN_GIFT=2638,T.WELCOME_GIFT_CHANGE_EMAIL=66,T.EMAIL_GET_STATUS=2557,T.EMAIL_CHANGE=3965,T.APPROVE_ALL_MEMBERSHIP_REQUESTS=882,T.RENTABLE_SPACE_CANCEL_RENT=1667,T.RENTABLE_SPACE_RENT=2946,T.RENTABLE_SPACE_STATUS=872,T.TRACKING_PERFORMANCE_LOG=3230,T.TRACKING_LAG_WARNING_REPORT=3847,T.ROOM_DIRECTORY_ROOM_NETWORK_OPEN_CONNECTION=3736,T.RENTABLE_EXTEND_RENT_OR_BUYOUT_STRIP_ITEM=2115,T.RENTABLE_EXTEND_RENT_OR_BUYOUT_FURNI=1071,T.RENTABLE_GET_RENT_OR_BUYOUT_OFFER=2518;let S=T;class w4{constructor(){this._data=[]}dispose(){}getMessageArray(){return this._data}}class G4{constructor(){this._data=[]}dispose(){}getMessageArray(){return this._data}}class B4{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class k4{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class z4{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class V4{constructor(t=0){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class H4{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class Y4{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class W4{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class j4{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class Lh{constructor(t="",e="",s="",r=-1,n=-1){this._data=[]}getMessageArray(){return this._data}dispose(){this._data=[]}async assignBitmap(t){const e=await ue.generateImageUrl(t);if(!e)return;const s=e.split(",")[1],r=Uint8Array.from(atob(s),n=>n.charCodeAt(0));this._data.push(r.byteLength,r.buffer)}assignBase64(t){const e=t.split(",")[1],s=Uint8Array.from(atob(e),r=>r.charCodeAt(0));this._data.push(s.byteLength,s.buffer)}}class Af extends Lh{constructor(t="",e="",s="",r=-1,n=-1){super(t,e,s,r,n)}}class K4{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class X4{constructor(t,e){this._data=[t,e]}dispose(){this._data=null}getMessageArray(){return this._data}}class q4{constructor(t,e){this._data=[t,e]}dispose(){this._data=null}getMessageArray(){return this._data}}class $4{constructor(t,e,s,r,n,a){this._data=[t,e,s,r,n,a]}dispose(){this._data=null}getMessageArray(){return this._data}}class Q4{constructor(t,e,s,r){this._data=[t,e,s,r]}dispose(){this._data=null}getMessageArray(){return this._data}}class Z4{constructor(){this._data=[]}dispose(){this._data=null}getMessageArray(){return this._data}}class J4{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class t5{constructor(){this._data=[]}dispose(){this._data=null}getMessageArray(){return this._data}}class e5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class s5{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class i5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class r5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class n5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){this._data=null}}class a5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){this._data=null}}class o5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){this._data=null}}class u5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class l5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){this._data=null}}class h5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){this._data=null}}class c5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){this._data=null}}class _5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){this._data=null}}class d5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){this._data=null}}class f5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class g5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){this._data=null}}class p5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){this._data=null}}class m5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class E5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class T5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class I5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){this._data=null}}class S5{constructor(t,e,s,r,n,a,o,u,l){this._data=[t,e,s,r,n,a,o,u,l]}getMessageArray(){return this._data}dispose(){}}class R5{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class A5{constructor(t,e,s,r,n,a,o){this._data=[t,e,s,r,n,a,o]}getMessageArray(){return this._data}dispose(){}}class O5{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class y5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class v5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class C5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class M5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class x5{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class P5{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class b5{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class N5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class U5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class D5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class L5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class F5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class w5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}const Lo=class Lo{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}};Lo.CONFIRM_LEVEL_NOT_ACCEPTED=0,Lo.CONFIRM_LEVEL_NOT_SUBMITTED=1,Lo.CONFIRM_LEVEL_NOT_CONFIRMED=2,Lo.CONFIRM_LEVEL_COMMIT=3;let Of=Lo;class G5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class B5{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class k5{constructor(t,e){this._data=[t,e.length].concat(e)}getMessageArray(){return this._data}dispose(){}}class z5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class V5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class H5{constructor(t,e){this._data=[t,e.length].concat(e)}getMessageArray(){return this._data}dispose(){}}class Y5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class W5{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class j5{constructor(...t){this._data=[t.length,...t]}getMessageArray(){return this._data}dispose(){}}class K5{constructor(t,...e){this._data=[t,e.length,...e]}getMessageArray(){return this._data}dispose(){}}class X5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class q5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class $5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class Q5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class Z5{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class J5{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class tH{constructor(...t){this._data=[t.length,...t]}getMessageArray(){return this._data}dispose(){}}class eH{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class sH{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class iH{constructor(t,e){this._data=[e.length,...e,t]}getMessageArray(){return this._data}dispose(){}}class rH{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class nH{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class aH{constructor(t=!0){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class oH{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class uH{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class lH{constructor(){this._data=[]}dispose(){this._data=null}getMessageArray(){return this._data}}class hH{constructor(){this._data=[]}dispose(){this._data=null}getMessageArray(){return this._data}}class cH{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class _H{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class dH{constructor(t,e){this._data=[t,e]}dispose(){this._data=null}getMessageArray(){return this._data}}class fH{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class gH{constructor(){this._data=[]}dispose(){this._data=null}getMessageArray(){return this._data}}class pH{constructor(){this._data=[]}dispose(){this._data=null}getMessageArray(){return this._data}}class mH{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class PR{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class EH{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class TH{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class IH{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class SH{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class RH{constructor(t,e,s,r,n,a){this._data=[t,e,s,r,n,a]}dispose(){this._data=null}getMessageArray(){return this._data}}class AH{constructor(t,e,s,r,n,a){this._data=[t,e,s,r,n,a]}dispose(){this._data=null}getMessageArray(){return this._data}}class OH{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class yH{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}const rO=class rO{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}};rO.NO_ISSUE_ID=-1;let yf=rO;class vH{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}const nO=class nO{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}};nO.NO_ISSUE_ID=-1;let vf=nO;class CH{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class MH{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class xH{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class PH{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class bH{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class NH{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class UH{constructor(t,e,s,r,n,a){this._data=[t,e,s,r,n,a.length,...a]}getMessageArray(){return this._data}dispose(){}}class DH{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class LH{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class FH{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class wH{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class GH{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class BH{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class kH{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class zH{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class VH{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class HH{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class YH{constructor(t,e){this._data=[t,e.length,...e]}getMessageArray(){return this._data}dispose(){}}class WH{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class jH{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class KH{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class XH{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class qH{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class $H{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class QH{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class ZH{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class JH{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class tY{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class eY{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class sY{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class iY{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class rY{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class nY{constructor(...t){this._data=[t.length],t.forEach(e=>{this._data.push(e.k),this._data.push(e._arg_2),this._data.push(e._arg_3)})}getMessageArray(){return this._data}dispose(){}}class Hrt{constructor(t,e,s){this.k=t,this._arg_2=e,this._arg_3=s}}class aY{constructor(t,e,s,r,n){this._data=[t,e,s,r,n]}getMessageArray(){return this._data}dispose(){}}class oY{constructor(t,e,s,r){this._data=[t,e,r,s]}getMessageArray(){return this._data}dispose(){}}class uY{constructor(t,e,s){if(this._type=t,e.length===s.length){this._data=[];for(let r=0;r<e.length;r++)this._data.push(e[r]),this._data.push(s[r])}}getMessageArray(){return this._data}dispose(){}}class bR{constructor(t,e,s,r){this._data=[`NITRO-${oh.RENDERER_VERSION.replaceAll(".","-")}`,"HTML5",o_.HTML5,a_.BROWSER]}getMessageArray(){return this._data}dispose(){}}class lY{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class hY{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class NR{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class cY{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class UR{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class DR{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class _Y{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class dY{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class fY{constructor(t,e,s,r,n){this._data=[t,e,s,r,n]}getMessageArray(){return this._data}dispose(){}}class gY{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class pY{constructor(t,e,s,r){this._data=[t,e,s,r.length/2,...r]}getMessageArray(){return this._data}dispose(){}}class mY{constructor(t,e,s,r,n){this._data=[t,e,s,r,n]}getMessageArray(){return this._data}dispose(){}}class EY{constructor(t,e,s,r,n){this._data=[t,e,s,r,n]}getMessageArray(){return this._data}dispose(){}}class TY{constructor(t,e,s,r,n){this._data=[t,e,s,r,n.length/2,...n]}getMessageArray(){return this._data}dispose(){}}class IY{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class SY{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class RY{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class AY{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class OY{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class yY{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class vY{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class CY{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class MY{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class xY{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class PY{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class bY{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class NY{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class UY{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class DY{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class LY{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class FY{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class wY{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class GY{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class BY{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class kY{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class zY{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class VY{constructor(t,e){this._data=[t,e.length,...e]}getMessageArray(){return this._data}dispose(){}}class HY{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class YY{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class WY{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class jY{constructor(){this._data=[]}dispose(){this._data=null}getMessageArray(){return this._data}}class KY{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class XY{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class qY{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class $Y{constructor(){this._badges=[]}getMessageArray(){const t=[];for(let e=1;e<=this._badges.length;e++)t.push(e),t.push(this._badges[e-1]);return t}dispose(){}addActivatedBadge(t){this._badges.push(t)}}class vI{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class QY{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class ZY{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class JY{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class tW{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class CI{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class eW{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class sW{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class iW{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class rW{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class nW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class aW{constructor(...t){this._data=[t.length,...t]}getMessageArray(){return this._data}dispose(){}}class oW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class uW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class lW{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class hW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class cW{constructor(t,...e){this._data=[t,e.length,...e]}getMessageArray(){return this._data}dispose(){}}class _W{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class dW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class fW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){this._data=null}}class gW{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){this._data=null}}class pW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){this._data=null}}class mW{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class EW{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){this._data=null}}class TW{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){this._data=null}}class IW{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){this._data=null}}class SW{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){this._data=null}}class RW{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class AW{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){this._data=null}}class OW{constructor(t,e,s){this._data=[t,e.length,...e,s]}getMessageArray(){return this._data}dispose(){}}const Ol=class Ol{constructor(t,e){this._data=[e,t.length,...t]}getMessageArray(){return this._data}dispose(){}};Ol.RESOLUTION_USELESS=1,Ol.RESOLUTION_ABUSIVE=2,Ol.RESOLUTION_RESOLVED=3;let Cf=Ol;const jp=class jp{constructor(t,e,s,r,n,a=-1){this._data=[t,e,s,r,n],a!=jp.NO_ISSUE_ID&&this._data.push(a)}getMessageArray(){return this._data}dispose(){}};jp.NO_ISSUE_ID=-1;let rr=jp;class yW{constructor(t,e,s,r=-1){this._data=[t,e,s],r!=rr.NO_ISSUE_ID&&this._data.push(r)}getMessageArray(){return this._data}dispose(){}}class vW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class CW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class MW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class xW{constructor(t,e=0){this._data=[e,t]}getMessageArray(){return this._data}dispose(){}}class PW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class bW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class NW{constructor(t,e,s,r=-1){this._data=[t,e,s],r!=rr.NO_ISSUE_ID&&this._data.push(r)}getMessageArray(){return this._data}dispose(){}}class UW{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}const Fo=class Fo{constructor(t,e,s){this._data=[],this._data.push(t),this._data.push(e),this._data.push(s)}getMessageArray(){return this._data}dispose(){}};Fo.ACTION_ALERT=0,Fo.ACTION_KICK=1,Fo.ACTION_MESSAGE=3,Fo.ACTION_MESSAGE_AND_SOFT_KICK=4;let Mf=Fo;class DW{constructor(t,e,s,r=-1){this._data=[t,e,s],r!=rr.NO_ISSUE_ID&&this._data.push(r)}getMessageArray(){return this._data}dispose(){}}class LW{constructor(t,e,s,r=-1){this._data=[],this._data.push(t),this._data.push(e),this._data.push(""),this._data.push(""),this._data.push(s),r!=rr.NO_ISSUE_ID&&this._data.push(r)}getMessageArray(){return this._data}dispose(){}}class FW{constructor(t,e,s,r=-1){this._data=[t,e,s],r!=rr.NO_ISSUE_ID&&this._data.push(r)}getMessageArray(){return this._data}dispose(){}}class wW{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class GW{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class BW{constructor(t,e,s,r,n=-1){this._data=[t,e,s,r],n!=rr.NO_ISSUE_ID&&this._data.push(n)}getMessageArray(){return this._data}dispose(){}}class kW{constructor(t,e,s,r){this._data=[t.length,...t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class zW{constructor(t){this._data=[t.length,...t]}getMessageArray(){return this._data}dispose(){}}class VW{constructor(t){this._data=[t]}dispose(){this._data=null}getMessageArray(){return this._data}}class HW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class YW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class WW{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class jW{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class KW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class XW{constructor(t,e,s,r,n,a){this._data=[t,e,s,r,n,a]}getMessageArray(){return this._data}dispose(){}}class qW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class $W{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class QW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class ZW{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class JW{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class tj{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class ej{constructor(t,e,s){this._data=[t,e?1:0,s?1:0]}getMessageArray(){return this._data}dispose(){}}class sj{constructor(t=0){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class ij{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class rj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class nj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class aj{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class oj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class uj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class lj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class hj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class cj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class _j{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class dj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class fj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class gj{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class pj{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class mj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class Ej{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class Tj{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class Ij{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class Sj{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class Rj{constructor(t,e,s,r,n,a){this._data=[t,e,s,r,n,a]}getMessageArray(){return this._data}dispose(){}}class Aj{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class Oj{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class yj{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class vj{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class Cj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class Mj{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class xj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class Pj{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class bj{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class Nj{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class Uj{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class Dj{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class Lj{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class Fj{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class wj{constructor(...t){this._data=[t.length*3],t.forEach(e=>{this._data.push(e.dayIndex),this._data.push(e.stepIndex),this._data.push(e.giftIndex)})}dispose(){this._data=null}getMessageArray(){return this._data}}class Yrt{constructor(t,e,s){this._dayIndex=t,this._stepIndex=e,this._giftIndex=s}get dayIndex(){return this._dayIndex}get stepIndex(){return this._stepIndex}get giftIndex(){return this._giftIndex}}class LR{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class FR{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class xf{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class wR{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class Gj{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class GR{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class BR{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class kR{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class zR{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class VR{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class HR{constructor(t,e,s){this._data=[t,e,s.length,...s]}getMessageArray(){return this._data}dispose(){}}class YR{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class WR{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class jR{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class Bj{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class kj{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class zj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class Vj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class Hj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class Yj{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class Wj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class jj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class Kj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class Xj{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class qj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class $j{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class Qj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class Zj{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class Jj{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class t6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class e6{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class s6{constructor(...t){this._data=[t.length],t.forEach(e=>{this._data.push(e.itemId)})}getMessageArray(){return this._data}dispose(){}}class Wrt{constructor(t){this.itemId=t}}class KR{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class XR{constructor(t,e=null){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class i6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class qR{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class $R{constructor(t,e=0,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class r6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class QR{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class ZR{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class JR{constructor(t,e,s=0){this._data=[t,s,e]}getMessageArray(){return this._data}dispose(){}}class tA{constructor(...t){this._data=[t.length,...t]}getMessageArray(){return this._data}dispose(){}}class n6{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class a6{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class o6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class u6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class l6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class h6{constructor(t,e,s,r,n,a,o,u,l,c,h,_,d,f,p,g,m,O,y,C,P,L,N,F){this._data=[],this._data.push(t,e,s,r,n,a,o),this._data.push(l.length,...l),this._data.push(c,h,_,d,f,p,g,m,O,y,C,P,L,N,F)}getMessageArray(){return this._data}dispose(){}}class eA{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class sA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class c6{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class Pf{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class iA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class rA extends iA{constructor(t){super(t)}}class nA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class aA extends iA{constructor(t){super(t)}}class bf{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class oA{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class uA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class lA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class hA{constructor(t,e,s=""){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class cA{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class _A{constructor(t,e){this._data=[t,e.size*2];for(const[s,r]of e.entries())this._data.push(s,r)}getMessageArray(){return this._data}dispose(){}}class _6{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class dA{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class fA{constructor(t,e,s,r,n){this._data=[t,e,s,r,n]}getMessageArray(){return this._data}dispose(){}}class gA{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class d6{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class f6{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class Nf{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class pA{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class mA{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class EA{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class TA{constructor(t,e,s,r,n,a){this._itemId=t,this._category=e,this._wallLocation=s,this._x=r,this._y=n,this._direction=a}getMessageArray(){switch(this._category){case D.FLOOR:return[`${this._itemId} ${this._x} ${this._y} ${this._direction}`];case D.WALL:return[`${this._itemId} ${this._wallLocation} `];default:return[]}}dispose(){}}class g6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class IA{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class p6{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class SA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class RA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class AA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class m6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class Xm{constructor(t,e=0){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class OA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class yA{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class E6{constructor(t,e=-100){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class vA{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class T6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class I6{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class S6{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class CA{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class R6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class MA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class A6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class O6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class y6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class v6{constructor(t,e,s,r){this._data=[t,e,s,r]}getMessageArray(){return this._data}dispose(){}}class xA{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class C6{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class M6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class x6{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class P6{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class Uf{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class b6{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class N6{constructor(t,e,s,r,n,a,o){this._data=[t,e,s,r,n,a,o]}getMessageArray(){return this._data}dispose(){}}class U6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class PA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class bA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class qm{constructor(t,e=0){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class NA{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class D6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class UA{constructor(t,e,s){this._data=[t+" "+e,s]}getMessageArray(){return this._data}dispose(){}}class DA{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class LA{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class FA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class wA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class L6{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class F6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class w6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class GA{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class BA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class kA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class zA{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}const yl=class yl{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}};yl.STATE_START=0,yl.STATE_CANCEL=1,yl.STATE_ACCEPT=2;let Df=yl;class G6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class B6{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class k6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class z6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class V6{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class H6{constructor(t,e,s,r,n,a){this._data=[t,e.length,...e,s,r.length,...r,n,a]}getMessageArray(){return this._data}dispose(){}}class Y6{constructor(t,e,s,r,n){this._data=[t,e.length,...e,s,r.length,...r,n]}getMessageArray(){return this._data}dispose(){}}class W6{constructor(t,e,s,r,n){this._data=[t,e.length,...e,s,r.length,...r,n]}getMessageArray(){return this._data}dispose(){}}class jrt{get tradeMode(){return this._tradeMode}set tradeMode(t){this._tradeMode=t}get allowPets(){return this._allowPets}set allowPets(t){this._allowPets=t}get allowFoodConsume(){return this._allowFoodConsume}set allowFoodConsume(t){this._allowFoodConsume=t}get allowWalkThrough(){return this._allowWalkThrough}set allowWalkThrough(t){this._allowWalkThrough=t}get hideWalls(){return this._hideWalls}set hideWalls(t){this._hideWalls=t}get wallThickness(){return this._wallThickness}set wallThickness(t){this._wallThickness=t}get floorThickness(){return this._floorThickness}set floorThickness(t){this._floorThickness=t}get roomId(){return this._roomId}set roomId(t){this._roomId=t}get name(){return this._name}set name(t){this._name=t}get description(){return this._description}set description(t){this._description=t}get doorMode(){return this._doorMode}set doorMode(t){this._doorMode=t}get password(){return this._password}set password(t){this._password=t}get categoryId(){return this._categoryId}set categoryId(t){this._categoryId=t}get maximumVisitors(){return this._maximumVisitors}set maximumVisitors(t){this._maximumVisitors=t}get tags(){return this._tags}set tags(t){this._tags=t}get whoCanMute(){return this._whoCanMute}set whoCanMute(t){this._whoCanMute=t}get whoCanKick(){return this._whoCanKick}set whoCanKick(t){this._whoCanKick=t}get whoCanBan(){return this._whoCanBan}set whoCanBan(t){this._whoCanBan=t}get chatMode(){return this._chatMode}set chatMode(t){this._chatMode=t}get chatBubbleSize(){return this._chatBubbleSize}set chatBubbleSize(t){this._chatBubbleSize=t}get chatScrollUpFrequency(){return this._chatScrollUpFrequency}set chatScrollUpFrequency(t){this._chatScrollUpFrequency=t}get chatFullHearRange(){return this._chatFullHearRange}set chatFullHearRange(t){this._chatFullHearRange=t}get chatFloodSensitivity(){return this._chatFloodSensitivity}set chatFloodSensitivity(t){this._chatFloodSensitivity=t}get allowNavigatorDynCats(){return this._allowNavigatorDynCats}set allowNavigatorDynCats(t){this._allowNavigatorDynCats=t}}class j6{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class K6{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class VA{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class HA{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class X6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class YA{constructor(...t){this._data=[t.length].concat(t)}getMessageArray(){return this._data}dispose(){}}class q6{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class $6{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class WA{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class Q6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class Z6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class J6{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class t8{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class e8{constructor(t,e,s,r,n,a,o,u,l,c,h){this._data=[t,e,s,r,n,a,o,u,l,c,h]}getMessageArray(){return this._data}dispose(){}}class s8{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class i8{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class r8{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class n8{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class jA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class KA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class XA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class qA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class $A{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class QA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class a8{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class ZA{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class o8{constructor(t,e=!0){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class u8{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class l8{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class JA{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class h8{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class c8{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class _8{constructor(){this._data=[]}getMessageArray(){return this._data}dispose(){}}class d8{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class f8{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class g8{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class p8{constructor(t,e,s){this._data=[t,e,s]}getMessageArray(){return this._data}dispose(){}}class m8{constructor(t,e){this._data=[t,e]}getMessageArray(){return this._data}dispose(){}}class t0{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class E8{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class e0{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class s0{constructor(t){this._data=[t]}getMessageArray(){return this._data}dispose(){}}class T8{constructor(){this._events=new Map,this._composers=new Map,this.registerEvents(),this.registerComposers()}registerEvents(){this._events.set(A.INTERSTITIAL_MESSAGE,SG),this._events.set(A.ROOM_AD_ERROR,RG),this._events.set(A.AVAILABILITY_STATUS,xS),this._events.set(A.AVAILABILITY_TIME,AG),this._events.set(A.HOTEL_CLOSED_AND_OPENS,OG),this._events.set(A.HOTEL_CLOSES_AND_OPENS_AT,yG),this._events.set(A.HOTEL_WILL_CLOSE_MINUTES,vG),this._events.set(A.HOTEL_MAINTENANCE,CG),this._events.set(A.USER_CHANGE_NAME,hu),this._events.set(A.CHECK_USER_NAME,MG),this._events.set(A.USER_FIGURE,PS),this._events.set(A.USER_OUTFITS,xG),this._events.set(A.ADD_BOT_TO_INVENTORY,PG),this._events.set(A.USER_BOTS,bG),this._events.set(A.BOT_RECEIVED,NG),this._events.set(A.REMOVE_BOT_FROM_INVENTORY,UG),this._events.set(A.CFH_SANCTION,DG),this._events.set(A.CFH_TOPICS,LG),this._events.set(A.CFH_SANCTION_STATUS,FG),this._events.set(A.CAMERA_PUBLISH_STATUS,wG),this._events.set(A.CAMERA_PURCHASE_OK,GG),this._events.set(A.CAMERA_STORAGE_URL,kG),this._events.set(A.COMPETITION_STATUS,zG),this._events.set(A.INIT_CAMERA,VG),this._events.set(A.THUMBNAIL_STATUS,HG),this._events.set(A.CAMERA_SNAPSHOT,BG),this._events.set(A.CAMPAIGN_CALENDAR_DATA,YG),this._events.set(A.CAMPAIGN_CALENDAR_DOOR_OPENED,WG),this._events.set(A.BONUS_RARE_INFO,jG),this._events.set(A.BUILDERS_CLUB_FURNI_COUNT,KG),this._events.set(A.BUILDERS_CLUB_SUBSCRIPTION,XG),this._events.set(A.BUNDLE_DISCOUNT_RULESET,qG),this._events.set(A.CATALOG_PAGE_EXPIRATION,$G),this._events.set(A.CATALOG_PAGE,QG),this._events.set(A.CATALOG_PAGE_LIST,ZG),this._events.set(A.CATALOG_EARLIEST_EXPIRY,JG),this._events.set(A.CATALOG_PUBLISHED,tB),this._events.set(A.CLUB_GIFT_INFO,eB),this._events.set(A.CLUB_GIFT_SELECTED,sB),this._events.set(A.DIRECT_SMS_CLUB_BUY,iB),this._events.set(A.GIFT_RECEIVER_NOT_FOUND,nB),this._events.set(A.GIFT_WRAPPER_CONFIG,aB),this._events.set(A.CLUB_EXTENDED_OFFER,oB),this._events.set(A.CLUB_OFFERS,uB),this._events.set(A.IS_OFFER_GIFTABLE,lB),this._events.set(A.LIMITED_SOLD_OUT,hB),this._events.set(A.LIMITED_OFFER_APPEARING_NEXT,cB),this._events.set(A.NOT_ENOUGH_BALANCE,_B),this._events.set(A.PRODUCT_OFFER,dB),this._events.set(A.CATALOG_PURCHASE_ERROR,fB),this._events.set(A.CATALOG_PURCHASE_NOT_ALLOWED,gB),this._events.set(A.CATALOG_PURCHASE_OK,pB),this._events.set(A.ROOM_AD_PURCHASE,mB),this._events.set(A.SEASONAL_CALENDAR_OFFER,EB),this._events.set(A.CATALOG_RECEIVE_PET_BREEDS,TB),this._events.set(A.TARGET_OFFER,IB),this._events.set(A.TARGET_OFFER_NOT_FOUND,SB),this._events.set(A.REDEEM_VOUCHER_ERROR,RB),this._events.set(A.REDEEM_VOUCHER_OK,AB),this._events.set(A.CLIENT_PING,bS),this._events.set(A.COMPETITION_ENTRY_SUBMIT,OB),this._events.set(A.COMPETITION_VOTING_INFO,yB),this._events.set(A.COMPETITION_TIMING_CODE,vB),this._events.set(A.COMPETITION_USER_PART_OF,CB),this._events.set(A.COMPETITION_NO_OWNED_ROOMS,MB),this._events.set(A.COMPETITION_SECONDS_UNTIL,xB),this._events.set(A.CRAFTABLE_PRODUCTS,PB),this._events.set(A.CRAFTING_RECIPE,bB),this._events.set(A.CRAFTING_RECIPES_AVAILABLE,NB),this._events.set(A.CRAFTING_RESULT,UB),this._events.set(A.DESKTOP_VIEW,Dd),this._events.set(A.MESSENGER_ACCEPT_FRIENDS,DB),this._events.set(A.MESSENGER_FIND_FRIENDS,LB),this._events.set(A.MESSENGER_FOLLOW_FAILED,FB),this._events.set(A.MESSENGER_FRIENDS,wB),this._events.set(A.MESSENGER_UPDATE,GB),this._events.set(A.MESSENGER_FRIEND_NOTIFICATION,BB),this._events.set(A.MESSENGER_REQUESTS,kB),this._events.set(A.MESSENGER_SEARCH,zB),this._events.set(A.MESSENGER_INSTANCE_MESSAGE_ERROR,VB),this._events.set(A.MESSENGER_MESSAGE_ERROR,HB),this._events.set(A.MESSENGER_INIT,YB),this._events.set(A.MESSENGER_MINIMAIL_NEW,WB),this._events.set(A.MESSENGER_MINIMAIL_COUNT,jB),this._events.set(A.MESSENGER_CHAT,KB),this._events.set(A.MESSENGER_REQUEST,NS),this._events.set(A.MESSENGER_INVITE_ERROR,XB),this._events.set(A.MESSENGER_INVITE,qB),this._events.set(A.ACHIEVEMENTRESOLUTIONCOMPLETED,i3),this._events.set(A.ACHIEVEMENTRESOLUTIONPROGRESS,r3),this._events.set(A.ACHIEVEMENTRESOLUTIONS,n3),this._events.set(A.LOAD_GAME_URL,f3),this._events.set(A.LOADGAME,d3),this._events.set(A.UNLOADGAME,g3),this._events.set(A.GAME_CENTER_GAME_LIST,u3),this._events.set(A.GAMESTATUSMESSAGE,l3),this._events.set(A.GAME_CENTER_ACHIEVEMENTS,p3),this._events.set(A.GAME_CENTER_STATUS,$B),this._events.set(A.GAME_CENTER_IN_ARENA_QUEUE,ZB),this._events.set(A.GAME_CENTER_STOP_COUNTER,e3),this._events.set(A.GAME_CENTER_USER_LEFT_GAME,s3),this._events.set(A.GAME_CENTER_DIRECTORY_STATUS,QB),this._events.set(A.GAME_CENTER_STARTING_GAME_FAILED,t3),this._events.set(A.GAME_CENTER_JOINING_FAILED,JB),this._events.set(A.GAMEACHIEVEMENTS,a3),this._events.set(A.GAMEINVITE,o3),this._events.set(A.JOINEDQUEUEMESSAGE,h3),this._events.set(A.JOININGQUEUEFAILED,c3),this._events.set(A.LEFTQUEUE,_3),this._events.set(A.WEEKLY_GAME_REWARD,S3),this._events.set(A.WEEKLY_GAME_REWARD_WINNERS,R3),this._events.set(A.WEEKLY_COMPETITIVE_LEADERBOARD,I3),this._events.set(A.WEEKLY_COMPETITIVE_FRIENDS_LEADERBOARD,T3),this._events.set(A.WEEKLY_GAME2_FRIENDS_LEADERBOARD,m3),this._events.set(A.WEEKLY_GAME2_LEADERBOARD,E3),this._events.set(A.GROUP_INFO,M3),this._events.set(A.GROUP_MEMBER_REMOVE_CONFIRM,C3),this._events.set(A.GROUP_MEMBERS,x3),this._events.set(A.GROUP_CREATE_OPTIONS,v3),this._events.set(A.GROUP_BADGE_PARTS,US),this._events.set(A.GROUP_SETTINGS,b3),this._events.set(A.GROUP_PURCHASED,P3),this._events.set(A.GROUP_BADGES,OR),this._events.set(A.GROUP_DEACTIVATE,N3),this._events.set(A.GROUP_MEMBERSHIP_REQUESTED,y4),this._events.set(A.GROUP_DETAILS_CHANGED,O4),this._events.set(A.GROUP_HABBO_JOIN_FAILED,x4),this._events.set(A.GROUP_FORUM_DATA,U3),this._events.set(A.GROUP_FORUM_LIST,D3),this._events.set(A.GROUP_FORUM_THREADS,L3),this._events.set(A.GROUP_FORUM_POST,F3),this._events.set(A.GROUP_FORUM_POST_THREAD,w3),this._events.set(A.GROUP_FORUM_THREAD_MESSAGES,G3),this._events.set(A.GROUP_FORUM_UNREAD_COUNT,B3),this._events.set(A.GROUP_FORUM_UPDATE_MESSAGE,k3),this._events.set(A.GROUP_FORUM_UPDATE_THREAD,z3),this._events.set(A.CFH_DISABLED_NOTIFY,j3),this._events.set(A.CFH_PENDING_CALLS_DELETED,K3),this._events.set(A.CFH_PENDING_CALLS,X3),this._events.set(A.CFH_REPLY,q3),this._events.set(A.CFH_RESULT_MESSAGE,$3),this._events.set(A.GUIDE_ON_DUTY_STATUS,sk),this._events.set(A.GUIDE_SESSION_ATTACHED,rk),this._events.set(A.GUIDE_SESSION_DETACHED,nk),this._events.set(A.GUIDE_SESSION_ENDED,LS),this._events.set(A.GUIDE_SESSION_ERROR,FS),this._events.set(A.GUIDE_SESSION_INVITED_TO_GUIDE_ROOM,ak),this._events.set(A.GUIDE_SESSION_MESSAGE,ok),this._events.set(A.GUIDE_SESSION_PARTNER_IS_TYPING,uk),this._events.set(A.GUIDE_SESSION_REQUESTER_ROOM,lk),this._events.set(A.GUIDE_SESSION_STARTED,wS),this._events.set(A.GUIDE_TICKET_CREATION_RESULT,hk),this._events.set(A.GUIDE_TICKET_RESOLUTION,ck),this._events.set(A.GUIDE_REPORTING_STATUS,ik),this._events.set(A.HOTEL_MERGE_NAME_CHANGE,_k),this._events.set(A.ISSUE_CLOSE_NOTIFICATION,dk),this._events.set(A.QUIZ_DATA,fk),this._events.set(A.QUIZ_RESULTS,gk),this._events.set(A.CHAT_REVIEW_SESSION_DETACHED,Q3),this._events.set(A.CHAT_REVIEW_SESSION_OFFERED_TO_GUIDE,Z3),this._events.set(A.CHAT_REVIEW_SESSION_RESULTS,J3),this._events.set(A.CHAT_REVIEW_SESSION_STARTED,tk),this._events.set(A.CHAT_REVIEW_SESSION_VOTING_STATUS,ek),this._events.set(A.ACHIEVEMENT_PROGRESSED,pk),this._events.set(A.ACHIEVEMENT_LIST,mk),this._events.set(A.USER_ACHIEVEMENT_SCORE,Ek),this._events.set(A.USER_EFFECT_ACTIVATE,Tk),this._events.set(A.USER_EFFECT_LIST_ADD,Ik),this._events.set(A.USER_EFFECT_LIST_REMOVE,Sk),this._events.set(A.USER_EFFECT_LIST,Ak),this._events.set(A.AVATAR_EFFECT_SELECTED,Rk),this._events.set(A.USER_BADGES,yk),this._events.set(A.USER_BADGES_ADD,Ok),this._events.set(A.BADGE_POINT_LIMITS,GS),this._events.set(A.BADGE_REQUEST_FULFILLED,vk),this._events.set(A.USER_CLOTHING,Ck),this._events.set(A.USER_FURNITURE_ADD,Mk),this._events.set(A.USER_FURNITURE,xk),this._events.set(A.USER_FURNITURE_REFRESH,Pk),this._events.set(A.USER_FURNITURE_REMOVE,bk),this._events.set(A.USER_FURNITURE_POSTIT_PLACED,Nk),this._events.set(A.USER_PETS,wk),this._events.set(A.USER_PET_REMOVE,Bk),this._events.set(A.USER_PET_ADD,Fk),this._events.set(A.PET_RECEIVED,Gk),this._events.set(A.PET_PLACING_ERROR,HS),this._events.set(A.YOUTUBE_CONTROL_VIDEO,YV),this._events.set(A.YOUTUBE_DISPLAY_PLAYLISTS,WV),this._events.set(A.YOUTUBE_DISPLAY_VIDEO,jV),this._events.set(A.TRADE_ACCEPTED,kk),this._events.set(A.TRADE_CLOSED,zk),this._events.set(A.TRADE_COMPLETED,Vk),this._events.set(A.TRADE_CONFIRMATION,Hk),this._events.set(A.TRADE_LIST_ITEM,Yk),this._events.set(A.TRADE_NOT_OPEN,jk),this._events.set(A.TRADE_OPEN_FAILED,Xk),this._events.set(A.TRADE_OPEN,Kk),this._events.set(A.TRADE_OTHER_NOT_ALLOWED,qk),this._events.set(A.TRADE_YOU_NOT_ALLOWED,$k),this._events.set(A.TRADE_NO_SUCH_ITEM,Wk),this._events.set(A.COMMUNITY_GOAL_VOTE_EVENT,Zk),this._events.set(A.PROMO_ARTICLES,Qk),this._events.set(A.MARKETPLACE_AFTER_ORDER_STATUS,Jk),this._events.set(A.MARKETPLACE_CANCEL_SALE,tz),this._events.set(A.MARKETPLACE_SELL_ITEM,ez),this._events.set(A.MARKETPLACE_CONFIG,sz),this._events.set(A.MARKETPLACE_ITEM_STATS,iz),this._events.set(A.MARKETPLACE_ITEM_POSTED,rz),this._events.set(A.MARKETPLACE_ITEMS_SEARCHED,nz),this._events.set(A.MARKETPLACE_OWN_ITEMS,az),this._events.set(A.USER_BANNED,Iz),this._events.set(A.MODERATION_CAUTION,_z),this._events.set(A.MODTOOL_ROOM_INFO,gz),this._events.set(A.MODTOOL_USER_CHATLOG,Sz),this._events.set(A.MODTOOL_ROOM_CHATLOG,Ez),this._events.set(A.MODERATION_USER_INFO,mz),this._events.set(A.MODERATION_TOOL,dz),this._events.set(A.MODTOOL_VISITED_ROOMS_USER,Tz),this._events.set(A.CFH_CHATLOG,oz),this._events.set(A.ISSUE_DELETED,uz),this._events.set(A.ISSUE_INFO,lz),this._events.set(A.ISSUE_PICK_FAILED,hz),this._events.set(A.MODERATOR_ACTION_RESULT,cz),this._events.set(A.MODERATOR_MESSAGE,fz),this._events.set(A.MODERATOR_TOOL_PREFERENCES,pz),this._events.set(A.MYSTERY_BOX_KEYS,kS),this._events.set(A.GOTMYSTERYBOXPRIZEMESSAGE,Az),this._events.set(A.CANCELMYSTERYBOXWAITMESSAGE,Rz),this._events.set(A.SHOWMYSTERYBOXWAITMESSAGE,Oz),this._events.set(A.CAN_CREATE_ROOM,yz),this._events.set(A.CAN_CREATE_ROOM_EVENT,vz),this._events.set(A.CATEGORIES_WITH_VISITOR_COUNT,Cz),this._events.set(A.COMPETITION_ROOMS_DATA,Mz),this._events.set(A.CONVERTED_ROOM_ID,xz),this._events.set(A.ROOM_DOORBELL,zS),this._events.set(A.USER_FAVORITE_ROOM,Pz),this._events.set(A.USER_FAVORITE_ROOM_COUNT,bz),this._events.set(A.ROOM_DOORBELL_REJECTED,Fd),this._events.set(A.ROOM_CREATED,Nz),this._events.set(A.ROOM_INFO,wd),this._events.set(A.GUEST_ROOM_SEARCH_RESULT,Uz),this._events.set(A.USER_HOME_ROOM,Lz),this._events.set(A.ROOM_EVENT_CANCEL,Vz),this._events.set(A.ROOM_EVENT,Hz),this._events.set(A.ROOM_INFO_UPDATED,Wz),this._events.set(A.THUMBNAIL_UPDATE_RESULT,jz),this._events.set(A.NAVIGATOR_EVENT_CATEGORIES,Kz),this._events.set(A.NAVIGATOR_CATEGORIES,Xz),this._events.set(A.NAVIGATOR_COLLAPSED,Dz),this._events.set(A.NAVIGATOR_LIFTED,Fz),this._events.set(A.NAVIGATOR_METADATA,wz),this._events.set(A.NAVIGATOR_OPEN_ROOM_CREATOR,Gz),this._events.set(A.NAVIGATOR_SEARCHES,Bz),this._events.set(A.NAVIGATOR_SEARCH,kz),this._events.set(A.NAVIGATOR_SETTINGS,zz),this._events.set(A.GENERIC_ALERT,tV),this._events.set(A.MOTD_MESSAGES,sV),this._events.set(A.NOTIFICATION_LIST,iV),this._events.set(A.UNSEEN_ITEMS,uV),this._events.set(A.ACHIEVEMENT_NOTIFICATION,qz),this._events.set(A.INFO_FEED_ENABLE,eV),this._events.set(A.CLUB_GIFT_NOTIFICATION,Qz),this._events.set(A.ACTIVITY_POINT_NOTIFICATION,$z),this._events.set(A.BOT_ERROR,VS),this._events.set(A.PET_LEVEL_NOTIFICATION,nV),this._events.set(A.NOTIFICATION_OFFER_REWARD_DELIVERED,rV),this._events.set(A.NOTIFICATION_SIMPLE_ALERT,oV),this._events.set(A.NOTIFICATION_ELEMENT_POINTER,Jz),this._events.set(A.USER_PERKS,lV),this._events.set(A.PET_TRAINING_PANEL,cV),this._events.set(A.PET_LEVEL_UPDATE,jS),this._events.set(A.PET_SCRATCH_FAILED,KS),this._events.set(A.PET_OPEN_PACKAGE_REQUESTED,YS),this._events.set(A.PET_OPEN_PACKAGE_RESULT,WS),this._events.set(A.PET_BREEDING_RESULT,rR),this._events.set(A.QUESTION,ZS),this._events.set(A.POLL_CONTENTS,XS),this._events.set(A.POLL_ERROR,qS),this._events.set(A.POLL_OFFER,$S),this._events.set(A.POLL_START_ROOM,eR),this._events.set(A.QUESTION_ANSWERED,QS),this._events.set(A.QUESTION_FINISHED,JS),this._events.set(A.POLL_ROOM_RESULT,tR),this._events.set(A.COMMUNITY_GOAL_EARNED_PRIZES,_V),this._events.set(A.COMMUNITY_GOAL_PROGRESS,fV),this._events.set(A.CONCURRENT_USERS_GOAL_PROGRESS,gV),this._events.set(A.QUEST_DAILY,TV),this._events.set(A.QUEST_CANCELLED,mV),this._events.set(A.QUEST_COMPLETED,EV),this._events.set(A.COMMUNITY_GOAL_HALL_OF_FAME,dV),this._events.set(A.EPIC_POPUP,pV),this._events.set(A.SEASONAL_QUESTS,RV),this._events.set(A.QUESTS,SV),this._events.set(A.QUEST,IV),this._events.set(A.ROOM_ENTER_ERROR,AV),this._events.set(A.ROOM_ENTER,Yd),this._events.set(A.ROOM_FORWARD,OV),this._events.set(A.ROOM_DOORBELL_ACCEPTED,kd),this._events.set(A.ROOM_RIGHTS_CLEAR,zd),this._events.set(A.ROOM_RIGHTS_OWNER,Hd),this._events.set(A.ROOM_RIGHTS,Vd),this._events.set(A.BOT_COMMAND_CONFIGURATION,yV),this._events.set(A.BOT_SKILL_LIST_UPDATE,CV),this._events.set(A.BOT_FORCE_OPEN_CONTEXT_MENU,vV),this._events.set(A.ROOM_SETTINGS_CHAT,MV),this._events.set(A.ROOM_INFO_OWNER,xV),this._events.set(A.ROOM_SCORE,PV),this._events.set(A.ROOM_ROLLING,jd),this._events.set(A.FURNITURE_FLOOR_ADD,Jd),this._events.set(A.FURNITURE_FLOOR,tf),this._events.set(A.FURNITURE_FLOOR_REMOVE,ef),this._events.set(A.FURNITURE_FLOOR_UPDATE,sf),this._events.set(A.ITEM_WALL_ADD,rf),this._events.set(A.ITEM_WALL,nf),this._events.set(A.ITEM_WALL_REMOVE,af),this._events.set(A.ITEM_WALL_UPDATE,of),this._events.set(A.FURNITURE_ALIASES,qd),this._events.set(A.FURNITURE_DATA,$d),this._events.set(A.FURNITURE_ITEMDATA,Qd),this._events.set(A.ITEM_STACK_HELPER,UV),this._events.set(A.FURNITURE_STATE,Zd),this._events.set(A.ITEM_DIMMER_SETTINGS,iR),this._events.set(A.FURNITURE_STATE_2,Xd),this._events.set(A.LOVELOCK_FURNI_FINISHED,LV),this._events.set(A.LOVELOCK_FURNI_FRIEND_COMFIRMED,FV),this._events.set(A.LOVELOCK_FURNI_START,wV),this._events.set(A.OBJECTS_DATA_UPDATE,Wd),this._events.set(A.FURNITURE_GROUP_CONTEXT_MENU_INFO,DV),this._events.set(A.FURNITURE_POSTIT_STICKY_POLE_OPEN,zV),this._events.set(A.ROOM_SPECTATOR,lR),this._events.set(A.CUSTOM_USER_NOTIFICATION,bV),this._events.set(A.ROOM_MESSAGE_NOTIFICATION,VV),this._events.set(A.ROOM_POPULAR_TAGS_RESULT,yI),this._events.set(A.ROOM_POPULAR_TAGS_RESULT,yI),this._events.set(A.ROOM_RIGHTS_LIST,i4),this._events.set(A.ROOM_RIGHTS_LIST_ADD,e4),this._events.set(A.ROOM_RIGHTS_LIST_REMOVE,s4),this._events.set(A.ROOM_BAN_LIST,t4),this._events.set(A.ROOM_SETTINGS_SAVE_ERROR,l4),this._events.set(A.ROOM_SETTINGS,a4),this._events.set(A.ROOM_SETTINGS_SAVE,u4),this._events.set(A.ROOM_SETTINGS_ERROR,o4),this._events.set(A.SHOW_ENFORCE_ROOM_CATEGORY,h4),this._events.set(A.ROOM_BAN_REMOVE,c4),this._events.set(A.ROOM_MUTED,r4),this._events.set(A.NO_SUCH_FLAT,n4),this._events.set(A.FAVORITE_GROUP_UDPATE,sR),this._events.set(A.ROOM_MODEL_DOOR,lf),this._events.set(A.ROOM_HEIGHT_MAP,hf),this._events.set(A.ROOM_HEIGHT_MAP_UPDATE,cf),this._events.set(A.ROOM_MODEL,uf),this._events.set(A.ROOM_MODEL_NAME,ja),this._events.set(A.ROOM_PAINT,_f),this._events.set(A.ROOM_THICKNESS,df),this._events.set(A.ROOM_GET_FILTER_WORDS,Yz),this._events.set(A.ROOM_MODEL_BLOCKED_TILES,KV),this._events.set(A.PET_FIGURE_UPDATE,Ch),this._events.set(A.PET_INFO,aR),this._events.set(A.PET_STATUS,oR),this._events.set(A.PET_EXPERIENCE,nR),this._events.set(A.PLAYING_GAME,uR),this._events.set(A.UNIT_DANCE,Ph),this._events.set(A.UNIT_EFFECT,gf),this._events.set(A.UNIT,bh),this._events.set(A.UNIT_EXPRESSION,pf),this._events.set(A.UNIT_HAND_ITEM,mf),this._events.set(A.UNIT_IDLE,Ef),this._events.set(A.UNIT_INFO,Nh),this._events.set(A.UNIT_NUMBER,Tf),this._events.set(A.UNIT_REMOVE,Uh),this._events.set(A.UNIT_STATUS,If),this._events.set(A.HAND_ITEM_RECEIVED,_R),this._events.set(A.FLOOD_CONTROL,hR),this._events.set(A.REMAINING_MUTE,cR),this._events.set(A.UNIT_CHAT,Wm),this._events.set(A.UNIT_CHAT_SHOUT,Mh),this._events.set(A.UNIT_CHAT_WHISPER,xh),this._events.set(A.UNIT_TYPING,ff),this._events.set(A.WIRED_ACTION,XV),this._events.set(A.WIRED_CONDITION,qV),this._events.set(A.WIRED_TRIGGER,$V),this._events.set(A.WIRED_OPEN,QV),this._events.set(A.WIRED_REWARD,Sf),this._events.set(A.WIRED_SAVE,ZV),this._events.set(A.WIRED_ERROR,JV),this._events.set(A.AUTHENTICATED,dR),this._events.set(A.JUKEBOX_PLAYLIST_FULL,fR),this._events.set(A.JUKEBOX_SONG_DISKS,gR),this._events.set(A.NOW_PLAYING,pR),this._events.set(A.OFFICIAL_SONG_ID,_4),this._events.set(A.PLAYLIST,d4),this._events.set(A.PLAYLIST_SONG_ADDED,f4),this._events.set(A.TRAX_SONG_INFO,mR),this._events.set(A.USER_SONG_DISKS_INVENTORY,ER),this._events.set(A.HELPER_TALENT_TRACK,m4),this._events.set(A.TALENT_TRACK_LEVEL,p4),this._events.set(A.TALENT_TRACK_LEVEL_UP,g4),this._events.set(A.IN_CLIENT_LINK,vR),this._events.set(A.USER_IGNORED,yR),this._events.set(A.USER_IGNORED_RESULT,Km),this._events.set(A.USER_RESPECT,xR),this._events.set(A.USER_PERMISSIONS,TR),this._events.set(A.USER_BADGES_CURRENT,SR),this._events.set(A.USER_INFO,Dh),this._events.set(A.UNIT_CHANGE_NAME,jm),this._events.set(A.USER_SETTINGS,R4),this._events.set(A.USER_PROFILE,S4),this._events.set(A.MESSENGER_RELATIONSHIPS,I4),this._events.set(A.GIFT_OPENED,BS),this._events.set(A.USER_CREDITS,P4),this._events.set(A.USER_CURRENCY,b4),this._events.set(A.USER_SUBSCRIPTION,N4),this._events.set(A.USER_WARDROBE_PAGE,D4),this._events.set(A.USER_CLASSIFICATION,F4),this._events.set(A.GET_USER_TAGS,RR),this._events.set(A.SCR_SEND_KICKBACK_INFO,U4),this._events.set(A.PET_RESPECTED,CR),this._events.set(A.PET_SUPPLEMENT,MR),this._events.set(A.ACCOUNT_SAFETY_LOCK_STATUS_CHANGE,IR),this._events.set(A.GENERIC_ERROR,Ld),this._events.set(A.GROUP_LIST,M4),this._events.set(A.CATALOG_APPROVE_NAME_RESULT,E4),this._events.set(A.CONNECTION_ERROR,Zz),this._events.set(A.GUILD_EDIT_FAILED,v4),this._events.set(A.GUILD_MEMBER_MGMT_FAILED,C4),this._events.set(A.EXTENDED_PROFILE_CHANGED,A4),this._events.set(A.NOOBNESS_LEVEL,DS),this._events.set(A.DISCONNECT_REASON,H3),this._events.set(A.HANDSHAKE_INIT_DIFFIE,W3),this._events.set(A.HANDSHAKE_COMPLETE_DIFFIE,V3),this._events.set(A.HANDSHAKE_IDENTITY_ACCOUNT,Y3),this._events.set(A.NEW_USER_EXPERIENCE_GIFT_OFFER,lw),this._events.set(A.NEW_USER_EXPERIENCE_NOT_COMPLETE,cw),this._events.set(A.RESTORE_CLIENT,aV),this._events.set(A.FIREWORK_CHARGE_DATA,rB),this._events.set(A.PHONE_COLLECTION_STATE,A3),this._events.set(A.PHONE_TRY_NUMBER_RESULT,O3),this._events.set(A.PHONE_TRY_VERIFICATION_CODE_RESULT,y3),this._events.set(A.WELCOME_GIFT_CHANGE_EMAIL_RESULT,L4),this._events.set(A.WELCOME_GIFT_STATUS,HV),this._events.set(A.RENTABLE_SPACE_RENT_OK,BV),this._events.set(A.RENTABLE_SPACE_STATUS,kV),this._events.set(A.RENTABLE_SPACE_RENT_FAILED,GV),this._events.set(A.RECYCLER_STATUS,Bd),this._events.set(A.RECYCLER_FINISHED,Gd),this._events.set(A.EMAIL_STATUS,AR),this._events.set(A.CHANGE_EMAIL_RESULT,T4),this._events.set(A.RENTABLE_FURNI_RENT_OR_BUYOUT_OFFER,NV),this._events.set(A.AREA_HIDE,Kd)}registerComposers(){this._composers.set(S.CLICK_FURNI,Pf),this._composers.set(S.AUTHENTICATION,uY),this._composers.set(S.INTERSTITIAL_SHOWN,G4),this._composers.set(S.GET_INTERSTITIAL,w4),this._composers.set(S.GET_WARDROBE,V4),this._composers.set(S.SAVE_WARDROBE_OUTFIT,H4),this._composers.set(S.CHANGE_USERNAME,k4),this._composers.set(S.CHECK_USERNAME,z4),this._composers.set(S.REQUEST_CAMERA_CONFIGURATION,K4),this._composers.set(S.RENDER_ROOM,Lh),this._composers.set(S.RENDER_ROOM_THUMBNAIL,Af),this._composers.set(S.PURCHASE_PHOTO,j4),this._composers.set(S.PUBLISH_PHOTO,W4),this._composers.set(S.PHOTO_COMPETITION,Y4),this._composers.set(S.OPEN_CAMPAIGN_CALENDAR_DOOR,q4),this._composers.set(S.OPEN_CAMPAIGN_CALENDAR_DOOR_STAFF,X4),this._composers.set(S.BUILDERS_CLUB_PLACE_ROOM_ITEM,$4),this._composers.set(S.BUILDERS_CLUB_PLACE_WALL_ITEM,Q4),this._composers.set(S.BUILDERS_CLUB_QUERY_FURNI_COUNT,Z4),this._composers.set(S.GET_CATALOG_INDEX,e5),this._composers.set(S.GET_CATALOG_PAGE,s5),this._composers.set(S.CATALOG_PURCHASE,R5),this._composers.set(S.CATALOG_PURCHASE_GIFT,S5),this._composers.set(S.GET_PRODUCT_OFFER,f5),this._composers.set(S.GET_CLUB_OFFERS,a5),this._composers.set(S.GET_CLUB_GIFT_INFO,n5),this._composers.set(S.CATALOG_REDEEM_VOUCHER,v5),this._composers.set(S.GROUP_MEMBERSHIPS,i8),this._composers.set(S.GET_GIFT_WRAPPING_CONFIG,u5),this._composers.set(S.CATALOG_SELECT_VIP_GIFT,M5),this._composers.set(S.CATALOG_REQUESET_PET_BREEDS,m5),this._composers.set(S.GET_BONUS_RARE_INFO,J4),this._composers.set(S.GET_BUNDLE_DISCOUNT_RULESET,t5),this._composers.set(S.GET_CATALOG_PAGE_EXPIRATION,i5),this._composers.set(S.GET_CATALOG_PAGE_WITH_EARLIEST_EXP,r5),this._composers.set(S.GET_DIRECT_CLUB_BUY_AVAILABLE,o5),this._composers.set(S.GET_HABBO_BASIC_MEMBERSHIP_EXTEND_OFFER,l5),this._composers.set(S.GET_HABBO_CLUB_EXTEND_OFFER,h5),this._composers.set(S.GET_IS_OFFER_GIFTABLE,c5),this._composers.set(S.GET_LIMITED_OFFER_APPEARING_NEXT,_5),this._composers.set(S.GET_NEXT_TARGETED_OFFER,d5),this._composers.set(S.GET_ROOM_AD_PURCHASE_INFO,g5),this._composers.set(S.GET_SEASONAL_CALENDAR_DAILY_OFFER,p5),this._composers.set(S.GET_TARGETED_OFFER,E5),this._composers.set(S.MARK_CATALOG_NEW_ADDITIONS_PAGE_OPENED,T5),this._composers.set(S.PURCHASE_BASIC_MEMBERSHIP_EXTENSION,I5),this._composers.set(S.PURCHASE_ROOM_AD,A5),this._composers.set(S.PURCHASE_TARGETED_OFFER,O5),this._composers.set(S.PURCHASE_VIP_MEMBERSHIP_EXTENSION,y5),this._composers.set(S.ROOM_AD_PURCHASE_INITIATED,C5),this._composers.set(S.SET_TARGETTED_OFFER_STATE,x5),this._composers.set(S.SHOP_TARGETED_OFFER_VIEWED,P5),this._composers.set(S.FORWARD_TO_A_COMPETITION_ROOM,b5),this._composers.set(S.FORWARD_TO_A_SUBMITTABLE_ROOM,N5),this._composers.set(S.FORWARD_TO_RANDOM_COMPETITION_ROOM,U5),this._composers.set(S.GET_CURRENT_TIMING_CODE,D5),this._composers.set(S.GET_IS_USER_PART_OF_COMPETITION,L5),this._composers.set(S.GET_SECONDS_UNTIL,F5),this._composers.set(S.ROOM_COMPETITION_INIT,w5),this._composers.set(S.SUBMIT_ROOM_TO_COMPETITION,Of),this._composers.set(S.VOTE_FOR_ROOM,G5),this._composers.set(S.CRAFT,B5),this._composers.set(S.CRAFT_SECRET,k5),this._composers.set(S.GET_CRAFTABLE_PRODUCTS,V5),this._composers.set(S.GET_CRAFTING_RECIPE,z5),this._composers.set(S.GET_CRAFTING_RECIPES_AVAILABLE,H5),this._composers.set(S.FRIEND_FURNI_CONFIRM_LOCK,W5),this._composers.set(S.ACCEPT_FRIEND,j5),this._composers.set(S.DECLINE_FRIEND,K5),this._composers.set(S.FIND_NEW_FRIENDS,X5),this._composers.set(S.FOLLOW_FRIEND,q5),this._composers.set(S.FRIEND_LIST_UPDATE,$5),this._composers.set(S.GET_FRIEND_REQUESTS,Q5),this._composers.set(S.HABBO_SEARCH,Z5),this._composers.set(S.MESSENGER_INIT,J5),this._composers.set(S.REMOVE_FRIEND,tH),this._composers.set(S.REQUEST_FRIEND,eH),this._composers.set(S.MESSENGER_CHAT,sH),this._composers.set(S.SEND_ROOM_INVITE,iH),this._composers.set(S.SET_RELATIONSHIP_STATUS,rH),this._composers.set(S.VISIT_USER,nH),this._composers.set(S.ACHIEVEMENT_RESOLUTION_OPEN,PR),this._composers.set(S.ACCEPTGAMEINVITE,dH),this._composers.set(S.GAMEUNLOADEDMESSAGE,fH),this._composers.set(S.GETGAMEACHIEVEMENTSMESSAGE,gH),this._composers.set(S.GAMES_LIST,pH),this._composers.set(S.GETGAMESTATUSMESSAGE,mH),this._composers.set(S.GETUSERGAMEACHIEVEMENTSMESSAGE,EH),this._composers.set(S.JOINQUEUEMESSAGE,TH),this._composers.set(S.LEAVEQUEUEMESSAGE,IH),this._composers.set(S.RESETRESOLUTIONACHIEVEMENTMESSAGE,SH),this._composers.set(S.GAMES_INIT,OH),this._composers.set(S.GETWEEKLYGAMEREWARDWINNERS,yH),this._composers.set(S.GAME2GETACCOUNTGAMESTATUSMESSAGE,cH),this._composers.set(S.GAME2CHECKGAMEDIRECTORYSTATUSMESSAGE,hH),this._composers.set(S.GAME2EXITGAMEMESSAGE,aH),this._composers.set(S.GAME2GAMECHATMESSAGE,oH),this._composers.set(S.GAME2LOADSTAGEREADYMESSAGE,uH),this._composers.set(S.GAME2PLAYAGAINMESSAGE,lH),this._composers.set(S.GAME2REQUESTFULLSTATUSUPDATEMESSAGE,_H),this._composers.set(S.GAME2GETWEEKLYFRIENDSLEADERBOARD,RH),this._composers.set(S.GAME2GETWEEKLYLEADERBOARD,AH),this._composers.set(S.GET_GIFT,yf),this._composers.set(S.RESET_PHONE_NUMBER_STATE,vH),this._composers.set(S.SET_PHONE_NUMBER_VERIFICATION_STATUS,vf),this._composers.set(S.TRY_PHONE_NUMBER,CH),this._composers.set(S.VERIFY_CODE,MH),this._composers.set(S.GET_FORUM_STATS,QH),this._composers.set(S.GET_FORUMS_LIST,$H),this._composers.set(S.GET_FORUM_MESSAGES,ZH),this._composers.set(S.GET_FORUM_THREAD,JH),this._composers.set(S.GET_FORUM_THREADS,tY),this._composers.set(S.GET_UNREAD_FORUMS_COUNT,eY),this._composers.set(S.FORUM_MODERATE_MESSAGE,sY),this._composers.set(S.FORUM_MODERATE_THREAD,iY),this._composers.set(S.FORUM_POST_MESSAGE,rY),this._composers.set(S.UPDATE_FORUM_READ_MARKER,nY),this._composers.set(S.UPDATE_FORUM_SETTINGS,aY),this._composers.set(S.FORUM_UPDATE_THREAD,oY),this._composers.set(S.CLIENT_PONG,UR),this._composers.set(S.RELEASE_VERSION,bR),this._composers.set(S.SECURITY_TICKET,DR),this._composers.set(S.USER_INFO,NR),this._composers.set(S.DISCONNECT,hY),this._composers.set(S.SECURITY_MACHINE,_Y),this._composers.set(S.CLIENT_VARIABLES,dY),this._composers.set(S.HANDSHAKE_INIT_DIFFIE,cY),this._composers.set(S.HANDSHAKE_COMPLETE_DIFFIE,lY),this._composers.set(S.CALL_FOR_HELP_FROM_FORUM_MESSAGE,fY),this._composers.set(S.CALL_FOR_HELP_FROM_FORUM_THREAD,gY),this._composers.set(S.CALL_FOR_HELP_FROM_IM,pY),this._composers.set(S.CALL_FOR_HELP_FROM_PHOTO,mY),this._composers.set(S.CALL_FOR_HELP_FROM_SELFIE,EY),this._composers.set(S.CALL_FOR_HELP,TY),this._composers.set(S.CHAT_REVIEW_GUIDE_DECIDES,IY),this._composers.set(S.CHAT_REVIEW_GUIDE_DETACHED,SY),this._composers.set(S.CHAT_REVIEW_GUIDE_VOTE,RY),this._composers.set(S.CHAT_REVIEW_SESSION_CREATE,AY),this._composers.set(S.DELETE_PENDING_CALLS_FOR_HELP,OY),this._composers.set(S.GET_CFH_STATUS,yY),this._composers.set(S.GET_FAQ_CATEGORY,vY),this._composers.set(S.GET_FAQ_TEXT,CY),this._composers.set(S.GET_GUIDE_REPORTING_STATUS,MY),this._composers.set(S.GET_PENDING_CALLS_FOR_HELP,xY),this._composers.set(S.GET_QUIZ_QUESTIONS,PY),this._composers.set(S.GUIDE_SESSION_CREATE,bY),this._composers.set(S.GUIDE_SESSION_FEEDBACK,NY),this._composers.set(S.GUIDE_SESSION_GET_REQUESTER_ROOM,UY),this._composers.set(S.GUIDE_SESSION_GUIDE_DECIDES,DY),this._composers.set(S.GUIDE_SESSION_INVITE_REQUESTER,LY),this._composers.set(S.GUIDE_SESSION_IS_TYPING,FY),this._composers.set(S.GUIDE_SESSION_MESSAGE,wY),this._composers.set(S.GUIDE_SESSION_ON_DUTY_UPDATE,GY),this._composers.set(S.GUIDE_SESSION_REPORT,BY),this._composers.set(S.GUIDE_SESSION_REQUESTER_CANCELS,kY),this._composers.set(S.GUIDE_SESSION_RESOLVED,zY),this._composers.set(S.POST_QUIZ_ANSWERS,VY),this._composers.set(S.SEARCH_FAQS,HY),this._composers.set(S.DESKTOP_VIEW,Y5),this._composers.set(S.GROUP_INFO,GH),this._composers.set(S.GROUP_REQUEST,BH),this._composers.set(S.GROUP_MEMBER_REMOVE_CONFIRM,LH),this._composers.set(S.GROUP_MEMBER_REMOVE,HH),this._composers.set(S.GROUP_MEMBERS,kH),this._composers.set(S.GROUP_ADMIN_ADD,PH),this._composers.set(S.GROUP_ADMIN_REMOVE,bH),this._composers.set(S.GROUP_REQUEST_ACCEPT,zH),this._composers.set(S.GROUP_REQUEST_DECLINE,VH),this._composers.set(S.GROUP_DELETE,FH),this._composers.set(S.GROUP_CREATE_OPTIONS,DH),this._composers.set(S.GROUP_PARTS,NH),this._composers.set(S.GROUP_BUY,UH),this._composers.set(S.GROUP_SETTINGS,XH),this._composers.set(S.GROUP_SAVE_BADGE,YH),this._composers.set(S.GROUP_SAVE_COLORS,WH),this._composers.set(S.GROUP_SAVE_INFORMATION,jH),this._composers.set(S.GROUP_SAVE_PREFERENCES,KH),this._composers.set(S.GROUP_FAVORITE,wH),this._composers.set(S.GROUP_UNFAVORITE,qH),this._composers.set(S.GROUP_BADGES,JA),this._composers.set(S.APPROVE_ALL_MEMBERSHIP_REQUESTS,xH),this._composers.set(S.GROUP_UNBLOCK_MEMBER,m8),this._composers.set(S.ROOM_FAVORITE,HW),this._composers.set(S.CAN_CREATE_ROOM,WW),this._composers.set(S.CANCEL_ROOM_EVENT,YW),this._composers.set(S.CONVERT_GLOBAL_ROOM_ID,KW),this._composers.set(S.COMPETITION_ROOM_SEARCH,jW),this._composers.set(S.ROOM_CREATE,XW),this._composers.set(S.GET_USER_FLAT_CATS,nj),this._composers.set(S.GET_USER_EVENT_CATS,rj),this._composers.set(S.ROOM_FAVORITE_REMOVE,qW),this._composers.set(S.EDIT_ROOM_EVENT,$W),this._composers.set(S.FORWARD_TO_RANDOM_PROMOTED_ROOM,QW),this._composers.set(S.FORWARD_TO_SOME_ROOM,ZW),this._composers.set(S.GET_CATEGORIES_WITH_USER_COUNT,JW),this._composers.set(S.GET_GUEST_ROOM,ej),this._composers.set(S.GET_OFFICIAL_ROOMS,sj),this._composers.set(S.GET_POPULAR_ROOM_TAGS,ij),this._composers.set(S.GUILD_BASE_SEARCH,aj),this._composers.set(S.MY_FAVOURITE_ROOMS_SEARCH,oj),this._composers.set(S.MY_FREQUENT_ROOM_HISTORY_SEARCH,uj),this._composers.set(S.MY_FRIENDS_ROOM_SEARCH,lj),this._composers.set(S.MY_GUILD_BASES_SEARCH,hj),this._composers.set(S.MY_RECOMMENDED_ROOMS,cj),this._composers.set(S.MY_ROOM_HISTORY_SEARCH,_j),this._composers.set(S.MY_ROOM_RIGHTS_SEARCH,dj),this._composers.set(S.MY_ROOMS_SEARCH,fj),this._composers.set(S.POPULAR_ROOMS_SEARCH,Aj),this._composers.set(S.ROOM_LIKE,Oj),this._composers.set(S.ROOM_RIGHTS_REMOVE_OWN,yj),this._composers.set(S.ROOM_AD_EVENT_TAB_CLICKED,vj),this._composers.set(S.ROOM_AD_EVENT_TAB_VIEWED,Cj),this._composers.set(S.ROOM_AD_SEARCH,Mj),this._composers.set(S.ROOM_TEXT_SEARCH,bj),this._composers.set(S.ROOMS_WHERE_MY_FRIENDS_ARE,xj),this._composers.set(S.ROOMS_WITH_HIGHEST_SCORE_SEARCH,Pj),this._composers.set(S.SET_ROOM_SESSION_TAGS,Nj),this._composers.set(S.ROOM_STAFF_PICK,Uj),this._composers.set(S.ROOM_FILTER_WORDS,tj),this._composers.set(S.ROOM_FILTER_WORDS_MODIFY,Lj),this._composers.set(S.USER_HOME_ROOM,Dj),this._composers.set(S.UPDATE_ROOM_THUMBNAIL,Fj),this._composers.set(S.NAVIGATOR_INIT,mj),this._composers.set(S.NAVIGATOR_SEARCH_CLOSE,Ej),this._composers.set(S.NAVIGATOR_SEARCH,Tj),this._composers.set(S.NAVIGATOR_SEARCH_OPEN,Ij),this._composers.set(S.NAVIGATOR_SEARCH_SAVE,Sj),this._composers.set(S.NAVIGATOR_SETTINGS_SAVE,Rj),this._composers.set(S.NAVIGATOR_CATEGORY_LIST_MODE,gj),this._composers.set(S.NAVIGATOR_DELETE_SAVED_SEARCH,pj),this._composers.set(S.POLL_ANSWER,HR),this._composers.set(S.POLL_REJECT,YR),this._composers.set(S.POLL_START,WR),this._composers.set(S.POLL_VOTE_COUNTER,jR),this._composers.set(S.USER_EFFECT_ACTIVATE,YY),this._composers.set(S.USER_EFFECT_ENABLE,WY),this._composers.set(S.USER_BADGES,qY),this._composers.set(S.USER_BADGES_CURRENT_UPDATE,$Y),this._composers.set(S.GET_BADGE_POINTS_LIMITS,jY),this._composers.set(S.REQUESTABADGE,XY),this._composers.set(S.GETISBADGEREQUESTFULFILLED,KY),this._composers.set(S.USER_BOTS,vI),this._composers.set(S.USER_FURNITURE,QY),this._composers.set(S.REQUESTFURNIINVENTORYWHENNOTINROOM,ZY),this._composers.set(S.USER_PETS,CI),this._composers.set(S.TRADE_ACCEPT,eW),this._composers.set(S.TRADE_CANCEL,sW),this._composers.set(S.TRADE_CLOSE,iW),this._composers.set(S.TRADE_CONFIRM,rW),this._composers.set(S.TRADE_ITEM,nW),this._composers.set(S.TRADE_ITEMS,aW),this._composers.set(S.TRADE_ITEM_REMOVE,oW),this._composers.set(S.TRADE,uW),this._composers.set(S.TRADE_UNACCEPT,lW),this._composers.set(S.UNSEEN_RESET_CATEGORY,hW),this._composers.set(S.UNSEEN_RESET_ITEMS,cW),this._composers.set(S.ACHIEVEMENT_LIST,B4),this._composers.set(S.PET_MOUNT,xf),this._composers.set(S.PET_RESPECT,wR),this._composers.set(S.PET_SUPPLEMENT,Gj),this._composers.set(S.REMOVE_PET_SADDLE,GR),this._composers.set(S.PET_INFO,BR),this._composers.set(S.TOGGLE_PET_BREEDING,kR),this._composers.set(S.TOGGLE_PET_RIDING,zR),this._composers.set(S.USE_PET_PRODUCT,VR),this._composers.set(S.GET_PET_TRAINING_PANEL,FR),this._composers.set(S.PET_OPEN_PACKAGE,CA),this._composers.set(S.PET_SELECTED,G6),this._composers.set(S.PETS_BREED,Df),this._composers.set(S.PET_CANCEL_BREEDING,JY),this._composers.set(S.PET_CONFIRM_BREEDING,tW),this._composers.set(S.ROOM_ENTER,XR),this._composers.set(S.ROOM_DOORBELL,KR),this._composers.set(S.GO_TO_FLAT,bA),this._composers.set(S.CHANGE_QUEUE,PA),this._composers.set(S.ROOM_AMBASSADOR_ALERT,qR),this._composers.set(S.ROOM_BAN_GIVE,$R),this._composers.set(S.ROOM_BAN_REMOVE,n6),this._composers.set(S.ROOM_RIGHTS_GIVE,QR),this._composers.set(S.ROOM_KICK,ZR),this._composers.set(S.ROOM_MUTE_USER,JR),this._composers.set(S.ROOM_RIGHTS_REMOVE,tA),this._composers.set(S.ROOM_RIGHTS_REMOVE_ALL,i6),this._composers.set(S.ROOM_DELETE,r6),this._composers.set(S.ROOM_SETTINGS,u6),this._composers.set(S.ROOM_SETTINGS_SAVE,h6),this._composers.set(S.ROOM_RIGHTS_LIST,l6),this._composers.set(S.ROOM_BAN_LIST,o6),this._composers.set(S.ROOM_SETTINGS_UPDATE_ROOM_CATEGORY_AND_TRADE,j6),this._composers.set(S.BOT_CONFIGURATION,a6),this._composers.set(S.GET_ITEM_DATA,nA),this._composers.set(S.REMOVE_WALL_ITEM,lA),this._composers.set(S.BOT_PLACE,eA),this._composers.set(S.BOT_PICKUP,sA),this._composers.set(S.BOT_SKILL_SAVE,c6),this._composers.set(S.PET_PLACE,oA),this._composers.set(S.PET_MOVE,bf),this._composers.set(S.PET_PICKUP,uA),this._composers.set(S.SET_ITEM_DATA,cA),this._composers.set(S.SET_OBJECT_DATA,_A),this._composers.set(S.COMPOST_PLANT,rA),this._composers.set(S.HARVEST_PET,aA),this._composers.set(S.SET_CLOTHING_CHANGE_DATA,hA),this._composers.set(S.FURNITURE_ALIASES,pA),this._composers.set(S.FURNITURE_GROUP_INFO,mA),this._composers.set(S.FURNITURE_PICKUP,EA),this._composers.set(S.FURNITURE_PLACE,TA),this._composers.set(S.ITEM_PAINT,g6),this._composers.set(S.FURNITURE_POSTIT_PLACE,IA),this._composers.set(S.FURNITURE_POSTIT_SAVE_STICKY_POLE,_6),this._composers.set(S.CONTROL_YOUTUBE_DISPLAY_PLAYBACK,C6),this._composers.set(S.GET_YOUTUBE_DISPLAY_STATUS,M6),this._composers.set(S.SET_YOUTUBE_DISPLAY_PLAYLIST,x6),this._composers.set(S.FURNITURE_FLOOR_UPDATE,Nf),this._composers.set(S.FURNITURE_WALL_UPDATE,xA),this._composers.set(S.ITEM_DIMMER_SETTINGS,dA),this._composers.set(S.ITEM_DIMMER_SAVE,fA),this._composers.set(S.ITEM_DIMMER_TOGGLE,gA),this._composers.set(S.ROOM_TONER_APPLY,v6),this._composers.set(S.ITEM_COLOR_WHEEL_CLICK,SA),this._composers.set(S.ITEM_DICE_CLICK,RA),this._composers.set(S.ITEM_DICE_CLOSE,AA),this._composers.set(S.FURNITURE_MULTISTATE,Xm),this._composers.set(S.FURNITURE_RANDOMSTATE,yA),this._composers.set(S.ITEM_STACK_HELPER,E6),this._composers.set(S.FURNITURE_WALL_MULTISTATE,vA),this._composers.set(S.ONE_WAY_DOOR_CLICK,OA),this._composers.set(S.ITEM_EXCHANGE_REDEEM,m6),this._composers.set(S.ITEM_CLOTHING_REDEEM,U6),this._composers.set(S.ROOM_MODEL,Uf),this._composers.set(S.GET_OCCUPIED_TILES,P6),this._composers.set(S.GET_ROOM_ENTRY_TILE,b6),this._composers.set(S.ROOM_MODEL_SAVE,N6),this._composers.set(S.UNIT_ACTION,FA),this._composers.set(S.UNIT_DANCE,wA),this._composers.set(S.UNIT_DROP_HAND_ITEM,L6),this._composers.set(S.UNIT_GIVE_HANDITEM,F6),this._composers.set(S.UNIT_GIVE_HANDITEM_PET,w6),this._composers.set(S.UNIT_LOOK,GA),this._composers.set(S.UNIT_SIGN,kA),this._composers.set(S.UNIT_POSTURE,BA),this._composers.set(S.UNIT_WALK,zA),this._composers.set(S.UNIT_CHAT,qm),this._composers.set(S.UNIT_CHAT_SHOUT,NA),this._composers.set(S.USER_SETTINGS_CHAT_STYLE,D6),this._composers.set(S.UNIT_CHAT_WHISPER,UA),this._composers.set(S.UNIT_TYPING,DA),this._composers.set(S.UNIT_TYPING_STOP,LA),this._composers.set(S.WIRED_APPLY_SNAPSHOT,k6),this._composers.set(S.WIRED_OPEN,z6),this._composers.set(S.WIRED_ACTION_SAVE,H6),this._composers.set(S.WIRED_CONDITION_SAVE,Y6),this._composers.set(S.WIRED_TRIGGER_SAVE,W6),this._composers.set(S.ROOM_MUTE,V6),this._composers.set(S.APPROVE_NAME,s8),this._composers.set(S.USER_RESPECT,t0),this._composers.set(S.SCR_GET_KICKBACK_INFO,_8),this._composers.set(S.PEER_USERS_CLASSIFICATION,e0),this._composers.set(S.USER_CLASSIFICATION,s0),this._composers.set(S.USER_IGNORED,jA),this._composers.set(S.USER_IGNORE,XA),this._composers.set(S.USER_IGNORE_ID,qA),this._composers.set(S.USER_UNIGNORE,$A),this._composers.set(S.USER_BADGES_CURRENT,QA),this._composers.set(S.USER_FIGURE,a8),this._composers.set(S.USER_MOTTO,ZA),this._composers.set(S.USER_PROFILE,o8),this._composers.set(S.USER_PROFILE_BY_NAME,n8),this._composers.set(S.USER_TAGS,KA),this._composers.set(S.MESSENGER_RELATIONSHIPS,u8),this._composers.set(S.MANNEQUIN_SAVE_NAME,I6),this._composers.set(S.MANNEQUIN_SAVE_LOOK,T6),this._composers.set(S.PRESENT_OPEN_PRESENT,MA),this._composers.set(S.MARKETPLACE_CONFIG,EW),this._composers.set(S.MARKETPLACE_SELL_ITEM,RW),this._composers.set(S.MARKETPLACE_REQUEST_OWN_ITEMS,SW),this._composers.set(S.MARKETPLACE_TAKE_BACK_ITEM,pW),this._composers.set(S.MARKETPLACE_REQUEST_OFFERS,IW),this._composers.set(S.MARKETPLACE_BUY_OFFER,fW),this._composers.set(S.MARKETPLACE_REDEEM_CREDITS,AW),this._composers.set(S.MARKETPLACE_BUY_TOKENS,gW),this._composers.set(S.REQUEST_SELL_ITEM,mW),this._composers.set(S.REQUEST_MARKETPLACE_ITEM_STATS,TW),this._composers.set(S.USER_BOTS,vI),this._composers.set(S.USER_PETS,CI),this._composers.set(S.USER_CURRENCY,h8),this._composers.set(S.USER_SUBSCRIPTION,c8),this._composers.set(S.MODTOOL_REQUEST_ROOM_INFO,CW),this._composers.set(S.MODTOOL_CHANGE_ROOM_SETTINGS,UW),this._composers.set(S.MODTOOL_REQUEST_USER_CHATLOG,bW),this._composers.set(S.MODTOOL_REQUEST_ROOM_CHATLOG,xW),this._composers.set(S.MOD_TOOL_USER_INFO,MW),this._composers.set(S.MODTOOL_SANCTION_ALERT,NW),this._composers.set(S.MODTOOL_SANCTION_BAN,rr),this._composers.set(S.MODTOOL_SANCTION_KICK,DW),this._composers.set(S.MODTOOL_SANCTION_TRADELOCK,BW),this._composers.set(S.MODTOOL_ALERTEVENT,LW),this._composers.set(S.MODTOOL_SANCTION_MUTE,FW),this._composers.set(S.MODTOOL_REQUEST_USER_ROOMS,PW),this._composers.set(S.MODTOOL_ROOM_ALERT,Mf),this._composers.set(S.CLOSE_ISSUE_DEFAULT_ACTION,OW),this._composers.set(S.CLOSE_ISSUES,Cf),this._composers.set(S.DEFAULT_SANCTION,yW),this._composers.set(S.GET_CFH_CHATLOG,vW),this._composers.set(S.MODTOOL_PREFERENCES,wW),this._composers.set(S.MODTOOL_SANCTION,GW),this._composers.set(S.PICK_ISSUES,kW),this._composers.set(S.RELEASE_ISSUES,zW),this._composers.set(S.MYSTERYBOXWAITINGCANCELEDMESSAGE,VW),this._composers.set(S.MYSTERYBOX_OPEN_TROPHY,S6),this._composers.set(S.USER_SETTINGS_CAMERA,d8),this._composers.set(S.USER_SETTINGS_OLD_CHAT,f8),this._composers.set(S.USER_SETTINGS_INVITES,g8),this._composers.set(S.USER_SETTINGS_VOLUME,p8),this._composers.set(S.COMMUNITY_GOAL_VOTE_COMPOSER,dW),this._composers.set(S.GET_PROMO_ARTICLES,_W),this._composers.set(S.ACCEPT_QUEST,Bj),this._composers.set(S.ACTIVATE_QUEST,kj),this._composers.set(S.CANCEL_QUEST,zj),this._composers.set(S.FRIEND_REQUEST_QUEST_COMPLETE,Vj),this._composers.set(S.GET_COMMUNITY_GOAL_EARNED_PRIZES,Hj),this._composers.set(S.GET_COMMUNITY_GOAL_HALL_OF_FAME,Yj),this._composers.set(S.GET_COMMUNITY_GOAL_PROGRESS,Wj),this._composers.set(S.GET_CONCURRENT_USERS_GOAL_PROGRESS,jj),this._composers.set(S.GET_CONCURRENT_USERS_REWARD,Kj),this._composers.set(S.GET_DAILY_QUEST,Xj),this._composers.set(S.GET_QUESTS,qj),this._composers.set(S.GET_SEASONAL_QUESTS_ONLY,$j),this._composers.set(S.OPEN_QUEST_TRACKER,Qj),this._composers.set(S.REDEEM_COMMUNITY_GOAL_PRIZE,Zj),this._composers.set(S.REJECT_QUEST,Jj),this._composers.set(S.START_CAMPAIGN,t6),this._composers.set(S.GET_SOUND_SETTINGS,$6),this._composers.set(S.ADD_JUKEBOX_DISK,K6),this._composers.set(S.GET_JUKEBOX_PLAYLIST,VA),this._composers.set(S.GET_NOW_PLAYING,HA),this._composers.set(S.GET_OFFICIAL_SONG_ID,X6),this._composers.set(S.GET_SONG_INFO,YA),this._composers.set(S.GET_SOUND_MACHINE_PLAYLIST,q6),this._composers.set(S.GET_USER_SONG_DISKS,WA),this._composers.set(S.REMOVE_JUKEBOX_DISK,Q6),this._composers.set(S.HELPER_TALENT_TRACK,J6),this._composers.set(S.TALENT_TRACK_GET_LEVEL,Z6),this._composers.set(S.NEW_USER_EXPERIENCE_GET_GIFTS,wj),this._composers.set(S.NEW_USER_EXPERIENCE_SCRIPT_PROCEED,LR),this._composers.set(S.WELCOME_OPEN_GIFT,R6),this._composers.set(S.WELCOME_GIFT_CHANGE_EMAIL,E8),this._composers.set(S.EMAIL_GET_STATUS,l8),this._composers.set(S.EMAIL_CHANGE,r8),this._composers.set(S.RENTABLE_SPACE_CANCEL_RENT,A6),this._composers.set(S.RENTABLE_SPACE_RENT,O6),this._composers.set(S.RENTABLE_SPACE_STATUS,y6),this._composers.set(S.RECYCLER_STATUS,e6),this._composers.set(S.RECYCLER_ITEMS,s6),this._composers.set(S.TRACKING_PERFORMANCE_LOG,e8),this._composers.set(S.TRACKING_LAG_WARNING_REPORT,t8),this._composers.set(S.ROOM_DIRECTORY_ROOM_NETWORK_OPEN_CONNECTION,B6),this._composers.set(S.RENTABLE_EXTEND_RENT_OR_BUYOUT_STRIP_ITEM,f6),this._composers.set(S.RENTABLE_EXTEND_RENT_OR_BUYOUT_FURNI,d6),this._composers.set(S.RENTABLE_GET_RENT_OR_BUYOUT_OFFER,p6)}get events(){return this._events}get composers(){return this._composers}}class I8{constructor(t){this._value=t}get value(){return this._value}}class S8{constructor(t,e){this._header=t,this._buffer=e}readBytes(t){return this._buffer?this._buffer.readBytes(t):null}readByte(){return this._buffer?this._buffer.readByte():-1}readBoolean(){return this.readByte()===1}readShort(){return this._buffer?this._buffer.readShort():-1}readInt(){return this._buffer?this._buffer.readInt():-1}readFloat(){return this._buffer?this._buffer.readFloat():-1}readDouble(){return this._buffer?this._buffer.readDouble():-1}readString(){const t=this.readShort();return this._buffer.readBytes(t).toString("utf8")}get header(){return this._header}get bytesAvailable(){return this._buffer&&this._buffer.remaining()>0}}class R8{constructor(t){this._value=t}get value(){return this._value}}class A8{encode(t,e){const s=new BT;s.writeShort(t);for(const n of e){let a=typeof n;switch(a==="object"&&(n===null?a="null":n instanceof I8?a="byte":n instanceof R8?a="short":n instanceof ArrayBuffer&&(a="arraybuffer")),a){case"undefined":case"null":s.writeShort(0);break;case"byte":s.writeByte(n.value);break;case"short":s.writeShort(n.value);break;case"number":s.writeInt(n);break;case"boolean":s.writeByte(n?1:0);break;case"string":n?s.writeString(n,!0):s.writeShort(0);break;case"arraybuffer":s.writeBytes(n);break}}const r=s.getBuffer();return r?new BT().writeInt(r.byteLength).writeBytes(r):null}decode(t){if(!t||!t.dataBuffer||!t.dataBuffer.byteLength)return null;const e=[];for(;t.dataBuffer.byteLength&&!(t.dataBuffer.byteLength<4);){const s=new Jh(t.dataBuffer),r=s.readInt();if(r>t.dataBuffer.byteLength-4)break;const n=s.readBytes(r);e.push(new S8(n.readShort(),n)),t.dataBuffer=t.dataBuffer.slice(r+4)}return e}}class O8{constructor(){this._socket=null,this._messages=new lb,this._codec=new A8,this._dataBuffer=null,this._isReady=!1,this._pendingClientMessages=[],this._pendingServerMessages=[],this._isAuthenticated=!1}init(t){!t||!t.length||(this._dataBuffer=new ArrayBuffer(0),this._socket=new WebSocket(t),this._socket.binaryType="arraybuffer",this._socket.addEventListener(Ea.CONNECTION_OPENED,e=>M().dispatchEvent(new Xt(Qe.SOCKET_OPENED))),this._socket.addEventListener(Ea.CONNECTION_CLOSED,e=>M().dispatchEvent(new Xt(Qe.SOCKET_CLOSED))),this._socket.addEventListener(Ea.CONNECTION_ERROR,e=>M().dispatchEvent(new Xt(Qe.SOCKET_ERROR))),this._socket.addEventListener(Ea.CONNECTION_MESSAGE,e=>{this._dataBuffer=this.concatArrayBuffers(this._dataBuffer,e.data),this.processReceivedData()}))}ready(){this._isReady||(this._isReady=!0,this._pendingServerMessages&&this._pendingServerMessages.length&&this.processWrappers(...this._pendingServerMessages),this._pendingClientMessages&&this._pendingClientMessages.length&&this.send(...this._pendingClientMessages),this._pendingServerMessages=[],this._pendingClientMessages=[])}authenticated(){this._isAuthenticated=!0}send(...t){if(!t)return!1;if(t=[...t],this._isAuthenticated&&!this._isReady)return this._pendingClientMessages.push(...t),!1;for(const e of t){if(!e)continue;const s=this._messages.getComposerId(e);if(s===-1){it.packets("Unknown Composer",e.constructor.name);continue}const r=e.getMessageArray(),n=this._codec.encode(s,r);if(!n){it.packets("Encoding Failed",e.constructor.name);continue}it.packets("OutgoingComposer",s,e.constructor.name,r),this.write(n.getBuffer())}return!0}write(t){this._socket.readyState===WebSocket.OPEN&&this._socket.send(t)}processReceivedData(){try{this.processData()}catch(t){it.error(t)}}processData(){const t=this.splitReceivedMessages();if(!(!t||!t.length)){if(this._isAuthenticated&&!this._isReady){this._pendingServerMessages||(this._pendingServerMessages=[]),this._pendingServerMessages.push(...t);return}this.processWrappers(...t)}}processWrappers(...t){if(!(!t||!t.length))for(const e of t){if(!e)continue;const s=this.getMessagesForWrapper(e);!s||!s.length||(it.packets("IncomingMessage",e.header,s[0].constructor.name,s[0].parser),this.handleMessages(...s))}}splitReceivedMessages(){return!this._dataBuffer||!this._dataBuffer.byteLength?null:this._codec.decode(this)}concatArrayBuffers(t,e){const s=new Uint8Array(t.byteLength+e.byteLength);return s.set(new Uint8Array(t),0),s.set(new Uint8Array(e),t.byteLength),s.buffer}getMessagesForWrapper(t){if(!t)return null;const e=this._messages.getEvents(t.header);if(!e||!e.length)return it.packets("IncomingMessage",t.header,"UNREGISTERED",t),null;try{const s=new e[0].parserClass;if(!s||!s.flush()||!s.parse(t))return null;for(const r of e)r.parser=s}catch(s){return it.error("Error parsing message",s,e[0].constructor.name),null}return e}handleMessages(...t){t=[...t];for(const e of t)e&&(e.connection=this,e.callBack&&e.callBack(e))}registerMessages(t){t&&this._messages.registerMessages(t)}addMessageEvent(t){!t||!this._messages||this._messages.registerMessageEvent(t)}removeMessageEvent(t){!t||!this._messages||this._messages.removeMessageEvent(t)}get isAuthenticated(){return this._isAuthenticated}get dataBuffer(){return this._dataBuffer}set dataBuffer(t){this._dataBuffer=t}}class y8{constructor(){this._connection=new O8,this._messages=new T8,this._pongInterval=null,this._connection.registerMessages(this._messages)}async init(){return M().addEventListener(Qe.SOCKET_CLOSED,()=>{this.stopPong()}),new Promise((t,e)=>{M().addEventListener(Qe.SOCKET_OPENED,()=>{vt().getValue("system.pong.manually",!1)&&this.startPong(),this._connection.send(new bR(null,null,null,null)),this._connection.send(new DR(vt().getValue("sso.ticket",null),Nt()))}),M().addEventListener(Qe.SOCKET_ERROR,()=>{e()}),this._connection.addMessageEvent(new bS(s=>this.sendPong())),this._connection.addMessageEvent(new dR(s=>{this._connection.authenticated(),t(),s.connection.send(new NR)})),this._connection.init(vt().getValue("socket.url"))})}startPong(){this._pongInterval&&this.stopPong(),this._pongInterval=setInterval(()=>this.sendPong(),vt().getValue("system.pong.interval.ms",2e4))}stopPong(){this._pongInterval&&(clearInterval(this._pongInterval),this._pongInterval=null)}sendPong(){var t;(t=this._connection)==null||t.send(new UR)}registerMessageEvent(t){return this._connection&&this._connection.addMessageEvent(t),t}removeMessageEvent(t){this._connection&&this._connection.removeMessageEvent(t)}get connection(){return this._connection}}const Krt=new y8,G=()=>Krt;class jc{constructor(t){this._badgeId="",this._level=1,this._base="",this._badgeId=t,this.parseText()}parseText(){let t=this._badgeId.length-1;for(;t>0&&this.isNumber(this._badgeId.charAt(t));)t--;this._base=this._badgeId.substr(0,t+1);const e=this._badgeId.substr(t+1,this._badgeId.length);e&&e!==""&&(this._level=Number.parseInt(e))}isNumber(t){const e=t.charCodeAt(0);return e>=48&&e<=57}get level(){return this._level}set level(t){this._level=Math.max(1,t)}get getBadgeId(){return this._base+this._level}get base(){return this._base}}class v8{constructor(){this._definitions=new Map,this._parameters=new Map,this._badgePointLimits=new Map,this._romanNumerals=["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII","XIII","XIV","XV","XVI","XVII","XVIII","XIX","XX","XXI","XXII","XXIII","XXIV","XXV","XXVI","XXVII","XXVIII","XXIX","XXX"]}async init(){try{const t=vt().getValue("external.texts.url").slice();if(!t||!t.length)throw new Error("Invalid localization urls");for(let e of t){if(!e||!e.length)return;e=vt().interpolate(e);const s=await fetch(e);if(s.status!==200)throw new Error("Invalid localization file");this.parseLocalization(await s.json())}G().registerMessageEvent(new GS(this.onBadgePointLimitsEvent.bind(this)))}catch(t){throw new Error(t)}}parseLocalization(t){if(!t)return!1;for(const e in t)this._definitions.set(e,t[e]);return!0}onBadgePointLimitsEvent(t){const e=t.getParser();for(const s of e.data)this.setBadgePointLimit(s.badgeId,s.limit)}getBadgePointLimit(t){return this._badgePointLimits.get(t)||-1}setBadgePointLimit(t,e){this._badgePointLimits.set(t,e)}getRomanNumeral(t){return this._romanNumerals[Math.max(0,t-1)]}getPreviousLevelBadgeId(t){const e=new jc(t);return e.level--,e.getBadgeId}hasValue(t){return this._definitions.has(t)}getValue(t,e=!0){if(!t||!t.length)return null;const s=t.match(/\$\{.[^}]*\}/g);if(s&&s.length)for(const n of s)t=t.replace(n,this.getValue(n.slice(2,-1),e));let r=this._definitions.get(t)||null;if(!r&&(r=vt().definitions.get(t),r))return r;if(r&&e){const n=this._parameters.get(t);if(n)for(const[a,o]of n)r=r.replace("%"+a+"%",o)}return r||t}getValueWithParameter(t,e,s){const r=this.getValue(t,!1),n=r.replace("%"+e+"%",s);if(r.startsWith("%{")){const a=new RegExp("%{"+e.toUpperCase()+"\\|([^|]*)\\|([^|]*)\\|([^|]*)}"),o=r.match(a);if(!o)return n;let u=-1;switch(Number.parseInt(s)){case 0:u=1;break;case 1:u=2;break;default:case 2:u=3;break}if(u==-1||typeof o[u]>"u")return n;const c=o[u];if(c)return c.replace("%%",s)}return n}getValueWithParameters(t,e,s){let r=this.getValue(t,!1);if(e)for(let n=0;n<e.length;n++){const a=e[n],o=s[n];if(o!==void 0&&(r=r.replace("%"+a+"%",o),r.startsWith("%{"))){const u=new RegExp("%{"+a.toUpperCase()+"\\|([^|]*)\\|([^|]*)\\|([^|]*)}"),l=r.match(u);if(!l)continue;const c=parseInt(o);let h=-1;switch(c){case 0:h=1;break;case 1:h=2;break;case 2:default:h=3;break}if(h===-1||typeof l[h]>"u")continue;const _=l[h];_&&(r=_.replace("%%",o))}}return r}setValue(t,e){this._definitions.set(t,e)}registerParameter(t,e,s){if(!t||t.length===0||!e||e.length===0)return;let r=this._parameters.get(t);r||(r=new Map,this._parameters.set(t,r)),r.set(e,s)}getBadgeName(t){const e=new jc(t),s=["badge_name_"+t,"badge_name_"+e.base];let r=this.fixBadLocalization(this.getExistingKey(s));return r=r.replace("%roman%",this.getRomanNumeral(e.level)),r}getBadgeDesc(t){const e=new jc(t),s=["badge_desc_"+t,"badge_desc_"+e.base];let r=this.fixBadLocalization(this.getExistingKey(s));const n=this.getBadgePointLimit(t);return n>-1&&(r=r.replace("%limit%",n.toString())),r=r.replace("%roman%",this.getRomanNumeral(e.level)),r}getExistingKey(t){for(const e of t){const s=this.getValue(e);if(s!=e)return s}return""}fixBadLocalization(t){return t.replace("${","$").replace("{","$").replace("}","$")}}const Xrt=new v8,Bu=()=>Xrt,Fi=class Fi{constructor(){this._userDataByType=new Map,this._userDataByRoomIndex=new Map,this._userBadges=new Map}getUserData(t){return this.getDataByType(t,Fi.TYPE_USER)}getPetData(t){return this.getDataByType(t,Fi.TYPE_PET)}getBotData(t){return this.getDataByType(t,Fi.TYPE_BOT)}getRentableBotData(t){return this.getDataByType(t,Fi.TYPE_RENTABLE_BOT)}getDataByType(t,e){const s=this._userDataByType.get(e);if(!s)return null;const r=s.get(t);return r||null}getUserDataByIndex(t){const e=this._userDataByRoomIndex.get(t);return e||null}getUserDataByName(t){for(const e of this._userDataByRoomIndex.values())if(!(!e||e.name!==t))return e;return null}updateUserData(t){if(!t)return;this.removeUserData(t.roomIndex);let e=this._userDataByType.get(t.type);e||(e=new Map,this._userDataByType.set(t.type,e)),e.set(t.webID,t),this._userDataByRoomIndex.set(t.roomIndex,t)}removeUserData(t){const e=this.getUserDataByIndex(t);if(!e)return;this._userDataByRoomIndex.delete(t);const s=this._userDataByType.get(e.type);s&&s.delete(e.webID)}getUserBadges(t){G().connection.send(new QA(t));const e=this._userBadges.get(t);return e||[]}setUserBadges(t,e){this._userBadges.set(t,e)}updateFigure(t,e,s,r,n){const a=this.getUserDataByIndex(t);a&&(a.figure=e,a.sex=s,a.hasSaddle=r,a.isRiding=n)}updateName(t,e){const s=this.getUserDataByIndex(t);s&&(s.name=e)}updateMotto(t,e){const s=this.getUserDataByIndex(t);s&&(s.custom=e)}updateAchievementScore(t,e){const s=this.getUserDataByIndex(t);s&&(s.activityPoints=e)}updatePetLevel(t,e){const s=this.getUserDataByIndex(t);s&&(s.petLevel=e)}updatePetBreedingStatus(t,e,s,r,n){const a=this.getUserDataByIndex(t);a&&(a.canBreed=e,a.canHarvest=s,a.canRevive=r,a.hasBreedingPermission=n)}requestPetInfo(t){this.getPetData(t)&&G().connection.send(new BR(t))}};Fi.TYPE_USER=1,Fi.TYPE_PET=2,Fi.TYPE_BOT=3,Fi.TYPE_RENTABLE_BOT=4;let Lf=Fi;class C8{constructor(){this._userData=new Lf,this._roomId=0,this._password=null,this._state=ft.CREATED,this._tradeMode=__.NO_TRADING,this._doorMode=0,this._allowPets=!1,this._controllerLevel=$i.NONE,this._ownRoomIndex=-1,this._isGuildRoom=!1,this._isRoomOwner=!1,this._isDecorating=!1,this._isSpectator=!1,this._moderationSettings=null}setControllerLevel(t){if(t>=$i.NONE&&t<=$i.MODERATOR){this._controllerLevel=t;return}this._controllerLevel=$i.NONE}setOwnRoomIndex(t){this._ownRoomIndex=t}setRoomOwner(){this._isRoomOwner=!0}start(){return this._state!==ft.CREATED||!G().connection?!1:(this._state=ft.STARTED,this.enterRoom())}enterRoom(){return G().connection?(G().connection.send(new XR(this._roomId,this._password)),!0):!1}reset(t){t!==this._roomId&&(this._roomId=t)}sendChatMessage(t,e){G().connection.send(new qm(t,e))}sendShoutMessage(t,e){G().connection.send(new NA(t,e))}sendWhisperMessage(t,e,s){G().connection.send(new UA(t,e,s))}sendChatTypingMessage(t){t?G().connection.send(new DA):G().connection.send(new LA)}sendMottoMessage(t){G().connection.send(new ZA(t))}sendDanceMessage(t){G().connection.send(new wA(t))}sendExpressionMessage(t){G().connection.send(new FA(t))}sendSignMessage(t){t<0||t>17||G().connection.send(new kA(t))}sendPostureMessage(t){G().connection.send(new BA(t))}sendDoorbellApprovalMessage(t,e){G().connection.send(new KR(t,e))}sendAmbassadorAlertMessage(t){G().connection.send(new qR(t))}sendKickMessage(t){G().connection.send(new ZR(t))}sendMuteMessage(t,e){G().connection.send(new JR(t,e,this._roomId))}sendBanMessage(t,e){G().connection.send(new $R(t,this._roomId,e))}sendGiveRightsMessage(t){G().connection.send(new QR(t))}sendTakeRightsMessage(t){G().connection.send(new tA(t))}sendPollStartMessage(t){G().connection.send(new WR(t))}sendPollRejectMessage(t){G().connection.send(new YR(t))}sendPollAnswerMessage(t,e,s){G().connection.send(new HR(t,e,s))}sendPeerUsersClassificationMessage(t){G().connection.send(new e0(t))}sendOpenPetPackageMessage(t,e){G().connection.send(new CA(t,e))}sendRoomUsersClassificationMessage(t){G().connection.send(new s0(t))}updateMoodlightData(t,e,s,r,n){let a="000000"+s.toString(16).toUpperCase();a="#"+a.substring(a.length-6),G().connection.send(new fA(t,e,a,r,n))}toggleMoodlightState(){G().connection.send(new gA)}pickupPet(t){G().connection&&G().connection.send(new uA(t))}pickupBot(t){G().connection&&G().connection.send(new sA(t))}requestMoodlightSettings(){G().connection&&G().connection.send(new dA)}openGift(t){G().connection.send(new MA(t))}mountPet(t){G().connection.send(new xf(t,!0))}dismountPet(t){G().connection.send(new xf(t,!1))}usePetProduct(t,e){G().connection.send(new VR(t,e))}removePetSaddle(t){G().connection.send(new GR(t))}togglePetBreeding(t){G().connection.send(new kR(t))}togglePetRiding(t){G().connection.send(new zR(t))}useMultistateItem(t){G().connection.send(new Xm(t))}harvestPet(t){G().connection.send(new aA(t))}compostPlant(t){G().connection.send(new rA(t))}requestPetCommands(t){G().connection.send(new FR(t))}sendScriptProceed(){G().connection.send(new LR)}sendUpdateClothingChangeFurniture(t,e,s){G().connection.send(new hA(t,e,s))}changeQueue(t){G().connection.send(new PA(t))}votePoll(t){G().connection.send(new jR(t))}get userDataManager(){return this._userData}get roomId(){return this._roomId}set roomId(t){this._roomId=t}get password(){return this._password}set password(t){this._password=t}get state(){return this._state}get isPrivateRoom(){return!0}get tradeMode(){return this._tradeMode}set tradeMode(t){this._tradeMode=t}get doorMode(){return this._doorMode}set doorMode(t){this._doorMode=t}get allowPets(){return this._allowPets}set allowPets(t){this._allowPets=t}get controllerLevel(){return this._controllerLevel}get ownRoomIndex(){return this._ownRoomIndex}get isGuildRoom(){return this._isGuildRoom}set isGuildRoom(t){this._isGuildRoom=t}get isRoomOwner(){return this._isRoomOwner}get isDecorating(){return this._isDecorating}set isDecorating(t){this._isDecorating=t}get isSpectator(){return this._isSpectator}set isSpectator(t){this._isSpectator=t}get moderationSettings(){return this._moderationSettings}set moderationSettings(t){this._moderationSettings=t}}class ai{constructor(t,e){this._connection=t,this._listener=e,this._roomId=0}dispose(){this._connection=null,this._listener=null}setRoomId(t){this._roomId=t}get connection(){return this._connection}get listener(){return this._listener}get roomId(){return this._roomId}}class M8 extends ai{constructor(t,e){super(t,e),t.addMessageEvent(new Ld(this.onRoomGenericError.bind(this)))}onRoomGenericError(t){if(!(t instanceof Ld))return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);if(!s)return;let r="";switch(e.errorCode){case c_.KICKED_OUT_OF_ROOM:r=ke.RSEME_KICKED;break;default:return}!r||r.length==0||M().dispatchEvent(new ke(r,s))}}class x8 extends ai{constructor(t,e){super(t,e),G().registerMessageEvent(new YS(this.onOpenPetPackageRequested.bind(this))),G().registerMessageEvent(new WS(this.onOpenPetPackageResult.bind(this)))}onOpenPetPackageRequested(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);s&&M().dispatchEvent(new Oa(Oa.RSOPPE_OPEN_PET_PACKAGE_REQUESTED,s,e.objectId,e.figureData,0,null))}onOpenPetPackageResult(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);s&&M().dispatchEvent(new Oa(Oa.RSOPPE_OPEN_PET_PACKAGE_RESULT,s,e.objectId,null,e.nameValidationStatus,e.nameValidationInfo))}}class P8 extends ai{constructor(t,e){super(t,e),t.addMessageEvent(new XS(this.onPollContentsEvent.bind(this))),t.addMessageEvent(new $S(this.onPollOfferEvent.bind(this))),t.addMessageEvent(new qS(this.onPollErrorEvent.bind(this))),t.addMessageEvent(new eR(this.onStartRoomPollEvent.bind(this))),t.addMessageEvent(new tR(this.onRoomPollResultEvent.bind(this)))}onPollContentsEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();if(!s)return;const r=new vr(vr.CONTENT,e,s.id);r.startMessage=s.startMessage,r.endMessage=s.endMessage,r.numQuestions=s.numQuestions,r.questionArray=s.questionArray,r.npsPoll=s.npsPoll,M().dispatchEvent(r)}onPollOfferEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();if(!s)return;const r=new vr(vr.OFFER,e,s.id);r.summary=s.headline,r.summary=s.summary,M().dispatchEvent(r)}onPollErrorEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e||!t.getParser())return;const r=new vr(vr.ERROR,e,-1);r.headline="???",r.summary="???",M().dispatchEvent(r)}onStartRoomPollEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();if(!s)return;const r=new ya(ya.VOTE_QUESTION,e,s.question,s.choices);M().dispatchEvent(r)}onRoomPollResultEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();if(!s)return;const r=new ya(ya.VOTE_RESULT,e,s.question,s.choices,s.SafeStr_7651,s.SafeStr_7654);M().dispatchEvent(r)}}class b8 extends ai{constructor(t,e){super(t,e),t.addMessageEvent(new Wm(this.onRoomUnitChatEvent.bind(this))),t.addMessageEvent(new Mh(this.onRoomUnitChatEvent.bind(this))),t.addMessageEvent(new xh(this.onRoomUnitChatEvent.bind(this))),t.addMessageEvent(new _R(this.onRoomUnitHandItemReceivedEvent.bind(this))),t.addMessageEvent(new xR(this.onRespectReceivedEvent.bind(this))),t.addMessageEvent(new CR(this.onPetRespectNoficationEvent.bind(this))),t.addMessageEvent(new MR(this.onPetSupplementedNotificationEvent.bind(this))),t.addMessageEvent(new hR(this.onFloodControlEvent.bind(this))),t.addMessageEvent(new cR(this.onRemainingMuteEvent.bind(this)))}onRoomUnitChatEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();if(!s)return;let r=Jt.CHAT_TYPE_SPEAK;t instanceof Mh?r=Jt.CHAT_TYPE_SHOUT:t instanceof xh&&(r=Jt.CHAT_TYPE_WHISPER);const n=new Jt(Jt.CHAT_EVENT,e,s.roomIndex,s.message,r,s.bubble);M().dispatchEvent(n)}onRoomUnitHandItemReceivedEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();s&&M().dispatchEvent(new Jt(Jt.CHAT_EVENT,e,s.giverUserId,"",Jt.CHAT_TYPE_HAND_ITEM_RECEIVED,gn.GENERIC,[],s.handItemType))}onRespectReceivedEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();if(!s)return;const r=e.userDataManager.getUserData(s.userId);r&&M().dispatchEvent(new Jt(Jt.CHAT_EVENT,e,r.roomIndex,"",Jt.CHAT_TYPE_RESPECT,gn.GENERIC))}onPetRespectNoficationEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();if(!s)return;const r=e.userDataManager.getPetData(s.petData.id);if(!r)return;let n=Jt.CHAT_TYPE_PETRESPECT;s.isTreat&&(n=Jt.CHAT_TYPE_PETTREAT),M().dispatchEvent(new Jt(Jt.CHAT_EVENT,e,r.roomIndex,"",n,gn.GENERIC))}onPetSupplementedNotificationEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();if(!s)return;const r=e.userDataManager.getPetData(s.petId);if(!r)return;let n=-1;const a=e.userDataManager.getUserData(s.userId);a&&(n=a.roomIndex);let o=Jt.CHAT_TYPE_PETREVIVE;switch(s.supplementType){case Ko.REVIVE:o=Jt.CHAT_TYPE_PETREVIVE;break;case Ko.REBREED_FERTILIZER:o=Jt.CHAT_TYPE_PET_REBREED_FERTILIZE;break;case Ko.SPEED_FERTILIZER:o=Jt.CHAT_TYPE_PET_SPEED_FERTILIZE;break}M().dispatchEvent(new Jt(Jt.CHAT_EVENT,e,r.roomIndex,"",o,gn.GENERIC,null,n))}onFloodControlEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();if(!s)return;const r=s.seconds;M().dispatchEvent(new Jt(Jt.FLOOD_EVENT,e,-1,r.toString(),0,0))}onRemainingMuteEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();s&&M().dispatchEvent(new Jt(Jt.CHAT_EVENT,e,e.ownRoomIndex,"",Jt.CHAT_TYPE_MUTE_REMAINING,gn.GENERIC,[],s.seconds))}}class N8 extends ai{constructor(t,e){super(t,e),t.addMessageEvent(new wd(this.onGetGuestRoomResultEvent.bind(this)))}onGetGuestRoomResultEvent(t){if(!(t instanceof wd))return;const e=t.getParser();if(!e||e.roomForward)return;const s=this.listener.getSession(this.roomId);if(!s)return;const r=e.data;s.tradeMode=r.tradeMode,s.isGuildRoom=r.habboGroupId!==0,s.doorMode=r.doorMode,s.allowPets=r.allowPets,s.moderationSettings=e.moderation,M().dispatchEvent(new ph(ph.RSDUE_ALLOW_PETS,s)),M().dispatchEvent(new ft(ft.ROOM_DATA,s))}}class U8 extends ai{constructor(t,e){super(t,e),t.addMessageEvent(new iR(this.onRoomDimmerPresets.bind(this)))}onRoomDimmerPresets(t){if(!t)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);if(!s)return;const r=new fh(fh.ROOM_DIMMER_PRESETS,s);r.selectedPresetId=e.selectedPresetId;let n=0;for(;n<e.presetCount;){const a=e.getPreset(n);a&&r.storePreset(a.id,a.type,a.color,a.brightness),n++}M().dispatchEvent(r)}}class D8 extends ai{constructor(t,e){super(t,e),t.addMessageEvent(new Vd(this.onRoomRightsEvent.bind(this))),t.addMessageEvent(new zd(this.onRoomRightsClearEvent.bind(this))),t.addMessageEvent(new Hd(this.onRoomRightsOwnerEvent.bind(this)))}onRoomRightsEvent(t){if(!(t instanceof Vd))return;const e=this.listener.getSession(this.roomId);e&&e.setControllerLevel(t.getParser().controllerLevel)}onRoomRightsClearEvent(t){if(!(t instanceof zd))return;const e=this.listener.getSession(this.roomId);e&&e.setControllerLevel($i.NONE)}onRoomRightsOwnerEvent(t){if(!(t instanceof Hd))return;const e=this.listener.getSession(this.roomId);e&&e.setRoomOwner()}}class L8 extends ai{constructor(t,e){super(t,e),t&&t.addMessageEvent(new BS(this.onFurnitureGiftOpenedEvent.bind(this)))}onFurnitureGiftOpenedEvent(t){if(!t)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);s&&M().dispatchEvent(new gh(gh.RSPE_PRESENT_OPENED,s,e.classId,e.itemType,e.productCode,e.placedItemId,e.placedItemType,e.placedInRoom,e.petFigureString))}}const Tr=class Tr extends ai{constructor(t,e){super(t,e),t.addMessageEvent(new Yd(this.onRoomEnterEvent.bind(this))),t.addMessageEvent(new ja(this.onRoomReadyMessageEvent.bind(this))),t.addMessageEvent(new Dd(this.onDesktopViewEvent.bind(this))),t.addMessageEvent(new kd(this.onRoomDoorbellAcceptedEvent.bind(this))),t.addMessageEvent(new Fd(this.onRoomDoorbellRejectedEvent.bind(this))),t.addMessageEvent(new lR(this.onYouAreSpectatorMessageEvent.bind(this)))}onRoomEnterEvent(t){t instanceof Yd&&this.listener&&this.listener.sessionUpdate(this.roomId,Tr.RS_CONNECTED)}onRoomReadyMessageEvent(t){if(!(t instanceof ja))return;const e=this.roomId,s=t.getParser().roomId;this.listener&&(this.listener.sessionReinitialize(e,s),this.listener.sessionUpdate(this.roomId,Tr.RS_READY))}onDesktopViewEvent(t){t instanceof Dd&&this.listener&&this.listener.sessionUpdate(this.roomId,Tr.RS_DISCONNECTED)}onRoomDoorbellAcceptedEvent(t){if(!(t instanceof kd)||!this.listener)return;const e=t.getParser();if(!e)return;const s=e.userName;if(!s||!s.length)this.connection.send(new bA(this.roomId));else{const r=this.listener.getSession(this.roomId);if(!r)return;M().dispatchEvent(new Ur(Ur.RSDE_ACCEPTED,r,s))}}onRoomDoorbellRejectedEvent(t){if(!(t instanceof Fd)||!this.listener)return;const e=t.getParser();if(!e)return;const s=e.userName;if(!s||!s.length)this.listener.sessionUpdate(this.roomId,Tr.RS_DISCONNECTED);else{const r=this.listener.getSession(this.roomId);if(!r)return;M().dispatchEvent(new Ur(Ur.RSDE_REJECTED,r,s))}}onYouAreSpectatorMessageEvent(t){if(this.listener){const e=this.listener.getSession(this.roomId);if(!e)return;e.isSpectator=!0,M().dispatchEvent(new mh(mh.SPECTATOR_MODE,e))}}};Tr.RS_CONNECTED="RS_CONNECTED",Tr.RS_READY="RS_READY",Tr.RS_DISCONNECTED="RS_DISCONNECTED";let Pa=Tr;class F8{constructor(){this._adultLevel=7}get id(){return this._id}set id(t){this._id=t}get level(){return this._level}set level(t){this._level=t}get maximumLevel(){return this._maximumLevel}set maximumLevel(t){this._maximumLevel=t}get experience(){return this._experience}set experience(t){this._experience=t}get levelExperienceGoal(){return this._levelExperienceGoal}set levelExperienceGoal(t){this._levelExperienceGoal=t}get energy(){return this._energy}set energy(t){this._energy=t}get maximumEnergy(){return this._maximumEnergy}set maximumEnergy(t){this._maximumEnergy=t}get happyness(){return this._happyness}set happyness(t){this._happyness=t}get maximumHappyness(){return this._maximumHappyness}set maximumHappyness(t){this._maximumHappyness=t}get ownerId(){return this._ownerId}set ownerId(t){this._ownerId=t}get ownerName(){return this._ownerName}set ownerName(t){this._ownerName=t}get respect(){return this._respect}set respect(t){this._respect=t}get age(){return this._age}set age(t){this._age=t}get unknownRarity(){return this._unknownRarity}set unknownRarity(t){this._unknownRarity=t}get saddle(){return this._saddle}set saddle(t){this._saddle=t}get rider(){return this._rider}set rider(t){this._rider=t}get skillTresholds(){return this._skillThresholds}set skillTresholds(t){this._skillThresholds=t}get publiclyRideable(){return this._publiclyRideable}set publiclyRideable(t){this._publiclyRideable=t}get breedable(){return this._breedable}set breedable(t){this._breedable=t}get fullyGrown(){return this._fullyGrown}set fullyGrown(t){this._fullyGrown=t}get dead(){return this._dead}set dead(t){this._dead=t}get rarityLevel(){return this._rarityLevel}set rarityLevel(t){this._rarityLevel=t}get maximumTimeToLive(){return this._maximumTimeToLive}set maximumTimeToLive(t){this._maximumTimeToLive=t}get remainingTimeToLive(){return this._remainingTimeToLive}set remainingTimeToLive(t){this._remainingTimeToLive=t}get remainingGrowTime(){return this._remainingGrowTime}set remainingGrowTime(t){this._remainingGrowTime=t}get publiclyBreedable(){return this._publiclyBreedable}set publiclyBreedable(t){this._publiclyBreedable=t}get adultLevel(){return this._adultLevel}}class w8{constructor(t){this._roomIndex=-1,this._name="",this._type=0,this._sex="",this._figure="",this._custom="",this._webID=0,this._groupID=0,this._groupStatus=0,this._groupName="",this._ownerId=0,this._ownerName="",this._petLevel=0,this._rarityLevel=0,this._roomIndex=t}get roomIndex(){return this._roomIndex}get activityPoints(){return this._activityPoints}set activityPoints(t){this._activityPoints=t}get name(){return this._name}set name(t){this._name=t}get type(){return this._type}set type(t){this._type=t}get sex(){return this._sex}set sex(t){this._sex=t}get figure(){return this._figure}set figure(t){this._figure=t}get custom(){return this._custom}set custom(t){this._custom=t}get webID(){return this._webID}set webID(t){this._webID=t}get groupId(){return this._groupID}set groupId(t){this._groupID=t}get groupName(){return this._groupName}set groupName(t){this._groupName=t}get groupStatus(){return this._groupStatus}set groupStatus(t){this._groupStatus=t}get ownerId(){return this._ownerId}set ownerId(t){this._ownerId=t}get ownerName(){return this._ownerName}set ownerName(t){this._ownerName=t}get rarityLevel(){return this._rarityLevel}set rarityLevel(t){this._rarityLevel=t}get hasSaddle(){return this._hasSaddle}set hasSaddle(t){this._hasSaddle=t}get isRiding(){return this._isRiding}set isRiding(t){this._isRiding=t}get canBreed(){return this._canBreed}set canBreed(t){this._canBreed=t}get canHarvest(){return this._canHarvest}set canHarvest(t){this._canHarvest=t}get canRevive(){return this._canRevive}set canRevive(t){this._canRevive=t}get hasBreedingPermission(){return this._hasBreedingPermission}set hasBreedingPermission(t){this._hasBreedingPermission=t}get petLevel(){return this._petLevel}set petLevel(t){this._petLevel=t}get botSkills(){return this._botSkills}set botSkills(t){this._botSkills=t}get isModerator(){return this._isModerator}set isModerator(t){this._isModerator=t}}class G8 extends ai{constructor(t,e){super(t,e),t.addMessageEvent(new bh(this.onRoomUnitEvent.bind(this))),t.addMessageEvent(new Nh(this.onRoomUnitInfoEvent.bind(this))),t.addMessageEvent(new Uh(this.onRoomUnitRemoveEvent.bind(this))),t.addMessageEvent(new Ph(this.onRoomUnitDanceEvent.bind(this))),t.addMessageEvent(new SR(this.onUserCurrentBadgesEvent.bind(this))),t.addMessageEvent(new zS(this.onRoomDoorbellEvent.bind(this))),t.addMessageEvent(new jm(this.onUserNameChangeMessageEvent.bind(this))),t.addMessageEvent(new NS(this.onNewFriendRequestEvent.bind(this))),t.addMessageEvent(new aR(this.onPetInfoEvent.bind(this))),t.addMessageEvent(new oR(this.onPetStatusUpdateEvent.bind(this))),t.addMessageEvent(new hV(this.onPetBreedingMessageEvent.bind(this))),t.addMessageEvent(new jS(this.onPetLevelUpdateMessageEvent.bind(this))),t.addMessageEvent(new Dk(this.onConfirmBreedingResultEvent.bind(this))),t.addMessageEvent(new Lk(this.onNestBreedingSuccessEvent.bind(this))),t.addMessageEvent(new Uk(this.onConfirmBreedingRequestEvent.bind(this))),t.addMessageEvent(new Ch(this.onPetFigureUpdateEvent.bind(this))),t.addMessageEvent(new rR(this.onPetBreedingResultEvent.bind(this))),t.addMessageEvent(new HS(this.onPetPlacingError.bind(this))),t.addMessageEvent(new VS(this.onBotError.bind(this))),t.addMessageEvent(new sR(this.onFavoriteMembershipUpdateMessageEvent.bind(this)))}onRoomUnitEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser().users,r=[];if(s&&s.length)for(const n of s){if(!n)continue;const a=new w8(n.roomIndex);a.name=n.name,a.custom=n.custom,a.activityPoints=n.activityPoints,a.figure=n.figure,a.type=n.userType,a.webID=n.webID,a.groupId=n.groupID,a.groupName=n.groupName,a.groupStatus=n.groupStatus,a.sex=n.sex,a.ownerId=n.ownerId,a.ownerName=n.ownerName,a.rarityLevel=n.rarityLevel,a.hasSaddle=n.hasSaddle,a.isRiding=n.isRiding,a.canBreed=n.canBreed,a.canHarvest=n.canHarvest,a.canRevive=n.canRevive,a.hasBreedingPermission=n.hasBreedingPermission,a.petLevel=n.petLevel,a.botSkills=n.botSkills,a.isModerator=n.isModerator,e.userDataManager.getUserData(n.roomIndex)||r.push(a),e.userDataManager.updateUserData(a)}M().dispatchEvent(new W_(e,r))}onRoomUnitInfoEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();s&&(e.userDataManager.updateFigure(s.unitId,s.figure,s.gender,!1,!1),e.userDataManager.updateMotto(s.unitId,s.motto),e.userDataManager.updateAchievementScore(s.unitId,s.achievementScore),M().dispatchEvent(new j_(e,s.unitId,s.figure,s.gender,s.motto,s.achievementScore)))}onRoomUnitRemoveEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);e&&e.userDataManager.removeUserData(t.getParser().unitId)}onRoomUnitDanceEvent(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);s&&M().dispatchEvent(new D_(s,e.unitId,e.danceId))}onUserCurrentBadgesEvent(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);s&&(s.userDataManager.setUserBadges(e.userId,e.badges),M().dispatchEvent(new Y_(s,e.userId,e.badges)))}onRoomDoorbellEvent(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=e.userName;if(!s||!s.length)return;const r=this.listener.getSession(this.roomId);r&&M().dispatchEvent(new Ur(Ur.DOORBELL,r,s))}onUserNameChangeMessageEvent(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);s&&s.userDataManager.updateName(e.id,e.newName)}onNewFriendRequestEvent(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);if(!s)return;const r=e.request;M().dispatchEvent(new F_(s,r.requestId,r.requesterUserId,r.requesterName))}onPetInfoEvent(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);if(!s)return;const r=new F8;r.id=e.id,r.level=e.level,r.maximumLevel=e.maximumLevel,r.experience=e.experience,r.levelExperienceGoal=e.levelExperienceGoal,r.energy=e.energy,r.maximumEnergy=e.maximumEnergy,r.happyness=e.happyness,r.maximumHappyness=e.maximumHappyness,r.ownerId=e.ownerId,r.ownerName=e.ownerName,r.respect=e.respect,r.age=e.age,r.unknownRarity=e.unknownRarity,r.saddle=e.saddle,r.rider=e.rider,r.breedable=e.breedable,r.fullyGrown=e.fullyGrown,r.rarityLevel=e.rarityLevel,r.dead=e.dead,r.skillTresholds=e.skillTresholds,r.publiclyRideable=e.publiclyRideable,r.maximumTimeToLive=e.maximumTimeToLive,r.remainingTimeToLive=e.remainingTimeToLive,r.remainingGrowTime=e.remainingGrowTime,r.publiclyBreedable=e.publiclyBreedable,M().dispatchEvent(new z_(s,r))}onPetStatusUpdateEvent(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);s&&(s.userDataManager.updatePetBreedingStatus(e.roomIndex,e.canBreed,e.canHarvest,e.canRevive,e.hasBreedingPermission),M().dispatchEvent(new H_(s,e.petId,e.canBreed,e.canHarvest,e.canRevive,e.hasBreedingPermission)))}onPetBreedingMessageEvent(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);s&&M().dispatchEvent(new G_(s,e.state,e.ownPetId,e.otherPetId))}onPetLevelUpdateMessageEvent(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);s&&(s.userDataManager.updatePetLevel(e.roomIndex,e.level),M().dispatchEvent(new V_(s,e.petId,e.level)))}onConfirmBreedingResultEvent(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);s&&M().dispatchEvent(new U_(s,e.breedingNestStuffId,e.result))}onNestBreedingSuccessEvent(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);s&&M().dispatchEvent(new w_(s,e.petId,e.rarityCategory))}onConfirmBreedingRequestEvent(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);s&&M().dispatchEvent(new N_(s,e.nestId,e.pet1,e.pet2,e.rarityCategories,e.resultPetType))}onPetFigureUpdateEvent(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);if(!s)return;const r=e.figureData.figuredata;s.userDataManager.updateFigure(e.roomIndex,r,"",e.hasSaddle,e.isRiding),M().dispatchEvent(new k_(s,e.petId,r))}onPetBreedingResultEvent(t){if(!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);s&&M().dispatchEvent(new B_(s,e.resultData,e.otherResultData))}onPetPlacingError(t){if(!t||!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);if(!s)return;let r="";switch(e.errorCode){case 0:r=ke.RSEME_PETS_FORBIDDEN_IN_HOTEL;break;case 1:r=ke.RSEME_PETS_FORBIDDEN_IN_FLAT;break;case 2:r=ke.RSEME_MAX_PETS;break;case 3:r=ke.RSEME_NO_FREE_TILES_FOR_PET;break;case 4:r=ke.RSEME_SELECTED_TILE_NOT_FREE_FOR_PET;break;case 5:r=ke.RSEME_MAX_NUMBER_OF_OWN_PETS;break}!r||r.length==0||M().dispatchEvent(new ke(r,s))}onBotError(t){if(!t||!this.listener)return;const e=t.getParser();if(!e)return;const s=this.listener.getSession(this.roomId);if(!s)return;let r="";switch(e.errorCode){case 0:r=ke.RSEME_BOTS_FORBIDDEN_IN_HOTEL;break;case 1:r=ke.RSEME_BOTS_FORBIDDEN_IN_FLAT;break;case 2:r=ke.RSEME_BOT_LIMIT_REACHED;break;case 3:r=ke.RSEME_SELECTED_TILE_NOT_FREE_FOR_BOT;break;case 4:r=ke.RSEME_BOT_NAME_NOT_ACCEPTED;break}!r||r.length==0||M().dispatchEvent(new ke(r,s))}onFavoriteMembershipUpdateMessageEvent(t){if(!this.listener)return;const e=t.getParser(),s=this.listener.getSession(this.roomId);if(!s)return;const r=s.userDataManager.getUserDataByIndex(e.roomIndex);r&&(r.groupId=e.groupId,r.groupName=e.groupName,M().dispatchEvent(new L_(s,e.roomIndex,e.groupId,e.status,e.groupName)))}}class B8 extends ai{constructor(t,e){super(t,e),t.addMessageEvent(new ZS(this.onQuestionEvent.bind(this))),t.addMessageEvent(new QS(this.onQuestionAnsweredEvent.bind(this))),t.addMessageEvent(new JS(this.onQuestionFinishedEvent.bind(this)))}onQuestionEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();if(!s)return;const r=new Cr(Cr.QUESTION,e,s.pollId);r.question=s.question,r.duration=s.duration,r.pollType=s.pollType,r.questionId=s.questionId,r.pollId=s.pollId,M().dispatchEvent(r)}onQuestionAnsweredEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();if(!s)return;const r=new Cr(Cr.ANSWERED,e,s.userId);r.value=s.value,r.userId=s.userId,r.answerCounts=s.answerCounts,M().dispatchEvent(r)}onQuestionFinishedEvent(t){if(!this.listener)return;const e=this.listener.getSession(this.roomId);if(!e)return;const s=t.getParser();if(!s)return;const r=new Cr(Cr.FINISHED,e);r.questionId=s.questionId,r.answerCounts=s.answerCounts,M().dispatchEvent(r)}}class k8{constructor(){this._handlers=[],this._sessions=new Map,this._pendingSession=null,this._sessionStarting=!1,this._viewerSession=null}async init(){this.createHandlers(),this.processPendingSession()}createHandlers(){const t=G().connection;t&&this._handlers.push(new b8(t,this),new N8(t,this),new U8(t,this),new D8(t,this),new Pa(t,this),new G8(t,this),new L8(t,this),new M8(t,this),new B8(t,this),new P8(t,this),new x8(t,this))}setHandlers(t){if(!(!this._handlers||!this._handlers.length))for(const e of this._handlers)e&&e.setRoomId(t.roomId)}processPendingSession(){this._pendingSession&&(this.addSession(this._pendingSession),this._pendingSession=null)}getSession(t){const e=this._sessions.get(this.getRoomId(t));return e||null}createSession(t,e=null){const s=new C8;return s.roomId=t,s.password=e,this.addSession(s)}addSession(t){return this._sessionStarting=!0,this._sessions.get(this.getRoomId(t.roomId))&&this.removeSession(t.roomId,!1),this._sessions.set(this.getRoomId(t.roomId),t),M().dispatchEvent(new ft(ft.CREATED,t)),this._viewerSession=t,this.startSession(this._viewerSession),!0}startSession(t){return t.state===ft.STARTED?!1:(this._sessionStarting=!1,t.start()?(M().dispatchEvent(new ft(ft.STARTED,t)),this.setHandlers(t),!0):(this.removeSession(t.roomId),!1))}removeSession(t,e=!0){const s=this.getSession(t);s&&(this._sessions.delete(this.getRoomId(t)),M().dispatchEvent(new ft(ft.ENDED,s,e)))}sessionUpdate(t,e){if(this.getSession(t))switch(e){case Pa.RS_CONNECTED:return;case Pa.RS_READY:return;case Pa.RS_DISCONNECTED:this.removeSession(t);return}}sessionReinitialize(t,e){const s=this.getSession(t);s&&(this._sessions.delete(this.getRoomId(t)),s.reset(e),this._sessions.set(this.getRoomId(e),s),this.setHandlers(s))}getRoomId(t){return"hard_coded_room_id"}get viewerSession(){return this._viewerSession}}const qrt=new k8,xr=()=>qrt;class z8{constructor(){this._groupBadges=new Map}init(){G().registerMessageEvent(new ja(this.onRoomReadyMessageEvent.bind(this))),G().registerMessageEvent(new OR(this.onGroupBadgesEvent.bind(this)))}onRoomReadyMessageEvent(t){G().connection.send(new JA)}onGroupBadgesEvent(t){const e=t.getParser();for(const[s,r]of e.badges.entries())this._groupBadges.set(s,r)}getGroupBadge(t){return this._groupBadges.get(t)??""}}class V8{constructor(){this._ignoredUsers=[]}init(){G().registerMessageEvent(new yR(this.onIgnoredUsersEvent.bind(this))),G().registerMessageEvent(new Km(this.onIgnoreResultEvent.bind(this)))}requestIgnoredUsers(t){G().connection.send(new jA(t))}onIgnoredUsersEvent(t){if(!t)return;const e=t.getParser();e&&(this._ignoredUsers=e.ignoredUsers)}onIgnoreResultEvent(t){if(!t)return;const e=t.getParser();if(!e)return;const s=e.name;switch(e.result){case 0:return;case 1:this.addUserToIgnoreList(s);return;case 2:this.addUserToIgnoreList(s),this._ignoredUsers.shift();return;case 3:this.removeUserFromIgnoreList(s);return}}addUserToIgnoreList(t){this._ignoredUsers.indexOf(t)<0&&this._ignoredUsers.push(t)}removeUserFromIgnoreList(t){const e=this._ignoredUsers.indexOf(t);e>=0&&this._ignoredUsers.splice(e,1)}ignoreUserId(t){G().connection.send(new qA(t))}ignoreUser(t){G().connection.send(new XA(t))}unignoreUser(t){G().connection.send(new $A(t))}isIgnored(t){return this._ignoredUsers.indexOf(t)>=0}}class MI{constructor(t,e){this._image=t,this._placeHolder=e}get image(){return this._image}get placeHolder(){return this._placeHolder}}class H8{constructor(t){this._code=t,this._parts=[]}get code(){return this._code}get parts(){return this._parts}}const _e=class _e{constructor(t,e=0,s=0,r=0){this.type=t,this.key=e,this.color=s,this.position=r}get code(){return this.key===0?null:_e.getCode(this.type,this.key,this.color,this.position)}static getCode(t,e,s,r){return(t===_e.BASE?t:e>=100?_e.SYMBOL_ALT:_e.SYMBOL)+(e<10?"0":"")+(t===_e.BASE?e:e>=100?e-100:e)+(s<10?"0":"")+s+r}calculatePosition(t){const e=this.calculateGridPos(this.position);let s=_e.CELL_WIDTH*e.x+_e.CELL_WIDTH/2-t.width/2,r=_e.CELL_HEIGHT*e.y+_e.CELL_HEIGHT/2-t.height/2;return s<0&&(s=0),s+t.width>_e.IMAGE_WIDTH&&(s=_e.IMAGE_WIDTH-t.width),r<0&&(r=0),r+t.height>_e.IMAGE_HEIGHT&&(r=_e.IMAGE_HEIGHT-t.height),new st(Math.floor(s),Math.floor(r))}calculateGridPos(t){const e=new st;return e.x=Math.floor(t%3),e.y=Math.floor(t/3),e}};_e.BASE="b",_e.SYMBOL="s",_e.SYMBOL_ALT="t",_e.BASE_PART=0,_e.LAYER_PART=1,_e.IMAGE_WIDTH=39,_e.IMAGE_HEIGHT=39,_e.CELL_WIDTH=13,_e.CELL_HEIGHT=13;let Xo=_e;const Xs=class Xs{constructor(){this._groupBases=new Map,this._groupSymbols=new Map,this._groupPartColors=new Map,this._requestedBadges=new Map,this._groupBadgesQueue=new Map,this._readyToGenerateGroupBadges=!1}async init(){G().registerMessageEvent(new US(this.onGroupBadgePartsEvent.bind(this)))}getBadgeImage(t,e=Xs.NORMAL_BADGE,s=!0){return this.getBadgeTexture(t,e)}getBadgeInfo(t){const e=this.getBadgeTexture(t);return e?new MI(e,!1):new MI(this.getBadgePlaceholder(),!0)}loadBadgeImage(t,e=Xs.NORMAL_BADGE){return Rt().getTexture(this.getBadgeUrl(t,e))?t:(this.getBadgeTexture(t,e),null)}getBadgeTexture(t,e=Xs.NORMAL_BADGE){const s=this.getBadgeUrl(t,e);if(!s||!s.length)return null;const r=Rt().getTexture(s);if(r)return r;if(e===Xs.NORMAL_BADGE)(async()=>{try{if(!await Rt().downloadAsset(s))return;const a=Rt().getTexture(s);a&&M().dispatchEvent(new Va(t,a))}catch(a){it.error(a)}})();else if(e===Xs.GROUP_BADGE){if(this._groupBadgesQueue.get(t))return;this._groupBadgesQueue.set(t,!0),this._readyToGenerateGroupBadges&&this.loadGroupBadge(t)}return this.getBadgePlaceholder()}getBadgePlaceholder(){return Rt().getTexture(vt().getValue("images.url")+"/loading_icon.png")}getBadgeUrl(t,e=Xs.NORMAL_BADGE){let s=null;switch(e){case Xs.NORMAL_BADGE:s=vt().getValue("badge.asset.url").replace("%badgename%",t);break;case Xs.GROUP_BADGE:s=t;break}return s}loadGroupBadge(t){const e=new H8(t),s=[...t.matchAll(/[b|s][0-9]{4,6}/g)];for(const r of s){const n=r[0],a=n.length===6,o=n[0],u=parseInt(n.slice(1,a?3:4)),l=parseInt(n.slice(a?3:4,a?5:6)),c=n.length<6?0:parseInt(n.slice(a?5:6,a?6:7)),h=new Xo(o,u,l,c);e.parts.push(h)}this.renderGroupBadge(e)}renderGroupBadge(t){const e=new $t,s=new wt(W.EMPTY);s.width=Xo.IMAGE_WIDTH,s.height=Xo.IMAGE_HEIGHT,e.addChild(s);for(const n of t.parts){let a=!0;const o=n.type==="b"?this._groupBases.get(n.key):this._groupSymbols.get(n.key);if(o)for(const u of o){if(!u||!u.length)continue;const l=Rt().getTexture(`badgepart_${u}`);if(!l)continue;const{x:c,y:h}=n.calculatePosition(l),_=new wt(l);_.position.set(c,h),a&&(_.tint=parseInt(this._groupPartColors.get(n.color),16)),a=!1,e.addChild(_)}}this._requestedBadges.delete(t.code),this._groupBadgesQueue.delete(t.code);const r=ue.generateTexture(e);Rt().setTexture(t.code,r),M().dispatchEvent(new Va(t.code,r))}onGroupBadgePartsEvent(t){if(!t)return;const e=t.getParser();if(e){e.bases.forEach((s,r)=>this._groupBases.set(r,s.map(n=>n.replace(".png","").replace(".gif","")))),e.symbols.forEach((s,r)=>this._groupSymbols.set(r,s.map(n=>n.replace(".png","").replace(".gif","")))),this._groupPartColors=e.partColors,this._readyToGenerateGroupBadges=!0;for(const s of this._groupBadgesQueue.keys())this.loadGroupBadge(s)}}};Xs.GROUP_BADGE="group_badge",Xs.NORMAL_BADGE="normal_badge";let ba=Xs;class xI{constructor(t,e,s,r,n,a,o,u,l,c,h,_,d,f,p,g,m,O,y,C,P,L,N,F,x,U,k,gt,X){this._type=t,this._id=e,this._fullName=s,this._className=r,this._category=n,this._revision=u,this._tileSizeX=l,this._tileSizeY=c,this._tileSizeZ=h,this._colors=_,this._hasIndexedColor=d,this._colourIndex=f,this._localizedName=a,this._description=o,this._adUrl=p,this._purchaseOfferId=g,this._purchaseCouldBeUsedForBuyout=m,this._rentOfferId=O,this._rentCouldBeUsedForBuyout=y,this._customParams=P,this._specialType=L,this._availableForBuildersClub=C,this._canStandOn=N,this._canSitOn=F,this._canLayOn=x,this._excludedFromDynamic=U,this._furniLine=k,this._environment=gt,this._rare=X}get type(){return this._type}get id(){return this._id}get className(){return this._className}set className(t){this._className=t}get fullName(){return this._fullName}get category(){return this._category}get hasIndexedColor(){return this._hasIndexedColor}get colorIndex(){return this._colourIndex}get revision(){return this._revision}get tileSizeX(){return this._tileSizeX}get tileSizeY(){return this._tileSizeY}get tileSizeZ(){return this._tileSizeZ}get colors(){return this._colors}get name(){return this._localizedName}get description(){return this._description}get adUrl(){return this._adUrl}get purchaseOfferId(){return this._purchaseOfferId}get customParams(){return this._customParams}get specialType(){return this._specialType}get rentOfferId(){return this._rentOfferId}get purchaseCouldBeUsedForBuyout(){return this._purchaseCouldBeUsedForBuyout}get rentCouldBeUsedForBuyout(){return this._rentCouldBeUsedForBuyout}get availableForBuildersClub(){return this._availableForBuildersClub}get canStandOn(){return this._canStandOn}get canSitOn(){return this._canSitOn}get canLayOn(){return this._canLayOn}get isExternalImage(){return this._className.indexOf("external_image")!==-1}get excludeDynamic(){return this._excludedFromDynamic}get furniLine(){return this._furniLine}get environment(){return this._environment}get rare(){return this._rare}}class Y8{constructor(t,e){this._floorItems=t,this._wallItems=e}async init(){const t=vt().getValue("furnidata.url");if(!t||!t.length)throw new Error("invalid furni data url");const e=await fetch(t);if(e.status!==200)throw new Error("Invalid furni data file");const s=await e.json();s.roomitemtypes&&this.parseFloorItems(s.roomitemtypes),s.wallitemtypes&&this.parseWallItems(s.wallitemtypes)}parseFloorItems(t){if(!(!t||!t.furnitype))for(const e of t.furnitype){if(!e)continue;const s=[];if(e.partcolors)for(const l of e.partcolors.color){let c=l;c.charAt(0)==="#"&&(c=c.replace("#","")),s.push(parseInt(c,16))}const r=e.classname.split("*"),n=r[0],a=r.length>1?parseInt(r[1]):0,o=r.length>1,u=new xI(Nr.FLOOR,e.id,e.classname,n,e.category,e.name,e.description,e.revision,e.xdim,e.ydim,0,s,o,a,e.adurl,e.offerid,e.buyout,e.rentofferid,e.rentbuyout,e.bc,e.customparams,e.specialtype,e.canstandon,e.cansiton,e.canlayon,e.excludeddynamic,e.furniline,e.environment,e.rare);this._floorItems.set(u.id,u),this.updateLocalizations(u)}}parseWallItems(t){if(!(!t||!t.furnitype))for(const e of t.furnitype){if(!e)continue;const s=new xI(Nr.WALL,e.id,e.classname,e.classname,e.category,e.name,e.description,e.revision,0,0,0,null,!1,0,e.adurl,e.offerid,e.buyout,e.rentofferid,e.rentbuyout,e.bc,null,e.specialtype,!1,!1,!1,e.excludeddynamic,e.furniline,e.environment,e.rare);this._wallItems.set(s.id,s),this.updateLocalizations(s)}}updateLocalizations(t){switch(t.type){case Nr.FLOOR:Bu().setValue("roomItem.name."+t.id,t.name),Bu().setValue("roomItem.desc."+t.id,t.description);return;case Nr.WALL:Bu().setValue("wallItem.name."+t.id,t.name),Bu().setValue("wallItem.desc."+t.id,t.description);return}}}class W8{constructor(t,e,s){this._type=t,this._name=e,this._description=s}get type(){return this._type}get name(){return this._name}get description(){return this._description}}class j8{constructor(t){this._products=t}async init(){const t=vt().getValue("productdata.url");if(!t||!t.length)throw new Error("invalid product data url");const e=await fetch(t);if(e.status!==200)throw new Error("Invalid product data file");const s=await e.json();this.parseProducts(s.productdata)}parseProducts(t){if(t)for(const e of t.product)e&&this._products.set(e.code,new W8(e.code,e.name,e.description))}}class K8{constructor(){this._ignoredUsersManager=new V8,this._groupInformationManager=new z8,this._clubLevel=0,this._securityLevel=0,this._isAmbassador=!1,this._noobnessLevel=-1,this._isEmailVerified=!1,this._systemOpen=!1,this._systemShutdown=!1,this._isAuthenticHabbo=!1,this._isRoomCameraFollowDisabled=!1,this._uiFlags=0,this._floorItems=new Map,this._wallItems=new Map,this._products=new Map,this._furnitureData=new Y8(this._floorItems,this._wallItems),this._productData=new j8(this._products),this._tags=[],this._badgeImageManager=new ba,this.resetUserInfo()}async init(){await Promise.all([this._furnitureData.init(),this._productData.init(),this._badgeImageManager.init(),this._ignoredUsersManager.init(),this._groupInformationManager.init()]),G().registerMessageEvent(new PS(t=>{this._figure=t.getParser().figure,this._gender=t.getParser().gender,eu.updateFigure(this._figure)})),G().registerMessageEvent(new Dh(this.onUserInfoEvent.bind(this))),G().registerMessageEvent(new TR(this.onUserPermissionsEvent.bind(this))),G().registerMessageEvent(new xS(this.onAvailabilityStatusMessageEvent.bind(this))),G().registerMessageEvent(new KS(this.onPetRespectFailed.bind(this))),G().registerMessageEvent(new hu(this.onChangeNameUpdateEvent.bind(this))),G().registerMessageEvent(new jm(this.onUserNameChangeMessageEvent.bind(this))),G().registerMessageEvent(new RR(this.onUserTags.bind(this))),G().registerMessageEvent(new ja(this.onRoomModelNameEvent.bind(this))),G().registerMessageEvent(new vR(this.onInClientLinkEvent.bind(this))),G().registerMessageEvent(new kS(this.onMysteryBoxKeysEvent.bind(this))),G().registerMessageEvent(new DS(this.onNoobnessLevelMessageEvent.bind(this))),G().registerMessageEvent(new IR(this.onAccountSafetyLockStatusChangeMessageEvent.bind(this))),G().registerMessageEvent(new AR(this.onEmailStatus.bind(this))),M().addEventListener(nu.SETTINGS_UPDATED,t=>{this._isRoomCameraFollowDisabled=t.cameraFollow,this._uiFlags=t.flags,M().dispatchEvent(new K_(this._uiFlags))})}resetUserInfo(){this._userId=0,this._name=null,this._figure=null,this._gender=null,this._realName=null,this._canChangeName=!1,this._safetyLocked=!1}getAllFurnitureData(){return[...Array.from(this._floorItems.values()),...Array.from(this._wallItems.values())]}onUserInfoEvent(t){if(!t||!t.connection)return;this.resetUserInfo();const e=t.getParser().userInfo;e&&(this._userId=e.userId,this._name=e.username,this._figure=e.figure,this._gender=e.gender,this._realName=e.realName,this._respectsReceived=e.respectsReceived,this._respectsLeft=e.respectsRemaining,this._respectsPetLeft=e.respectsPetRemaining,this._canChangeName=e.canChangeName,this._safetyLocked=e.safetyLocked,this._ignoredUsersManager.requestIgnoredUsers(e.username))}onUserPermissionsEvent(t){!t||!t.connection||(this._clubLevel=t.getParser().clubLevel,this._securityLevel=t.getParser().securityLevel,this._isAmbassador=t.getParser().isAmbassador)}onAvailabilityStatusMessageEvent(t){if(!t||!t.connection)return;const e=t.getParser();e&&(this._systemOpen=e.isOpen,this._systemShutdown=e.onShutdown,this._isAuthenticHabbo=e.isAuthenticUser)}onPetRespectFailed(t){!t||!t.connection||this._respectsPetLeft++}onChangeNameUpdateEvent(t){if(!t||!t.connection)return;const e=t.getParser();e&&e.resultCode===hu.NAME_OK&&(this._canChangeName=!1,M().dispatchEvent(new Eh(e.name)))}onUserNameChangeMessageEvent(t){if(!t||!t.connection)return;const e=t.getParser();e&&e.webId===this.userId&&(this._name=e.newName,this._canChangeName=!1,M().dispatchEvent(new Eh(this._name)))}onUserTags(t){if(!t||!t.connection)return;const e=t.getParser();e&&(this._tags=e.tags)}onRoomModelNameEvent(t){if(!t)return;const e=t.getParser();e&&eu.roomVisited(e.roomId)}onInClientLinkEvent(t){if(!t)return;const e=t.getParser();e&&g_(e.link)}onMysteryBoxKeysEvent(t){if(!t)return;const e=t.getParser();e&&M().dispatchEvent(new b_(e.boxColor,e.keyColor))}onNoobnessLevelMessageEvent(t){this._noobnessLevel=t.getParser().noobnessLevel,this._noobnessLevel!==Yo.OLD_IDENTITY&&vt().setValue("new.identity",1)}onAccountSafetyLockStatusChangeMessageEvent(t){if(!t)return;const e=t.getParser();e&&(this._safetyLocked=e.status===Sh.SAFETY_LOCK_STATUS_LOCKED)}onEmailStatus(t){var e;this._isEmailVerified=((e=t==null?void 0:t.getParser())==null?void 0:e.isVerified)??!1}getFloorItemData(t){const e=this._floorItems.get(t);return e||null}getFloorItemDataByName(t){if(!t||!this._floorItems||!this._floorItems.size)return null;for(const e of this._floorItems.values())if(!(!e||e.className!==t))return e;return null}getWallItemData(t){const e=this._wallItems.get(t);return e||null}getWallItemDataByName(t){if(!t||!this._wallItems||!this._wallItems.size)return null;for(const e of this._wallItems.values())if(!(!e||e.className!==t))return e;return null}getProductData(t){return this._products.get(t)}getBadgeUrl(t){return this._badgeImageManager.getBadgeUrl(t)}getGroupBadgeUrl(t){return this._badgeImageManager.getBadgeUrl(t,ba.GROUP_BADGE)}getBadgeImage(t){return this._badgeImageManager.getBadgeImage(t)}getGroupBadgeImage(t){return this._badgeImageManager.getBadgeImage(t,ba.GROUP_BADGE)}getUserTags(t){t<0||this.send(new KA(t))}loadBadgeImage(t){return this._badgeImageManager.loadBadgeImage(t)}loadGroupBadgeImage(t){return this._badgeImageManager.loadBadgeImage(t,ba.GROUP_BADGE)}hasSecurity(t){return this._securityLevel>=t}giveRespect(t){t<0||this._respectsLeft<=0||(this.send(new t0(t)),this._respectsLeft--)}givePetRespect(t){t<0||this._respectsPetLeft<=0||(this.send(new wR(t)),this._respectsPetLeft--)}sendSpecialCommandMessage(t,e=0){this.send(new qm(t))}ignoreUser(t){this._ignoredUsersManager.ignoreUser(t)}unignoreUser(t){this._ignoredUsersManager.unignoreUser(t)}isUserIgnored(t){return this._ignoredUsersManager.isIgnored(t)}getGroupBadge(t){return this._groupInformationManager.getGroupBadge(t)}send(t){G().connection.send(t)}get userId(){return this._userId}get userName(){return this._name}get figure(){return this._figure}get gender(){return this._gender}get realName(){return this._realName}get ignoredUsersManager(){return this._ignoredUsersManager}get groupInformationManager(){return this._groupInformationManager}get respectsReceived(){return this._respectsReceived}get respectsLeft(){return this._respectsLeft}get respectsPetLeft(){return this._respectsPetLeft}get canChangeName(){return this._canChangeName}get clubLevel(){return this._clubLevel}get securityLevel(){return this._securityLevel}get isAmbassador(){return this._isAmbassador}get isEmailVerified(){return this._isEmailVerified}get isNoob(){return this._noobnessLevel!==Yo.OLD_IDENTITY}get isRealNoob(){return this._noobnessLevel===Yo.REAL_NOOB}get isSystemOpen(){return this._systemOpen}get isSystemShutdown(){return this._systemShutdown}get isAuthenticHabbo(){return this._isAuthenticHabbo}get isModerator(){return this._securityLevel>=d_.MODERATOR}get isCameraFollowDisabled(){return this._isRoomCameraFollowDisabled}get uiFlags(){return this._uiFlags}get tags(){return this._tags}}const $rt=new K8,Ka=()=>$rt,vl=class vl{};vl.NO_CLUB=0,vl.CLUB=1,vl.VIP=2;let PI=vl;const Cl=class Cl{constructor(t,e,s,r,n,a,o){this._layerTags=[],this._primaryColor=t&16777215,this._secondaryColor=e&16777215,this._breed=s,this._tag=r>-1&&r<Cl.COLOR_TAGS.length?Cl.COLOR_TAGS[r]:"",this._id=n,this._isMaster=a,this._layerTags=o}get primaryColor(){return this._primaryColor}get secondaryColor(){return this._secondaryColor}get breed(){return this._breed}get tag(){return this._tag}get id(){return this._id}get isMaster(){return this._isMaster}get layerTags(){return this._layerTags}};Cl.COLOR_TAGS=["Null","Black","White","Grey","Red","Orange","Pink","Green","Lime","Blue","Light-Blue","Dark-Blue","Yellow","Brown","Dark-Brown","Beige","Cyan","Purple","Gold"];let Fh=Cl;const Bt=class Bt{constructor(){this._images=new Map,this._activeObjects={},this._activeObjectTypes=new Map,this._activeObjectTypeIds=new Map,this._objectTypeAdUrls=new Map,this._wallItems={},this._wallItemTypes=new Map,this._wallItemTypeIds=new Map,this._furniRevisions=new Map,this._pets={},this._petColors=new Map,this._objectAliases=new Map,this._objectOriginalNames=new Map,this._pendingContentTypes=[]}async init(){this.processFurnitureData(Ka().getAllFurnitureData());for(const[t,e]of vt().getValue("pet.types").entries())this._pets[e]=t;await Promise.all(Bt.MANDATORY_LIBRARIES.map(t=>this.downloadAsset(t)))}processFurnitureData(t){if(t)for(const e of t){if(!e)continue;const s=e.id;let r=e.className;e.hasIndexedColor&&(r=r+"*"+e.colorIndex);const n=e.revision,a=e.adUrl;a&&a.length>0&&this._objectTypeAdUrls.set(r,a);let o=e.className;e.type===Nr.FLOOR?(this._activeObjectTypes.set(s,r),this._activeObjectTypeIds.set(r,s),this._activeObjects[o]||(this._activeObjects[o]=1)):e.type===Nr.WALL&&(o==="post.it"&&(r="post_it",o="post_it"),o==="post.it.vd"&&(r="post_it_vd",o="post_id_vd"),this._wallItemTypes.set(s,r),this._wallItemTypeIds.set(r,s),this._wallItems[o]||(this._wallItems[o]=1));const u=this._furniRevisions.get(o);n>u&&(this._furniRevisions.delete(o),this._furniRevisions.set(o,n))}}getFurnitureFloorNameForTypeId(t){const e=this._activeObjectTypes.get(t);return this.removeColorIndex(e)}getFurnitureWallNameForTypeId(t,e=null){let s=this._wallItemTypes.get(t);return s==="poster"&&e!==null&&(s=s+e),this.removeColorIndex(s)}getFurnitureFloorColorIndex(t){const e=this._activeObjectTypes.get(t);return e?this.getColorIndexFromName(e):-1}getFurnitureWallColorIndex(t){const e=this._wallItemTypes.get(t);return e?this.getColorIndexFromName(e):-1}getColorIndexFromName(t){if(!t)return-1;const e=t.indexOf("*");return e===-1?0:parseInt(t.substr(e+1))}removeColorIndex(t){if(!t)return null;const e=t.indexOf("*");return e===-1?t:t.substr(0,e)}getRoomObjectAdUrl(t){const e=this._objectTypeAdUrls.get(t);return e||""}getPetColorResult(t,e){const s=this._petColors.get(t);return s?s.get(e):null}getPetColorResultsForTag(t,e){const s=this._petColors.get(t),r=[];if(s)for(const n of s.values())n.tag===e&&r.push(n);return r}getCollection(t){return Rt().getCollection(t)}getImage(t){if(!t)return null;const e=this._images.get(t);if(!e)return null;const s=new Image;return s.src=e.src,s}addAssetToCollection(t,e,s,r=!0){return Rt().addAssetToCollection(t,e,s,r)}getPlaceholderName(t){switch(this.getCategoryForType(t)){case D.FLOOR:return Bt.PLACE_HOLDER;case D.WALL:return Bt.PLACE_HOLDER_WALL;default:return this._pets[t]!==void 0?Bt.PLACE_HOLDER_PET:Bt.PLACE_HOLDER_DEFAULT}}getCategoryForType(t){return t?this._activeObjects[t]!==void 0?D.FLOOR:this._wallItems[t]!==void 0?D.WALL:this._pets[t]!==void 0?D.UNIT:t.indexOf("poster")===0?D.WALL:t==="room"?D.ROOM:t===jt.USER||t===jt.PET||t===jt.BOT||t===jt.RENTABLE_BOT?D.UNIT:t===Bt.TILE_CURSOR||t===Bt.SELECTION_ARROW?D.CURSOR:D.MINIMUM:D.MINIMUM}getPetNameForType(t){return vt().getValue("pet.types")[t]||null}isLoaderType(t){return t=jt.getRealType(t),t!==j.USER}downloadImage(t,e,s,r=null){let n=null,a=[];if(e&&e.indexOf(",")>=0&&(n=e,e=n.split(",")[0]),n?a=this.getAssetUrls(n,s,!0):a=this.getAssetUrls(e,s,!0),a&&a.length){const o=a[0],u=new Image;return u.src=o,u.onload=()=>{u.onerror=null,this._images.set([e,s].join("_"),u),this._iconListener.onRoomContentLoaded(t,[e,s].join("_"),!0)},u.onerror=()=>{u.onload=null,it.error("Failed to download asset",o),this._iconListener.onRoomContentLoaded(t,[e,s].join("_"),!1)},!0}return!1}downloadAssetSync(t){var s;const e=(s=this.getAssetUrls(t))==null?void 0:s[0];!e||!e.length||this._pendingContentTypes.indexOf(t)>=0||(this._pendingContentTypes.push(t),Rt().downloadAsset(e).then(()=>{const r=this._pets[t];if(r!==void 0){const n=this.getCollection(t),a=n.getPaletteNames(),o=new Map;for(const u of a){const l=n.getPalette(u),c=n.data.palettes[u],h=l.primaryColor,_=l.secondaryColor,d=c.breed!==void 0?c.breed:0,f=c.colorTag!==void 0?c.colorTag:-1,p=c.master!==void 0?c.master:!1,g=c.tags!==void 0?c.tags:[];o.set(parseInt(u),new Fh(h,_,d,f,u,p,g))}this._petColors.set(r,o)}M().dispatchEvent(new Ts(Ts.RCLE_SUCCESS,t))}).catch(r=>{M().dispatchEvent(new Ts(Ts.RCLE_FAILURE,t))}))}async downloadAsset(t){var r;const e=(r=this.getAssetUrls(t))==null?void 0:r[0];if(!e||!e.length||this._pendingContentTypes.indexOf(t)>=0)return;if(this._pendingContentTypes.push(t),!await Rt().downloadAsset(e)){M().dispatchEvent(new Ts(Ts.RCLE_FAILURE,t));return}const s=this._pets[t];if(s!==void 0){const n=this.getCollection(t),a=n.getPaletteNames(),o=new Map;for(const u of a){const l=n.getPalette(u),c=n.data.palettes[u],h=l.primaryColor,_=l.secondaryColor,d=c.breed!==void 0?c.breed:0,f=c.colorTag!==void 0?c.colorTag:-1,p=c.master!==void 0?c.master:!1,g=c.tags!==void 0?c.tags:[];o.set(parseInt(u),new Fh(h,_,d,f,u,p,g))}this._petColors.set(s,o)}M().dispatchEvent(new Ts(Ts.RCLE_SUCCESS,t))}getAssetAliasName(t){const e=this._objectAliases.get(t);return e||t}setAssetAliasName(t,e){this._objectAliases.set(t,e),this._objectOriginalNames.set(e,t)}getAssetOriginalName(t){const e=this._objectOriginalNames.get(t);return e||t}getAssetUrls(t,e=null,s=!1){switch(t){case Bt.PLACE_HOLDER:return[this.getAssetUrlWithGenericBase(Bt.PLACE_HOLDER)];case Bt.PLACE_HOLDER_WALL:return[this.getAssetUrlWithGenericBase(Bt.PLACE_HOLDER_WALL)];case Bt.PLACE_HOLDER_PET:return[this.getAssetUrlWithGenericBase(Bt.PLACE_HOLDER_PET)];case Bt.ROOM:return[this.getAssetUrlWithGenericBase("room")];case Bt.TILE_CURSOR:return[this.getAssetUrlWithGenericBase(Bt.TILE_CURSOR)];case Bt.SELECTION_ARROW:return[this.getAssetUrlWithGenericBase(Bt.SELECTION_ARROW)];default:{const r=this.getCategoryForType(t);if(r===D.FLOOR||r===D.WALL){const n=this.getAssetAliasName(t);let a=s?this.getAssetUrlWithFurniIconBase(n):this.getAssetUrlWithFurniBase(t);if(s){const o=e&&e!==""&&this._activeObjectTypeIds.has(n+"*"+e);a=a.replace(/%param%/gi,o?"_"+e:"")}return[a]}return r===D.UNIT?[this.getAssetUrlWithPetBase(t)]:null}}}getAssetIconUrl(t,e){let s=null,r=[];return t&&t.indexOf(",")>=0&&(s=t,t=s.split(",")[0]),s?r=this.getAssetUrls(s,e,!0):r=this.getAssetUrls(t,e,!0),r&&r.length?r[0]:null}getAssetUrlWithGenericBase(t){return vt().getValue("generic.asset.url").replace(/%libname%/gi,t)}getAssetUrlWithFurniBase(t){return vt().getValue("furni.asset.url").replace(/%libname%/gi,t)}getAssetUrlWithFurniIconBase(t){return vt().getValue("furni.asset.icon.url").replace(/%libname%/gi,t)}getAssetUrlWithPetBase(t){return vt().getValue("pet.asset.url").replace(/%libname%/gi,t)}setRoomObjectRoomId(t,e){const s=t&&t.model;s&&s.setValue(I.OBJECT_ROOM_ID,e)}setIconListener(t){this._iconListener=t}get pets(){return this._pets}};Bt.PLACE_HOLDER="place_holder",Bt.PLACE_HOLDER_WALL="place_holder_wall",Bt.PLACE_HOLDER_PET="place_holder_pet",Bt.PLACE_HOLDER_DEFAULT=Bt.PLACE_HOLDER,Bt.ROOM="room",Bt.TILE_CURSOR="tile_cursor",Bt.SELECTION_ARROW="selection_arrow",Bt.MANDATORY_LIBRARIES=[Bt.PLACE_HOLDER,Bt.PLACE_HOLDER_WALL,Bt.PLACE_HOLDER_PET,Bt.ROOM,Bt.TILE_CURSOR,Bt.SELECTION_ARROW];let Ff=Bt;const Qrt=new Ff,Hs=()=>Qrt;class bI{constructor(t,e,s,r){this._x=t,this._y=e,this._width=s,this._height=r}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}}class i0{constructor(){this._width=0,this._height=0,this._wallHeight=0,this._fixedWallsHeight=0,this._tileMap=[],this._holeMap=[],this._doors=[],this._dimensions={minX:0,maxX:0,minY:0,maxY:0}}get width(){return this._width}set width(t){this._width=t}get height(){return this._height}set height(t){this._height=t}get wallHeight(){return this._wallHeight}set wallHeight(t){this._wallHeight=t}get fixedWallsHeight(){return this._fixedWallsHeight}set fixedWallsHeight(t){this._fixedWallsHeight=t}get tileMap(){return this._tileMap}get holeMap(){return this._holeMap}get doors(){return this._doors}get dimensions(){return this._dimensions}}class X8{constructor(){this._masks=[]}get masks(){return this._masks}}class r0{constructor(){this._map=new Map,this._updateCounter=0}dispose(){this._map.clear(),this._updateCounter=0}getValue(t){return this._map.get(t)}setValue(t,e){this._map.has(t)&&this._map.get(t)===e||(this._map.set(t,e),this._updateCounter++)}removeKey(t){t&&(this._map.delete(t),this._updateCounter++)}get updateCounter(){return this._updateCounter}}const Kp=class Kp{constructor(t,e,s){this._model=new r0,this._location=new v,this._direction=new v,this._states=[],this._visualization=null,this._logic=null,this._pendingLogicMessages=[],this._updateCounter=0,this._isReady=!1,this._id=t,this._instanceId=Kp.OBJECT_COUNTER++,this._type=s;let r=e-1;for(;r>=0;)this._states[r]=0,r--}dispose(){this._pendingLogicMessages=[],this.setVisualization(null),this.setLogic(null),this._model&&this._model.dispose()}getLocation(){return this._location}setLocation(t){t&&(t.x===this._location.x&&t.y===this._location.y&&t.z===this._location.z||(this._location.x=t.x,this._location.y=t.y,this._location.z=t.z,this._updateCounter++))}getDirection(){return this._direction}setDirection(t){t&&(t.x===this._direction.x&&t.y===this._direction.y&&t.z===this._direction.z||(this._direction.x=(t.x%360+360)%360,this._direction.y=(t.y%360+360)%360,this._direction.z=(t.z%360+360)%360,this._updateCounter++))}getState(t=0){return t>=0&&t<this._states.length?this._states[t]:-1}setState(t,e=0){return e>=0&&e<this._states.length?(this._states[e]!==t&&(this._states[e]=t,this._updateCounter++),!0):!1}setVisualization(t){this._visualization!==t&&(this._visualization&&this._visualization.dispose(),this._visualization=t,this._visualization&&(this._visualization.object=this))}setLogic(t){if(this._logic===t)return;const e=this._logic;if(e&&(this._logic=null,e.setObject(null)),this._logic=t,this._logic)for(this._logic.setObject(this);this._pendingLogicMessages.length;){const s=this._pendingLogicMessages.shift();this._logic.processUpdateMessage(s)}}processUpdateMessage(t){if(this._logic)return this._logic.processUpdateMessage(t);this._pendingLogicMessages.push(t)}tearDown(){this._logic&&this._logic.tearDown()}get id(){return this._id}get instanceId(){return this._instanceId}get type(){return this._type}get model(){return this._model}get visualization(){return this._visualization}get mouseHandler(){return this._logic}get logic(){return this._logic}get location(){return this._location}get direction(){return this._direction}get updateCounter(){return this._updateCounter}set updateCounter(t){this._updateCounter=t}get isReady(){return this._isReady}set isReady(t){this._isReady=t}};Kp.OBJECT_COUNTER=0;let wf=Kp;const Xp=class Xp{constructor(t,e,s){this.type=t,this.loc=e,this.category=s}get loc(){return this._loc}set loc(t){this._loc||(this._loc=new v),this._loc.assign(t)}get type(){return this._type}set type(t){this._type=t}get category(){return this._category}set category(t){this._category=t}dispose(){this._loc=null}};Xp.WINDOW="window",Xp.HOLE="hole";let xn=Xp;class n0{constructor(){this._masks=new Map}get maskCount(){return this._masks.size}dispose(){this._masks&&(this.reset(),this._masks=null)}initialize(t){if(!t)return!1;if(this._masks.clear(),t.masks.length)for(const e of t.masks){if(!e)continue;const s=e.locations.length?e.locations[0]:null;s&&this._masks.set(e.id,new xn(e.type,s,e.category))}return!0}reset(){for(const t of this._masks.values())t&&t.dispose();this._masks.clear()}addMask(t,e,s,r){const n=new xn(e,s,r);this._masks.delete(t),this._masks.set(t,n)}removeMask(t){const e=this._masks.get(t);return e?(this._masks.delete(t),e.dispose(),!0):!1}getXML(){const t=new X8;for(const[e,s]of this._masks.entries()){if(!s)continue;const r=this.getMaskType(s),n=this.getMaskCategory(s),a=this.getMaskLocation(s);if(r&&n&&a){const o={id:e,type:r,category:n,locations:[{x:a.x,y:a.y,z:a.z}]};t.masks.push(o)}}return t}getMaskLocation(t){return t?t.loc:null}getMaskType(t){return t?t.type:null}getMaskCategory(t){return t?t.category:null}get masks(){return this._masks}}class q8{constructor(t,e,s,r){this._leftSideLoc=0,this._rightSideLoc=0,this._leftSideLength=0,this._rightSideLength=0,this._leftSideLoc=t,this._rightSideLoc=e,this._leftSideLength=s,this._rightSideLength=r}get leftSideLoc(){return this._leftSideLoc}get rightSideLoc(){return this._rightSideLoc}get leftSideLength(){return this._leftSideLength}get rightSideLength(){return this._rightSideLength}}const la=class la{constructor(t,e,s,r,n){this._type=0,this._loc=null,this._leftSide=null,this._rightSide=null,this._normal=null,this._normalDirection=null;let a,o,u,l,c,h,_,d;if(this._secondaryNormals=[],this._masks=[],this._loc=new v,this._loc.assign(e),this._leftSide=new v,this._leftSide.assign(s),this._rightSide=new v,this._rightSide.assign(r),this._type=t,s!=null&&r!=null&&(this._normal=v.crossProduct(s,r),a=0,o=0,u=0,l=0,c=0,this.normal.x!=0||this.normal.y!=0?(l=this.normal.x,c=this.normal.y,a=360+Math.atan2(c,l)/Math.PI*180,a>=360&&(a=a-360),l=Math.sqrt(this.normal.x*this.normal.x+this.normal.y*this.normal.y),c=this.normal.z,o=360+Math.atan2(c,l)/Math.PI*180,o>=360&&(o=o-360)):this.normal.z<0?o=90:o=270,this._normalDirection=new v(a,o,u)),n!=null&&n.length>0)for(h=0;h<n.length;)_=n[h],_!=null&&_.length>0&&(d=new v,d.assign(_),d.multiply(1/d.length),this._secondaryNormals.push(d)),h++}get type(){return this._type}get loc(){return this._loc}get leftSide(){return this._leftSide}get rightSide(){return this._rightSide}get normal(){return this._normal}get normalDirection(){return this._normalDirection}get secondaryNormalCount(){return this._secondaryNormals.length}get maskCount(){return this._masks.length}getSecondaryNormal(t){if(t<0||t>=this.secondaryNormalCount)return null;const e=new v;return e.assign(this._secondaryNormals[t]),e}addMask(t,e,s,r){const n=new q8(t,e,s,r);this._masks.push(n)}getMask(t){return t<0||t>=this.maskCount?null:this._masks[t]}getMaskLeftSideLoc(t){const e=this.getMask(t);return e!=null?e.leftSideLoc:-1}getMaskRightSideLoc(t){const e=this.getMask(t);return e!=null?e.rightSideLoc:-1}getMaskLeftSideLength(t){const e=this.getMask(t);return e!=null?e.leftSideLength:-1}getMaskRightSideLength(t){const e=this.getMask(t);return e!=null?e.rightSideLength:-1}};la.PLANE_UNDEFINED=0,la.PLANE_FLOOR=1,la.PLANE_WALL=2,la.PLANE_LANDSCAPE=3,la.PLANE_BILLBOARD=4;let oe=la;const wo=class wo{constructor(){this._corners=[],this._endPoints=[],this._directions=[],this._lengths=[],this._leftTurns=[],this._borders=[],this._hideWalls=[],this._manuallyLeftCut=[],this._manuallyRightCut=[],this._addDuplicates=!1,this._count=0}addWall(t,e,s,r,n){(this._addDuplicates||this.checkIsNotDuplicate(t,e,s,r,n))&&(this._corners.push(t),this._directions.push(e),this._lengths.push(s),this._borders.push(r),this._leftTurns.push(n),this._hideWalls.push(!1),this._manuallyLeftCut.push(!1),this._manuallyRightCut.push(!1),this._count++)}checkIsNotDuplicate(t,e,s,r,n){let a=0;for(;a<this._count;){if(this._corners[a].x==t.x&&this._corners[a].y==t.y&&this._directions[a]==e&&this._lengths[a]==s&&this._borders[a]==r&&this._leftTurns[a]==n)return!1;a++}return!0}get count(){return this._count}getCorner(t){return this._corners[t]}getEndPoint(t){return this.calculateWallEndPoints(),this._endPoints[t]}getLength(t){return this._lengths[t]}getDirection(t){return this._directions[t]}getBorder(t){return this._borders[t]}getHideWall(t){return this._hideWalls[t]}getLeftTurn(t){return this._leftTurns[t]}getManuallyLeftCut(t){return this._manuallyLeftCut[t]}getManuallyRightCut(t){return this._manuallyRightCut[t]}setHideWall(t,e){this._hideWalls[t]=e}setLength(t,e){e<this._lengths[t]&&(this._lengths[t]=e,this._manuallyRightCut[t]=!0)}moveCorner(t,e){let s;if(e>0&&e<this._lengths[t]){const r=this._corners[t];s=wo.WALL_DIRECTION_VECTORS[this.getDirection(t)],this._corners[t]=new st(r.x+e*s.x,r.y+e*s.y),this._lengths[t]=this._lengths[t]-e,this._manuallyLeftCut[t]=!0}}calculateWallEndPoints(){let t,e,s,r,n;if(this._endPoints.length!=this.count)for(this._endPoints=[],t=0;t<this.count;)e=this.getCorner(t),s=new st(e.x,e.y),r=wo.WALL_DIRECTION_VECTORS[this.getDirection(t)],n=this.getLength(t),s.x=s.x+r.x*n,s.y=s.y+r.y*n,this._endPoints.push(s),t++}};wo.WALL_DIRECTION_VECTORS=[new v(1,0,0),new v(0,1,0),new v(-1,0,0),new v(0,-1,0)],wo.WALL_NORMAL_VECTORS=[new v(0,1,0),new v(-1,0,0),new v(0,-1,0),new v(1,0,0)];let gi=wo;const Ot=class Ot{constructor(){this._width=0,this._height=0,this._fixedWallHeight=-1,this._minX=0,this._maxX=0,this._minY=0,this._maxY=0,this._floorHeight=0,this._restrictsScaling=!1,this._restrictedScale=1,this._tileMatrix=[],this._tileMatrixOriginal=[],this._highlights=[],this._planes=[],this._floorHoleMatrix=[],this._wallHeight=3.6,this._wallThicknessMultiplier=1,this._floorThicknessMultiplier=1,this._floorHoles=new Map,this._floorHolesInverted=new Map}get minX(){return this._minX}get maxX(){return this._maxX}get minY(){return this._minY}get maxY(){return this._maxY}get wallHeight(){return this._fixedWallHeight!=-1?this._fixedWallHeight+3.6:this._wallHeight}set wallHeight(t){t<0&&(t=0),this._wallHeight=t}get wallThicknessMultiplier(){return this._wallThicknessMultiplier}set wallThicknessMultiplier(t){t<0&&(t=0),this._wallThicknessMultiplier=t}get floorThicknessMultiplier(){return this._floorThicknessMultiplier}set floorThicknessMultiplier(t){t<0&&(t=0),this._floorThicknessMultiplier=t}get floorHeight(){return this._fixedWallHeight!=-1?this._fixedWallHeight:this._floorHeight}get restrictsDragging(){return this._restrictsDragging}set restrictsDragging(t){this._restrictsDragging=t}get restrictsScaling(){return this._restrictsScaling}set restrictsScaling(t){this._restrictsScaling=t}get restrictedScale(){return this._restrictedScale}set restrictedScale(t){this._restrictedScale=t}get tileMapWidth(){return this._width}get tileMapHeight(){return this._height}get planeCount(){return this._planes.length}static getFloorHeight(t){const e=t.length;if(!e)return 0;let s=0,r=0;for(;r<e;){const n=t[r];let a=0;for(;a<n.length;){const o=n[a];o>s&&(s=o),a++}r++}return s}static findEntranceTile(t){if(!t)return null;const e=t.length;if(!e)return null;const s=[];let r=0;for(;r<e;){const n=t[r];if(!n||!n.length)return null;let a=0;for(;a<n.length;){if(n[a]>=0){s.push(a);break}a++}s.length<r+1&&s.push(n.length+1),r++}for(r=1;r<s.length-1;){if(Math.trunc(s[r])<=Math.trunc(s[r-1])-1&&Math.trunc(s[r])<=Math.trunc(s[r+1])-1)return new st(Math.trunc(s[r]|0),r);r++}return null}static expandFloorTiles(t){let e,s,r,n,a,o,u,l,c,h,_,d;const f=t.length,p=t[0].length,g=[];for(s=0;s<f*4;)g[s]=[],s++;let m=0;for(s=0;s<f;){for(a=0,e=0;e<p;){if(o=t[s][e],o<0||o<=255)for(n=0;n<4;){for(r=0;r<4;)g[m+n]===void 0&&(g[m+n]=[]),g[m+n][a+r]=o<0?o:o*4,r++;n++}else{for(u=(o&255)*4,l=u+(o>>11&1)*3,c=u+(o>>10&1)*3,h=u+(o>>9&1)*3,_=u+(o>>8&1)*3,r=0;r<3;)d=r+1,g[m][a+r]=(l*(3-r)+c*r)/3,g[m+3][a+d]=(h*(3-d)+_*d)/3,g[m+d][a]=(l*(3-d)+h*d)/3,g[m+r][a+3]=(c*(3-r)+_*r)/3,r++;g[m+1][a+1]=l>u?u+2:u+1,g[m+1][a+2]=c>u?u+2:u+1,g[m+2][a+1]=h>u?u+2:u+1,g[m+2][a+2]=_>u?u+2:u+1}a=a+4,e++}m=m+4,s++}return g}static addTileTypes(t){let e,s,r,n,a,o,u,l,c,h,_,d,f;const p=t.length-1,g=t[0].length-1;for(s=1;s<p;){for(e=1;e<g;)r=t[s][e],r<0||(n=t[s-1][e-1]&255,a=t[s-1][e]&255,o=t[s-1][e+1]&255,u=t[s][e-1]&255,l=t[s][e+1]&255,c=t[s+1][e-1]&255,h=t[s+1][e]&255,_=t[s+1][e+1]&255,d=r+1,f=(n==d||a==d||u==d?8:0)|(o==d||a==d||l==d?4:0)|(c==d||h==d||u==d?2:0)|(_==d||h==d||l==d?1:0),f==15&&(f=0),t[s][e]=r|f<<8),e++;s++}}static unpadHeightMap(t){t.shift(),t.pop();for(const e of t)e.shift(),e.pop()}static padHeightMap(t){const e=[],s=[];for(const r of t)r.push(Ot.TILE_BLOCKED),r.unshift(Ot.TILE_BLOCKED);for(const r of t[0])e.push(Ot.TILE_BLOCKED),s.push(Ot.TILE_BLOCKED);t.push(s),t.unshift(e)}dispose(){this._planes=null,this._tileMatrix=null,this._tileMatrixOriginal=null,this._floorHoleMatrix=null,this._floorHoles!=null&&(this._floorHoles.clear(),this._floorHoles=null),this._floorHolesInverted!=null&&(this._floorHolesInverted.clear(),this._floorHolesInverted=null)}reset(){this._planes=[],this._tileMatrix=[],this._tileMatrixOriginal=[],this._width=0,this._height=0,this._minX=0,this._maxX=0,this._minY=0,this._maxY=0,this._floorHeight=0,this._floorHoleMatrix=[]}initializeTileMap(t,e){t<0&&(t=0),e<0&&(e=0),this._tileMatrix=[],this._tileMatrixOriginal=[],this._floorHoleMatrix=[];let s=0;for(;s<e;){const r=[],n=[],a=[];let o=0;for(;o<t;)r[o]=Ot.TILE_BLOCKED,n[o]=Ot.TILE_BLOCKED,a[o]=!1,o++;this._tileMatrix.push(r),this._tileMatrixOriginal.push(n),this._floorHoleMatrix.push(a),s++}return this._width=t,this._height=e,this._minX=this._width,this._maxX=-1,this._minY=this._height,this._maxY=-1,!0}setTileHeight(t,e,s){let r,n,a,o,u;if(t>=0&&t<this._width&&e>=0&&e<this._height){if(r=this._tileMatrix[e],r[t]=s,s>=0)t<this._minX&&(this._minX=t),t>this._maxX&&(this._maxX=t),e<this._minY&&(this._minY=e),e>this._maxY&&(this._maxY=e);else{if(t==this._minX||t==this._maxX){for(n=!1,a=this._minY;a<this._maxY;){if(this.getTileHeightInternal(t,a)>=0){n=!0;break}a++}n||(t==this._minX&&this._minX++,t==this._maxX&&this._maxX--)}if(e==this._minY||e==this._maxY){for(o=!1,u=this._minX;u<this._maxX;){if(this.getTileHeight(u,e)>=0){o=!0;break}u++}o||(e==this._minY&&this._minY++,e==this._maxY&&this._maxY--)}}return!0}return!1}getTileHeight(t,e){if(t<0||t>=this._width||e<0||e>=this._height)return Ot.TILE_BLOCKED;const s=this._tileMatrix[e];return s[t]===void 0?0:Math.abs(s[t])}initializeFromTileData(t=-1){let e,s;for(this._fixedWallHeight=t,s=0;s<this._height;){for(e=0;e<this._width;)this._tileMatrixOriginal[s]===void 0&&(this._tileMatrixOriginal[s]=[]),this._tileMatrixOriginal[s][e]=this._tileMatrix[s][e],e++;s++}const r=Ot.findEntranceTile(this._tileMatrix);for(s=0;s<this._height;){for(e=0;e<this._width;)this._floorHoleMatrix[s]===void 0&&(this._floorHoleMatrix[s]=[]),this._floorHoleMatrix[s][e]&&this.setTileHeight(e,s,Ot.TILE_HOLE),e++;s++}return this.initialize(r)}initializeHighlightArea(t,e,s,r){this.clearHighlightArea(),this.extractPlanes(this.floorTiles,t*4,e*4,s*4,r*4,!0)}clearHighlightArea(){const t=this._highlights.length;return this._planes=this._planes.slice(0,this._planes.length-this._highlights.length),this._highlights.length=0,t}initializeFromMapData(t){if(!t)return!1;this.reset(),this.resetFloorHoles();const e=t.width,s=t.height,r=t.wallHeight,n=t.fixedWallsHeight;if(this.initializeTileMap(e,s),t.tileMap){let a=0;for(;a<t.tileMap.length;){const o=t.tileMap[a];if(o){let u=0;for(;u<o.length;){const l=o[u];l&&this.setTileHeight(u,a,l.height),u++}}a++}}if(t.holeMap&&t.holeMap.length){let a=0;for(;a<t.holeMap.length;){const o=t.holeMap[a];o&&(this.addFloorHole(o.id,o.x,o.y,o.width,o.height,o.invert),a++)}this.initializeHoleMap()}return this.wallHeight=r,this.initializeFromTileData(n),!0}isPlaneTemporaryHighlighter(t){if(t<0||t>=this.planeCount)return!1;const e=this._planes[t];return e==null?!1:this._highlights.indexOf(e)!=-1}getMapData(){const t=new i0;t.width=this._width,t.height=this._height,t.wallHeight=this._wallHeight,t.fixedWallsHeight=this._fixedWallHeight,t.dimensions.minX=this.minX,t.dimensions.maxX=this.maxX,t.dimensions.minY=this.minY,t.dimensions.maxY=this.maxY;let e=0;for(;e<this._height;){const s=[],r=this._tileMatrixOriginal[e];let n=0;for(;n<this._width;){const a=r[n];s.push({height:a}),n++}t.tileMap.push(s),e++}for(const[s,r]of this._floorHoles.entries())r&&t.holeMap.push({id:s,x:r.x,y:r.y,width:r.width,height:r.height,invert:!1});for(const[s,r]of this._floorHolesInverted.entries())r&&t.holeMap.push({id:s,x:r.x,y:r.y,width:r.width,height:r.height,invert:!0});return t}getPlaneLocation(t){if(t<0||t>=this.planeCount)return null;const e=this._planes[t];return e?e.loc:null}getPlaneNormal(t){if(t<0||t>=this.planeCount)return null;const e=this._planes[t];return e?e.normal:null}getPlaneLeftSide(t){if(t<0||t>=this.planeCount)return null;const e=this._planes[t];return e?e.leftSide:null}getPlaneRightSide(t){if(t<0||t>=this.planeCount)return null;const e=this._planes[t];return e?e.rightSide:null}getPlaneNormalDirection(t){if(t<0||t>=this.planeCount)return null;const e=this._planes[t];return e?e.normalDirection:null}getPlaneSecondaryNormals(t){let e,s;if(t<0||t>=this.planeCount)return null;const r=this._planes[t];if(r!=null){for(e=[],s=0;s<r.secondaryNormalCount;)e.push(r.getSecondaryNormal(s)),s++;return e}return null}getPlaneType(t){if(t<0||t>=this.planeCount)return oe.PLANE_UNDEFINED;const e=this._planes[t];return e?e.type:oe.PLANE_UNDEFINED}getPlaneMaskCount(t){if(t<0||t>=this.planeCount)return 0;const e=this._planes[t];return e?e.maskCount:0}getPlaneMaskLeftSideLoc(t,e){if(t<0||t>=this.planeCount)return-1;const s=this._planes[t];return s?s.getMaskLeftSideLoc(e):-1}getPlaneMaskRightSideLoc(t,e){if(t<0||t>=this.planeCount)return-1;const s=this._planes[t];return s?s.getMaskRightSideLoc(e):-1}getPlaneMaskLeftSideLength(t,e){if(t<0||t>=this.planeCount)return-1;const s=this._planes[t];return s?s.getMaskLeftSideLength(e):-1}getPlaneMaskRightSideLength(t,e){if(t<0||t>=this.planeCount)return-1;const s=this._planes[t];return s?s.getMaskRightSideLength(e):-1}addFloorHole(t,e,s,r,n,a=!1){this.removeFloorHole(t),a?this._floorHolesInverted.set(t,new bI(e,s,r,n)):this._floorHoles.set(t,new bI(e,s,r,n))}removeFloorHole(t){this._floorHoles.delete(t),this._floorHolesInverted.delete(t)}resetFloorHoles(){this._floorHoles.clear(),this._floorHolesInverted.clear()}getTileHeightOriginal(t,e){return t<0||t>=this._width||e<0||e>=this._height?Ot.TILE_BLOCKED:this._floorHoleMatrix[e][t]?Ot.TILE_HOLE:this._tileMatrixOriginal[e][t]}getTileHeightInternal(t,e){return t<0||t>=this._width||e<0||e>=this._height?Ot.TILE_BLOCKED:this._tileMatrix[e][t]}initialize(t){let e=0;t!=null&&(e=this.getTileHeight(t.x,t.y),this.setTileHeight(t.x,t.y,Ot.TILE_BLOCKED)),this._floorHeight=Ot.getFloorHeight(this._tileMatrix),this.createWallPlanes();const s=[];for(const r of this._tileMatrix)s.push(r.concat());return Ot.padHeightMap(s),Ot.addTileTypes(s),Ot.unpadHeightMap(s),this.floorTiles=Ot.expandFloorTiles(s),this.extractPlanes(this.floorTiles),t!=null&&(this.setTileHeight(t.x,t.y,e),this.addFloor(new v(t.x+.5,t.y+.5,e),new v(-1,0,0),new v(0,-1,0),!1,!1,!1,!1)),!0}generateWallData(t,e){let s,r,n,a,o;const u=new gi,l=[this.extractTopWall.bind(this),this.extractRightWall.bind(this),this.extractBottomWall.bind(this),this.extractLeftWall.bind(this)];let c=0,h=new st(t.x,t.y),_=0;for(;_++<1e3;){if(s=!1,r=!1,n=c,(h.x<this.minX||h.x>this.maxX||h.y<this.minY||h.y>this.maxY)&&(s=!0),a=l[c](h,e),a==null)return null;if(o=Math.abs(a.x-h.x)+Math.abs(a.y-h.y),h.x==a.x||h.y==a.y?(c=(c-1+l.length)%l.length,o=o+1,r=!0):(c=(c+1)%l.length,o--),u.addWall(h,n,o,s,r),a.x==t.x&&a.y==t.y&&(a.x!=h.x||a.y!=h.y))break;h=a}return u.count==0?null:u}hidePeninsulaWallChains(t){let e,s,r,n,a=0;const o=t.count;for(;a<o;){const u=a;for(e=a,s=0,r=!1;!t.getBorder(a)&&a<o;)t.getLeftTurn(a)?s++:s>0&&s--,s>1&&(r=!0),e=a,a++;if(r)for(n=u;n<=e;)t.setHideWall(n,!0),n++;a++}}updateWallsNextToHoles(t){let e,s,r,n,a,o,u;const l=t.count;let c=0;for(;c<l;){if(!t.getHideWall(c)){for(e=t.getCorner(c),s=t.getDirection(c),r=t.getLength(c),n=gi.WALL_DIRECTION_VECTORS[s],a=gi.WALL_NORMAL_VECTORS[s],o=0,u=0;u<r;){if(this.getTileHeightInternal(e.x+u*n.x-a.x,e.y+u*n.y-a.y)==Ot.TILE_HOLE){if(u>0&&o==0){t.setLength(c,u);break}o++}else if(o>0){t.moveCorner(c,o);break}u++}o==r&&t.setHideWall(c,!0)}c++}}resolveOriginalWallIndex(t,e,s){let r,n,a,o,u,l;const c=Math.min(t.y,e.y),h=Math.max(t.y,e.y),_=Math.min(t.x,e.x),d=Math.max(t.x,e.x),f=s.count;let p=0;for(;p<f;){if(r=s.getCorner(p),n=s.getEndPoint(p),t.x==e.x){if(r.x==t.x&&n.x==t.x&&(a=Math.min(r.y,n.y),o=Math.max(r.y,n.y),a<=c&&h<=o))return p}else if(t.y==e.y&&r.y==t.y&&n.y==t.y&&(u=Math.min(r.x,n.x),l=Math.max(r.x,n.x),u<=_&&d<=l))return p;p++}return-1}hideOriginallyHiddenWalls(t,e){let s,r,n,a,o;const u=t.count;let l=0;for(;l<u;)t.getHideWall(l)||(s=t.getCorner(l),r=new st(s.x,s.y),n=gi.WALL_DIRECTION_VECTORS[t.getDirection(l)],a=t.getLength(l),r.x=r.x+n.x*a,r.y=r.y+n.y*a,o=this.resolveOriginalWallIndex(s,r,e),o>=0?e.getHideWall(o)&&t.setHideWall(l,!0):t.setHideWall(l,!0)),l++}checkWallHiding(t,e){this.hidePeninsulaWallChains(e),this.updateWallsNextToHoles(t),this.hideOriginallyHiddenWalls(t,e)}addWalls(t,e){const s=t.count,r=e.count;let n=0;for(;n<s;){if(!t.getHideWall(n)){const a=t.getCorner(n),o=t.getDirection(n),u=t.getLength(n),l=gi.WALL_DIRECTION_VECTORS[o],c=gi.WALL_NORMAL_VECTORS[o];let h=-1,_=0;for(;_<u;){const k=this.getTileHeightInternal(a.x+_*l.x+c.x,a.y+_*l.y+c.y);k>=0&&(k<h||h<0)&&(h=k),_++}const d=h;let f=new v(a.x,a.y,d);f=v.sum(f,v.product(c,.5)),f=v.sum(f,v.product(l,-.5));const p=this.wallHeight+Math.min(Ot.MAX_WALL_ADDITIONAL_HEIGHT,this.floorHeight)-h,g=v.product(l,-u),m=new v(0,0,p);f=v.dif(f,g);const O=this.resolveOriginalWallIndex(a,t.getEndPoint(n),e);let y=0,C=0;O>=0?(y=e.getDirection((O+1)%r),C=e.getDirection((O-1+r)%r)):(y=t.getDirection((n+1)%s),C=t.getDirection((n-1+s)%s));let P=null;(y-o+4)%4==3?P=gi.WALL_NORMAL_VECTORS[y]:(o-C+4)%4==3&&(P=gi.WALL_NORMAL_VECTORS[C]);const L=t.getLeftTurn(n),N=t.getLeftTurn((n-1+s)%s),F=t.getHideWall((n+1)%s),x=t.getManuallyLeftCut(n),U=t.getManuallyRightCut(n);this.addWall(f,g,m,P,!N||x,!L||U,!F)}n++}}createWallPlanes(){const t=this._tileMatrix;if(t==null)return!1;let e,s,r;const n=t.length;let a=0;if(n==0)return!1;for(e=0;e<n;){if(r=t[e],r==null||r.length==0)return!1;a>0?a=Math.min(a,r.length):a=r.length,e++}const o=Math.min(Ot.MAX_WALL_ADDITIONAL_HEIGHT,this._fixedWallHeight!=-1?this._fixedWallHeight:Ot.getFloorHeight(t)),u=this.minX;let l=this.minY;for(l=this.minY;l<=this.maxY;){if(this.getTileHeightInternal(u,l)>Ot.TILE_HOLE){l--;break}l++}if(l>this.maxY)return!1;const c=new st(u,l),h=this.generateWallData(c,!0),_=this.generateWallData(c,!1);for(h!=null&&(h.count,_.count,this.checkWallHiding(h,_),this.addWalls(h,_)),s=0;s<this.tileMapHeight;){for(e=0;e<this.tileMapWidth;)this.getTileHeightInternal(e,s)<0&&this.setTileHeight(e,s,-(o+this.wallHeight)),e++;s++}return!0}extractTopWall(t,e){if(t==null)return null;let s=1,r=Ot.TILE_HOLE;for(e||(r=Ot.TILE_BLOCKED);s<1e3;){if(this.getTileHeightInternal(t.x+s,t.y)>r)return new st(t.x+s-1,t.y);if(this.getTileHeightInternal(t.x+s,t.y+1)<=r)return new st(t.x+s,t.y+1);s++}return null}extractRightWall(t,e){if(t==null)return null;let s=1,r=Ot.TILE_HOLE;for(e||(r=Ot.TILE_BLOCKED);s<1e3;){if(this.getTileHeightInternal(t.x,t.y+s)>r)return new st(t.x,t.y+(s-1));if(this.getTileHeightInternal(t.x-1,t.y+s)<=r)return new st(t.x-1,t.y+s);s++}return null}extractBottomWall(t,e){if(t==null)return null;let s=1,r=Ot.TILE_HOLE;for(e||(r=Ot.TILE_BLOCKED);s<1e3;){if(this.getTileHeightInternal(t.x-s,t.y)>r)return new st(t.x-(s-1),t.y);if(this.getTileHeightInternal(t.x-s,t.y-1)<=r)return new st(t.x-s,t.y-1);s++}return null}extractLeftWall(t,e){if(t==null)return null;let s=1,r=Ot.TILE_HOLE;for(e||(r=Ot.TILE_BLOCKED);s<1e3;){if(this.getTileHeightInternal(t.x,t.y-s)>r)return new st(t.x,t.y-(s-1));if(this.getTileHeightInternal(t.x+1,t.y-s)<=r)return new st(t.x+1,t.y-s);s++}return null}addWall(t,e,s,r,n,a,o){this.addPlane(oe.PLANE_WALL,t,e,s,[r]),this.addPlane(oe.PLANE_LANDSCAPE,t,e,s,[r]);const u=Ot.WALL_THICKNESS*this._wallThicknessMultiplier,l=Ot.FLOOR_THICKNESS*this._floorThicknessMultiplier,c=v.crossProduct(e,s),h=v.product(c,1/c.length*-u);if(this.addPlane(oe.PLANE_WALL,v.sum(t,s),e,h,[c,r]),n&&this.addPlane(oe.PLANE_WALL,v.sum(v.sum(t,e),s),v.product(s,-(s.length+l)/s.length),h,[c,r]),a&&(this.addPlane(oe.PLANE_WALL,v.sum(t,v.product(s,-l/s.length)),v.product(s,(s.length+l)/s.length),h,[c,r]),o)){const _=v.product(e,u/e.length);this.addPlane(oe.PLANE_WALL,v.sum(v.sum(t,s),v.product(_,-1)),_,h,[c,e,r])}}addFloor(t,e,s,r,n,a,o,u=!1){let l,c,h;this.addPlane(oe.PLANE_FLOOR,t,e,s,null,u)!=null&&(l=Ot.FLOOR_THICKNESS*this._floorThicknessMultiplier,c=new v(0,0,l),h=v.dif(t,c),a&&this.addPlane(oe.PLANE_FLOOR,h,e,c,null,u),o&&this.addPlane(oe.PLANE_FLOOR,v.sum(h,v.sum(e,s)),v.product(e,-1),c,null,u),r&&this.addPlane(oe.PLANE_FLOOR,v.sum(h,s),v.product(s,-1),c,null,u),n&&this.addPlane(oe.PLANE_FLOOR,v.sum(h,e),s,c,null,u))}addPlane(t,e,s,r,n=null,a=!1){if(s.length==0||r.length==0)return null;const o=new oe(t,e,s,r,n);return this._planes.push(o),a&&this._highlights.push(o),o}initializeHoleMap(){let t,e,s;for(e=0;e<this._height;){for(s=this._floorHoleMatrix[e],t=0;t<this._width;)s[t]=this._floorHolesInverted.size>0,t++;e++}for(const r of this._floorHolesInverted.values())this.initializeHole(r,!0);for(const r of this._floorHoles.values())this.initializeHole(r)}initializeHole(t,e=!1){let s,r,n,a,o,u,l;const c=t;if(c!=null)for(a=c.x,o=c.x+c.width-1,u=c.y,l=c.y+c.height-1,a=a<0?0:a,o=o>=this._width?this._width-1:o,u=u<0?0:u,l=l>=this._height?this._height-1:l,r=u;r<=l;){for(n=this._floorHoleMatrix[r],s=a;s<=o;)n[s]=!e,s++;r++}}extractPlanes(t,e=0,s=0,r=-1,n=-1,a=!1){let o=0,u=0,l=0,c=0,h=0,_=0,d=!1,f=!1,p=!1,g=!1,m=0,O=0,y=!1,C=NaN,P=NaN,L=NaN,N=NaN;const F=t.length,x=t[0].length,U=n==-1?F:Math.min(F,s+n),k=r==-1?x:Math.min(x,e+r),gt=[];for(o=0;o<U;)gt[o]=[],o++;for(u=s;u<U;){for(l=e;l<k;){if(!((c=t[u][l])<0||gt[u][l])){for(d=l==0||t[u][l-1]!=c,f=u==0||t[u-1][l]!=c,h=l+1;h<k&&!(t[u][h]!=c||gt[u][h]||u>0&&t[u-1][h]==c==f);)h++;for(p=h==x||t[u][h]!=c,y=!1,_=u+1;_<=U&&!y&&(g=_==F||t[_][l]!=c,y=_==U||g||l>0&&t[_][l-1]==c==d||h<x&&t[_][h]==c==p,_!=F);){for(m=l;m<h;){if(t[_][m]==c==g){y=!0,h=m;break}m++}if(y)break;_++}for(g||(g=_==F),p=h==x||t[u][h]!=c,O=u;O<_;){for(m=l;m<h;)gt[O][m]=!0,m++;O++}C=l/4-.5,P=u/4-.5,L=(h-l)/4,N=(_-u)/4,this.addFloor(new v(C+L,P+N,c/4),new v(-L,0,0),new v(0,-N,0),p,d,g,f,a)}l++}u++}}};Ot.TILE_BLOCKED=-110,Ot.TILE_HOLE=-100,Ot.FLOOR_THICKNESS=.25,Ot.WALL_THICKNESS=.25,Ot.MAX_WALL_ADDITIONAL_HEIGHT=20;let Ae=Ot;class ye{constructor(t,e){this._location=t,this._direction=e}get location(){return this._location}get direction(){return this._direction}}const qp=class qp extends ye{constructor(t){super(null,null),this._type=t}get type(){return this._type}};qp.IMAGE_LOADED="ROAUM_IMAGE_LOADED",qp.IMAGE_LOADING_FAILED="ROAUM_IMAGE_FAILED";let Wi=qp;class Re extends ye{constructor(){super(null,null)}}class a0 extends Re{constructor(t,e){super(),this._itemType=t,this._itemName=e}get itemType(){return this._itemType}get itemName(){return this._itemName}}class $m extends Re{constructor(t=0){super(),this._numberOfWords=t}get numberOfWords(){return this._numberOfWords}}class o0 extends Re{constructor(t=0){super(),this._danceStyle=t}get danceStyle(){return this._danceStyle}}class u0 extends Re{constructor(t,e=0){super(),this._effect=t,this._delayMilliseconds=e}get effect(){return this._effect}get delayMilliseconds(){return this._delayMilliseconds}}class l0 extends Re{constructor(t){super(),this._gainedExperience=t}get gainedExperience(){return this._gainedExperience}}class h0 extends Re{constructor(t=0){super(),this._expressionType=t}get expressionType(){return this._expressionType}}class wh extends Re{constructor(t,e=null,s=null,r=!1){super(),this._figure=t,this._gender=e,this._subType=s,this._isRiding=r}get figure(){return this._figure}get gender(){return this._gender}get subType(){return this._subType}get isRiding(){return this._isRiding}}class c0 extends Re{constructor(t=0){super(),this._level=t}get level(){return this._level}}class _0 extends Re{constructor(t=0){super(),this._gesture=t}get gesture(){return this._gesture}}class $8 extends Re{constructor(t){super(),this._guideStatus=t}get guideStatus(){return this._guideStatus}}class d0 extends Re{constructor(t=!1){super(),this._isMuted=t}get isMuted(){return this._isMuted}}class f0 extends Re{}class g0 extends Re{constructor(t){super(),this._gesture=t}get gesture(){return this._gesture}}class p0 extends Re{constructor(t){super(),this._value=t}get value(){return this._value}}class m0 extends Re{constructor(t){super(),this._isPlayingGame=t}get isPlayingGame(){return this._isPlayingGame}}class Qm extends Re{constructor(t,e=""){super(),this._postureType=t,this._parameter=e}get postureType(){return this._postureType}get parameter(){return this._parameter}}class Gh extends Re{constructor(t){super(),this._selected=t}get selected(){return this._selected}}class E0 extends Re{constructor(t=0){super(),this._signType=t}get signType(){return this._signType}}class Zm extends Re{constructor(t=!1){super(),this._isSleeping=t}get isSleeping(){return this._isSleeping}}class T0 extends Re{constructor(t=!1){super(),this._isTyping=t}get isTyping(){return this._isTyping}}class kr extends ye{constructor(t,e,s,r=!1){super(t,s),this._targetLocation=e,this._isSlide=r}get targetLocation(){return this._targetLocation?this._targetLocation:this.location}get isSlide(){return this._isSlide}}class Bh extends kr{constructor(t,e,s,r,n,a){super(t,e,s),this._headDirection=r,this._canStandUp=n,this._baseY=a}get headDirection(){return this._headDirection}get canStandUp(){return this._canStandUp}get baseY(){return this._baseY}}class I0 extends Re{constructor(t){super(),this._itemType=t}get itemType(){return this._itemType}}class Ht extends ye{constructor(t,e,s=null){super(null,null),this._state=t,this._data=e,this._extra=s}get state(){return this._state}get data(){return this._data}get extra(){return this._extra}}const aO=class aO extends ye{constructor(t,e){super(null,null),this._badgeId=t,this._assetName=e}get badgeId(){return this._badgeId}get assetName(){return this._assetName}};aO.BADGE_LOADED="ROGBUM_BADGE_LOADED";let Pn=aO;class S0 extends ye{constructor(t,e,s){super(t,e),this._height=s}get height(){return this._height}}class Jm extends ye{constructor(t){super(null,null),this._data=t}get data(){return this._data}}class R0 extends ye{constructor(t,e){super(null,null),this._numberKey=t,this._numberValue=e}get numberKey(){return this._numberKey}get numberValue(){return this._numberValue}}const oO=class oO extends ye{constructor(t,e,s,r){super(null,null),this._type=t,this._color=e,this._light=s,this._backgroundOnly=r}get type(){return this._type}get color(){return this._color}get light(){return this._light}get backgroundOnly(){return this._backgroundOnly}};oO.BACKGROUND_COLOR="RORCUM_BACKGROUND_COLOR";let cu=oO;const $p=class $p extends ye{constructor(t,e,s=0,r=0,n=0,a=0,o=!1){super(null,null),this._type=t,this._id=e,this._x=s,this._y=r,this._width=n,this._height=a,this._invert=o}get type(){return this._type}get id(){return this._id}get x(){return this._x}get y(){return this._y}get width(){return this._width}get height(){return this._height}get invert(){return this._invert}};$p.ADD="ORPFHUM_ADD",$p.REMOVE="ORPFHUM_REMOVE";let Is=$p;const Qp=class Qp extends ye{constructor(t){super(null,null),this._type=Qp.UPDATE_MAP,this._mapData=t}get type(){return this._type}get mapData(){return this._mapData}};Qp.UPDATE_MAP="RORMUM_UPDATE_MAP";let kh=Qp;const ha=class ha extends ye{constructor(t,e,s=null,r=null,n="window"){super(null,null),this._type=t,this._maskId=e,this._maskType=s,this._maskLocation=r?new v(r.x,r.y,r.z):null,this._maskCategory=n}get type(){return this._type}get maskId(){return this._maskId}get maskType(){return this._maskType}get maskLocation(){return this._maskLocation}get maskCategory(){return this._maskCategory}};ha.ADD_MASK="RORMUM_ADD_MASK",ha.REMOVE_MASK="RORMUM_ADD_MASK",ha.DOOR="door",ha.WINDOW="window",ha.HOLE="hole";let qe=ha;const Zp=class Zp extends ye{constructor(t,e){super(null,null),this._type=t,this._value=e}get type(){return this._type}get value(){return this._value}};Zp.WALL_THICKNESS="RORPPUM_WALL_THICKNESS",Zp.FLOOR_THICKNESS="RORPVUM_FLOOR_THICKNESS";let Zi=Zp;const Jp=class Jp extends ye{constructor(t,e){super(null,null),this._type=t,this._visible=e}get type(){return this._type}get visible(){return this._visible}};Jp.WALL_VISIBILITY="RORPVUM_WALL_VISIBILITY",Jp.FLOOR_VISIBILITY="RORPVUM_FLOOR_VISIBILITY";let Ji=Jp;const Ml=class Ml extends ye{constructor(t,e){super(null,null),this._type=t,this._value=e}get type(){return this._type}get value(){return this._value}};Ml.ROOM_WALL_UPDATE="RORUM_ROOM_WALL_UPDATE",Ml.ROOM_FLOOR_UPDATE="RORUM_ROOM_FLOOR_UPDATE",Ml.ROOM_LANDSCAPE_UPDATE="RORUM_ROOM_LANDSCAPE_UPDATE";let Ue=Ml;class _u extends Re{constructor(t){super(),this._selected=t}get selected(){return this._selected}}class qn extends ye{constructor(t,e,s,r,n=!1){super(t,null),this._height=e,this._visible=s,this._sourceEventId=r,this._toggleVisibility=n}get height(){return this._height}get visible(){return this._visible}get sourceEventId(){return this._sourceEventId}get toggleVisibility(){return this._toggleVisibility}}const tm=class tm extends ye{constructor(t){super(null,null),this._type=t}get type(){return this._type}};tm.ENABLED="ROVUM_ENABLED",tm.DISABLED="ROVUM_DISABLED";let tr=tm;class uc{constructor(){this._events=null,this._object=null,this._time=0}initialize(t){}dispose(){this._object=null}update(t){this._time=t}processUpdateMessage(t){!t||!this._object||(this._object.setLocation(t.location),this._object.setDirection(t.direction))}getEventTypes(){return[]}mergeTypes(t,e){const s=t.concat();for(const r of e)!r||s.indexOf(r)>=0||s.push(r);return s}mouseEvent(t,e){}useObject(){}setObject(t){if(this._object!==t){if(this._object&&this._object.setLogic(null),!t){this.dispose(),this._object=null;return}this._object=t,this._object.setLogic(this)}}tearDown(){}get object(){return this._object}get eventDispatcher(){return this._events}set eventDispatcher(t){this._events=t}get widget(){return null}get contextMenu(){return null}get time(){return this._time}}const Go=class Go extends uc{constructor(){super(),this._liftAmount=0,this._location=new v,this._locationDelta=new v,this._lastUpdateTime=0,this._changeTime=0,this._updateInterval=Go.DEFAULT_UPDATE_INTERVAL}dispose(){this._liftAmount=0,super.dispose()}update(t){super.update(t);const e=this.getLocationOffset(),s=this.object&&this.object.model;if(s&&(e?this._liftAmount!==e.z&&(this._liftAmount=e.z,s.setValue(I.FURNITURE_LIFT_AMOUNT,this._liftAmount)):this._liftAmount!==0&&(this._liftAmount=0,s.setValue(I.FURNITURE_LIFT_AMOUNT,this._liftAmount))),this._locationDelta.length>0||e){const r=Go.TEMP_VECTOR;let n=this.time-this._changeTime;n===this._updateInterval>>1&&n++,n>this._updateInterval&&(n=this._updateInterval),this._locationDelta.length>0?(r.assign(this._locationDelta),r.multiply(n/this._updateInterval),r.add(this._location)):r.assign(this._location),e&&r.add(e),this.object.setLocation(r),n===this._updateInterval&&(this._locationDelta.x=0,this._locationDelta.y=0,this._locationDelta.z=0)}this._lastUpdateTime=this.time}setObject(t){super.setObject(t),t&&this._location.assign(t.getLocation())}processUpdateMessage(t){if(t&&(super.processUpdateMessage(t),t.location&&this._location.assign(t.location),t instanceof kr))return this.processMoveMessage(t)}processMoveMessage(t){!t||!this.object||!t.location||(this._changeTime=this._lastUpdateTime,this._locationDelta.assign(t.targetLocation),this._locationDelta.subtract(this._location))}getLocationOffset(){return null}get lastUpdateTime(){return this._lastUpdateTime}set updateInterval(t){t<=0&&(t=1),this._updateInterval=t}};Go.DEFAULT_UPDATE_INTERVAL=500,Go.TEMP_VECTOR=new v;let zr=Go;const pe=class pe extends zr{constructor(){super(),this._selected=!1,this._reportedLocation=null,this._effectChangeTimeStamp=0,this._newEffect=0,this._blinkingStartTimestamp=Nt()+this.randomBlinkStartTimestamp(),this._blinkingEndTimestamp=0,this._talkingEndTimestamp=0,this._talkingPauseStartTimestamp=0,this._talkingPauseEndTimestamp=0,this._carryObjectStartTimestamp=0,this._carryObjectEndTimestamp=0,this._allowUseCarryObject=!1,this._animationEndTimestamp=0,this._signEndTimestamp=0,this._gestureEndTimestamp=0,this._numberValueEndTimestamp=0}getEventTypes(){const t=[at.CLICK,at.DOUBLE_CLICK,$e.POSITION_CHANGED,at.MOUSE_ENTER,at.MOUSE_LEAVE,z.MOUSE_BUTTON,z.MOUSE_ARROW];return this.mergeTypes(super.getEventTypes(),t)}dispose(){this._selected&&this.object&&this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new $e($e.OBJECT_REMOVED,this.object)),super.dispose(),this._reportedLocation=null}update(t){if(super.update(t),this._selected&&this.object&&this.eventDispatcher){const s=this.object.getLocation();(!this._reportedLocation||this._reportedLocation.x!==s.x||this._reportedLocation.y!==s.y||this._reportedLocation.z!==s.z)&&(this._reportedLocation||(this._reportedLocation=new v),this._reportedLocation.assign(s),this.eventDispatcher.dispatchEvent(new $e($e.POSITION_CHANGED,this.object)))}const e=this.object&&this.object.model;e&&this.updateModel(this.time,e)}updateModel(t,e){this._talkingEndTimestamp>0&&(t>this._talkingEndTimestamp?(e.setValue(I.FIGURE_TALK,0),this._talkingEndTimestamp=0,this._talkingPauseStartTimestamp=0,this._talkingPauseEndTimestamp=0):!this._talkingPauseEndTimestamp&&!this._talkingPauseStartTimestamp?(this._talkingPauseStartTimestamp=t+this.randomTalkingPauseStartTimestamp(),this._talkingPauseEndTimestamp=this._talkingPauseStartTimestamp+this.randomTalkingPauseEndTimestamp()):this._talkingPauseStartTimestamp>0&&t>this._talkingPauseStartTimestamp?(e.setValue(I.FIGURE_TALK,0),this._talkingPauseStartTimestamp=0):this._talkingPauseEndTimestamp>0&&t>this._talkingPauseEndTimestamp&&(e.setValue(I.FIGURE_TALK,1),this._talkingPauseEndTimestamp=0)),this._animationEndTimestamp>0&&t>this._animationEndTimestamp&&(e.setValue(I.FIGURE_EXPRESSION,0),this._animationEndTimestamp=0),this._gestureEndTimestamp>0&&t>this._gestureEndTimestamp&&(e.setValue(I.FIGURE_GESTURE,0),this._gestureEndTimestamp=0),this._signEndTimestamp>0&&t>this._signEndTimestamp&&(e.setValue(I.FIGURE_SIGN,-1),this._signEndTimestamp=0),this._carryObjectEndTimestamp>0&&t>this._carryObjectEndTimestamp&&(e.setValue(I.FIGURE_CARRY_OBJECT,0),e.setValue(I.FIGURE_USE_OBJECT,0),this._carryObjectStartTimestamp=0,this._carryObjectEndTimestamp=0,this._allowUseCarryObject=!1),this._allowUseCarryObject&&t-this._carryObjectStartTimestamp>5e3&&((t-this._carryObjectStartTimestamp)%1e4<1e3?e.setValue(I.FIGURE_USE_OBJECT,1):e.setValue(I.FIGURE_USE_OBJECT,0)),this._blinkingStartTimestamp>-1&&t>this._blinkingStartTimestamp&&(e.setValue(I.FIGURE_BLINK,1),this._blinkingStartTimestamp=t+this.randomBlinkStartTimestamp(),this._blinkingEndTimestamp=t+this.randomBlinkEndTimestamp()),this._blinkingEndTimestamp>0&&t>this._blinkingEndTimestamp&&(e.setValue(I.FIGURE_BLINK,0),this._blinkingEndTimestamp=0),this._effectChangeTimeStamp>0&&t>this._effectChangeTimeStamp&&(e.setValue(I.FIGURE_EFFECT,this._newEffect),this._effectChangeTimeStamp=0),this._numberValueEndTimestamp>0&&t>this._numberValueEndTimestamp&&(e.setValue(I.FIGURE_NUMBER_VALUE,0),this._numberValueEndTimestamp=0)}processUpdateMessage(t){if(!t||!this.object)return;super.processUpdateMessage(t);const e=this.object&&this.object.model;if(e){if(t instanceof Qm){e.setValue(I.FIGURE_POSTURE,t.postureType),e.setValue(I.FIGURE_POSTURE_PARAMETER,t.parameter);return}if(t instanceof $m){e.setValue(I.FIGURE_TALK,1),this._talkingEndTimestamp=this.time+t.numberOfWords*1e3;return}if(t instanceof T0){e.setValue(I.FIGURE_IS_TYPING,t.isTyping?1:0);return}if(t instanceof d0){e.setValue(I.FIGURE_IS_MUTED,t.isMuted?1:0);return}if(t instanceof m0){e.setValue(I.FIGURE_IS_PLAYING_GAME,t.isPlayingGame?1:0);return}if(t instanceof Bh){e.setValue(I.HEAD_DIRECTION,t.headDirection),e.setValue(I.FIGURE_CAN_STAND_UP,t.canStandUp),e.setValue(I.FIGURE_VERTICAL_OFFSET,t.baseY);return}if(t instanceof _0){e.setValue(I.FIGURE_GESTURE,t.gesture),this._gestureEndTimestamp=this.time+3e3;return}if(t instanceof h0){e.setValue(I.FIGURE_EXPRESSION,t.expressionType),this._animationEndTimestamp=et.getExpressionTimeout(e.getValue(I.FIGURE_EXPRESSION)),this._animationEndTimestamp>-1&&(this._animationEndTimestamp+=this.time);return}if(t instanceof o0){e.setValue(I.FIGURE_DANCE,t.danceStyle);return}if(t instanceof Zm){e.setValue(I.FIGURE_SLEEP,t.isSleeping?1:0),t.isSleeping?this._blinkingStartTimestamp=-1:this._blinkingStartTimestamp=this.time+this.randomBlinkStartTimestamp();return}if(t instanceof p0){e.setValue(I.FIGURE_NUMBER_VALUE,t.value),this._numberValueEndTimestamp=this.time+3e3;return}if(t instanceof u0){this.updateAvatarEffect(t.effect,t.delayMilliseconds,e);return}if(t instanceof a0){e.setValue(I.FIGURE_CARRY_OBJECT,t.itemType),e.setValue(I.FIGURE_USE_OBJECT,0),t.itemType===0?(this._carryObjectStartTimestamp=0,this._carryObjectEndTimestamp=0,this._allowUseCarryObject=!1):(this._carryObjectStartTimestamp=this.time,t.itemType<pe.MAX_HAND_ID?(this._carryObjectEndTimestamp=0,this._allowUseCarryObject=t.itemType<=pe.MAX_HAND_USE_ID):(this._carryObjectEndTimestamp=this._carryObjectStartTimestamp+1500,this._allowUseCarryObject=!1));return}if(t instanceof I0){e.setValue(I.FIGURE_USE_OBJECT,t.itemType);return}if(t instanceof E0){e.setValue(I.FIGURE_SIGN,t.signType),this._signEndTimestamp=this.time+5e3;return}if(t instanceof c0){e.setValue(I.FIGURE_FLAT_CONTROL,t.level);return}if(t instanceof wh){e.setValue(I.FIGURE,t.figure),e.setValue(I.GENDER,t.gender);return}if(t instanceof Gh){this._selected=t.selected,this._reportedLocation=null;return}if(t instanceof f0){e.setValue(I.OWN_USER,1);return}}}updateAvatarEffect(t,e,s){if(t===pe.EFFECT_TYPE_SPLASH)this._effectChangeTimeStamp=Nt()+pe.EFFECT_SPLASH_LENGTH,this._newEffect=pe.EFFECT_TYPE_SWIM;else if(t===pe.EFFECT_TYPE_SPLASH_DARK)this._effectChangeTimeStamp=Nt()+pe.EFFECT_SPLASH_LENGTH,this._newEffect=pe.EFFECT_TYPE_SWIM_DARK;else if(s.getValue(I.FIGURE_EFFECT)===pe.EFFECT_TYPE_SWIM)this._effectChangeTimeStamp=Nt()+pe.EFFECT_SPLASH_LENGTH,this._newEffect=t,t=pe.EFFECT_TYPE_SPLASH;else if(s.getValue(I.FIGURE_EFFECT)===pe.EFFECT_TYPE_SWIM_DARK)this._effectChangeTimeStamp=Nt()+pe.EFFECT_SPLASH_LENGTH,this._newEffect=t,t=pe.EFFECT_TYPE_SPLASH_DARK;else if(e===0)this._effectChangeTimeStamp=0;else{this._effectChangeTimeStamp=Nt()+e,this._newEffect=t;return}s.setValue(I.FIGURE_EFFECT,t)}mouseEvent(t,e){let s=null;switch(t.type){case J.MOUSE_CLICK:s=at.CLICK;break;case J.DOUBLE_CLICK:s=at.DOUBLE_CLICK;break;case J.ROLL_OVER:s=at.MOUSE_ENTER,this.object.model&&this.object.model.setValue(I.FIGURE_HIGHLIGHT,1),this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new z(z.MOUSE_BUTTON,this.object));break;case J.ROLL_OUT:s=at.MOUSE_LEAVE,this.object.model&&this.object.model.setValue(I.FIGURE_HIGHLIGHT,0),this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new z(z.MOUSE_ARROW,this.object));break}s&&this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new at(s,this.object,t.eventId,t.altKey,t.ctrlKey,t.shiftKey,t.buttonDown))}randomTalkingPauseStartTimestamp(){return 100+Math.random()*200}randomTalkingPauseEndTimestamp(){return 75+Math.random()*75}randomBlinkStartTimestamp(){return 4500+Math.random()*1e3}randomBlinkEndTimestamp(){return 50+Math.random()*200}};pe.MAX_HAND_ID=999999999,pe.MAX_HAND_USE_ID=999,pe.EFFECT_TYPE_SPLASH=28,pe.EFFECT_SPLASH_LENGTH=500,pe.EFFECT_TYPE_SWIM=29,pe.EFFECT_TYPE_SPLASH_DARK=184,pe.EFFECT_TYPE_SWIM_DARK=185;let Gf=pe;class Q8 extends zr{constructor(){super(),this._selected=!1,this._reportedLocation=null,this._postureIndex=0,this._gestureIndex=0,this._headDirectionDelta=0,this._directions=[],this._talkingEndTimestamp=0,this._gestureEndTimestamp=0,this._expressionEndTimestamp=0}getEventTypes(){const t=[at.CLICK,$e.POSITION_CHANGED];return this.mergeTypes(super.getEventTypes(),t)}initialize(t){if(!t)return;const e=this.object&&this.object.model;if(e){if(t.logic&&t.logic.model){const s=t.logic.model.directions;if(s&&s.length){for(const r of s)this._directions.push(r);this._directions.sort()}}e.setValue(I.PET_ALLOWED_DIRECTIONS,this._directions)}}dispose(){this._selected&&this.object&&this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new $e($e.OBJECT_REMOVED,this.object)),this._directions=null,this._reportedLocation=null}update(t){if(super.update(t),this._selected&&this.object&&this.eventDispatcher){const e=this.object.getLocation();(!this._reportedLocation||this._reportedLocation.x!==e.x||this._reportedLocation.y!==e.y||this._reportedLocation.z!==e.z)&&(this._reportedLocation||(this._reportedLocation=new v),this._reportedLocation.assign(e),this.eventDispatcher.dispatchEvent(new $e($e.POSITION_CHANGED,this.object)))}this.object&&this.object.model&&this.updateModel(t,this.object.model)}updateModel(t,e){this._gestureEndTimestamp>0&&t>this._gestureEndTimestamp&&(e.setValue(I.FIGURE_GESTURE,null),this._gestureEndTimestamp=0),this._talkingEndTimestamp>0&&t>this._talkingEndTimestamp&&(e.setValue(I.FIGURE_TALK,0),this._talkingEndTimestamp=0),this._expressionEndTimestamp>0&&t>this._expressionEndTimestamp&&(e.setValue(I.FIGURE_EXPRESSION,0),this._expressionEndTimestamp=0)}processUpdateMessage(t){if(!t||!this.object)return;super.processUpdateMessage(t);const e=this.object&&this.object.model;if(e){if(t instanceof Bh){e.setValue(I.HEAD_DIRECTION,t.headDirection);return}if(t instanceof wh){const s=new Xl(t.figure);e.setValue(I.FIGURE,t.figure),e.setValue(I.RACE,t.subType),e.setValue(I.PET_PALETTE_INDEX,s.paletteId),e.setValue(I.PET_COLOR,s.color),e.setValue(I.PET_TYPE,s.typeId),e.setValue(I.PET_CUSTOM_LAYER_IDS,s.customLayerIds),e.setValue(I.PET_CUSTOM_PARTS_IDS,s.customPartIds),e.setValue(I.PET_CUSTOM_PALETTE_IDS,s.customPaletteIds),e.setValue(I.PET_IS_RIDING,t.isRiding?1:0);return}if(t instanceof Qm){e.setValue(I.FIGURE_POSTURE,t.postureType);return}if(t instanceof $m){e.setValue(I.FIGURE_TALK,1),this._talkingEndTimestamp=this.time+t.numberOfWords*1e3;return}if(t instanceof Zm){e.setValue(I.FIGURE_SLEEP,t.isSleeping?1:0);return}if(t instanceof g0){e.setValue(I.FIGURE_GESTURE,t.gesture),this._gestureEndTimestamp=this.time+3e3;return}if(t instanceof Gh){this._selected=t.selected,this._reportedLocation=null;return}if(t instanceof l0){e.setValue(I.FIGURE_EXPERIENCE_TIMESTAMP,this.time),e.setValue(I.FIGURE_GAINED_EXPERIENCE,t.gainedExperience);return}}}mouseEvent(t,e){let s=null;switch(t.type){case J.MOUSE_CLICK:s=at.CLICK;break;case J.DOUBLE_CLICK:break;case J.MOUSE_DOWN:{this.object.model.getValue(I.PET_TYPE)===tu.MONSTERPLANT&&this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new at(at.MOUSE_DOWN,this.object,t.eventId,t.altKey,t.ctrlKey,t.shiftKey,t.buttonDown));break}}s&&this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new at(s,this.object,t.eventId,t.altKey,t.ctrlKey,t.shiftKey,t.buttonDown))}}class Z8 extends uc{constructor(){super(),this._planeParser=new Ae,this._planeBitmapMaskParser=new n0,this._color=16777215,this._light=255,this._originalColor=16777215,this._originalLight=255,this._targetColor=16777215,this._targetLight=255,this._colorChangedTime=0,this._colorTransitionLength=1500,this._lastHoleUpdate=0,this._needsMapUpdate=!1,this._skipColorTransition=!1}getEventTypes(){const t=[at.MOUSE_MOVE,at.CLICK];return this.mergeTypes(super.getEventTypes(),t)}dispose(){super.dispose(),this._planeParser&&(this._planeParser.dispose(),this._planeParser=null),this._planeBitmapMaskParser&&(this._planeBitmapMaskParser.dispose(),this._planeBitmapMaskParser=null)}initialize(t){!t||!this.object||t instanceof i0&&this._planeParser.initializeFromMapData(t)&&(this.object.model.setValue(I.ROOM_MAP_DATA,t),this.object.model.setValue(I.ROOM_BACKGROUND_COLOR,16777215),this.object.model.setValue(I.ROOM_FLOOR_VISIBILITY,1),this.object.model.setValue(I.ROOM_WALL_VISIBILITY,1),this.object.model.setValue(I.ROOM_LANDSCAPE_VISIBILITY,1),this._skipColorTransition=vt().getValue("room.color.skip.transition")===!0)}update(t){if(super.update(t),this.updateBackgroundColor(t),this._needsMapUpdate){if(this._lastHoleUpdate&&t-this._lastHoleUpdate<5)return;const e=this.object&&this.object.model;if(e){const s=this._planeParser.getMapData();e.setValue(I.ROOM_MAP_DATA,s),e.setValue(I.ROOM_FLOOR_HOLE_UPDATE_TIME,t),this._planeParser.initializeFromMapData(s)}this._lastHoleUpdate=0,this._needsMapUpdate=!1}}updateBackgroundColor(t){if(!this.object||!this._colorChangedTime)return;let e=this._color,s=this._light;if(t-this._colorChangedTime>=this._colorTransitionLength)e=this._targetColor,s=this._targetLight,this._colorChangedTime=0;else{let n=this._originalColor>>16&255,a=this._originalColor>>8&255,o=this._originalColor&255;const u=this._targetColor>>16&255,l=this._targetColor>>8&255,c=this._targetColor&255,h=(t-this._colorChangedTime)/this._colorTransitionLength;n=n+(u-n)*h,a=a+(l-a)*h,o=o+(c-o)*h,e=(n<<16)+(a<<8)+o,s=this._originalLight+(this._targetLight-this._originalLight)*h,this._color=e,this._light=s}let r=$l.rgbToHSL(e);r=(r&16776960)+s,e=$l.hslToRGB(r),this.object.model&&this.object.model.setValue(I.ROOM_BACKGROUND_COLOR,e)}processUpdateMessage(t){if(!t||!this.object)return;const e=this.object.model;if(e){if(t instanceof Ue){this.onObjectRoomUpdateMessage(t,e);return}if(t instanceof qe){this.onObjectRoomMaskUpdateMessage(t,e);return}if(t instanceof Ji){this.onObjectRoomPlaneVisibilityUpdateMessage(t,e);return}if(t instanceof Zi){this.onObjectRoomPlanePropertyUpdateMessage(t,e);return}if(t instanceof Is){this.onObjectRoomFloorHoleUpdateMessage(t,e);return}if(t instanceof cu){this.onObjectRoomColorUpdateMessage(t,e);return}t instanceof kh&&this.onObjectRoomMapUpdateMessage(t)}}onObjectRoomUpdateMessage(t,e){switch(t.type){case Ue.ROOM_FLOOR_UPDATE:e.setValue(I.ROOM_FLOOR_TYPE,t.value);return;case Ue.ROOM_WALL_UPDATE:e.setValue(I.ROOM_WALL_TYPE,t.value);return;case Ue.ROOM_LANDSCAPE_UPDATE:e.setValue(I.ROOM_LANDSCAPE_TYPE,t.value);return}}onObjectRoomMaskUpdateMessage(t,e){let s=null,r=!1;switch(t.type){case qe.ADD_MASK:s=xn.WINDOW,t.maskCategory===qe.HOLE&&(s=xn.HOLE),this._planeBitmapMaskParser.addMask(t.maskId,t.maskType,t.maskLocation,s),r=!0;break;case qe.REMOVE_MASK:r=this._planeBitmapMaskParser.removeMask(t.maskId);break}r&&e.setValue(I.ROOM_PLANE_MASK_XML,this._planeBitmapMaskParser.getXML())}onObjectRoomPlaneVisibilityUpdateMessage(t,e){let s=0;switch(t.visible&&(s=1),t.type){case Ji.FLOOR_VISIBILITY:e.setValue(I.ROOM_FLOOR_VISIBILITY,s);return;case Ji.WALL_VISIBILITY:e.setValue(I.ROOM_WALL_VISIBILITY,s),e.setValue(I.ROOM_LANDSCAPE_VISIBILITY,s);return}}onObjectRoomPlanePropertyUpdateMessage(t,e){switch(t.type){case Zi.FLOOR_THICKNESS:e.setValue(I.ROOM_FLOOR_THICKNESS,t.value);return;case Zi.WALL_THICKNESS:e.setValue(I.ROOM_WALL_THICKNESS,t.value);return}}onObjectRoomFloorHoleUpdateMessage(t,e){switch(t.type){case Is.ADD:this._planeParser.addFloorHole(t.id,t.x,t.y,t.width,t.height),this._needsMapUpdate=!0;return;case Is.REMOVE:this._planeParser.removeFloorHole(t.id),this._needsMapUpdate=!0;return}this._lastHoleUpdate=this.time}onObjectRoomColorUpdateMessage(t,e){!t||!e||(this._originalColor=this._color,this._originalLight=this._light,this._targetColor=t.color,this._targetLight=t.light,this._colorChangedTime=this.time,this._skipColorTransition?this._colorTransitionLength=0:this._colorTransitionLength=1500,e.setValue(I.ROOM_COLORIZE_BG_ONLY,t.backgroundOnly))}onObjectRoomMapUpdateMessage(t){!t||!t.mapData||(this.object.model.setValue(I.ROOM_MAP_DATA,t.mapData),this.object.model.setValue(I.ROOM_FLOOR_HOLE_UPDATE_TIME,this.time),this._planeParser.initializeFromMapData(t.mapData))}mouseEvent(t,e){if(!t||!e||!this.object||!this.object.model)return;const s=t.spriteTag;let r=0;if(s&&s.indexOf("@")>=0&&(r=parseInt(s.substr(s.indexOf("@")+1))),r<1||r>this._planeParser.planeCount){t.type===J.ROLL_OUT&&this.object.model.setValue(I.ROOM_SELECTED_PLANE,0);return}r--;let n=null;const a=this._planeParser.getPlaneLocation(r),o=this._planeParser.getPlaneLeftSide(r),u=this._planeParser.getPlaneRightSide(r),l=this._planeParser.getPlaneNormalDirection(r),c=this._planeParser.getPlaneType(r);if(a==null||o==null||u==null||l==null)return;const h=o.length,_=u.length;if(h==0||_==0)return;const d=t.screenX,f=t.screenY,p=new st(d,f);if(n=e.getPlanePosition(p,a,o,u),!n){this.object.model.setValue(I.ROOM_SELECTED_PLANE,0);return}const g=v.product(o,n.x/h);g.add(v.product(u,n.y/_)),g.add(a);const m=g.x,O=g.y,y=g.z;if(n.x>=0&&n.x<h&&n.y>=0&&n.y<_)this.object.model.setValue(I.ROOM_SELECTED_X,m),this.object.model.setValue(I.ROOM_SELECTED_Y,O),this.object.model.setValue(I.ROOM_SELECTED_Z,y),this.object.model.setValue(I.ROOM_SELECTED_PLANE,r+1);else{this.object.model.setValue(I.ROOM_SELECTED_PLANE,0);return}let C=null;switch(t.type===J.MOUSE_MOVE||t.type===J.ROLL_OVER?C=at.MOUSE_MOVE:t.type===J.MOUSE_CLICK?C=at.CLICK:t.type===J.MOUSE_DOWN&&(C=at.MOUSE_DOWN),t.type){case J.MOUSE_MOVE:case J.ROLL_OVER:case J.MOUSE_DOWN:case J.MOUSE_CLICK:{let P=null;if(c===oe.PLANE_FLOOR)P=new ui(C,this.object,t.eventId,m,O,y,t.altKey,t.ctrlKey,t.shiftKey,t.buttonDown);else if(c===oe.PLANE_WALL||c===oe.PLANE_LANDSCAPE){let L=90;l&&(L=l.x+90,L>360&&(L-=360));const N=o.length*n.x/h,F=u.length*n.y/_;P=new Xn(C,this.object,t.eventId,a,o,u,N,F,L,t.altKey,t.ctrlKey,t.shiftKey,t.buttonDown)}this.eventDispatcher&&this.eventDispatcher.dispatchEvent(P);return}}}}class J8 extends uc{initialize(t){this.object&&(this.object.model.setValue(I.FURNITURE_ALPHA_MULTIPLIER,1),this.object.setState(1,0))}processUpdateMessage(t){if(super.processUpdateMessage(t),t instanceof tr&&this.object)switch(t.type){case tr.ENABLED:this.object.setState(0,0);return;case tr.DISABLED:this.object.setState(1,0);return}}}const wi=class wi extends uc{constructor(){super(),this._lastEventId=null,this._isHidden=!1}initialize(t){this.object&&(this.object.model.setValue(I.FURNITURE_ALPHA_MULTIPLIER,1),this.object.setState(wi.CURSOR_HIDDEN_STATE,0))}processUpdateMessage(t){t instanceof qn&&(this._lastEventId&&this._lastEventId===t.sourceEventId||(t.toggleVisibility&&(this._isHidden=!this._isHidden),super.processUpdateMessage(t),this.object&&(this._isHidden?this.object.setState(wi.CURSOR_HIDDEN_STATE,0):t.visible?(this.object.model.setValue(I.TILE_CURSOR_HEIGHT,t.height),this.object.setState(t.height>.8?wi.CURSOR_HEIGHT_STATE:wi.CURSOR_VISIBLE_STATE)):this.object.setState(wi.CURSOR_HIDDEN_STATE,0)),this._lastEventId=t.sourceEventId))}};wi.CURSOR_VISIBLE_STATE=0,wi.CURSOR_HIDDEN_STATE=1,wi.CURSOR_HEIGHT_STATE=6;let Bf=wi;const gs=class gs extends zr{constructor(){super(),this._sizeX=0,this._sizeY=0,this._sizeZ=0,this._centerX=0,this._centerY=0,this._centerZ=0,this._directions=[],this._mouseOver=!1,this._locationOffset=new v,this._bouncingStep=0,this._storedRotateMessage=null,this._directionInitialized=!1,gs.BOUNCING_STEPS===-1&&(gs.BOUNCING_STEPS=vt().getValue("furni.rotation.bounce.steps",8)),gs.BOUNCING_Z===-1&&(gs.BOUNCING_Z=vt().getValue("furni.rotation.bounce.height",.0625))}getEventTypes(){const t=[St.STATE_CHANGE,at.CLICK,at.MOUSE_DOWN,at.MOUSE_DOWN_LONG,te.ROOM_AD_TOOLTIP_SHOW,te.ROOM_AD_TOOLTIP_HIDE,te.ROOM_AD_FURNI_DOUBLE_CLICK,te.ROOM_AD_FURNI_CLICK];return this.widget&&t.push(b.OPEN_WIDGET,b.CLOSE_WIDGET),this.contextMenu&&t.push(b.OPEN_FURNI_CONTEXT_MENU,b.CLOSE_FURNI_CONTEXT_MENU),this.mergeTypes(super.getEventTypes(),t)}initialize(t){if(!t)return;const e=this.object&&this.object.model;if(e){if(t.logic){if(t.logic.model){const s=t.logic.model.dimensions;s&&(this._sizeX=s.x,this._sizeY=s.y,this._sizeZ=s.z,this._centerX=this._sizeX/2,this._centerY=this._sizeY/2,this._centerZ=this._sizeZ/2);const r=t.logic.model.directions;if(r&&r.length){for(const n of r)this._directions.push(n);this._directions.sort((n,a)=>n-a)}}if(t.logic.customVars){const s=t.logic.customVars.variables;s&&s.length&&e.setValue(I.FURNITURE_CUSTOM_VARIABLES,s)}}e.setValue(I.FURNITURE_SIZE_X,this._sizeX),e.setValue(I.FURNITURE_SIZE_Y,this._sizeY),e.setValue(I.FURNITURE_SIZE_Z,this._sizeZ),e.setValue(I.FURNITURE_CENTER_X,this._centerX),e.setValue(I.FURNITURE_CENTER_Y,this._centerY),e.setValue(I.FURNITURE_CENTER_Z,this._centerZ),e.setValue(I.FURNITURE_ALLOWED_DIRECTIONS,this._directions),e.setValue(I.FURNITURE_ALPHA_MULTIPLIER,1)}}dispose(){this._storedRotateMessage=null,this._directions=null,super.dispose()}setObject(t){super.setObject(t),t&&t.getLocation().length&&(this._directionInitialized=!0)}getAdClickUrl(t){return t.getValue(I.FURNITURE_AD_URL)}handleAdClick(t,e,s){this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new te(te.ROOM_AD_FURNI_CLICK,this.object))}update(t){super.update(t),this._bouncingStep>0&&(this._bouncingStep++,this._bouncingStep>gs.BOUNCING_STEPS&&(this._bouncingStep=0))}processUpdateMessage(t){if(t instanceof Ht){this.processDataUpdateMessage(t);return}if(t instanceof S0){this.processObjectHeightUpdateMessage(t);return}if(t instanceof Jm){this.processItemDataUpdateMessage(t);return}if(this._mouseOver=!1,t.location&&t.direction){if(!(t instanceof kr)){const e=this.object.getDirection(),s=this.object.getLocation();e.x!==t.direction.x&&this._directionInitialized&&s.x===t.location.x&&s.y===t.location.y&&s.z===t.location.z&&(this._bouncingStep=1,this._storedRotateMessage=new ye(t.location,t.direction),t=null)}this._directionInitialized=!0}if(t instanceof _u&&this.contextMenu&&this.eventDispatcher&&this.object){const e=t.selected?b.OPEN_FURNI_CONTEXT_MENU:b.CLOSE_FURNI_CONTEXT_MENU;this.eventDispatcher.dispatchEvent(new b(e,this.object))}super.processUpdateMessage(t)}processDataUpdateMessage(t){t&&(this.object.setState(t.state,0),t.data&&t.data.writeRoomObjectModel(this.object.model),t.extra!==null&&this.object.model.setValue(I.FURNITURE_EXTRAS,t.extra.toString()),this.object.model.setValue(I.FURNITURE_STATE_UPDATE_TIME,this.lastUpdateTime))}processObjectHeightUpdateMessage(t){t&&this.object.model.setValue(I.FURNITURE_SIZE_Z,t.height)}processItemDataUpdateMessage(t){t&&this.object.model.setValue(I.FURNITURE_ITEMDATA,t.data)}mouseEvent(t,e){const s=this.getAdClickUrl(this.object.model);switch(t.type){case J.MOUSE_MOVE:if(this.eventDispatcher){const r=new at(at.MOUSE_MOVE,this.object,t.eventId,t.altKey,t.ctrlKey,t.shiftKey,t.buttonDown);r.localX=t.localX,r.localY=t.localY,r.spriteOffsetX=t.spriteOffsetX,r.spriteOffsetY=t.spriteOffsetY,this.eventDispatcher.dispatchEvent(r)}return;case J.ROLL_OVER:if(!this._mouseOver){if(this.eventDispatcher){s&&s.indexOf("http")===0&&this.eventDispatcher.dispatchEvent(new te(te.ROOM_AD_TOOLTIP_SHOW,this.object));const r=new at(at.MOUSE_ENTER,this.object,t.eventId,t.altKey,t.ctrlKey,t.shiftKey,t.buttonDown);r.localX=t.localX,r.localY=t.localY,r.spriteOffsetX=t.spriteOffsetX,r.spriteOffsetY=t.spriteOffsetY,this.eventDispatcher.dispatchEvent(r)}this._mouseOver=!0}return;case J.ROLL_OUT:if(this._mouseOver){if(this.eventDispatcher){s&&s.indexOf("http")===0&&this.eventDispatcher.dispatchEvent(new te(te.ROOM_AD_TOOLTIP_HIDE,this.object));const r=new at(at.MOUSE_LEAVE,this.object,t.eventId,t.altKey,t.ctrlKey,t.shiftKey,t.buttonDown);r.localX=t.localX,r.localY=t.localY,r.spriteOffsetX=t.spriteOffsetX,r.spriteOffsetY=t.spriteOffsetY,this.eventDispatcher.dispatchEvent(r)}this._mouseOver=!1}return;case J.DOUBLE_CLICK:this.useObject();return;case J.MOUSE_CLICK:if(this.eventDispatcher){const r=new at(at.CLICK,this.object,t.eventId,t.altKey,t.ctrlKey,t.shiftKey,t.buttonDown);r.localX=t.localX,r.localY=t.localY,r.spriteOffsetX=t.spriteOffsetX,r.spriteOffsetY=t.spriteOffsetY,this.eventDispatcher.dispatchEvent(r),s&&s.indexOf("http")===0&&this.eventDispatcher.dispatchEvent(new te(te.ROOM_AD_TOOLTIP_HIDE,this.object)),s&&s.length&&this.handleAdClick(this.object.id,this.object.type,s)}return;case J.MOUSE_DOWN:if(this.eventDispatcher){const r=new at(at.MOUSE_DOWN,this.object,t.eventId,t.altKey,t.ctrlKey,t.shiftKey,t.buttonDown);this.eventDispatcher.dispatchEvent(r)}return;case J.MOUSE_DOWN_LONG:if(this.eventDispatcher){const r=new at(at.MOUSE_DOWN_LONG,this.object,t.eventId,t.altKey,t.ctrlKey,t.shiftKey,t.buttonDown);this.eventDispatcher.dispatchEvent(r)}return}}getLocationOffset(){return this._bouncingStep<=0?null:(this._locationOffset.x=0,this._locationOffset.y=0,this._bouncingStep<=gs.BOUNCING_STEPS/2?this._locationOffset.z=gs.BOUNCING_Z*this._bouncingStep:this._bouncingStep<=gs.BOUNCING_STEPS&&(this._storedRotateMessage&&(super.processUpdateMessage(this._storedRotateMessage),this._storedRotateMessage=null),this._locationOffset.z=gs.BOUNCING_Z*(gs.BOUNCING_STEPS-this._bouncingStep)),this._locationOffset)}useObject(){if(!this.object||!this.eventDispatcher)return;const t=this.getAdClickUrl(this.object.model);t&&t.length&&this.eventDispatcher.dispatchEvent(new te(te.ROOM_AD_FURNI_DOUBLE_CLICK,this.object,null,t)),this.widget&&this.eventDispatcher.dispatchEvent(new b(b.OPEN_WIDGET,this.object)),this.eventDispatcher.dispatchEvent(new St(St.STATE_CHANGE,this.object))}tearDown(){this.object.model.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1&&(this.widget&&this.eventDispatcher.dispatchEvent(new b(b.CLOSE_WIDGET,this.object)),this.contextMenu&&this.eventDispatcher.dispatchEvent(new b(b.CLOSE_FURNI_CONTEXT_MENU,this.object))),super.tearDown()}};gs.BOUNCING_STEPS=-1,gs.BOUNCING_Z=-1;let Dt=gs;class A0 extends Dt{getEventTypes(){const t=[b.BADGE_DISPLAY_ENGRAVING,ri.LOAD_BADGE];return this.mergeTypes(super.getEventTypes(),t)}processUpdateMessage(t){if(super.processUpdateMessage(t),!!this.object){if(t instanceof Ht){const e=t.data;e instanceof Ga&&this.updateBadge(e.getValue(1));return}if(t instanceof Pn){t.assetName!=="loading_icon"&&(this.object.model.setValue(I.FURNITURE_BADGE_ASSET_NAME,t.assetName),this.object.model.setValue(I.FURNITURE_BADGE_IMAGE_STATUS,1),this.update(Nt()));return}}}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.BADGE_DISPLAY_ENGRAVING,this.object))}updateBadge(t){t!==""&&this.eventDispatcher&&(this.object.model.setValue(I.FURNITURE_BADGE_IMAGE_STATUS,-1),this.eventDispatcher.dispatchEvent(new ri(ri.LOAD_BADGE,this.object,t,!1)))}}const ps=class ps extends A0{getEventTypes(){const t=[b.ACHIEVEMENT_RESOLUTION_OPEN,b.ACHIEVEMENT_RESOLUTION_ENGRAVING,b.ACHIEVEMENT_RESOLUTION_FAILED,ri.LOAD_BADGE];return this.mergeTypes(super.getEventTypes(),t)}processUpdateMessage(t){if(super.processUpdateMessage(t),t instanceof Pn&&t.assetName!=="loading_icon"&&this.object.model.setValue(I.FURNITURE_BADGE_VISIBLE_IN_STATE,ps.BADGE_VISIBLE_IN_STATE),t instanceof _u){if(!this.eventDispatcher||!this.object)return;this.eventDispatcher.dispatchEvent(new b(b.CLOSE_FURNI_CONTEXT_MENU,this.object))}}useObject(){if(!this.object||!this.eventDispatcher)return;let t=null;switch(this.object.getState(0)){case ps.STATE_RESOLUTION_NOT_STARTED:case ps.STATE_RESOLUTION_IN_PROGRESS:t=new b(b.ACHIEVEMENT_RESOLUTION_OPEN,this.object);break;case ps.STATE_RESOLUTION_ACHIEVED:t=new b(b.ACHIEVEMENT_RESOLUTION_ENGRAVING,this.object);break;case ps.STATE_RESOLUTION_FAILED:t=new b(b.ACHIEVEMENT_RESOLUTION_FAILED,this.object);break}t&&this.eventDispatcher.dispatchEvent(t)}updateBadge(t){t!==ps.ACH_NOT_SET&&super.updateBadge(t)}};ps.STATE_RESOLUTION_NOT_STARTED=0,ps.STATE_RESOLUTION_IN_PROGRESS=1,ps.STATE_RESOLUTION_ACHIEVED=2,ps.STATE_RESOLUTION_FAILED=3,ps.ACH_NOT_SET="ach_0",ps.BADGE_VISIBLE_IN_STATE=2;let kf=ps;class he extends Dt{getEventTypes(){const t=[z.MOUSE_BUTTON,z.MOUSE_ARROW];return this.mergeTypes(super.getEventTypes(),t)}mouseEvent(t,e){if(!(!t||!e||!this.object)){switch(t.type){case J.ROLL_OVER:this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new z(z.MOUSE_BUTTON,this.object));break;case J.ROLL_OUT:this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new z(z.MOUSE_ARROW,this.object));break}super.mouseEvent(t,e)}}}class tK extends he{getEventTypes(){const t=[b.AREA_HIDE];return this.mergeTypes(super.getEventTypes(),t)}processUpdateMessage(t){super.processUpdateMessage(t),this.object&&t instanceof Ht&&(t.data.writeRoomObjectModel(this.object.model),this.object.model.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1&&this.setupObject())}setupObject(){if(!this.object||!this.object.model)return;const t=new wa;t.initializeFromRoomObjectModel(this.object.model);const e=t.getValue(0),s=t.getValue(1),r=t.getValue(2),n=t.getValue(3),a=t.getValue(4),o=t.getValue(5)===1,u=t.getValue(6)===1,l=t.getValue(7)===1;this.object.model.setValue(I.FURNITURE_AREA_HIDE_ROOT_X,s),this.object.model.setValue(I.FURNITURE_AREA_HIDE_ROOT_Y,r),this.object.model.setValue(I.FURNITURE_AREA_HIDE_WIDTH,n),this.object.model.setValue(I.FURNITURE_AREA_HIDE_LENGTH,a),this.object.model.setValue(I.FURNITURE_AREA_HIDE_INVISIBILITY,o?1:0),this.object.model.setValue(I.FURNITURE_AREA_HIDE_WALL_ITEMS,u?1:0),this.object.model.setValue(I.FURNITURE_AREA_HIDE_INVERT,l?1:0),this.object.setState(e,0)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.AREA_HIDE,this.object))}mouseEvent(t,e){if(!t||!e||!this.object)return;let s=null;switch(t.type){case J.DOUBLE_CLICK:{if(t.spriteTag==="turn_on"||t.spriteTag==="turn_off"?s=new St(St.STATE_CHANGE,this.object):s=new b(b.AREA_HIDE,this.object),this.eventDispatcher&&s){this.eventDispatcher.dispatchEvent(s);return}break}}super.mouseEvent(t,e)}}class eK extends Dt{constructor(){super(),this.onRoomToObjectOwnAvatarMoveEvent=this.onRoomToObjectOwnAvatarMoveEvent.bind(this)}initialize(t){super.initialize(t),this.eventDispatcher&&this.eventDispatcher.addEventListener(za.ROAME_MOVE_TO,this.onRoomToObjectOwnAvatarMoveEvent)}tearDown(){this.eventDispatcher&&this.eventDispatcher.removeEventListener(za.ROAME_MOVE_TO,this.onRoomToObjectOwnAvatarMoveEvent),super.tearDown()}onRoomToObjectOwnAvatarMoveEvent(t){if(!t||!this.object)return;const e=this.object.getLocation(),s=t.targetLocation;if(!s)return;let r=this.object.model.getValue(I.FURNITURE_SIZE_X),n=this.object.model.getValue(I.FURNITURE_SIZE_Y);const a=(Math.floor(this.object.getDirection().x)+45)%360/90;(a===1||a===3)&&([r,n]=[n,r]),s.x>=e.x&&s.x<e.x+r&&s.y>=e.y&&s.y<e.y+n?this.object.setState(1,0):this.object.setState(0,0)}}class sK extends Dt{getEventTypes(){const t=[b.CLOTHING_CHANGE];return this.mergeTypes(super.getEventTypes(),t)}initialize(t){super.initialize(t);const e=this.object.model.getValue(I.FURNITURE_DATA);this.updateClothingData(e)}processUpdateMessage(t){super.processUpdateMessage(t),t instanceof Ht&&t.data&&this.updateClothingData(t.data.getLegacyString())}updateClothingData(t){if(!t||!t.length)return;const[e,s]=t.split(",");e&&e.length&&this.object.model.setValue(I.FURNITURE_CLOTHING_BOY,e),s&&s.length&&this.object.model.setValue(I.FURNITURE_CLOTHING_GIRL,s)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.CLOTHING_CHANGE,this.object))}}class iK extends Dt{getEventTypes(){const t=[St.STATE_CHANGE];return this.mergeTypes(super.getEventTypes(),t)}mouseEvent(t,e){if(!t||!e||!this.object)return;let s=null;switch(t.type){case J.DOUBLE_CLICK:switch(t.spriteTag){case"start_stop":s=new St(St.STATE_CHANGE,this.object,1);break;case"reset":s=new St(St.STATE_CHANGE,this.object,2);break}if(this.eventDispatcher&&s){this.eventDispatcher.dispatchEvent(s);return}break}super.mouseEvent(t,e)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new St(St.STATE_CHANGE,this.object,1))}}class rK extends Dt{processUpdateMessage(t){super.processUpdateMessage(t),this.object&&this.object.model.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1&&this.object.model.setValue(hs.INFOSTAND_EXTRA_PARAM,hs.CRACKABLE_FURNI)}}class nK extends Dt{get widget(){return ql.CRAFTING}}class aK extends Dt{getEventTypes(){const t=[b.CREDITFURNI];return this.mergeTypes(super.getEventTypes(),t)}initialize(t){super.initialize(t);let e=0;t.logic&&t.logic.credits&&t.logic.credits!==""&&t.logic.credits.length>0&&(e=parseInt(t.logic.credits)),this.object.model.setValue(I.FURNITURE_CREDIT_VALUE,e)}useObject(){!this.object||!this.eventDispatcher||(this.eventDispatcher.dispatchEvent(new b(b.CREDITFURNI,this.object)),super.useObject())}}class oK extends he{constructor(){super(...arguments),this._state=1}getEventTypes(){const t=[Qi.PLAY_SOUND_AT_PITCH];return this.mergeTypes(super.getEventTypes(),t)}processUpdateMessage(t){super.processUpdateMessage(t),t instanceof Ht&&(this._state!==-1&&t.state!==this._state&&this.dispatchSoundEvent(this.object.location.z),this._state=t.state)}dispatchSoundEvent(t){const e=Math.pow(2,t-1.2);this.eventDispatcher.dispatchEvent(new Qi(Qi.PLAY_SOUND_AT_PITCH,this.object,"FURNITURE_cuckoo_clock",e))}}class uK extends he{getEventTypes(){const t=[b.STACK_HEIGHT];return this.mergeTypes(super.getEventTypes(),t)}initialize(t){super.initialize(t),this.object&&this.object.model&&this.object.model.setValue(I.FURNITURE_ALWAYS_STACKABLE,1)}useObject(){!this.object||!this.eventDispatcher||(this.eventDispatcher.dispatchEvent(new b(b.STACK_HEIGHT,this.object)),super.useObject())}}class lK extends Dt{constructor(){super(),this._noTags=!1,this._noTagsLastStateActivate=!1}getEventTypes(){const t=[z.DICE_ACTIVATE,z.DICE_OFF];return this.mergeTypes(super.getEventTypes(),t)}mouseEvent(t,e){if(!t||!e||!this.object)return;let s=null;switch(t.type){case J.DOUBLE_CLICK:this._noTags?!this._noTagsLastStateActivate||this.object.getState(0)===0||this.object.getState(0)===100?(s=new z(z.DICE_ACTIVATE,this.object),this._noTagsLastStateActivate=!0):(s=new z(z.DICE_OFF,this.object),this._noTagsLastStateActivate=!1):t.spriteTag==="activate"||this.object.getState(0)===0||this.object.getState(0)===100?s=new z(z.DICE_ACTIVATE,this.object):t.spriteTag==="deactivate"&&(s=new z(z.DICE_OFF,this.object)),s&&this.eventDispatcher&&this.eventDispatcher.dispatchEvent(s);return}super.mouseEvent(t,e)}}class hK extends Dt{getEventTypes(){const t=[b.ECOTRONBOX];return this.mergeTypes(super.getEventTypes(),t)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.ECOTRONBOX,this.object))}}class cK extends Dt{constructor(){super(),this._showStateOnceRendered=!1,this._updateCount=0}getEventTypes(){const t=[b.INERNAL_LINK];return this.mergeTypes(super.getEventTypes(),t)}initialize(t){super.initialize(t),t.logic&&t.logic.action&&t.logic.action.startState===1&&(this._showStateOnceRendered=!0)}update(t){super.update(t),this._showStateOnceRendered&&(this._updateCount++,this._showStateOnceRendered&&this._updateCount>20&&(this.setAutomaticStateIndex(1),this._showStateOnceRendered=!1))}setAutomaticStateIndex(t){this.object&&this.object.model&&this.object.model.setValue(I.FURNITURE_AUTOMATIC_STATE_INDEX,t)}mouseEvent(t,e){!t||!e||(t.type===J.DOUBLE_CLICK&&this.setAutomaticStateIndex(0),super.mouseEvent(t,e))}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.INERNAL_LINK,this.object))}}class _K extends Dt{getEventTypes(){const t=[b.ROOM_LINK];return this.mergeTypes(super.getEventTypes(),t)}initialize(t){super.initialize(t),t.logic&&t.logic.action&&t.logic.action.link&&t.logic.action.link!==""&&t.logic.action.link.length>0&&this.object&&this.object.model&&this.object.model.setValue(I.FURNITURE_INTERNAL_LINK,t.logic.action.link)}dispose(){this._timer&&(clearTimeout(this._timer),this._timer=null),super.dispose()}setAutomaticStateIndex(t){this.object&&this.object.model&&this.object.model.setValue(I.FURNITURE_AUTOMATIC_STATE_INDEX,t)}useObject(){this.setAutomaticStateIndex(1),this._timer&&(clearTimeout(this._timer),this._timer=null),this._timer=setTimeout(()=>{this.setAutomaticStateIndex(0),this._timer=null},2500),!(!this.object||!this.eventDispatcher)&&this.eventDispatcher.dispatchEvent(new b(b.ROOM_LINK,this.object))}}class dK extends Dt{getEventTypes(){const t=[b.EFFECTBOX_OPEN_DIALOG];return this.mergeTypes(super.getEventTypes(),t)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.EFFECTBOX_OPEN_DIALOG,this.object))}get contextMenu(){return Ri.EFFECT_BOX}}class fK extends he{getEventTypes(){const t=[b.EXTERNAL_IMAGE];return this.mergeTypes(super.getEventTypes(),t)}initialize(t){if(super.initialize(t),!!t&&this.object&&this.object.model){let e="";t.logic&&t.logic.maskType&&t.logic.maskType!==""&&t.logic.maskType.length>0&&(e=t.logic.maskType),this.object.model.setValue(I.FURNITURE_USES_PLANE_MASK,0),this.object.model.setValue(I.FURNITURE_PLANE_MASK_TYPE,e)}}useObject(){!this.object||!this.eventDispatcher||(this.eventDispatcher.dispatchEvent(new b(b.EXTERNAL_IMAGE,this.object)),super.useObject())}}class gK extends Dt{getEventTypes(){const t=[St.STATE_CHANGE];return this.mergeTypes(super.getEventTypes(),t)}initialize(t){super.initialize(t),t.logic&&t.logic.particleSystems&&t.logic.particleSystems.length&&this.object.model.setValue(I.FURNITURE_FIREWORKS_DATA,t.logic.particleSystems)}mouseEvent(t,e){if(!t||!e||!this.object)return;let s=null;switch(t.type){case J.DOUBLE_CLICK:switch(t.spriteTag){case"start_stop":s=new St(St.STATE_CHANGE,this.object,1);break;case"reset":s=new St(St.STATE_CHANGE,this.object,2);break}if(this.eventDispatcher&&s){this.eventDispatcher.dispatchEvent(s);return}break}super.mouseEvent(t,e)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new St(St.STATE_CHANGE,this.object,0))}}const ca=class ca extends he{constructor(){super(),this._currentState=-1,this._currentLocation=null}getEventTypes(){const t=[Xe.ADD_HOLE,Xe.REMOVE_HOLE];return this.mergeTypes(super.getEventTypes(),t)}dispose(){this._currentState===ca.STATE_HOLE&&this.eventDispatcher.dispatchEvent(new Xe(Xe.REMOVE_HOLE,this.object)),super.dispose()}update(t){super.update(t),this.handleAutomaticStateUpdate()}processUpdateMessage(t){if(super.processUpdateMessage(t),!this.object)return;t instanceof Ht&&this.handleStateUpdate(this.object.getState(0));const e=this.object.getLocation();this._currentLocation?(e.x!==this._currentLocation.x||e.y!==this._currentLocation.y)&&this._currentState===ca.STATE_HOLE&&this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new Xe(Xe.ADD_HOLE,this.object)):this._currentLocation=new v,this._currentLocation.assign(e)}handleStateUpdate(t){t!==this._currentState&&(this.eventDispatcher&&(t===ca.STATE_HOLE?this.eventDispatcher.dispatchEvent(new Xe(Xe.ADD_HOLE,this.object)):this._currentState===ca.STATE_HOLE&&this.eventDispatcher.dispatchEvent(new Xe(Xe.REMOVE_HOLE,this.object))),this._currentState=t)}handleAutomaticStateUpdate(){if(!this.object)return;const t=this.object.model;if(!t)return;const e=t.getValue(I.FURNITURE_AUTOMATIC_STATE_INDEX);isNaN(e)||this.handleStateUpdate(e%2)}};ca.STATE_HOLE=0;let zf=ca;const _a=class _a extends he{constructor(){super(...arguments),this._state=-1}initialize(t){super.initialize(t),this.object&&this.object.model.setValue(I.FURNITURE_FRIENDFURNI_ENGRAVING,this.engravingDialogType)}processUpdateMessage(t){if(t instanceof Ht){const e=t.data;e?this._state=e.state:this._state=t.state}super.processUpdateMessage(t)}getEventTypes(){const t=[b.FRIEND_FURNITURE_ENGRAVING];return this.mergeTypes(super.getEventTypes(),t)}useObject(){!this.object||!this.eventDispatcher||(this._state===_a.STATE_LOCKED?this.eventDispatcher.dispatchEvent(new b(b.FRIEND_FURNITURE_ENGRAVING,this.object)):super.useObject())}get engravingDialogType(){return 0}get contextMenu(){return this._state===_a.STATE_UNLOCKED?Ri.FRIEND_FURNITURE:Ri.DUMMY}};_a.STATE_UNINITIALIZED=-1,_a.STATE_UNLOCKED=0,_a.STATE_LOCKED=1;let zh=_a;const Gi=class Gi extends he{getEventTypes(){const t=[ri.LOAD_BADGE,b.GUILD_FURNI_CONTEXT_MENU,b.CLOSE_FURNI_CONTEXT_MENU];return this.mergeTypes(super.getEventTypes(),t)}processUpdateMessage(t){if(super.processUpdateMessage(t),t instanceof Ht){const e=t.data;e instanceof Ga&&(this.updateGroupId(e.getValue(Gi.GROUPID_KEY)),this.updateBadge(e.getValue(Gi.BADGE_KEY)),this.updateColors(e.getValue(Gi.COLOR1_KEY),e.getValue(Gi.COLOR2_KEY)))}else t instanceof Pn?t.assetName!=="loading_icon"&&(this.object.model.setValue(I.FURNITURE_GUILD_CUSTOMIZED_ASSET_NAME,t.assetName),this.update(Nt())):t instanceof _u&&(t.selected||this.eventDispatcher.dispatchEvent(new b(b.CLOSE_FURNI_CONTEXT_MENU,this.object)))}updateGroupId(t){this.object.model.setValue(I.FURNITURE_GUILD_CUSTOMIZED_GUILD_ID,parseInt(t))}updateBadge(t){this.eventDispatcher.dispatchEvent(new ri(ri.LOAD_BADGE,this.object,t,!0))}updateColors(t,e){this.object.model.setValue(I.FURNITURE_GUILD_CUSTOMIZED_COLOR_1,parseInt(t,16)),this.object.model.setValue(I.FURNITURE_GUILD_CUSTOMIZED_COLOR_2,parseInt(e,16))}mouseEvent(t,e){if(!(!t||!e||!this.object)){switch(t.type){case J.MOUSE_CLICK:this.openContextMenu()}super.mouseEvent(t,e)}}openContextMenu(){this.eventDispatcher.dispatchEvent(new b(b.GUILD_FURNI_CONTEXT_MENU,this.object))}};Gi.GROUPID_KEY=1,Gi.BADGE_KEY=2,Gi.COLOR1_KEY=3,Gi.COLOR2_KEY=4;let Vh=Gi;class pK extends Vh{getEventTypes(){const t=[b.INERNAL_LINK];return this.mergeTypes(super.getEventTypes(),t)}updateGroupId(t){super.updateGroupId(t),this.object.model.setValue(I.FURNITURE_INTERNAL_LINK,`groupforum/${t}`)}useObject(){!this.object||!this.eventDispatcher||(this.eventDispatcher.dispatchEvent(new b(b.INERNAL_LINK,this.object)),super.useObject())}}class mK extends Dt{getEventTypes(){const t=[z.USE_HABBOWHEEL];return this.mergeTypes(super.getEventTypes(),t)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new z(z.USE_HABBOWHEEL,this.object))}}const em=class em extends Dt{constructor(){super(...arguments),this._state=-1}getEventTypes(){return[b.HIGH_SCORE_DISPLAY,b.HIDE_HIGH_SCORE_DISPLAY]}tearDown(){this.object.model.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1&&this.eventDispatcher.dispatchEvent(new b(b.HIDE_HIGH_SCORE_DISPLAY,this.object)),super.tearDown()}processUpdateMessage(t){super.processUpdateMessage(t),this.object.model.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1&&t instanceof Ht&&(t.state===em.SHOW_WIDGET_IN_STATE?this.eventDispatcher.dispatchEvent(new b(b.HIGH_SCORE_DISPLAY,this.object)):this.eventDispatcher.dispatchEvent(new b(b.HIDE_HIGH_SCORE_DISPLAY,this.object)),this._state=t.state)}};em.SHOW_WIDGET_IN_STATE=1;let Vf=em;class EK extends Dt{getEventTypes(){const t=[St.STATE_CHANGE];return this.mergeTypes(super.getEventTypes(),t)}mouseEvent(t,e){if(!t||!e||!this.object)return;let s=null;switch(t.type){case J.DOUBLE_CLICK:switch(t.spriteTag){case"off":s=new St(St.STATE_CHANGE,this.object,3);break}break;case J.MOUSE_CLICK:switch(t.spriteTag){case"inc":s=new St(St.STATE_CHANGE,this.object,2);break;case"dec":s=new St(St.STATE_CHANGE,this.object,1);break}break}if(this.eventDispatcher&&s){this.eventDispatcher.dispatchEvent(s);return}super.mouseEvent(t,e)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new St(St.STATE_CHANGE,this.object,3))}}class TK extends zh{get engravingDialogType(){return Yl.HABBOWEEN}}class IK extends he{constructor(){super(),this._nextState=0,this._nextStateTimestamp=0}update(t){if(this._nextStateTimestamp>0&&t>=this._nextStateTimestamp){this._nextStateTimestamp=0;const e=new Ze;e.setString(this._nextState.toString()),super.processUpdateMessage(new Ht(this._nextState,e,this._nextStateExtra))}super.update(t)}processUpdateMessage(t){if(t instanceof Ht){this.processUpdate(t);return}super.processUpdateMessage(t)}processUpdate(t){if(!t)return;const e=~~(t.state/1e3),s=~~(t.state%1e3);if(s)this._nextState=e,this._nextStateExtra=t.extra,this._nextStateTimestamp=this.time+s;else{this._nextStateTimestamp=0;const r=new Ze;r.setString(e.toString()),super.processUpdateMessage(new Ht(e,r,t.extra))}}}class SK extends Dt{constructor(){super(...arguments),this._showStateOnceRendered=!1,this._updateCount=0}getEventTypes(){const t=[b.INERNAL_LINK];return this.mergeTypes(super.getEventTypes(),t)}initialize(t){super.initialize(t),t.logic&&t.logic.action&&(this.object.model.setValue(I.FURNITURE_INTERNAL_LINK,t.logic.action.link),t.logic.action.startState===1&&(this._showStateOnceRendered=!0))}update(t){super.update(t),this._showStateOnceRendered&&(this._updateCount++,this._showStateOnceRendered&&this._updateCount===20&&(this.setAutomaticStateIndex(1),this._showStateOnceRendered=!1))}setAutomaticStateIndex(t){this.object&&this.object.model&&this.object.model.setValue(I.FURNITURE_AUTOMATIC_STATE_INDEX,t)}mouseEvent(t,e){!t||!e||(t.type===J.DOUBLE_CLICK&&this._showStateOnceRendered&&this.setAutomaticStateIndex(0),super.mouseEvent(t,e))}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.INERNAL_LINK,this.object))}}class RK extends he{constructor(){super(...arguments),this._disposeEventsAllowed=!1,this._isInitialized=!1,this._currentState=-1}getEventTypes(){const t=[z.JUKEBOX_START,z.JUKEBOX_MACHINE_STOP,z.JUKEBOX_DISPOSE,z.JUKEBOX_INIT,b.JUKEBOX_PLAYLIST_EDITOR];return this.mergeTypes(super.getEventTypes(),t)}dispose(){this.requestDispose(),super.dispose()}processUpdateMessage(t){if(super.processUpdateMessage(t),this.object.model.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1&&(this._isInitialized||this.requestInit(),this.object.model.setValue(hs.INFOSTAND_EXTRA_PARAM,hs.JUKEBOX),t instanceof Ht)){const e=this.object.getState(0);e!==this._currentState&&(this._currentState=e,e===1?this.requestPlayList():e===0&&this.requestStopPlaying())}}requestInit(){!this.object||!this.eventDispatcher||(this._disposeEventsAllowed=!0,this.eventDispatcher.dispatchEvent(new z(z.JUKEBOX_INIT,this.object)),this._isInitialized=!0)}requestPlayList(){!this.object||!this.eventDispatcher||(this._disposeEventsAllowed=!0,this.eventDispatcher.dispatchEvent(new z(z.JUKEBOX_START,this.object)))}requestStopPlaying(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new z(z.JUKEBOX_MACHINE_STOP,this.object))}requestDispose(){!this._disposeEventsAllowed||!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new z(z.JUKEBOX_DISPOSE,this.object))}useObject(){!this.object||!this.eventDispatcher||(this.eventDispatcher.dispatchEvent(new b(b.JUKEBOX_PLAYLIST_EDITOR,this.object)),this.eventDispatcher.dispatchEvent(new St(St.STATE_CHANGE,this.object,-1)))}}class AK extends zh{get engravingDialogType(){return Yl.LOVE_LOCK}}const ln=class ln extends Dt{getEventTypes(){const t=[b.MANNEQUIN];return this.mergeTypes(super.getEventTypes(),t)}processUpdateMessage(t){super.processUpdateMessage(t),t instanceof Ht&&(t.data.writeRoomObjectModel(this.object.model),this.processObjectData())}processObjectData(){if(!this.object||!this.object.model)return;const t=new Cn;t.initializeFromRoomObjectModel(this.object.model),this.object.model.setValue(I.FURNITURE_MANNEQUIN_GENDER,t.getValue(ln.GENDER)),this.object.model.setValue(I.FURNITURE_MANNEQUIN_FIGURE,t.getValue(ln.FIGURE)),this.object.model.setValue(I.FURNITURE_MANNEQUIN_NAME,t.getValue(ln.OUTFIT_NAME))}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.MANNEQUIN,this.object))}};ln.GENDER="GENDER",ln.FIGURE="FIGURE",ln.OUTFIT_NAME="OUTFIT_NAME";let Hf=ln;class OK extends he{getEventTypes(){const t=[b.MONSTERPLANT_SEED_PLANT_CONFIRMATION_DIALOG];return this.mergeTypes(super.getEventTypes(),t)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.MONSTERPLANT_SEED_PLANT_CONFIRMATION_DIALOG,this.object))}get contextMenu(){return Ri.MONSTERPLANT_SEED}}class yK extends he{initialize(t){super.initialize(t),this.object&&this.object.model&&this.object.model.setValue(I.FURNITURE_IS_VARIABLE_HEIGHT,1)}}class vK extends he{getEventTypes(){const t=[b.MYSTERYBOX_OPEN_DIALOG];return this.mergeTypes(super.getEventTypes(),t)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.MYSTERYBOX_OPEN_DIALOG,this.object))}get contextMenu(){return Ri.MYSTERY_BOX}}class CK extends he{getEventTypes(){const t=[b.MYSTERYTROPHY_OPEN_DIALOG];return this.mergeTypes(super.getEventTypes(),t)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.MYSTERYTROPHY_OPEN_DIALOG,this.object))}get contextMenu(){return Ri.MYSTERY_TROPHY}}class MK extends Dt{getEventTypes(){const t=[z.ENTER_ONEWAYDOOR];return this.mergeTypes(super.getEventTypes(),t)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new z(z.ENTER_ONEWAYDOOR,this.object))}}class xK extends Dt{getEventTypes(){const t=[b.PET_PRODUCT_MENU];return this.mergeTypes(super.getEventTypes(),t)}processUpdateMessage(t){super.processUpdateMessage(t),this.object&&this.object.model.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1&&this.object.model.setValue(hs.INFOSTAND_EXTRA_PARAM,hs.USABLE_PRODUCT)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.PET_PRODUCT_MENU,this.object))}}class PK extends Dt{getEventTypes(){const t=[b.PLACEHOLDER];return this.mergeTypes(super.getEventTypes(),t)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.PLACEHOLDER,this.object))}}class bK extends Dt{initialize(t){super.initialize(t),t.logic&&t.logic.planetSystems&&this.object.model.setValue(I.FURNITURE_PLANETSYSTEM_DATA,t.logic.planetSystems)}}const qs=class qs extends Dt{getEventTypes(){const t=[b.PRESENT];return this.mergeTypes(super.getEventTypes(),t)}initialize(t){super.initialize(t),t.logic&&t.logic.particleSystems&&t.logic.particleSystems.length&&this.object.model.setValue(I.FURNITURE_FIREWORKS_DATA,t.logic.particleSystems)}processUpdateMessage(t){super.processUpdateMessage(t),t instanceof Ht&&(t.data.writeRoomObjectModel(this.object.model),this.updateStuffData()),t instanceof R0&&t.numberKey===I.FURNITURE_DISABLE_PICKING_ANIMATION&&this.object.model.setValue(I.FURNITURE_DISABLE_PICKING_ANIMATION,t.numberValue)}updateStuffData(){if(!this.object||!this.object.model)return;const t=new Cn;t.initializeFromRoomObjectModel(this.object.model);const e=t.getValue(qs.MESSAGE),s=this.object.model.getValue(I.FURNITURE_DATA);!e&&typeof s=="string"?this.object.model.setValue(I.FURNITURE_DATA,s.substr(1)):this.object.model.setValue(I.FURNITURE_DATA,t.getValue(qs.MESSAGE)),this.writeToModel(I.FURNITURE_TYPE_ID,t.getValue(qs.PRODUCT_CODE)),this.writeToModel(I.FURNITURE_PURCHASER_NAME,t.getValue(qs.PURCHASER_NAME)),this.writeToModel(I.FURNITURE_PURCHASER_FIGURE,t.getValue(qs.PURCHASER_FIGURE))}writeToModel(t,e){e&&this.object.model.setValue(t,e)}mouseEvent(t,e){if(!(!t||!e||!this.object)){switch(t.type){case J.ROLL_OVER:this.eventDispatcher.dispatchEvent(new z(z.MOUSE_BUTTON,this.object));break;case J.ROLL_OUT:this.eventDispatcher.dispatchEvent(new z(z.MOUSE_ARROW,this.object));break}super.mouseEvent(t,e)}}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.PRESENT,this.object))}};qs.MESSAGE="MESSAGE",qs.PRODUCT_CODE="PRODUCT_CODE",qs.EXTRA_PARAM="EXTRA_PARAM",qs.PURCHASER_NAME="PURCHASER_NAME",qs.PURCHASER_FIGURE="PURCHASER_FIGURE";let Yf=qs;class NK extends he{getEventTypes(){const t=[b.PURCHASABLE_CLOTHING_CONFIRMATION_DIALOG];return this.mergeTypes(super.getEventTypes(),t)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.PURCHASABLE_CLOTHING_CONFIRMATION_DIALOG,this.object))}get contextMenu(){return Ri.PURCHASABLE_CLOTHING}}const Ir=class Ir extends he{constructor(){super(),this.updateInterval=zr.DEFAULT_UPDATE_INTERVAL,this._oldLocation=new v}processUpdateMessage(t){if(!t)return;const e=t instanceof kr;if(this.object&&!e&&t.location){const s=this.object.getLocation(),r=v.dif(t.location,s);if(r&&Math.abs(r.x)<2&&Math.abs(r.y)<2){let n=s;(Math.abs(r.x)>1||Math.abs(r.y)>1)&&(n=v.sum(s,v.product(r,.5))),super.processUpdateMessage(new kr(n,t.location,t.direction));return}}if(t.location&&!e&&super.processUpdateMessage(new kr(t.location,t.location,t.direction)),t instanceof Ht){t.state>0?this.updateInterval=zr.DEFAULT_UPDATE_INTERVAL/this.getUpdateIntervalValue(t.state):this.updateInterval=1,this.handleDataUpdate(t);return}e&&t.isSlide&&(this.updateInterval=zr.DEFAULT_UPDATE_INTERVAL),super.processUpdateMessage(t)}getUpdateIntervalValue(t){return t/Ir.MAX_ANIMATION_COUNT}getAnimationValue(t){return t%Ir.MAX_ANIMATION_COUNT}handleDataUpdate(t){const e=this.getAnimationValue(t.state);if(e!==t.state){const s=new Ze;s.setString(e.toString()),t=new Ht(e,s,t.extra)}super.processUpdateMessage(t)}update(t){this.object&&(this._oldLocation.assign(this.object.getLocation()),super.update(t),v.dif(this.object.getLocation(),this._oldLocation).length===0&&this.object.getState(0)!==Ir.ANIMATION_NOT_MOVING&&this.object.setState(Ir.ANIMATION_NOT_MOVING,0))}};Ir.ANIMATION_NOT_MOVING=0,Ir.ANIMATION_MOVING=1,Ir.MAX_ANIMATION_COUNT=10;let Wf=Ir;class UK extends Dt{getEventTypes(){const t=[St.STATE_RANDOM];return this.mergeTypes(super.getEventTypes(),t)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new St(St.STATE_RANDOM,this.object))}}class DK extends he{get contextMenu(){return Ri.RANDOM_TELEPORT}}class LK extends Dt{getEventTypes(){const t=[ws.RODRE_CURRENT_USER_ID];return this.mergeTypes(super.getEventTypes(),t)}update(t){if(super.update(t),this.object&&this.object.model){this.object.model.getValue(I.SESSION_CURRENT_USER_ID)||this.eventDispatcher.dispatchEvent(new ws(ws.RODRE_CURRENT_USER_ID,this.object));const e=this.object.model.getValue(I.FURNITURE_DATA).renterId,s=this.object.model.getValue(I.SESSION_CURRENT_USER_ID);e?parseInt(e)===s?this.object.setState(2,0):this.object.setState(1,0):this.object.setState(0,0)}}get widget(){return ql.RENTABLESPACE}}class FK extends he{constructor(){super(),this._roomColorUpdated=!1}getEventTypes(){const t=[b.BACKGROUND_COLOR,Xi.ROOM_BACKGROUND_COLOR];return this.mergeTypes(super.getEventTypes(),t)}dispose(){this._roomColorUpdated&&(this.eventDispatcher&&this.object&&this.object.model.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1&&this.eventDispatcher.dispatchEvent(new Xi(Xi.ROOM_BACKGROUND_COLOR,this.object,!1,0,0,0)),this._roomColorUpdated=!1),super.dispose()}processUpdateMessage(t){super.processUpdateMessage(t),t instanceof Ht&&(t.data.writeRoomObjectModel(this.object.model),this.object.model.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1&&this.processColorUpdate())}processColorUpdate(){if(!this.object||!this.object.model)return;const t=new wa;t.initializeFromRoomObjectModel(this.object.model);const e=t.getValue(0),s=t.getValue(1),r=t.getValue(2),n=t.getValue(3);e>-1&&s>-1&&r>-1&&n>-1&&(this.object.model.setValue(I.FURNITURE_ROOM_BACKGROUND_COLOR_HUE,s),this.object.model.setValue(I.FURNITURE_ROOM_BACKGROUND_COLOR_SATURATION,r),this.object.model.setValue(I.FURNITURE_ROOM_BACKGROUND_COLOR_LIGHTNESS,n),this.object.setState(e,0),this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new Xi(Xi.ROOM_BACKGROUND_COLOR,this.object,e===1,s,r,n)),this._roomColorUpdated=!0)}mouseEvent(t,e){if(!(!t||!e||!this.object)){switch(t.type){case J.DOUBLE_CLICK:this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new b(b.BACKGROUND_COLOR,this.object));return}super.mouseEvent(t,e)}}}const Ne=class Ne extends Dt{constructor(){super(),this._disableFurnitureSelection=!0,this._hasClickUrl=!1}getEventTypes(){const t=[te.ROOM_AD_LOAD_IMAGE];return this.mergeTypes(super.getEventTypes(),t)}initialize(t){super.initialize(t),this._disableFurnitureSelection&&this.object.model.setValue(I.FURNITURE_SELECTION_DISABLED,1)}processUpdateMessage(t){super.processUpdateMessage(t),t instanceof Ht&&this.processAdDataUpdateMessage(t),t instanceof Wi&&this.processAdUpdate(t)}processAdDataUpdateMessage(t){if(!t)return;const e=new Cn;e.initializeFromRoomObjectModel(this.object.model);const s=parseInt(e.getValue(Ne.STATE));!isNaN(s)&&this.object.getState(0)!==s&&this.object.setState(s,0);const r=e.getValue(Ne.IMAGEURL_KEY),n=this.object.model.getValue(I.FURNITURE_BRANDING_IMAGE_URL);(!n||n!==r)&&(this.object.model.setValue(I.FURNITURE_BRANDING_IMAGE_URL,r),this.object.model.setValue(I.FURNITURE_BRANDING_IMAGE_STATUS,0),this.downloadBackground());const a=e.getValue(Ne.CLICKURL_KEY);if(a){const h=this.object.model.getValue(I.FURNITURE_BRANDING_URL);(!h||h!==a)&&this.object.model&&this.object.model.setValue(I.FURNITURE_BRANDING_URL,a)}const o=parseInt(e.getValue(Ne.OFFSETX_KEY)),u=parseInt(e.getValue(Ne.OFFSETY_KEY)),l=parseInt(e.getValue(Ne.OFFSETZ_KEY));isNaN(o)||this.object.model.setValue(I.FURNITURE_BRANDING_OFFSET_X,o),isNaN(u)||this.object.model.setValue(I.FURNITURE_BRANDING_OFFSET_Y,u),isNaN(l)||this.object.model.setValue(I.FURNITURE_BRANDING_OFFSET_Z,l);let c=Ne.IMAGEURL_KEY+"="+(r!==null?r:"")+" ";this._hasClickUrl&&(c=c+(Ne.CLICKURL_KEY+"="+(a!==null?a:"")+" ")),c=c+(Ne.OFFSETX_KEY+"="+o+" "),c=c+(Ne.OFFSETY_KEY+"="+u+" "),c=c+(Ne.OFFSETZ_KEY+"="+l+" "),this.object.model.setValue(hs.INFOSTAND_EXTRA_PARAM,hs.BRANDING_OPTIONS+c)}processAdUpdate(t){if(!(!t||!this.object))switch(t.type){case Wi.IMAGE_LOADED:this.object.model.setValue(I.FURNITURE_BRANDING_IMAGE_STATUS,1);break;case Wi.IMAGE_LOADING_FAILED:this.object.model.setValue(I.FURNITURE_BRANDING_IMAGE_STATUS,-1);break}}mouseEvent(t,e){!t||!e||t.type===J.MOUSE_MOVE||t.type===J.DOUBLE_CLICK||super.mouseEvent(t,e)}async downloadBackground(){const t=this.object&&this.object.model;if(!t)return;const e=t.getValue(I.FURNITURE_BRANDING_IMAGE_URL),s=t.getValue(I.FURNITURE_BRANDING_IMAGE_STATUS);if(!e||e===""||s===1)return;const r=Rt();if(!r)return;if(!r.getTexture(e)&&!await r.downloadAsset(e)){this.processUpdateMessage(new Wi(Wi.IMAGE_LOADING_FAILED));return}this.processUpdateMessage(new Wi(Wi.IMAGE_LOADED))}};Ne.STATE="state",Ne.IMAGEURL_KEY="imageUrl",Ne.CLICKURL_KEY="clickUrl",Ne.OFFSETX_KEY="offsetX",Ne.OFFSETY_KEY="offsetY",Ne.OFFSETZ_KEY="offsetZ";let Hh=Ne;class wK extends Hh{getAdClickUrl(t){return null}}class GK extends Hh{constructor(){super(),this._hasClickUrl=!0}getAdClickUrl(t){return t.getValue(I.FURNITURE_BRANDING_URL)}handleAdClick(t,e,s){if(s.indexOf("http")===0){eu.openWebPage(s);return}this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new te(te.ROOM_AD_FURNI_CLICK,this.object,"",s))}}class BK extends Dt{constructor(){super(),this._roomColorUpdated=!1}getEventTypes(){const t=[b.DIMMER,b.WIDGET_REMOVE_DIMMER,yn.DIMMER_STATE];return this.mergeTypes(super.getEventTypes(),t)}dispose(){this._roomColorUpdated&&this.eventDispatcher&&this.object&&(this.object.model.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1&&(this.eventDispatcher.dispatchEvent(new yn(this.object,0,1,1,16777215,255)),this.eventDispatcher.dispatchEvent(new b(b.WIDGET_REMOVE_DIMMER,this.object))),this._roomColorUpdated=!1),super.dispose()}processUpdateMessage(t){if(t instanceof Ht){if(t.data){const e=t.data.getLegacyString();this.object.model.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1&&this.processDimmerData(e),super.processUpdateMessage(new Ht(this.getStateFromDimmerData(e),t.data))}return}super.processUpdateMessage(t)}getStateFromDimmerData(t){if(!t)return 0;const e=t.split(",");return e.length>=5?parseInt(e[0])-1:0}processDimmerData(t){if(!t)return;const e=t.split(",");if(e.length>=5){const s=this.getStateFromDimmerData(t),r=parseInt(e[1]),n=parseInt(e[2]),a=e[3];let o=parseInt(a.substr(1),16),u=parseInt(e[4]);s||(o=16777215,u=255),this.eventDispatcher&&this.object&&(this.eventDispatcher.dispatchEvent(new yn(this.object,s,r,n,o,u)),this._roomColorUpdated=!0)}}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.DIMMER,this.object))}update(t){super.update(t)}}const hn=class hn extends Dt{constructor(){super(),this._score=0,this._scoreIncreaser=50,this._scoreTimer=0}processUpdateMessage(t){if(t instanceof Ht)return this.updateScore(t.state);super.processUpdateMessage(t)}updateScore(t){this._score=t;const e=this.object.getState(0);if(this._score!==e){let s=this._score-e;s<0&&(s=-s),s*hn.UPDATE_INTERVAL>hn.MAX_UPDATE_TIME?this._scoreIncreaser=hn.MAX_UPDATE_TIME/s:this._scoreIncreaser=hn.UPDATE_INTERVAL,this._scoreTimer=Nt()}}update(t){super.update(t);const e=this.object.getState(0);if(e!==this._score&&t>=this._scoreTimer+this._scoreIncreaser){const s=t-this._scoreTimer;let r=s/this._scoreIncreaser,n=1;this._score<e&&(n=-1),r>n*(this._score-e)&&(r=n*(this._score-e)),this.object.setState(e+n*r,0),this._scoreTimer=t-(s-r*this._scoreIncreaser)}}};hn.UPDATE_INTERVAL=50,hn.MAX_UPDATE_TIME=3e3;let jf=hn;class kK extends Dt{processUpdateMessage(t){if(super.processUpdateMessage(t),this.object.model.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1){const e=this.object.model.getValue(I.FURNITURE_EXTRAS),s=parseInt(e);this.object.model.setValue(hs.INFOSTAND_EXTRA_PARAM,hs.SONGDISK+s)}}}const $s=class $s extends he{constructor(){super(...arguments),this._state=-1,this._sampleId=-1,this._noPitch=!1,this._lastLocZ=0}getEventTypes(){const t=[Ee.ROOM_OBJECT_INITIALIZED,Ee.ROOM_OBJECT_DISPOSED,Ee.PLAY_SAMPLE,Ee.CHANGE_PITCH];return this.mergeTypes(super.getEventTypes(),t)}initialize(t){super.initialize(t),t.logic&&t.logic.soundSample&&(this._sampleId=t.logic.soundSample.id,this._noPitch=t.logic.soundSample.noPitch),this.object.model.setValue(I.FURNITURE_SOUNDBLOCK_RELATIVE_ANIMATION_SPEED,1)}dispose(){this._state!==$s.STATE_UNINITIALIZED&&this.eventDispatcher.dispatchEvent(new Ee(Ee.ROOM_OBJECT_DISPOSED,this.object,this._sampleId)),super.dispose()}processUpdateMessage(t){super.processUpdateMessage(t),t instanceof Ht&&this.updateSoundBlockMessage(t)}updateSoundBlockMessage(t){if(!t)return;const e=this.object&&this.object.model,s=this.object&&this.object.location;!e||!s||(this._state===$s.STATE_UNINITIALIZED&&e.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1&&(this._lastLocZ=s.z,this.eventDispatcher.dispatchEvent(new Ee(Ee.ROOM_OBJECT_INITIALIZED,this.object,this._sampleId,this.getPitchForHeight(s.z)))),this._state!==$s.STATE_UNINITIALIZED&&e.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1&&this._lastLocZ!==s.z&&(this._lastLocZ=s.z,this.eventDispatcher.dispatchEvent(new Ee(Ee.CHANGE_PITCH,this.object,this._sampleId,this.getPitchForHeight(s.z)))),this._state!==$s.STATE_UNINITIALIZED&&t.state!==this._state&&this.playSoundAt(s.z),this._state=t.state)}playSoundAt(t){if(!this.object)return;const e=this.getPitchForHeight(t);this.object.model.setValue(I.FURNITURE_SOUNDBLOCK_RELATIVE_ANIMATION_SPEED,e),this.eventDispatcher.dispatchEvent(new Ee(Ee.PLAY_SAMPLE,this.object,this._sampleId,e))}getPitchForHeight(t){if(this._noPitch)return 1;let e=t*2;return e>$s.HIGHEST_SEMITONE&&(e=Math.min(0,$s.LOWEST_SEMITONE+(e-$s.HIGHEST_SEMITONE-1))),Math.pow(2,e/12)}};$s.HIGHEST_SEMITONE=12,$s.LOWEST_SEMITONE=-12,$s.STATE_UNINITIALIZED=-1;let Kf=$s;class zK extends he{constructor(){super(...arguments),this._disposeEventsAllowed=!1,this._isInitialized=!1,this._currentState=-1}getEventTypes(){const t=[z.SOUND_MACHINE_START,z.SOUND_MACHINE_STOP,z.SOUND_MACHINE_DISPOSE,z.SOUND_MACHINE_INIT];return this.mergeTypes(super.getEventTypes(),t)}dispose(){this.requestDispose(),super.dispose()}processUpdateMessage(t){if(super.processUpdateMessage(t),this.object.model.getValue(I.FURNITURE_REAL_ROOM_OBJECT)===1&&(this._isInitialized||this.requestInit(),this.object.model.setValue(hs.INFOSTAND_EXTRA_PARAM,hs.JUKEBOX),t instanceof Ht)){const e=this.object.getState(0);e!==this._currentState&&(this._currentState=e,e===1?this.requestPlayList():e===0&&this.requestStopPlaying())}}requestInit(){!this.object||!this.eventDispatcher||(this._disposeEventsAllowed=!0,this.eventDispatcher.dispatchEvent(new z(z.SOUND_MACHINE_INIT,this.object)),this._isInitialized=!0)}requestPlayList(){!this.object||!this.eventDispatcher||(this._disposeEventsAllowed=!0,this.eventDispatcher.dispatchEvent(new z(z.SOUND_MACHINE_START,this.object)))}requestStopPlaying(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new z(z.SOUND_MACHINE_STOP,this.object))}requestDispose(){!this._disposeEventsAllowed||!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new z(z.SOUND_MACHINE_DISPOSE,this.object))}}const sm=class sm extends Dt{getEventTypes(){const t=[b.STICKIE,z.STICKIE];return this.mergeTypes(super.getEventTypes(),t)}initialize(t){super.initialize(t),this.updateColor(),this.object&&this.object.model.setValue(I.FURNITURE_IS_STICKIE,"")}processUpdateMessage(t){super.processUpdateMessage(t),t instanceof Jm&&this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new b(b.STICKIE,this.object)),this.updateColor()}updateColor(){if(!this.object)return;const t=this.object.model.getValue(I.FURNITURE_DATA);let e=sm.STICKIE_COLORS.indexOf(t);e<0&&(e=3),this.object.model.setValue(I.FURNITURE_COLOR,e+1)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new z(z.STICKIE,this.object))}};sm.STICKIE_COLORS=["9CCEFF","FF9CFF","9CFF9C","FFFF33"];let Xf=sm;class VK extends Dt{getEventTypes(){const t=[b.TROPHY];return this.mergeTypes(super.getEventTypes(),t)}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.TROPHY,this.object))}}const cn=class cn extends he{constructor(){super(),this._total=0,this._lastUpdate=0,this._interval=33}processUpdateMessage(t){if(super.processUpdateMessage(t),t instanceof Ht){const e=t.data;if(!e)return;this.updateTotal(e.result)}}updateTotal(t){if(this._total=t,!this._lastUpdate){this.object.model.setValue(I.FURNITURE_VOTE_COUNTER_COUNT,t),this._lastUpdate=Nt();return}if(this._total!==this.currentTotal){const e=Math.abs(this._total-this.currentTotal);e*cn.UPDATE_INTERVAL>cn.MAX_UPDATE_TIME?this._interval=cn.MAX_UPDATE_TIME/e:this._interval=cn.UPDATE_INTERVAL,this._lastUpdate=Nt()}}update(t){if(super.update(t),this.object&&this.currentTotal!==this._total&&t>=this._lastUpdate+this._interval){const e=t-this._lastUpdate;let s=e/this._interval,r=1;this._total<this.currentTotal&&(r=-1),s>r*(this._total-this.currentTotal)&&(s=r*(this._total-this.currentTotal)),this.object.model.setValue(I.FURNITURE_VOTE_COUNTER_COUNT,this.currentTotal+r*s),this._lastUpdate=t-(e-s*this._interval)}}get currentTotal(){return this.object.model.getValue(I.FURNITURE_VOTE_COUNTER_COUNT)}};cn.UPDATE_INTERVAL=33,cn.MAX_UPDATE_TIME=1e3;let qf=cn;class HK extends he{processUpdateMessage(t){if(super.processUpdateMessage(t),!!this.object&&t instanceof Ht){const e=t.data;e instanceof Jo&&this.object.model.setValue(I.FURNITURE_VOTE_MAJORITY_RESULT,e.result)}}}class YK extends he{mouseEvent(t,e){!t||!e||(t.type===J.DOUBLE_CLICK&&this.eventDispatcher&&this.eventDispatcher.dispatchEvent(new St(St.STATE_CHANGE,this.object)),super.mouseEvent(t,e))}}class WK extends he{initialize(t){super.initialize(t);let e="";t.logic&&t.logic.maskType&&t.logic.maskType!==""&&t.logic.maskType.length>0&&(e=t.logic.maskType),this.object.model.setValue(I.FURNITURE_USES_PLANE_MASK,1),this.object.model.setValue(I.FURNITURE_PLANE_MASK_TYPE,e)}}class jK extends Dt{getEventTypes(){const t=[b.YOUTUBE,ws.RODRE_URL_PREFIX];return this.mergeTypes(super.getEventTypes(),t)}update(t){super.update(t),this.object.model.getValue(I.SESSION_URL_PREFIX)||this.eventDispatcher.dispatchEvent(new ws(ws.RODRE_URL_PREFIX,this.object))}useObject(){!this.object||!this.eventDispatcher||this.eventDispatcher.dispatchEvent(new b(b.YOUTUBE,this.object))}}const im=class im{constructor(){this._id=im.SPRITE_COUNTER++,this._name="",this._type="",this._spriteType=Rs.DEFAULT,this._texture=null,this._width=0,this._height=0,this._offsetX=0,this._offsetY=0,this._flipH=!1,this._flipV=!1,this._direction=0,this._alpha=255,this._blendMode="normal",this._color=16777215,this._relativeDepth=0,this._varyingDepth=!1,this._libraryAssetName="",this._clickHandling=!1,this._skipMouseHandling=!1,this._visible=!0,this._tag="",this._posture=null,this._alphaTolerance=ii.MATCH_OPAQUE_PIXELS,this._filters=[],this._updateCounter=0}dispose(){this._texture=null,this._width=0,this._height=0}increaseUpdateCounter(){this._updateCounter++}get id(){return this._id}set id(t){this._id=t}get name(){return this._name}set name(t){this._name!==t&&(this._name=t,this._updateCounter++)}get type(){return this._type}set type(t){this._type=t}get spriteType(){return this._spriteType}set spriteType(t){this._spriteType=t}get texture(){return this._texture}set texture(t){this._texture!==t&&(t&&(this._width=t.width,this._height=t.height),this._texture=t,this._updateCounter++)}get width(){return this._width}get height(){return this._height}get offsetX(){return this._offsetX}set offsetX(t){this._offsetX!==t&&(this._offsetX=t,this._updateCounter++)}get offsetY(){return this._offsetY}set offsetY(t){this._offsetY!==t&&(this._offsetY=t,this._updateCounter++)}get flipH(){return this._flipH}set flipH(t){this._flipH!==t&&(this._flipH=t,this._updateCounter++)}get flipV(){return this._flipV}set flipV(t){this._flipV!==t&&(this._flipV=t,this._updateCounter++)}get direction(){return this._direction}set direction(t){this._direction=t}get alpha(){return this._alpha}set alpha(t){t=t&255,this._alpha!==t&&(this._alpha=t,this._updateCounter++)}get blendMode(){return this._blendMode}set blendMode(t){this._blendMode!==t&&(this._blendMode=t,this._updateCounter++)}get color(){return this._color}set color(t){t=t&16777215,this._color!==t&&(this._color=t,this._updateCounter++)}get relativeDepth(){return this._relativeDepth}set relativeDepth(t){this._relativeDepth!==t&&(this._relativeDepth=t,this._updateCounter++)}get varyingDepth(){return this._varyingDepth}set varyingDepth(t){t!==this._varyingDepth&&(this._varyingDepth=t,this._updateCounter++)}get libraryAssetName(){return this._libraryAssetName}set libraryAssetName(t){this._libraryAssetName=t}get clickHandling(){return this._clickHandling}set clickHandling(t){this._clickHandling=t}get visible(){return this._visible}set visible(t){this._visible!==t&&(this._visible=t,this._updateCounter++)}get tag(){return this._tag}set tag(t){this._tag!==t&&(this._tag=t,this._updateCounter++)}get posture(){return this._posture}set posture(t){this._posture!==t&&(this._posture=t,this._updateCounter++)}get alphaTolerance(){return this._alphaTolerance}set alphaTolerance(t){this._alphaTolerance!==t&&(this._alphaTolerance=t,this._updateCounter++)}get filters(){return this._filters}set filters(t){this._filters=t,this._updateCounter++}get updateCounter(){return this._updateCounter}get skipMouseHandling(){return this._skipMouseHandling}set skipMouseHandling(t){this._skipMouseHandling=t}};im.SPRITE_COUNTER=0;let Yh=im;const rm=class rm{constructor(){this._id=rm.VISUALIZATION_COUNTER++,this._object=null,this._asset=null,this._sprites=[],this._scale=-1,this._updateObjectCounter=-1,this._updateModelCounter=-1,this._updateSpriteCounter=-1}initialize(t){return!1}update(t,e,s,r){}reset(){this._scale=-1}dispose(){if(this._sprites){for(;this._sprites.length;){const t=this._sprites[0];t&&t.dispose(),this._sprites.shift()}this._sprites=null}this._object=null,this._asset=null}getSprite(t){return t>=0&&t<this._sprites.length?this._sprites[t]:null}getSpriteList(){return null}createSprite(){return this.createSpriteAtIndex(this._sprites.length)}createSpriteAtIndex(t){const e=new Yh;return t>=this._sprites.length?this._sprites.push(e):this._sprites.splice(t,0,e),e}createSprites(t){for(;this._sprites.length>t;){const e=this._sprites[this._sprites.length-1];e&&e.dispose(),this._sprites.pop()}for(;this._sprites.length<t;)this._sprites.push(new Yh)}get image(){return this.getImage()}getImage(){const t=this.getBoundingRectangle();if(t.width*t.height===0)return null;const e=this.totalSprites,s=[];let r=0;for(;r<e;){const a=this.getSprite(r);a&&a.visible&&a.texture&&s.push(a),r++}s.sort((a,o)=>o.relativeDepth-a.relativeDepth);const n=new $t;for(r=0;r<s.length;){const a=s[r],o=a.texture;if(o){const u=new wt(o);u.alpha=a.alpha/255,u.tint=a.color,u.x=a.offsetX,u.y=a.offsetY,u.blendMode=a.blendMode,u.filters=a.filters,a.flipH&&(u.scale.x=-1),a.flipV&&(u.scale.y=-1),n.addChild(u)}r++}return ue.generateTexture({target:n})}getBoundingRectangle(){const t=this.totalSprites,e=new Kt;let s=0;for(;s<t;){const r=this.getSprite(s);if(r&&r.texture&&r.visible){const n=r.flipH?-r.width+r.offsetX:r.offsetX,a=r.flipV?-r.height+r.offsetY:r.offsetY,o=new st(n,a);s===0?(e.x=o.x,e.y=o.y,e.width=r.width,e.height=r.height):(o.x<e.x&&(e.x=o.x),o.y<e.y&&(e.y=o.y),o.x+r.width>e.right&&(e.width=o.x+r.width-e.x),o.y+r.height>e.bottom&&(e.height=o.y+r.height-e.y))}s++}return e}get instanceId(){return this._id}get object(){return this._object}set object(t){this._object=t}get asset(){return this._asset}set asset(t){this._asset&&this._asset.removeReference(),this._asset=t,this._asset&&this._asset.addReference()}get sprites(){return this._sprites}get totalSprites(){return this._sprites.length}get updateObjectCounter(){return this._updateObjectCounter}set updateObjectCounter(t){this._updateObjectCounter=t}get updateModelCounter(){return this._updateModelCounter}set updateModelCounter(t){this._updateModelCounter=t}get updateSpriteCounter(){return this._updateSpriteCounter}set updateSpriteCounter(t){this._updateSpriteCounter=t}get spriteCount(){return this._sprites.length}};rm.VISUALIZATION_COUNTER=0;let Xa=rm;class tE{initialize(t){return!0}dispose(){}createAvatarImage(t,e,s=null,r=null,n=null){let a=null;return e>48?a=II().createAvatarImage(t,ti.LARGE,s,r,n):a=II().createAvatarImage(t,ti.SMALL,s,r,n),a}get layerCount(){return 0}}class O0{constructor(t,e,s){this._id=t,this._type=e,this._visualization=s}dispose(){this._visualization=null}update(t,e){}animate(t){return!1}get id(){return this._id}get type(){return this._type}get visualization(){return this._visualization}}const ms=class ms extends O0{constructor(){super(...arguments),this._asset=null,this._startTime=Nt(),this._delta=0,this._offsetY=0,this._scale=0,this._state=0}update(t,e){if(!t)return;this._scale=e;let s=64,r=0;if(e<48?(this._asset=Rt().getTexture("avatar_addition_user_blowkiss_small"),this.visualization.angle===90||this.visualization.angle===270?r=0:this.visualization.angle===135||this.visualization.angle===180||this.visualization.angle===225?r=6:r=-6,this._offsetY=-38,s=32):(this._asset=Rt().getTexture("avatar_addition_user_blowkiss"),this.visualization.angle===90||this.visualization.angle===270?r=-3:this.visualization.angle===135||this.visualization.angle===180||this.visualization.angle===225?r=22:r=-30,this._offsetY=-70),this.visualization.posture===et.POSTURE_SIT?this._offsetY+=s/2:this.visualization.posture===et.POSTURE_LAY&&(this._offsetY+=s),this._asset){t.texture=this._asset,t.offsetX=r,t.offsetY=this._offsetY,t.relativeDepth=-.02,t.alpha=0;const n=this._delta;this.animate(t),this._delta=n}}animate(t){if(!t)return!1;if(this._asset&&(t.texture=this._asset),this._state===ms.STATE_DELAY)return Nt()-this._startTime<ms.DELAY_BEFORE_ANIMATION?!1:(this._state=ms.STATE_FADE_IN,t.alpha=0,t.visible=!0,this._delta=0,!0);if(this._state===ms.STATE_FADE_IN)return this._delta+=.1,t.offsetY=this._offsetY,t.alpha=Math.pow(this._delta,.9)*255,this._delta>=1&&(t.alpha=255,this._delta=0,this._state=ms.STATE_FLOAT),!0;if(this._state===ms.STATE_FLOAT){const e=Math.pow(this._delta,.9);this._delta+=.05;const s=this._scale<48?-30:-40;return t.offsetY=this._offsetY+(this._delta<1?e:1)*s,t.alpha=(1-e)*255,t.alpha<=0&&(t.visible=!1,this._state=ms.STATE_COMPLETE),!0}return!1}};ms.DELAY_BEFORE_ANIMATION=300,ms.STATE_DELAY=0,ms.STATE_FADE_IN=1,ms.STATE_FLOAT=2,ms.STATE_COMPLETE=3;let $f=ms;const da=class da{static getExpressionAddition(t,e,s){switch(e){case this.BLOW:return new $f(t,this.BLOW,s);default:return new O0(t,e,s)}}};da.WAVE=1,da.BLOW=2,da.LAUGH=3,da.CRY=4,da.IDLE=5;let Qf=da;const We=class We{constructor(t,e){this._id=t,this._visualization=e,this._asset=null,this._startTime=Nt(),this._offsetY=0,this._scale=0,this._state=0}dispose(){this._visualization=null,this._asset=null}getSpriteAssetName(t){let e="left";return(this._visualization.angle===135||this._visualization.angle===180||this._visualization.angle===225||this._visualization.angle===270)&&(e="right"),"avatar_addition_user_idle_"+e+"_"+t+(this._scale<48?"_small":"")}update(t,e){if(!t)return;this._scale=e,this._asset=Rt().getTexture(this.getSpriteAssetName(this._state===We.STATE_FRAME_A?1:2));let s=64,r=0;e<48?(this._visualization.angle===135||this._visualization.angle===180||this._visualization.angle===225||this._visualization.angle===270?r=10:r=-16,this._offsetY=-38,s=32):(this._visualization.angle===135||this._visualization.angle===180||this._visualization.angle===225||this._visualization.angle===270?r=22:r=-30,this._offsetY=-70),this._visualization.posture===et.POSTURE_SIT?this._offsetY+=s/2:this._visualization.posture===et.POSTURE_LAY&&(this._offsetY+=s-.3*s),this._asset&&(t.texture=this._asset,t.offsetX=r,t.offsetY=this._offsetY,t.relativeDepth=-.02,t.alpha=0)}animate(t){if(!t)return!1;const e=Nt();return this._state===We.STATE_DELAY&&e-this._startTime>=We.DELAY_BEFORE_ANIMATION&&(this._state=We.STATE_FRAME_A,this._startTime=e,this._asset=Rt().getTexture(this.getSpriteAssetName(1))),this._state===We.STATE_FRAME_A&&e-this._startTime>=We.DELAY_PER_FRAME&&(this._state=We.STATE_FRAME_B,this._startTime=e,this._asset=Rt().getTexture(this.getSpriteAssetName(2))),this._state===We.STATE_FRAME_B&&e-this._startTime>=We.DELAY_PER_FRAME&&(this._state=We.STATE_FRAME_A,this._startTime=e,this._asset=Rt().getTexture(this.getSpriteAssetName(1))),this._asset?(t.texture=this._asset,t.alpha=255,t.visible=!0):t.visible=!1,!1}get id(){return this._id}};We.DELAY_BEFORE_ANIMATION=2e3,We.DELAY_PER_FRAME=2e3,We.STATE_DELAY=0,We.STATE_FRAME_A=1,We.STATE_FRAME_B=2;let Zf=We;const Bi=class Bi{constructor(t){this._id=t,this._asset=null}dispose(){this._asset&&(wr().putTexture(this._asset),this._asset=null)}update(t,e){t&&(this._asset||(this._asset=wr().getTexture(Bi.WIDTH,Bi.HEIGHT)),t.visible=!0,t.texture=this._asset,t.offsetX=Bi.OFFSET_X,t.offsetY=Bi.OFFSET_Y,t.alphaTolerance=ii.MATCH_ALL_PIXELS)}animate(t){return!1}get id(){return this._id}};Bi.WIDTH=46,Bi.HEIGHT=60,Bi.OFFSET_X=-23,Bi.OFFSET_Y=-48;let Jf=Bi;class KK{constructor(t,e,s){this._id=t,this._visualization=e,this._status=s,this._asset=null,this._relativeDepth=0}dispose(){this._visualization=null,this._asset=null}update(t,e){if(!t)return;t.visible=!0,t.relativeDepth=this._relativeDepth,t.alpha=255;let s=64,r=0,n=0;this._asset=Rt().getTexture(this._status===pi.GUIDE?"avatar_addition_user_guide_bubble":"avatar_addition_user_guide_requester_bubble"),e<48?(r=-19,n=-80,s=32):(r=-19,n=-120),this._visualization.posture===et.POSTURE_SIT?n+=s/2:this._visualization.posture===et.POSTURE_LAY&&(n+=e),this._asset&&(t.texture=this._asset,t.offsetX=r,t.offsetY=n,t.relativeDepth=-.02+0)}animate(t){return this._asset&&t&&(t.texture=this._asset),!1}get id(){return this._id}get relativeDepth(){return this._relativeDepth}set relativeDepth(t){this._relativeDepth=t}}class XK{constructor(t,e){this._id=t,this._visualization=e,this._asset=null}dispose(){this._visualization=null,this._asset=null}update(t,e){if(!t)return;let s=64,r=0,n=0;e<48?(this._asset=Rt().getTexture("avatar_addition_user_muted_small"),s=32,r=-12,n=-66):(this._asset=Rt().getTexture("avatar_addition_user_muted"),r=-15,n=-110),this._visualization.posture===et.POSTURE_SIT?n+=s/2:this._visualization.posture===et.POSTURE_LAY&&(n+=e),this._asset?(t.visible=!0,t.texture=this._asset,t.offsetX=r,t.offsetY=n,t.relativeDepth=-.02):t.visible=!1}animate(t){return this._asset&&t&&(t.texture=this._asset),!1}get id(){return this._id}}class qK{constructor(t,e,s){this._id=t,this._number=e,this._visualization=s,this._asset=null,this._scale=0,this._numberValueFadeDirection=0,this._numberValueMoving=!1,this._numberValueMoveCounter=0}dispose(){this._visualization=null,this._asset=null}update(t,e){if(!t)return;this._scale=e;let s=64,r=0,n=0;this._number>0?(e<48?(this._asset=Rt().getTexture("avatar_addition_number_"+this._number+"_small"),s=32,r=-6,n=-52):(this._asset=Rt().getTexture("avatar_addition_number_"+this._number),r=-8,n=-105),this._visualization.posture===et.POSTURE_SIT?n+=s/2:this._visualization.posture===et.POSTURE_LAY&&(n+=e),this._asset?(t.visible=!0,t.texture=this._asset,t.offsetX=r,t.offsetY=n,t.relativeDepth=-.01,t.alpha=0,this._numberValueFadeDirection=1,this._numberValueMoving=!0,this._numberValueMoveCounter=0):t.visible=!1):t.visible&&(this._numberValueFadeDirection=-1)}animate(t){if(!t)return!1;this._asset&&(t.texture=this._asset);let e=t.alpha,s=!1;if(this._numberValueMoving){if(this._numberValueMoveCounter++,this._numberValueMoveCounter<10)return!1;if(this._numberValueFadeDirection<0)this._scale<48?t.offsetY-=2:t.offsetY-=4;else{let r=4;this._scale<48&&(r=8),this._numberValueMoveCounter%r||(t.offsetY--,s=!0)}}return this._numberValueFadeDirection>0?(e<255&&(e+=32),e>=255&&(e=255,this._numberValueFadeDirection=0),t.alpha=e,!0):this._numberValueFadeDirection<0?(e>=0&&(e-=32),e<=0&&(this._numberValueFadeDirection=0,this._numberValueMoving=!1,e=0,t.visible=!1),t.alpha=e,!0):s}get id(){return this._id}}class $K{constructor(t,e){this._id=t,this._visualization=e,this._asset=null,this._relativeDepth=0}dispose(){this._visualization=null,this._asset=null}update(t,e){if(!t)return;t.visible=!0,t.relativeDepth=this._relativeDepth,t.alpha=255;let s=64,r=0,n=0;e<48?(this._asset=Rt().getTexture("avatar_addition_user_typing_small"),r=3,n=-42,s=32):(this._asset=Rt().getTexture("avatar_addition_user_typing"),r=14,n=-83),this._visualization.posture===et.POSTURE_SIT?n+=s/2:this._visualization.posture===et.POSTURE_LAY&&(n+=e),this._asset&&(t.texture=this._asset,t.offsetX=r,t.offsetY=n,t.relativeDepth=-.02+0)}animate(t){return this._asset&&t&&(t.texture=this._asset),!1}get id(){return this._id}get relativeDepth(){return this._relativeDepth}set relativeDepth(t){this._relativeDepth=t}}const $=class $ extends Xa{constructor(){super(),this._data=null,this._avatarImage=null,this._cachedAvatars=new xe,this._cachedAvatarEffects=new xe,this._shadow=null,this._lastUpdate=-1e3,this._disposed=!1,this._figure=null,this._gender=null,this._direction=-1,this._headDirection=-1,this._posture="",this._postureParameter="",this._canStandUp=!1,this._postureOffset=0,this._verticalOffset=0,this._angle=-1,this._headAngle=-1,this._talk=!1,this._expression=0,this._sleep=!1,this._blink=!1,this._gesture=0,this._sign=-1,this._highlightEnabled=!1,this._highlight=!1,this._dance=0,this._effect=0,this._carryObject=0,this._useObject=0,this._ownUser=!1,this._isLaying=!1,this._layInside=!1,this._isAnimating=!1,this._extraSpritesStartIndex=2,this._forcedAnimFrames=0,this._updatesUntilFrameUpdate=0,this._isAvatarReady=!1,this._needsUpdate=!1,this._geometryUpdateCounter=-1,this._additions=new Map}initialize(t){return t instanceof tE?(this._data=t,this.createSprites($.INITIAL_RESERVED_SPRITES),super.initialize(t),!0):!1}dispose(){this._disposed||(super.dispose(),this._avatarImage&&this._avatarImage.dispose(),this._shadow=null,this._disposed=!0)}update(t,e,s,r){if(!this.object||!t||!this._data||e<this._lastUpdate+$.UPDATE_TIME_INCREASER)return;this._lastUpdate+=$.UPDATE_TIME_INCREASER,this._lastUpdate+$.UPDATE_TIME_INCREASER<e&&(this._lastUpdate=e-$.UPDATE_TIME_INCREASER);const n=this.object.model,a=t.scale,o=this._effect;let u=!1,l=!1,c=!1,h=!1;const _=this.updateModel(n,a);if(_||a!==this._scale||!this._avatarImage){if(a!==this._scale&&(u=!0,this.updateScale(a)),o!==this._effect&&(l=!0),u||!this._avatarImage||l){if(this._avatarImage=this.createAvatarImage(a,this._effect),!this._avatarImage)return;c=!0;const p=this.getSprite($.AVATAR_LAYER_ID);p&&this._avatarImage&&this._avatarImage.isPlaceholder()?p.alpha=150:p&&(p.alpha=255)}if(!this._avatarImage)return;if(l&&this._avatarImage.animationHasResetOnToggle&&this._avatarImage.resetAnimationFrameCounter(),this.updateShadow(a),h=this.updateObject(this.object,t,s,!0),this.processActionsForAvatar(this._avatarImage),this._additions){let p=this._extraSpritesStartIndex;for(const g of this._additions.values())g.update(this.getSprite(p++),a)}this._scale=a}else h=this.updateObject(this.object,t,s);if(this._additions){let p=this._extraSpritesStartIndex;for(const g of this._additions.values())g.animate(this.getSprite(p++))&&this.updateSpriteCounter++}const d=h||_||u,f=(this._isAnimating||this._forcedAnimFrames>0)&&s;if(d&&(this._forcedAnimFrames=$.ANIMATION_FRAME_UPDATE_INTERVAL),d||f){if(this.updateSpriteCounter++,this._forcedAnimFrames--,this._updatesUntilFrameUpdate--,this._updatesUntilFrameUpdate<=0||u||_||c)this._avatarImage.updateAnimationByFrames(1),this._updatesUntilFrameUpdate=$.ANIMATION_FRAME_UPDATE_INTERVAL;else return;let p=this._avatarImage.getCanvasOffsets();(!p||p.length<3)&&(p=$.DEFAULT_CANVAS_OFFSETS);const g=this.getSprite($.SPRITE_INDEX_AVATAR);if(g){const C=this.object.model.getValue(I.FIGURE_HIGHLIGHT_ENABLE)===1&&this.object.model.getValue(I.FIGURE_HIGHLIGHT)===1,P=this._avatarImage.processAsTexture(as.FULL,C);P&&(g.texture=P,C||(g.filters=[])),g.texture&&(g.offsetX=-1*a/2+p[0]-(g.texture.width-a)/2,g.offsetY=-g.texture.height+a/4+p[1]+this._postureOffset),this._isLaying?this._layInside?g.relativeDepth=-.5:g.relativeDepth=$.AVATAR_SPRITE_LAYING_DEPTH+p[2]:g.relativeDepth=$.AVATAR_SPRITE_DEFAULT_DEPTH+p[2],this._ownUser?(g.relativeDepth-=$.AVATAR_OWN_DEPTH_ADJUST,g.spriteType=Rs.AVATAR_OWN):g.spriteType=Rs.AVATAR}const m=this.getAddition($.TYPING_BUBBLE_ID);m&&(this._isLaying?m.relativeDepth=$.AVATAR_SPRITE_LAYING_DEPTH-.01+p[2]:m.relativeDepth=$.AVATAR_SPRITE_DEFAULT_DEPTH-.01+p[2]),this._isAnimating=this._avatarImage.isAnimating();let O=$.INITIAL_RESERVED_SPRITES;const y=this._avatarImage.getDirection();for(const C of this._avatarImage.getSprites())if(C.id===$.AVATAR){const P=this.getSprite($.SPRITE_INDEX_AVATAR);if(P){const L=this._avatarImage.getLayerData(C);let N=C.getDirectionOffsetX(y),F=C.getDirectionOffsetY(y);L&&(N+=L.dx,F+=L.dy),a<48&&(N/=2,F/=2),this._canStandUp||(P.offsetX+=N,P.offsetY+=F)}}else{const P=this.getSprite(O);if(P){P.alphaTolerance=ii.MATCH_NOTHING,P.visible=!0;const L=this._avatarImage.getLayerData(C);let N=0,F=C.getDirectionOffsetX(y),x=C.getDirectionOffsetY(y);const U=C.getDirectionOffsetZ(y);let k=0;C.hasDirections&&(k=y),L&&(N=L.animationFrame,F+=L.dx,x+=L.dy,k+=L.dd),a<48&&(F/=2,x/=2),k<0?k+=8:k>7&&(k-=8);const gt=this._avatarImage.getScale()+"_"+C.member+"_"+k+"_"+N,X=Rt().getAsset(gt);if(!X)continue;P.texture=X.texture,P.offsetX=X.offsetX-a/2+F,P.offsetY=X.offsetY+x,P.flipH=X.flipH,C.hasStaticY?P.offsetY+=this._verticalOffset*a/(2*$.BASE_Y_SCALE):P.offsetY+=this._postureOffset,this._isLaying?P.relativeDepth=$.AVATAR_SPRITE_LAYING_DEPTH-.001*this.totalSprites*U:P.relativeDepth=$.AVATAR_SPRITE_DEFAULT_DEPTH-.001*this.totalSprites*U,C.ink===33?P.blendMode="add":P.blendMode="normal"}O++}}}createAvatarImage(t,e){let s=null,r="avatarImage"+t.toString();if(e?(r+="-"+e,s=this._cachedAvatarEffects.getValue(r)):s=this._cachedAvatars.getValue(r),!s&&(s=this._data.createAvatarImage(this._figure,t,this._gender,this,this),s))if(!e)this._cachedAvatars.add(r,s);else{if(this._cachedAvatarEffects.length>=$.MAX_EFFECT_CACHE){const n=this._cachedAvatarEffects.remove(this._cachedAvatarEffects.getKey(0));n&&n.dispose()}this._cachedAvatarEffects.add(r,s)}return s}updateObject(t,e,s,r=!1){if(!r&&this.updateObjectCounter===t.updateCounter&&this._geometryUpdateCounter===e.updateId)return!1;let n=t.getDirection().x-e.direction.x,a=this._headDirection-e.direction.x;return this._posture==="float"&&(a=n),n=(n%360+360)%360,a=(a%360+360)%360,this._posture==="sit"&&this._canStandUp&&(n-=n%90-45,a-=a%90-45),(n!==this._angle||r)&&(s=!0,this._angle=n,n=n-(135-22.5),n=(n+360)%360,this._avatarImage.setDirectionAngle(as.FULL,n)),(a!==this._headAngle||r)&&(s=!0,this._headAngle=a,this._headAngle!==this._angle&&(a=a-(135-22.5),a=(a+360)%360,this._avatarImage.setDirectionAngle(as.HEAD,a))),this._geometryUpdateCounter=e.updateId,this.updateObjectCounter=this.object.updateCounter,s}updateModel(t,e){if(!t||this.updateModelCounter===t.updateCounter)return!1;let s=!1;const r=t.getValue(I.FIGURE_TALK)>0;r!==this._talk&&(this._talk=r,s=!0);const n=t.getValue(I.FIGURE_EXPRESSION);n!==this._expression&&(this._expression=n,s=!0);const a=t.getValue(I.FIGURE_SLEEP)>0;a!==this._sleep&&(this._sleep=a,s=!0);const o=t.getValue(I.FIGURE_BLINK)>0;o!==this._blink&&(this._blink=o,s=!0);const u=t.getValue(I.FIGURE_GESTURE)||0;u!==this._gesture&&(this._gesture=u,s=!0);const l=t.getValue(I.FIGURE_POSTURE);l!==this._posture&&(this._posture=l,s=!0);const c=t.getValue(I.FIGURE_POSTURE_PARAMETER);c!==this._postureParameter&&(this._postureParameter=c,s=!0);const h=t.getValue(I.FIGURE_CAN_STAND_UP);h!==this._canStandUp&&(this._canStandUp=h,s=!0);const _=t.getValue(I.FIGURE_VERTICAL_OFFSET)*$.BASE_Y_SCALE;_!==this._verticalOffset&&(this._verticalOffset=_,s=!0);const d=t.getValue(I.FIGURE_DANCE)||0;d!==this._dance&&(this._dance=d,s=!0);const f=t.getValue(I.FIGURE_EFFECT)||0;f!==this._effect&&(this._effect=f,s=!0);const p=t.getValue(I.FIGURE_CARRY_OBJECT)||0;p!==this._carryObject&&(this._carryObject=p,s=!0);const g=t.getValue(I.FIGURE_USE_OBJECT)||0;g!==this._useObject&&(this._useObject=g,s=!0);const m=t.getValue(I.HEAD_DIRECTION);m!==this._headDirection&&(this._headDirection=m,s=!0),this._carryObject>0&&g>0?this._useObject!==this._carryObject&&(this._useObject=this._carryObject,s=!0):this._useObject!==0&&(this._useObject=0,s=!0);let O=this.getAddition($.FLOATING_IDLE_Z_ID);this._sleep?(O||(O=this.addAddition(new Zf($.FLOATING_IDLE_Z_ID,this))),s=!0):O&&this.removeAddition($.FLOATING_IDLE_Z_ID);const y=t.getValue(I.FIGURE_IS_MUTED)>0;let C=this.getAddition($.MUTED_BUBBLE_ID);if(y)C||(C=this.addAddition(new XK($.MUTED_BUBBLE_ID,this))),s=!0;else{C&&(this.removeAddition($.MUTED_BUBBLE_ID),s=!0);const lt=t.getValue(I.FIGURE_IS_TYPING)>0;let Gt=this.getAddition($.TYPING_BUBBLE_ID);lt?(Gt||(Gt=this.addAddition(new $K($.TYPING_BUBBLE_ID,this))),s=!0):Gt&&(this.removeAddition($.TYPING_BUBBLE_ID),s=!0)}const P=t.getValue(I.FIGURE_GUIDE_STATUS)||0;P!==pi.NONE?(this.removeAddition($.GUIDE_BUBBLE_ID),this.addAddition(new KK($.GUIDE_BUBBLE_ID,this,P)),s=!0):this.getAddition($.GUIDE_BUBBLE_ID)&&(this.removeAddition($.GUIDE_BUBBLE_ID),s=!0);const L=t.getValue(I.FIGURE_IS_PLAYING_GAME)>0;let N=this.getAddition($.GAME_CLICK_TARGET_ID);L?(N||(N=this.addAddition(new Jf($.GAME_CLICK_TARGET_ID))),s=!0):N&&this.removeAddition($.GAME_CLICK_TARGET_ID);const F=t.getValue(I.FIGURE_NUMBER_VALUE);let x=this.getAddition($.NUMBER_BUBBLE_ID);F>0?(x||(x=this.addAddition(new qK($.NUMBER_BUBBLE_ID,F,this))),s=!0):x&&this.removeAddition($.NUMBER_BUBBLE_ID);let U=this.getAddition($.EXPRESSION_ID);this._expression>0?U||(U=Qf.getExpressionAddition($.EXPRESSION_ID,this._expression,this),U&&this.addAddition(U)):U&&this.removeAddition($.EXPRESSION_ID),this.updateScale(e);const k=t.getValue(I.GENDER);k!==this._gender&&(this._gender=k,s=!0),this.updateFigure(t.getValue(I.FIGURE))&&(s=!0);let gt=t.getValue(I.FIGURE_SIGN);gt===null&&(gt=-1),this._sign!==gt&&(this._sign=gt,s=!0);const X=t.getValue(I.FIGURE_HIGHLIGHT_ENABLE)>0;if(X!==this._highlightEnabled&&(this._highlightEnabled=X,s=!0),this._highlightEnabled){const lt=t.getValue(I.FIGURE_HIGHLIGHT)>0;lt!==this._highlight&&(this._highlight=lt,s=!0)}const Y=t.getValue(I.OWN_USER)>0;return Y!==this._ownUser&&(this._ownUser=Y,s=!0),this.updateModelCounter=t.updateCounter,s}setDirection(t){this._direction!==t&&(this._direction=t,this._needsUpdate=!0)}updateScale(t){t<48&&(this._blink=!1),this._posture==="sit"||this._posture==="lay"?this._postureOffset=t/2:this._postureOffset=0,this._layInside=!1,this._isLaying=!1,this._posture==="lay"&&(this._isLaying=!0,parseInt(this._postureParameter)<0&&(this._layInside=!0))}processActionsForAvatar(t){if(!t)return;if(t.initActionAppends(),t.appendAction(et.POSTURE,this._posture,this._postureParameter),this._gesture>0&&this._avatarImage.appendAction(et.GESTURE,et.getGesture(this._gesture)),this._dance>0&&this._avatarImage.appendAction(et.DANCE,this._dance),this._sign>-1&&this._avatarImage.appendAction(et.SIGN,this._sign),this._carryObject>0&&this._avatarImage.appendAction(et.CARRY_OBJECT,this._carryObject),this._useObject>0&&this._avatarImage.appendAction(et.USE_OBJECT,this._useObject),this._talk&&this._avatarImage.appendAction(et.TALK),(this._sleep||this._blink)&&this._avatarImage.appendAction(et.SLEEP),this._expression>0){const s=et.getExpression(this._expression);if(s!=="")switch(s){case et.DANCE:this._avatarImage.appendAction(et.DANCE,2);break;default:this._avatarImage.appendAction(s);break}}this._effect>0&&this._avatarImage.appendAction(et.EFFECT,this._effect),t.endActionAppends(),this._isAnimating=t.isAnimating();let e=$.INITIAL_RESERVED_SPRITES;for(const s of this._avatarImage.getSprites())s.id!==$.AVATAR&&e++;if(e!==this.totalSprites&&this.createSprites(e),this._extraSpritesStartIndex=e,this._additions)for(const s of this._additions.values())this.createSprite()}updateFigure(t){return this._figure===t?!1:(this._figure=t,this.clearAvatar(),!0)}resetFigure(t){this.clearAvatar()}resetEffect(t){this.clearAvatar()}clearAvatar(){const t=this.getSprite($.AVATAR_LAYER_ID);t&&(t.texture=W.EMPTY,t.alpha=255);for(const e of this._cachedAvatars.getValues())e&&e.dispose();for(const e of this._cachedAvatarEffects.getValues())e&&e.dispose();this._cachedAvatars.reset(),this._cachedAvatarEffects.reset(),this._avatarImage=null}getAddition(t){if(!this._additions)return null;const e=this._additions.get(t);return e||null}addAddition(t){if(!this.getAddition(t.id))return this._additions.set(t.id,t),t}removeAddition(t){const e=this.getAddition(t);e&&(this._additions.delete(e.id),e.dispose())}updateShadow(t){this._shadow=null;const e=this.getSprite($.SHADOW_LAYER_ID);if(!e)return;let s=this._posture==="mv"||this._posture==="std"||this._posture==="sit"&&this._canStandUp;if(this._effect===$.SNOWBOARDING_EFFECT&&(s=!1),s){if(e.visible=!0,!this._shadow||t!==this._scale){let r=0,n=0;t<48?(e.libraryAssetName="sh_std_sd_1_0_0",this._shadow=Rt().getAsset(e.libraryAssetName),r=-8,n=this._canStandUp?6:-3):(e.libraryAssetName="h_std_sd_1_0_0",this._shadow=Rt().getAsset(e.libraryAssetName),r=-17,n=this._canStandUp?10:-7),this._shadow?(e.texture=this._shadow.texture,e.offsetX=r,e.offsetY=n,e.alpha=50,e.relativeDepth=1):e.visible=!1}}else this._shadow=null,e.visible=!1}get direction(){return this._direction}get posture(){return this._posture}get angle(){return this._angle}get disposed(){return this._disposed}};$.AVATAR="avatar",$.FLOATING_IDLE_Z_ID=1,$.TYPING_BUBBLE_ID=2,$.EXPRESSION_ID=3,$.NUMBER_BUBBLE_ID=4,$.GAME_CLICK_TARGET_ID=5,$.MUTED_BUBBLE_ID=6,$.GUIDE_BUBBLE_ID=7,$.OWN_USER_ID=4,$.UPDATE_TIME_INCREASER=41,$.AVATAR_LAYER_ID=0,$.SHADOW_LAYER_ID=1,$.SNOWBOARDING_EFFECT=97,$.INITIAL_RESERVED_SPRITES=2,$.ANIMATION_FRAME_UPDATE_INTERVAL=2,$.DEFAULT_CANVAS_OFFSETS=[0,0,0],$.MAX_EFFECT_CACHE=2,$.SPRITE_INDEX_AVATAR=0,$.BASE_Y_SCALE=1e3,$.AVATAR_SPRITE_DEFAULT_DEPTH=-.01,$.AVATAR_OWN_DEPTH_ADJUST=.001,$.AVATAR_SPRITE_LAYING_DEPTH=-.409;let tg=$;const Es=class Es{static allocate(t,e,s,r,n,a,o=-1,u=0){const l=Es.POOL.length?Es.POOL.pop():new Es;return r<1&&(r=1),n<0&&(n=Es.FRAME_REPEAT_FOREVER),l._id=t,l._x=e||0,l._y=s||0,l._repeats=r,l._frameRepeats=n,l._remainingFrameRepeats=n,l._isLastFrame=a,l._isRecycled=!1,o>=0?(l._activeSequence=o,l._activeSequenceOffset=u):(l._activeSequence=-1,l._activeSequenceOffset=0),l}get id(){return this._id>=0?this._id:-this._id*Math.random()}get x(){return this._x}get y(){return this._y}get repeats(){return this._repeats}get frameRepeats(){return this._frameRepeats}get isLastFrame(){return this._isLastFrame}get remainingFrameRepeats(){return this._frameRepeats<0?Es.FRAME_REPEAT_FOREVER:this._remainingFrameRepeats}set remainingFrameRepeats(t){t<0&&(t=0),this._frameRepeats>0&&t>this._frameRepeats&&(t=this._frameRepeats),this._remainingFrameRepeats=t}get activeSequence(){return this._activeSequence}get activeSequenceOffset(){return this._activeSequenceOffset}recycle(){this._isRecycled||(this._isRecycled=!0,Es.POOL.length<Es.POOL_SIZE_LIMIT&&Es.POOL.push(this))}};Es.FRAME_REPEAT_FOREVER=-1,Es.SEQUENCE_NOT_DEFINED=-1,Es.POOL_SIZE_LIMIT=3e3,Es.POOL=[];let Vr=Es;class y0{constructor(t,e,s,r,n,a){this._id=0,this._x=0,this._y=0,this._randomX=0,this._randomY=0,this._repeats=1,this._id=t,this._x=e,this._y=s,this._randomX=r,this._randomY=n,this._repeats=a}get id(){return this._id}hasDirectionalOffsets(){return!1}getX(t){return this._x}getY(t){return this._y}get x(){return this._x}get y(){return this._x}get randomX(){return this._randomX}get randomY(){return this._randomY}get repeats(){return this._repeats}}class QK extends y0{constructor(t,e,s,r,n,a,o){super(t,e,s,r,n,o),this._directionalOffsets=a}hasDirectionalOffsets(){return this._directionalOffsets!==null}getX(t){return this._directionalOffsets?this._directionalOffsets.getXOffset(t,super.getX(t)):super.getX(t)}getY(t){return this._directionalOffsets?this._directionalOffsets.getYOffset(t,super.getY(t)):super.getY(t)}}class ZK{constructor(t,e){this._frames=[],this._frameIndexes=[],this._frameRepeats=[],this._isRandom=e,this._loopCount=t<1?1:t}get isRandom(){return this._isRandom}get frameCount(){return this._frameIndexes.length*this._loopCount}dispose(){this._frames=[]}initialize(){let t=this._frameIndexes.length-1,e=-1,s=1;for(;t>=0;)this._frameIndexes[t]===e?s++:(e=this._frameIndexes[t],s=1),this._frameRepeats[t]=s,t--}addFrame(t,e,s,r,n,a){let o=1;if(this._frames.length>0){const l=this._frames[this._frames.length-1];l.id===t&&!l.hasDirectionalOffsets()&&l.x===e&&l.y===s&&l.randomX===r&&r===0&&l.randomY===n&&n===0&&(o+=l.repeats,this._frames.pop())}const u=a?new QK(t,e,s,r,n,a,o):new y0(t,e,s,r,n,o);this._frames.push(u),this._frameIndexes.push(this._frames.length-1),this._frameRepeats.push(1)}getFrame(t){return!this._frames.length||t<0||t>=this.frameCount?null:this._frames[this._frameIndexes[t%this._frameIndexes.length]]}getFrameIndex(t){return t<0||t>=this.frameCount?-1:(this._isRandom&&(t=Math.round(Math.random()*this._frameIndexes.length),t===this._frameIndexes.length&&t--),t)}getRepeats(t){return t<0||t>=this.frameCount?0:this._frameRepeats[t%this._frameRepeats.length]}}class JK{constructor(t,e,s){this._frameSequences=[],this._frameCount=-1,this._loopCount=t<0?0:t,this._frameRepeat=e<1?1:e,this._isRandom=s}get frameCount(){return this._frameCount<0&&this.calculateLength(),this._frameCount}dispose(){if(!(!this._frameSequences||!this._frameSequences.length)){for(const t of this._frameSequences)t&&t.dispose();this._frameSequences=[]}}addFrameSequence(t,e){const s=new ZK(t,e);return this._frameSequences.push(s),s}calculateLength(){this._frameCount=0;for(const t of this._frameSequences)t&&(this._frameCount+=t.frameCount)}getFrame(t,e){if(this._frameCount<1)return null;if(e=e/this._frameRepeat,!this._isRandom){const n=Math.floor(e/this._frameCount);e=Math.floor(e%this._frameCount);let a=!1,o=null;(this._loopCount>0&&n>=this._loopCount||this._loopCount<=0&&this._frameCount===1)&&(e=this._frameCount-1,a=!0);let u=0,l=0;for(;l<this._frameSequences.length;){if(o=this._frameSequences[l],o){if(e<u+o.frameCount)break;u+=o.frameCount}l++}return this.getFrameFromSpecificSequence(t,o,l,e-u,a)}const s=Math.trunc(this._frameSequences.length*Math.random()),r=this._frameSequences[s];return r.frameCount<1?null:this.getFrameFromSpecificSequence(t,r,s,0,!1)}getFrameFromSequence(t,e,s,r){if(e<0||e>=this._frameSequences.length)return null;const n=this._frameSequences[e];return n?s>=n.frameCount?this.getFrame(t,r):this.getFrameFromSpecificSequence(t,n,e,s,!1):null}getFrameFromSpecificSequence(t,e,s,r,n){if(!e)return null;const a=e.getFrameIndex(r),o=e.getFrame(a);if(!o)return null;let u=o.getX(t),l=o.getY(t);const c=o.randomX,h=o.randomY;let _=o.repeats,d=!1;c&&(u=Math.trunc(u+c*Math.random())),h&&(l=Math.trunc(l+h*Math.random())),_>1&&(_=e.getRepeats(a));let f=this._frameRepeat*_;return n&&(f=Vr.FRAME_REPEAT_FOREVER),!this._isRandom&&!e.isRandom&&s===this._frameSequences.length-1&&r===e.frameCount-1&&(d=!0),Vr.allocate(o.id,u,l,_,f,d,s,r)}}class v0{constructor(){this._offsetX=new Map,this._offsetY=new Map}getXOffset(t,e){const s=this._offsetX.get(t);return s??e}getYOffset(t,e){const s=this._offsetY.get(t);return s??e}setDirection(t,e,s){this._offsetX.set(t,e),this._offsetY.set(t,s)}}const ki=class ki{constructor(){this._layers=new Map,this._frameCount=-1,this._randomStart=!1,this._immediateChanges=null}static getTransitionToAnimationId(t){return ki.TRANSITION_TO_ANIMATION_OFFSET+t}static getTransitionFromAnimationId(t){return ki.TRANSITION_FROM_ANIMATION_OFFSET+t}static isTransitionToAnimation(t){return t>=ki.TRANSITION_TO_ANIMATION_OFFSET&&t<ki.TRANSITION_FROM_ANIMATION_OFFSET}static isTransitionFromAnimation(t){return t>=ki.TRANSITION_FROM_ANIMATION_OFFSET}dispose(){for(const t of this._layers.values())t&&t.dispose();this._layers.clear(),this._immediateChanges=null}setImmediateChanges(t){this._immediateChanges=t}isImmediateChange(t){return!(!this._immediateChanges||this._immediateChanges.indexOf(t)===-1)}getStartFrame(t){return this._randomStart?Math.random()*this._frameCount:0}initialize(t){if(t.randomStart&&(this._randomStart=!0),t.layers)for(const e in t.layers){const s=t.layers[e];if(!s)return!1;const r=parseInt(e),n=s.loopCount!==void 0?s.loopCount:1,a=s.frameRepeat!==void 0?s.frameRepeat:1,o=s.random!==void 0&&s.random!==0;if(!this.addLayer(r,n,a,o,s))return!1}return!0}addLayer(t,e,s,r,n){const a=new JK(e,s,r);if(n.frameSequences)for(const u in n.frameSequences){const l=n.frameSequences[u];if(!l)continue;const c=l.loopCount!==void 0?l.loopCount:1,h=l.random!==void 0&&l.random!==0,_=a.addFrameSequence(c,h);if(l.frames)for(const d in l.frames){const f=l.frames[d];if(!f)return a.dispose(),!1;_.addFrame(f.id,f.x||0,f.y||0,f.randomX||0,f.randomY||0,this.readDirectionalOffsets(f))}_.initialize()}a.calculateLength(),this._layers.set(t,a);const o=a.frameCount;return o>this._frameCount&&(this._frameCount=o),!0}readDirectionalOffsets(t){let e=null;if(t&&t.offsets)for(const s in t.offsets){const r=t.offsets[s];r&&(e||(e=new v0),e.setDirection(r.direction,r.x,r.y))}return e}getFrame(t,e,s){const r=this._layers.get(e);return r?r.getFrame(t,s):null}getFrameFromSequence(t,e,s,r,n){const a=this._layers.get(e);return a?a.getFrameFromSequence(t,s,r,n):null}};ki.TRANSITION_TO_ANIMATION_OFFSET=1e6,ki.TRANSITION_FROM_ANIMATION_OFFSET=2e6,ki.DEFAULT_FRAME_NUMBER=0;let Ce=ki;const xl=class xl{constructor(t){this._colors=[],this.createColors(t)}createColors(t){if(t)for(let e=0;e<t;e++)this._colors.push(xl.DEFAULT_COLOR)}dispose(){this._colors=[]}getLayerColor(t){const e=this._colors[t];return e||xl.DEFAULT_COLOR}setColorLayer(t,e){this._colors[t]&&(this._colors[t]=e)}};xl.DEFAULT_COLOR=16777215;let bn=xl;const Ge=class Ge{constructor(){this._tag=Ge.DEFAULT_TAG,this._blendMode=Ge.DEFAULT_BLEND_MODE,this._alpha=Ge.DEFAULT_ALPHA,this._ignoreMouse=Ge.DEFAULT_IGNORE_MOUSE,this._xOffset=Ge.DEFAULT_XOFFSET,this._yOffset=Ge.DEFAULT_YOFFSET,this._zOffset=Ge.DEFAULT_ZOFFSET}setFromLayer(t){t&&(this._tag=t.tag,this._blendMode=t.blendMode,this._alpha=t.alpha,this._ignoreMouse=t.ignoreMouse,this._xOffset=t.xOffset,this._yOffset=t.yOffset,this._zOffset=t.zOffset)}get tag(){return this._tag}set tag(t){this._tag=t}get blendMode(){return this._blendMode}set blendMode(t){this._blendMode=t}get alpha(){return this._alpha}set alpha(t){this._alpha=t}get ignoreMouse(){return this._ignoreMouse}set ignoreMouse(t){this._ignoreMouse=t}get xOffset(){return this._xOffset}set xOffset(t){this._xOffset=t}get yOffset(){return this._yOffset}set yOffset(t){this._yOffset=t}get zOffset(){return this._zOffset}set zOffset(t){this._zOffset=t}};Ge.DEFAULT_COUNT=0,Ge.DEFAULT_DIRECTION=0,Ge.DEFAULT_TAG="",Ge.DEFAULT_BLEND_MODE="normal",Ge.DEFAULT_ALPHA=255,Ge.DEFAULT_IGNORE_MOUSE=!1,Ge.DEFAULT_XOFFSET=0,Ge.DEFAULT_YOFFSET=0,Ge.DEFAULT_ZOFFSET=0;let Vt=Ge;const uO=class uO{constructor(t){this._layers=[],this.createLayers(t)}createLayers(t){if(t)for(let e=0;e<t;e++)this._layers.push(new Vt)}dispose(){this._layers=[]}setFromDirection(t){if(!t)return;const e=this.layerCount;if(e===t.layerCount)for(let s=0;s<e;s++){const r=this.getLayer(s),n=t.getLayer(s);r&&r.setFromLayer(n)}}getLayer(t){const e=this._layers[t];return e||null}getLayerTag(t){const e=this.getLayer(t);return e?e.tag:Vt.DEFAULT_TAG}setLayerTag(t,e){const s=this.getLayer(t);s&&(s.tag=e)}getLayerBlendMode(t){const e=this.getLayer(t);return e?e.blendMode:Vt.DEFAULT_BLEND_MODE}setLayerBlendMode(t,e){const s=this.getLayer(t);s&&(!e||!e.length||(s.blendMode=e))}getLayerAlpha(t){const e=this.getLayer(t);return e?e.alpha:Vt.DEFAULT_ALPHA}setLayerAlpha(t,e){const s=this.getLayer(t);s&&(isNaN(e)||(s.alpha=e))}getLayerIgnoreMouse(t){const e=this.getLayer(t);return e?e.ignoreMouse:Vt.DEFAULT_IGNORE_MOUSE}setLayerIgnoreMouse(t,e){const s=this.getLayer(t);s&&(s.ignoreMouse=e||!1)}getLayerXOffset(t){const e=this.getLayer(t);return e?e.xOffset:Vt.DEFAULT_XOFFSET}setLayerXOffset(t,e){const s=this.getLayer(t);s&&(isNaN(e)||(s.xOffset=e))}getLayerYOffset(t){const e=this.getLayer(t);return e?e.yOffset:Vt.DEFAULT_YOFFSET}setLayerYOffset(t,e){const s=this.getLayer(t);s&&(isNaN(e)||(s.yOffset=e))}getLayerZOffset(t){const e=this.getLayer(t);return e?e.zOffset:Vt.DEFAULT_ZOFFSET}setLayerZOffset(t,e){const s=this.getLayer(t);s&&(isNaN(e)||(s.zOffset=e))}get layerCount(){return this._layers.length}};uO.USE_DEFAULT_DIRECTION=-1;let Lr=uO;const Pl=class Pl{constructor(t,e){this._layerCount=t<0?0:t>Pl.MAX_LAYERS?Pl.MAX_LAYERS:t,this._angle=e<1?1:e>360?360:e,this._defaultDirection=new Lr(this._layerCount),this._directions=new Map,this._colors=[],this._lastDirectionData=null,this._lastDirection=-1}dispose(){this._defaultDirection&&this._defaultDirection.dispose();for(const t of this._directions.values())t&&t.dispose();for(const t of this._colors)t&&t.dispose();this.reset()}reset(){this._defaultDirection=null,this._colors=[],this._lastDirectionData=null,this._lastDirection=-1,this._directions.clear()}processLayers(t){return t?this.setDirectionLayers(this._defaultDirection,t):!1}processDirections(t){if(!t)return!1;for(const e in t){const s=t[e];if(!s)continue;const r=parseInt(e);if(this._directions.get(r))return!1;const n=new Lr(this._layerCount);n.setFromDirection(this._defaultDirection),this.setDirectionLayers(n,s.layers),this._directions.set(r,n),this._lastDirectionData=null,this._lastDirection=-1}return!0}processColors(t){if(!t)return!1;for(const e in t){const s=t[e];if(!s)continue;const r=parseInt(e);if(this._colors[r])return!1;const n=new bn(this._layerCount);for(const a in s.layers){const o=s.layers[a];if(!o)continue;const u=parseInt(a),l=o.color;n.setColorLayer(u,l)}this._colors[r]=n}return!0}setDirectionLayers(t,e){var s;if(!t||!e)return!1;for(const r in e){const n=e[r];if(!n)continue;const a=parseInt(r);if(a<0||a>=this._layerCount)return!1;n.ink!==void 0&&t.setLayerBlendMode(a,(s=n.ink)==null?void 0:s.toLowerCase()),n.tag!==void 0&&t.setLayerTag(a,n.tag),n.alpha!==void 0&&t.setLayerAlpha(a,n.alpha),n.ignoreMouse!==void 0&&t.setLayerIgnoreMouse(a,n.ignoreMouse),n.x!==void 0&&t.setLayerXOffset(a,n.x),n.y!==void 0&&t.setLayerYOffset(a,n.y),n.z!==void 0&&t.setLayerZOffset(a,n.z/-1e3)}return!0}getValidDirection(t){if(this._directions.get(t))return t;t=(t%360+360)%360;let s=-1,r=-1;for(const n of this._directions.keys()){let a=(n*this._angle-t+360)%360;a>180&&(a=360-a),(a<s||s<0)&&(s=a,r=n)}return r>=0?Math.trunc(r):0}getDirectionData(t){if(t===this._lastDirection&&this._lastDirectionData)return this._lastDirectionData;let e=this._directions.get(t);return e||(e=this._defaultDirection),this._lastDirection=t,this._lastDirectionData=e,this._lastDirectionData}getLayerTag(t,e){const s=this.getDirectionData(t);return s?s.getLayerTag(e):Vt.DEFAULT_TAG}getLayerBlendMode(t,e){const s=this.getDirectionData(t);return s?s.getLayerBlendMode(e):Vt.DEFAULT_BLEND_MODE}getLayerAlpha(t,e){const s=this.getDirectionData(t);return s?s.getLayerAlpha(e):Vt.DEFAULT_ALPHA}getLayerColor(t,e){const s=this._colors[e];return s?s.getLayerColor(t):bn.DEFAULT_COLOR}getLayerIgnoreMouse(t,e){const s=this.getDirectionData(t);return s?s.getLayerIgnoreMouse(e):Vt.DEFAULT_IGNORE_MOUSE}getLayerXOffset(t,e){const s=this.getDirectionData(t);return s?s.getLayerXOffset(e):Vt.DEFAULT_XOFFSET}getLayerYOffset(t,e){const s=this.getDirectionData(t);return s?s.getLayerYOffset(e):Vt.DEFAULT_YOFFSET}getLayerZOffset(t,e){const s=this.getDirectionData(t);return s?s.getLayerZOffset(e):Vt.DEFAULT_ZOFFSET}get layerCount(){return this._layerCount}};Pl.MAX_LAYERS=26;let Wh=Pl;class jh extends Wh{constructor(t,e){super(t,e),this._animations=new Map,this._animationIds=[]}dispose(){super.dispose();for(const t of this._animations.values())t&&t.dispose();this._animations.clear(),this._animationIds=[]}defineAnimations(t){if(!t)return!0;for(const e in t){const s=t[e];if(!s)return!1;let r=parseInt(e.split("_")[0]),n=!1;const a=s.transitionTo,o=s.transitionFrom;a!==void 0&&(r=Ce.getTransitionToAnimationId(a),n=!0),o!==void 0&&(r=Ce.getTransitionFromAnimationId(o),n=!0);const u=this.createAnimationData();if(!u.initialize(s))return u.dispose(),!1;const l=s.immediateChangeFrom;if(l!==void 0){const c=l.split(","),h=[];for(const _ of c){const d=parseInt(_);h.indexOf(d)===-1&&h.push(d)}u.setImmediateChanges(h)}this._animations.set(r,u),n||this._animationIds.push(r)}return!0}createAnimationData(){return new Ce}hasAnimation(t){return!!this._animations.get(t)}getAnimationCount(){return this._animationIds.length||0}getAnimationId(t){const e=this.getAnimationCount();return t<0||e<=0?0:this._animationIds[t%e]}isImmediateChange(t,e){const s=this._animations.get(t);return s?s.isImmediateChange(e):!1}getStartFrame(t,e){const s=this._animations.get(t);return s?s.getStartFrame(e):0}getFrame(t,e,s,r){const n=this._animations.get(t);return n?n.getFrame(e,s,r):null}getFrameFromSequence(t,e,s,r,n,a){const o=this._animations.get(t);return o?o.getFrameFromSequence(e,s,r,n,a):null}}class C0{constructor(){this._animationId=-1,this._animationAfterTransitionId=0,this._animationOver=!1,this._frameCounter=0,this._frames=[],this._lastFramePlayed=[],this._animationPlayed=[],this._layerCount=0}get animationOver(){return this._animationOver}set animationOver(t){this._animationOver=t}get frameCounter(){return this._frameCounter}set frameCounter(t){this._frameCounter=t}get animationId(){return this._animationId}set animationId(t){t!==this._animationId&&(this._animationId=t,this.resetAnimationFrames(!1))}get animationAfterTransitionId(){return this._animationAfterTransitionId}set animationAfterTransitionId(t){this._animationAfterTransitionId=t}dispose(){this.recycleFrames(),this._frames=null,this._lastFramePlayed=null,this._animationPlayed=null}setLayerCount(t){this._layerCount=t,this.resetAnimationFrames()}resetAnimationFrames(t=!0){(t||!this._frames)&&(this.recycleFrames(),this._frames=[]),this._lastFramePlayed=[],this._animationPlayed=[],this._animationOver=!1,this._frameCounter=0;let e=0;for(;e<this._layerCount;){if(t||this._frames.length<=e)this._frames[e]=null;else{const s=this._frames[e];s&&(s.recycle(),this._frames[e]=Vr.allocate(s.id,s.x,s.y,s.repeats,0,s.isLastFrame))}this._lastFramePlayed[e]=!1,this._animationPlayed[e]=!1,e++}}recycleFrames(){if(!(!this._frames||!this._frames.length))for(const t of this._frames)t&&t.recycle()}getFrame(t){return t<0||t>=this._layerCount?null:this._frames[t]}setFrame(t,e){if(t<0||t>=this._layerCount)return;const s=this._frames[t];s&&s.recycle(),this._frames[t]=e}getAnimationPlayed(t){return t<0||t>=this._layerCount?!0:this._animationPlayed[t]}setAnimationPlayed(t,e){t<0||t>=this._layerCount||(this._animationPlayed[t]=e)}getLastFramePlayed(t){return t<0||t>=this._layerCount?!0:this._lastFramePlayed[t]}setLastFramePlayed(t,e){t<0||t>=this._layerCount||(this._lastFramePlayed[t]=e)}}const nm=class nm extends jh{constructor(){super(...arguments),this._posturesToAnimations=new Map,this._gesturesToAnimations=new Map,this._defaultPosture=null}processPostures(t){if(!t||(t.defaultPosture&&t.defaultPosture.length&&(this._defaultPosture=t.defaultPosture),!t.postures))return!1;for(const e of t.postures)this._posturesToAnimations.get(e.id)||(this._defaultPosture===null&&(this._defaultPosture=e.id),this._posturesToAnimations.set(e.id,e.animationId));return this._posturesToAnimations.get(this._defaultPosture)!==void 0}processGestures(t){if(!t)return!1;for(const e of t)this._gesturesToAnimations.get(e.id)||this._gesturesToAnimations.set(e.id,e.animationId);return!0}postureToAnimation(t){return this._posturesToAnimations.get(t)||(t=this._defaultPosture),this._posturesToAnimations.get(t)}getGestureDisabled(t){return t==="ded"}gestureToAnimation(t){return this._gesturesToAnimations.get(t)?this._gesturesToAnimations.get(t):nm.DEFAULT}animationToPosture(t,e){if(t>=0&&t<this._posturesToAnimations.size){const s=this._posturesToAnimations.keys();for(;;){const r=s.next();if(r.done)return null;if(t<=0)return r.value;--t}}return e?this._defaultPosture:null}animationToGesture(t){if(t>=0&&t<this._gesturesToAnimations.size){const e=this._gesturesToAnimations.keys();for(;;){const s=e.next();if(s.done)return null;if(t<=0)return s.value;--t}}return null}getGestureForAnimationId(t){for(const e of this._gesturesToAnimations.keys())if(this._gesturesToAnimations.get(e)===t)return e;return null}get totalPostures(){return this._posturesToAnimations.size}get totalGestures(){return this._gesturesToAnimations.size}};nm.DEFAULT=-1;let mn=nm;class tX{constructor(t,e){this._width=t,this._height=e,this._heights=[],this._isNotStackable=[],this._isRoomTile=[];let s=t*e;for(;s>0;)this._heights.push(0),this._isNotStackable.push(!1),this._isRoomTile.push(!1),s--}dispose(){this._width=0,this._height=0,this._height=null,this._isNotStackable=null,this._isRoomTile=null}validPosition(t,e){return t>=0&&t<this._width&&e>=0&&e<this._height}getTileHeight(t,e){return this.validPosition(t,e)?this._heights[e*this._width+t]:0}setTileHeight(t,e,s){this.validPosition(t,e)&&(this._heights[e*this._width+t]=s)}setStackingBlocked(t,e,s){this.validPosition(t,e)&&(this._isNotStackable[e*this._width+t]=s)}setIsRoomTile(t,e,s){this.validPosition(t,e)&&(this._isRoomTile[e*this._width+t]=s)}validateLocation(t,e,s,r,n,a,o,u,l,c=-1){let h=0,_=0;if(!this.validPosition(t,e)||!this.validPosition(t+s-1,e+r-1))return!1;(n<0||n>=this._width)&&(n=0),(a<0||a>=this._height)&&(a=0),o=Math.min(o,this._width-n),u=Math.min(u,this._height-a),c===-1&&(c=this.getTileHeight(t,e));let d=e;for(;d<e+r;){for(h=t;h<t+s;){if(h<n||h>=n+o||d<a||d>=a+u){if(_=d*this._width+h,l){if(!this._isRoomTile[_])return!1}else if(this._isNotStackable[_]||!this._isRoomTile[_]||Math.abs(this._heights[_]-c)>.01)return!1}h++}d++}return!0}get width(){return this._width}get height(){return this._height}}const Ps=class Ps{constructor(){this._isDisposed=!1,this._scale=64,this._heightMap=[],this._width=0,this._height=0,this._floorHeight=0}get disposed(){return this._isDisposed}get scale(){return this._scale}set scale(t){this._scale=t}dispose(){this.reset(),this._isDisposed=!0}initialize(t,e,s){if(t<=this._width&&e<=this._height){this._width=t,this._height=e,this._floorHeight=s;return}this.reset();let r=0;for(;r<e;){const n=[];this._heightMap.push(n);let a=0;for(;a<t;)n.push(0),a++;r++}this._width=t,this._height=e,this._floorHeight=s}reset(){this._heightMap=[]}setHeight(t,e,s){if(t<0||t>=this._width||e<0||e>=this._height)return!1;const r=this._heightMap[e];return r?(r[t]=s,!0):!1}getHeight(t,e){if(t<0||t>=this._width||e<0||e>=this._height)return 0;const s=this._heightMap[e];return s?s[t]:0}getLocation(t,e,s,r,n){if(t==0&&e==0){t=this._width,e=this._height;const c=Math.round(this.scale/10);if(n==Ps.R){let h=this._width-1;for(;h>=0;){let _=1;for(;_<this._height;){if(this.getHeight(h,_)<=this._floorHeight){_-1<e&&(t=h,e=_-1);break}_++}h--}r=r+(this.scale/4-c/2),s=s+this.scale/2}else{let h=this._height-1;for(;h>=0;){let _=1;for(;_<this._width;){if(this.getHeight(_,h)<=this._floorHeight){_-1<t&&(t=_-1,e=h);break}_++}h--}r=r+(this.scale/4-c/2),s=s-c}}let a=t,o=e,u=this.getHeight(t,e);return n==Ps.R?(a=a+(s/(this._scale/2)-.5),o=o+.5,u=u-(r-s/2)/(this._scale/2)):(o=o+((this._scale/2-s)/(this._scale/2)-.5),a=a+.5,u=u-(r-(this._scale/2-s)/2)/(this._scale/2)),new v(a,o,u)}getLocationOldFormat(t,e,s){let r,n,a=0,o=0;n=Math.ceil(t),a=n-t;let u,l,c,h=0;for(r=0;r<this._width;){if(n>=0&&n<this._height){if(this.getHeight(r,n)<=this._floorHeight){u=r-1,l=n,o=r,s=Ps.L;break}if(this.getHeight(r,n+1)<=this._floorHeight){u=r,l=n,o=l-t,s=Ps.R;break}}n++,r++}const _=this.scale/2*a;let d=-o*this.scale/2;return d=d+-e*18/32*this.scale/2,h=this.getHeight(u,l),c=h*this.scale/2+d,s==Ps.R?c=c+a*this.scale/4:c=c+(1-a)*this.scale/4,this.getLocation(u,l,_,c,s)}getOldLocation(t,e){if(t==null)return null;let s=0,r=0,n=0,a=0,o="",u=0;if(e==90)s=Math.floor(t.x-.5),r=Math.floor(t.y+.5),u=this.getHeight(s,r),n=this._scale/2-(t.y-r+.5)*(this._scale/2),a=(u-t.z)*(this._scale/2)+(this._scale/2-n)/2,o=Ps.L;else if(e==180)s=Math.floor(t.x+.5),r=Math.floor(t.y-.5),u=this.getHeight(s,r),n=(t.x+.5-s)*(this._scale/2),a=(u-t.z)*(this._scale/2)+n/2,o=Ps.R;else return null;return[s,r,n,a,o]}getOldLocationString(t,e){const s=this.getOldLocation(t,e);if(s==null)return null;const r=Math.trunc(s[0]),n=Math.trunc(s[1]),a=Math.trunc(s[2]),o=Math.trunc(s[3]),u=s[4];return":w="+r+","+n+" l="+a+","+o+" "+u}getDirection(t){return t==Ps.R?180:90}getFloorAltitude(t,e){const s=this.getHeight(t,e),r=s+1;return s+(Math.trunc(this.getHeight(t-1,e-1))==r||Math.trunc(this.getHeight(t,e-1))==r||Math.trunc(this.getHeight(t+1,e-1))==r||Math.trunc(this.getHeight(t-1,e))==r||Math.trunc(this.getHeight(t+1,e))==r||Math.trunc(this.getHeight(t-1,e+1))==r||Math.trunc(this.getHeight(t,e+1))==r||Math.trunc(this.getHeight(t+1,e+1))==r?.5:0)}isRoomTile(t,e){return t>=0&&t<this._width&&e>=0&&e<this._height&&this._heightMap[e][t]>=0}};Ps.DEFAULT_SCALE=32,Ps.L="l",Ps.R="r";let du=Ps;const kt=class kt{constructor(t){this._roomEngine=null,this._state=kt.NOT_ACTIVE,this._tileXInit=0,this._tileYInit=0,this._tileXEnd=0,this._tileYEnd=0,this._highlightRootX=0,this._highlightRootY=0,this._highlightWidth=0,this._highlightHeight=0,this._highlightType=kt.HIGHLIGHT_BRIGHTEN,this._roomEngine=t,M().addEventListener(ht.ADDED,n=>{if(this._state===kt.NOT_ACTIVE||n.roomId!==this._roomEngine.activeRoomId||n.category!==10&&n.category!==20)return;const a=this._roomEngine.getRoomObject(n.roomId,n.objectId,n.category);a.visualization instanceof Ai&&(a.visualization.lookThrough=!0)});const e=new ju;e.matrix=[1.5,0,0,0,0,1.5,0,0,0,0,1.5,0,0,0,0,1,0,.0784,.0784,0];const s=new ju;s.matrix=[1.05,0,0,0,0,1.3,0,0,0,0,1.8,0,0,0,0,1,0,.0314,.0784,0];const r=new ju;r.matrix=[.55,0,0,0,0,.55,0,0,0,0,.55,0,0,0,0,1,-.0392,-.0392,-.0392,0],kt.HIGHLIGHT_FILTERS[kt.HIGHLIGHT_DARKEN]=r,kt.HIGHLIGHT_FILTERS[kt.HIGHLIGHT_BRIGHTEN]=e,kt.HIGHLIGHT_FILTERS[kt.HIGHLIGHT_BLUE]=s}getAllFurniture(){return this._roomEngine.getRoomObjects(this._roomEngine.activeRoomId,20).concat(this._roomEngine.getRoomObjects(this._roomEngine.activeRoomId,10))}startSelecting(){this._state===kt.NOT_SELECTING_AREA&&(this.clearHighlightSilent(),this._state=kt.AWAITING_MOUSE_DOWN,this._roomEngine.moveBlocked=!0)}handleTileMouseEvent(t){let e=this._state===kt.AWAITING_MOUSE_DOWN&&t.type==at.MOUSE_DOWN;if(t.shiftKey&&this._state===kt.NOT_SELECTING_AREA&&t.type==at.MOUSE_DOWN&&(this.startSelecting(),e=!0),e){this._state=kt.SELECTING,this._tileXInit=t.tileXAsInt,this._tileYInit=t.tileYAsInt,this._tileXEnd=t.tileXAsInt,this._tileYEnd=t.tileYAsInt,this.setHighlight(this._tileXInit,this._tileYInit,1,1);return}if(this._state===kt.SELECTING&&t.type===at.MOUSE_MOVE&&(t.tileXAsInt!==this._tileXEnd||t.tileYAsInt!==this._tileYEnd)){let s=0,r=0,n=0,a=0;this._tileXEnd=t.tileXAsInt,this._tileYEnd=t.tileYAsInt,this._tileXEnd>this._tileXInit?(s=this._tileXInit,n=this._tileXEnd-this._tileXInit+1):(s=this._tileXEnd,n=this._tileXInit-this._tileXEnd+1),this._tileYEnd>this._tileYInit?(r=this._tileYInit,a=this._tileYEnd-this._tileYInit+1):(r=this._tileYEnd,a=this._tileYInit-this._tileYEnd+1),this.setHighlight(s,r,n,a)}}finishSelecting(){return this._state!==kt.SELECTING?!1:(this._state=kt.NOT_SELECTING_AREA,this._roomEngine.moveBlocked=!1,this._callback&&this._callback(this._highlightRootX,this._highlightRootY,this._highlightWidth,this._highlightHeight),!0)}clearHighlightSilent(){var e;const t=this._roomEngine.getRoomObject(this._roomEngine.activeRoomId,-1,0);t&&((e=t.visualization)==null||e.clearHighlightArea())}clearHighlight(){this._state!==kt.NOT_ACTIVE&&(this.clearHighlightSilent(),this._state=kt.NOT_SELECTING_AREA,this._roomEngine.moveBlocked=!1,this._callback&&this._callback(0,0,0,0))}setHighlight(t,e,s,r){var a;if(this._state===kt.NOT_ACTIVE)return;this._highlightRootX=t,this._highlightRootY=e,this._highlightWidth=s,this._highlightHeight=r;const n=this._roomEngine.getRoomObject(this._roomEngine.activeRoomId,-1,0);n&&((a=n.visualization)==null||a.initializeHighlightArea(t,e,s,r,kt.HIGHLIGHT_FILTERS[this._highlightType]))}activate(t,e){if(this._state!==kt.NOT_ACTIVE)return!1;this._callback=t,this._highlightType=e;for(const s of this.getAllFurniture()){const r=s.visualization;r&&(r.lookThrough=!0)}return this._state=kt.NOT_SELECTING_AREA,!0}deactivate(){if(this._state!==kt.NOT_ACTIVE){this._callback=null;for(const t of this.getAllFurniture()){const e=t.visualization;e&&(e.lookThrough=!1)}this.clearHighlight(),this._state=kt.NOT_ACTIVE}}get areaSelectionState(){return this._state}};kt.NOT_ACTIVE=0,kt.NOT_SELECTING_AREA=1,kt.AWAITING_MOUSE_DOWN=2,kt.SELECTING=3,kt.HIGHLIGHT_DARKEN="highlight_darken",kt.HIGHLIGHT_BRIGHTEN="highlight_brighten",kt.HIGHLIGHT_BLUE="highlight_blue",kt.HIGHLIGHT_FILTERS={};let qo=kt;const am=class am{constructor(){this._targetId=-1,this._targetCategory=-2,this._targetLoc=null,this._moveDistance=0,this._previousMoveSpeed=0,this._maintainPreviousMoveSpeed=!1,this._currentLoc=null,this._limitedLocX=!1,this._limitedLocY=!1,this._centeredLocX=!1,this._centeredLocY=!1,this._screenWd=0,this._screenHt=0,this._scale=0,this._roomWd=0,this._roomHt=0,this._geometryUpdateId=-1,this._scaleChanged=!1,this._targetObjectLoc=new v}get location(){return this._currentLoc}get targetId(){return this._targetId}set targetId(t){this._targetId=t}get targetCategory(){return this._targetCategory}set targetCategory(t){this._targetCategory=t}get targetObjectLoc(){return this._targetObjectLoc}set targetObjectLoc(t){this._targetObjectLoc.assign(t)}get limitedLocationX(){return this._limitedLocX}set limitedLocationX(t){this._limitedLocX=t}get limitedLocationY(){return this._limitedLocY}set limitedLocationY(t){this._limitedLocY=t}get centeredLocX(){return this._centeredLocX}set centeredLocX(t){this._centeredLocX=t}get centeredLocY(){return this._centeredLocY}set centeredLocY(t){this._centeredLocY=t}get screenWd(){return this._screenWd}set screenWd(t){this._screenWd=t}get screenHt(){return this._screenHt}set screenHt(t){this._screenHt=t}get scale(){return this._scale}set scale(t){this._scale!=t&&(this._scale=t,this._scaleChanged=!0)}get roomWd(){return this._roomWd}set roomWd(t){this._roomWd=t}get roomHt(){return this._roomHt}set roomHt(t){this._roomHt=t}get geometryUpdateId(){return this._geometryUpdateId}set geometryUpdateId(t){this._geometryUpdateId=t}get isMoving(){return this._targetLoc!=null&&this._currentLoc!=null}set target(t){let e;this._targetLoc==null&&(this._targetLoc=new v),(this._targetLoc.x!=t.x||this._targetLoc.y!=t.y||this._targetLoc.z!=t.z)&&(this._targetLoc.assign(t),e=v.dif(this._targetLoc,this._currentLoc),this._moveDistance=e.length,this._maintainPreviousMoveSpeed=!0)}dispose(){this._targetLoc=null,this._currentLoc=null}initializeLocation(t){this._currentLoc==null&&(this._currentLoc=new v,this._currentLoc.assign(t))}resetLocation(t){this._currentLoc==null&&(this._currentLoc=new v),this._currentLoc.assign(t)}update(t,e){let s,r,n,a,o;if(this._followDuration>0&&this._targetLoc!=null&&this._currentLoc!=null){if(this._scaleChanged){this._scaleChanged=!1,this._currentLoc=this._targetLoc,this._targetLoc=null;return}s=v.dif(this._targetLoc,this._currentLoc),s.length>this._moveDistance&&(this._moveDistance=s.length),s.length<=e?(this._currentLoc=this._targetLoc,this._targetLoc=null,this._previousMoveSpeed=0):(r=Math.sin(Math.PI*s.length/this._moveDistance),n=e*.5,a=this._moveDistance/am.MOVE_SPEED_DENOMINATOR,o=n+(a-n)*r,this._maintainPreviousMoveSpeed&&(o<this._previousMoveSpeed?(o=this._previousMoveSpeed,o>s.length&&(o=s.length)):this._maintainPreviousMoveSpeed=!1),this._previousMoveSpeed=o,s.divide(s.length),s.multiply(o),this._currentLoc=v.sum(this._currentLoc,s))}}reset(){this._geometryUpdateId=-1}activateFollowing(t){this._followDuration=t}};am.MOVE_SPEED_DENOMINATOR=12;let eg=am;class eX{constructor(t,e){this._roomId=t,this._data=e,this._floorType=null,this._wallType=null,this._landscapeType=null}get roomId(){return this._roomId}get data(){return this._data}get floorType(){return this._floorType}set floorType(t){this._floorType=t}get wallType(){return this._wallType}set wallType(t){this._wallType=t}get landscapeType(){return this._landscapeType}set landscapeType(t){this._landscapeType=t}}const mt=class mt{static init(t,e){mt._currentDelta=0,mt._startDelayMs=t,mt._effectDurationMs=e,mt._initializationTimeMs=Nt(),mt._state=mt.STATE_START_DELAY}static turnVisualizationOn(){if(mt._state===mt.STATE_NOT_INITIALIZED||mt._state===mt.STATE_OVER)return;const t=Nt()-mt._initializationTimeMs;if(t>mt._startDelayMs+mt._effectDurationMs){mt._state=mt.STATE_OVER;return}if(mt._visualizationOn=!0,t<mt._startDelayMs){mt._state=mt.STATE_START_DELAY;return}mt._state=mt.STATE_RUNNING,mt._currentDelta=(t-mt._startDelayMs)/mt._effectDurationMs}static turnVisualizationOff(){mt._visualizationOn=!1}static isVisualizationOn(){return mt._visualizationOn&&mt.isRunning()}static isRunning(){return mt._state===mt.STATE_START_DELAY||mt._state===mt.STATE_RUNNING}static getDelta(t=0,e=1){return Math.min(Math.max(mt._currentDelta,t),e)}static get totalRunningTime(){return mt._startDelayMs+mt._effectDurationMs}};mt.STATE_NOT_INITIALIZED=0,mt.STATE_START_DELAY=1,mt.STATE_RUNNING=2,mt.STATE_OVER=3,mt._state=mt.STATE_NOT_INITIALIZED,mt._visualizationOn=!1,mt._currentDelta=0,mt._initializationTimeMs=0,mt._startDelayMs=20*1e3,mt._effectDurationMs=2e3;let Ti=mt;class Kc{constructor(t,e,s,r,n,a,o,u=NaN,l=-1,c=0,h=0,_="",d=!0,f=!0,p=-1){this._id=t,this._typeId=e,this._type=s,this._state=a,this._data=o,this._extra=u,this._expiryTime=l,this._usagePolicy=c,this._ownerId=h,this._ownerName=_,this._synchronized=d,this._realRoomObject=f,this._sizeZ=p,this._location=new v,this._direction=new v,this._location.assign(r),this._direction.assign(n)}get id(){return this._id}get typeId(){return this._typeId}get type(){return this._type}get location(){return this._location}get direction(){return this._direction}get state(){return this._state}get data(){return this._data}get extra(){return this._extra}get expiryTime(){return this._expiryTime}get usagePolicy(){return this._usagePolicy}get ownerId(){return this._ownerId}get ownerName(){return this._ownerName}get synchronized(){return this._synchronized}get realRoomObject(){return this._realRoomObject}get sizeZ(){return this._sizeZ}}const zi=class zi{constructor(t,e,s,r=null){this._updateId=0,this._scale=1,this._x_scale=1,this._y_scale=1,this._z_scale=1,this._x_scale_internal=1,this._y_scale_internal=1,this._z_scale_internal=1,this._clipNear=-500,this._clipFar=500,this._displacements=null,this.scale=t,this._x=new v,this._y=new v,this._z=new v,this._directionAxis=new v,this._location=new v,this._direction=new v,this._depth=new v,this._x_scale_internal=1,this._y_scale_internal=1,this.x_scale=1,this.y_scale=1,this._z_scale_internal=Math.sqrt(1/2)/Math.sqrt(3/4),this.z_scale=1,this.location=new v(s.x,s.y,s.z),this.direction=new v(e.x,e.y,e.z),r!=null?this.setDepthVector(r):this.setDepthVector(e),this._displacements=new Map}static getIntersectionVector(t,e,s,r){const n=v.dotProduct(e,r);if(Math.abs(n)<1e-5)return null;const a=v.dif(t,s),o=-v.dotProduct(r,a)/n;return v.sum(t,v.product(e,o))}get updateId(){return this._updateId}get scale(){return this._scale/Math.sqrt(.5)}set scale(t){t<=1&&(t=1),t=t*Math.sqrt(.5),t!=this._scale&&(this._scale=t,this._updateId++)}get directionAxis(){return this._directionAxis}get location(){return this._location.assign(this._loc),this._location.x=this._location.x*this._x_scale,this._location.y=this._location.y*this._y_scale,this._location.z=this._location.z*this._z_scale,this._location}set location(t){if(t==null)return;this._loc==null&&(this._loc=new v);const e=this._loc.x,s=this._loc.y,r=this._loc.z;this._loc.assign(t),this._loc.x=this._loc.x/this._x_scale,this._loc.y=this._loc.y/this._y_scale,this._loc.z=this._loc.z/this._z_scale,(this._loc.x!=e||this._loc.y!=s||this._loc.z!=r)&&this._updateId++}get direction(){return this._direction}set direction(t){let e,s,r,n,a;if(t==null)return;this._dir==null&&(this._dir=new v);const o=this._dir.x,u=this._dir.y,l=this._dir.z;this._dir.assign(t),this._direction.assign(t),(this._dir.x!=o||this._dir.y!=u||this._dir.z!=l)&&this._updateId++;const c=new v(0,1,0),h=new v(0,0,1),_=new v(1,0,0),d=t.x/180*Math.PI,f=t.y/180*Math.PI,p=t.z/180*Math.PI,g=Math.cos(d),m=Math.sin(d),O=v.sum(v.product(c,g),v.product(_,-m)),y=new v(h.x,h.y,h.z),C=v.sum(v.product(c,m),v.product(_,g)),P=Math.cos(f),L=Math.sin(f),N=new v(O.x,O.y,O.z),F=v.sum(v.product(y,P),v.product(C,L)),x=v.sum(v.product(y,-L),v.product(C,P));p!=0?(e=Math.cos(p),s=Math.sin(p),r=v.sum(v.product(N,e),v.product(F,s)),n=v.sum(v.product(N,-s),v.product(F,e)),a=new v(x.x,x.y,x.z),this._x.assign(r),this._y.assign(n),this._z.assign(a),this._directionAxis.assign(this._z)):(this._x.assign(N),this._y.assign(F),this._z.assign(x),this._directionAxis.assign(this._z))}set x_scale(t){this._x_scale!=t*this._x_scale_internal&&(this._x_scale=t*this._x_scale_internal,this._updateId++)}set y_scale(t){this._y_scale!=t*this._y_scale_internal&&(this._y_scale=t*this._y_scale_internal,this._updateId++)}set z_scale(t){this._z_scale!=t*this._z_scale_internal&&(this._z_scale=t*this._z_scale_internal,this._updateId++)}dispose(){this._x=null,this._y=null,this._z=null,this._loc=null,this._dir=null,this._directionAxis=null,this._location=null,this._displacements!=null&&(this._displacements.clear(),this._displacements=null)}setDisplacement(t,e){let s,r;t==null||e==null||this._displacements!=null&&(s=Math.trunc(Math.round(t.x))+"_"+Math.trunc(Math.round(t.y))+"_"+Math.trunc(Math.round(t.z)),this._displacements.delete(s),r=new v,r.assign(e),this._displacements.set(s,r),this._updateId++)}getDisplacenent(t){let e;return this._displacements!=null?(e=Math.trunc(Math.round(t.x))+"_"+Math.trunc(Math.round(t.y))+"_"+Math.trunc(Math.round(t.z)),this._displacements.get(e)):null}setDepthVector(t){let e,s,r;const n=new v(0,1,0),a=new v(0,0,1),o=new v(1,0,0),u=t.x/180*Math.PI,l=t.y/180*Math.PI,c=t.z/180*Math.PI,h=Math.cos(u),_=Math.sin(u),d=v.sum(v.product(n,h),v.product(o,-_)),f=new v(a.x,a.y,a.z),p=v.sum(v.product(n,_),v.product(o,h)),g=Math.cos(l),m=Math.sin(l),O=new v(d.x,d.y,d.z),y=v.sum(v.product(f,g),v.product(p,m)),C=v.sum(v.product(f,-m),v.product(p,g));c!=0?(e=Math.cos(c),s=Math.sin(c),v.sum(v.product(O,e),v.product(y,s)),v.sum(v.product(O,-s),v.product(y,e)),r=new v(C.x,C.y,C.z),this._depth.assign(r)):this._depth.assign(C),this._updateId++}adjustLocation(t,e){if(t==null||this._z==null)return;const s=v.product(this._z,-e),r=new v(t.x+s.x,t.y+s.y,t.z+s.z);this.location=r}getCoordinatePosition(t){if(t==null)return null;const e=v.scalarProjection(t,this._x),s=v.scalarProjection(t,this._y),r=v.scalarProjection(t,this._z);return new v(e,s,r)}getScreenPosition(t){let e=v.dif(t,this._loc);e.x=e.x*this._x_scale,e.y=e.y*this._y_scale,e.z=e.z*this._z_scale;let s=v.scalarProjection(e,this._depth);if(s<this._clipNear||s>this._clipFar)return null;let r=v.scalarProjection(e,this._x),n=-v.scalarProjection(e,this._y);r=r*this._scale,n=n*this._scale;const a=this.getDisplacenent(t);return a!=null&&(e=v.dif(t,this._loc),e.add(a),e.x=e.x*this._x_scale,e.y=e.y*this._y_scale,e.z=e.z*this._z_scale,s=v.scalarProjection(e,this._depth)),e.x=r,e.y=n,e.z=s,e}getScreenPoint(t){const e=this.getScreenPosition(t);return e==null?null:new st(e.x,e.y)}getPlanePosition(t,e,s,r){let n,a;const o=t.x/this._scale,u=-t.y/this._scale,l=v.product(this._x,o);l.add(v.product(this._y,u));const c=new v(this._loc.x*this._x_scale,this._loc.y*this._y_scale,this._loc.z*this._z_scale);c.add(l);const h=this._z,_=new v(e.x*this._x_scale,e.y*this._y_scale,e.z*this._z_scale),d=new v(s.x*this._x_scale,s.y*this._y_scale,s.z*this._z_scale),f=new v(r.x*this._x_scale,r.y*this._y_scale,r.z*this._z_scale),p=v.crossProduct(d,f),g=new v;return g.assign(zi.getIntersectionVector(c,h,_,p)),g!=null?(g.subtract(_),n=v.scalarProjection(g,s)/d.length*s.length,a=v.scalarProjection(g,r)/f.length*r.length,new st(n,a)):null}performZoom(){this.isZoomedIn()?this.scale=zi.SCALE_ZOOMED_OUT:this.scale=zi.SCALE_ZOOMED_IN}isZoomedIn(){return this.scale==zi.SCALE_ZOOMED_IN}performZoomOut(){this.scale=zi.SCALE_ZOOMED_OUT}performZoomIn(){this.scale=zi.SCALE_ZOOMED_IN}};zi.SCALE_ZOOMED_IN=64,zi.SCALE_ZOOMED_OUT=32;let Gs=zi;class sX{constructor(t,e){this._tileObjectMap=new Map;let s=0;for(;s<e;)this._tileObjectMap.set(s,new Map),s++;this._width=t,this._height=e}clear(){for(const t of this._tileObjectMap.values())t&&t.clear();this._tileObjectMap.clear()}populate(t){this.clear();for(const e of t)this.addRoomObject(e)}dispose(){this._tileObjectMap=null,this._width=0,this._height=0}getObjectIntTile(t,e){if(t>=0&&t<this._width&&e>=0&&e<this._height){const s=this._tileObjectMap.get(e);if(s)return s.get(t)}return null}setObjectInTile(t,e,s){if(!s.isReady){it.log("Assigning non initialized object to tile object map!");return}if(t>=0&&t<this._width&&e>=0&&e<this._height){const r=this._tileObjectMap.get(e);r&&r.set(t,s)}}addRoomObject(t){if(!t||!t.model||!t.isReady)return;const e=t.getLocation(),s=t.getDirection();if(!e||!s)return;let r=t.model.getValue(I.FURNITURE_SIZE_X),n=t.model.getValue(I.FURNITURE_SIZE_Y);r<1&&(r=1),n<1&&(n=1);const a=Math.trunc(s.x+45)%360/90;(a===1||a===3)&&([r,n]=[n,r]);let o=e.y;for(;o<e.y+n;){let u=e.x;for(;u<e.x+r;){const l=this.getObjectIntTile(u,o);(!l||l!==t&&l.getLocation().z<=e.z)&&this.setObjectInTile(u,o,t),u++}o++}}}class iX{constructor(t){this._roomId=t,this._modelName=null,this._legacyGeometry=new du,this._tileObjectMap=null,this._roomCamera=new eg,this._selectedObject=null,this._placedObject=null,this._furnitureStackingHeightMap=null,this._floorStack=new Map,this._wallStack=new Map,this._mouseButtonCursorOwners=[]}dispose(){}setModelName(t){this._modelName=t}setSelectedObject(t){this._selectedObject&&this._selectedObject.dispose(),this._selectedObject=t}setPlacedObject(t){this._placedObject&&this._placedObject.dispose(),this._placedObject=t}setFurnitureStackingHeightMap(t){this._furnitureStackingHeightMap&&this._furnitureStackingHeightMap.dispose(),this._furnitureStackingHeightMap=t,this._tileObjectMap&&this._tileObjectMap.dispose(),this._furnitureStackingHeightMap&&(this._tileObjectMap=new sX(this._furnitureStackingHeightMap.width,this._furnitureStackingHeightMap.height))}addPendingFurnitureFloor(t){t&&(this._floorStack.delete(t.id),this._floorStack.set(t.id,t))}removePendingFunitureFloor(t){const e=this._floorStack.get(t);return e?(this._floorStack.delete(t),e):null}getPendingFurnitureFloor(t){const e=this._floorStack.get(t);return e?(this._floorStack.delete(t),e):null}getNextPendingFurnitureFloor(){if(!this._floorStack.size)return null;const t=this._floorStack.keys();return this.getPendingFurnitureFloor(t.next().value)}addPendingFurnitureWall(t){t&&(this._wallStack.delete(t.id),this._wallStack.set(t.id,t))}removePendingFurnitureWall(t){const e=this._wallStack.get(t);return e?(this._wallStack.delete(t),e):null}getPendingFurnitureWall(t){const e=this._wallStack.get(t);return e?(this._wallStack.delete(t),e):null}getNextPendingFurnitureWall(){if(!this._wallStack.size)return null;const t=this._wallStack.keys();return this.getPendingFurnitureWall(t.next().value)}addButtonMouseCursorOwner(t){return this._mouseButtonCursorOwners.indexOf(t)===-1?(this._mouseButtonCursorOwners.push(t),!0):!1}removeButtonMouseCursorOwner(t){const e=this._mouseButtonCursorOwners.indexOf(t);return e>-1?(this._mouseButtonCursorOwners.splice(e,1),!0):!1}hasButtonMouseCursorOwners(){return this._mouseButtonCursorOwners.length>0}get roomId(){return this._roomId}get modelName(){return this._modelName}get legacyGeometry(){return this._legacyGeometry}get tileObjectMap(){return this._tileObjectMap}get roomCamera(){return this._roomCamera}get selectedObject(){return this._selectedObject}get placedObject(){return this._placedObject}get furnitureStackingHeightMap(){return this._furnitureStackingHeightMap}}class rX{constructor(t,e){this._object=t,this._groupBadge=e}get object(){return this._object}get groupBadge(){return this._groupBadge}}const Qs=class Qs{static init(t,e){this._SafeStr_4513=0,this._SafeStr_4515=t,this._SafeStr_4516=e,this._SafeStr_4514=Nt(),this._SafeStr_448=1}static turnVisualizationOn(){if(this._SafeStr_448===0||this._SafeStr_448===3)return;this._SafeStr_4524||(this._SafeStr_4524=setTimeout(()=>this.turnVisualizationOff(),this._SafeStr_4516));const t=Nt()-this._SafeStr_4514;if(t>this._SafeStr_4515+this._SafeStr_4516){this._SafeStr_448=3;return}if(this._SafeStr_4512=!0,t<this._SafeStr_4515){this._SafeStr_448=1;return}this._SafeStr_448=2,this._SafeStr_4513=(t-this._SafeStr_4515)/this._SafeStr_4516}static turnVisualizationOff(){this._SafeStr_4512=!1,clearTimeout(this._SafeStr_4524),this._SafeStr_4524=null}static isVisualizationOn(){return this._SafeStr_4512&&this.isRunning()}static isRunning(){return this._SafeStr_448===1||this._SafeStr_448===2}};Qs.STATE_NOT_INITIALIZED=0,Qs.STATE_START_DELAY=1,Qs.STATE_RUNNING=2,Qs.STATE_OVER=3,Qs._SafeStr_448=0,Qs._SafeStr_4512=!1,Qs._SafeStr_4513=0,Qs._SafeStr_4514=0,Qs._SafeStr_4515=2e4,Qs._SafeStr_4516=5e3;let sg=Qs;const _i=class _i{static init(t,e){this._SafeStr_4513=0,this._SafeStr_4515=t,this._SafeStr_4516=e,this._SafeStr_4514=Nt(),this._SafeStr_448=1}static turnVisualizationOn(){if(this._SafeStr_448===0||this._SafeStr_448===3)return;this._SafeStr_4524||(this._SafeStr_4524=setTimeout(()=>this.turnVisualizationOff(),this._SafeStr_4516));const t=Nt()-this._SafeStr_4514;if(t>this._SafeStr_4515+this._SafeStr_4516){this._SafeStr_448=3;return}if(this._SafeStr_4512=!0,t<this._SafeStr_4515){this._SafeStr_448=1;return}this._SafeStr_448=2,this._SafeStr_4513=(t-this._SafeStr_4515)/this._SafeStr_4516}static turnVisualizationOff(){this._SafeStr_4512=!1,clearTimeout(this._SafeStr_4524),this._SafeStr_4524=null}static isVisualizationOn(){return this._SafeStr_4512&&this.isRunning()}static isRunning(){return this._SafeStr_448===1||this._SafeStr_448===2}};_i.STATE_NOT_INITIALIZED=0,_i.STATE_START_DELAY=1,_i.STATE_RUNNING=2,_i.STATE_OVER=3,_i._SafeStr_448=0,_i._SafeStr_4512=!1,_i._SafeStr_4514=0,_i._SafeStr_4515=2e4,_i._SafeStr_4516=5e3;let Kh=_i;class Xc{constructor(t,e,s,r,n,a=0,o=null,u=null,l=-1,c=-1,h=null){this._id=0,this._category=0,this._operation="",this._loc=null,this._dir=null,this._typeId=0,this._instanceData=null,this._stuffData=null,this._state=-1,this._animFrame=-1,this._posture=null,this._id=t,this._category=e,this._operation=s,this._loc=new v,this._loc.assign(r),this._dir=new v,this._dir.assign(n),this._typeId=a,this._instanceData=o,this._stuffData=u,this._state=l,this._animFrame=c,this._posture=h}get id(){return this._id}get category(){return this._category}get operation(){return this._operation}get loc(){return this._loc}get dir(){return this._dir}get typeId(){return this._typeId}get instanceData(){return this._instanceData}get stuffData(){return this._stuffData}get state(){return this._state}get animFrame(){return this._animFrame}get posture(){return this._posture}dispose(){this._loc=null,this._dir=null}}const lO=class lO{constructor(){this._type="",this._sizes=[],this._sizeDatas=new Map,this._lastSize=-1,this._lastSizeScale=-1,this._lastSizeData=null,this._lastSizeDataScale=-1}initialize(t){return this.reset(),t?(this._type=t.name,this.defineVisualizations(t.visualizations)?!0:(this.reset(),!1)):!1}dispose(){if(this._sizeDatas&&this._sizeDatas.size){for(const t of this._sizeDatas.values())t&&t.dispose();this._sizeDatas=null}this._lastSizeData=null,this._sizes=null}reset(){if(this._type="",this._sizeDatas&&this._sizeDatas.size)for(const t of this._sizeDatas.values())t&&t.dispose();this._sizeDatas.clear(),this._sizes=[],this._lastSizeData=null,this._lastSizeDataScale=-1}createSizeData(t,e,s){return new Wh(e,s)}defineVisualizations(t){if(!t)return!1;for(const e of Object.keys(t)){const s=t[e],r=s.layerCount,n=s.angle;let a=s.size;if(a<1&&(a=1),this._sizeDatas.get(a))return!1;const o=this.createSizeData(a,r,n);if(!o)return!1;for(const u in s){const l=s[u];if(!this.processVisualElement(o,u,l))return o.dispose(),!1}this._sizeDatas.set(a,o),this._sizes.push(a)}return this.removeInvalidSizes(),this._sizes.sort(),!0}removeInvalidSizes(){if(!this._sizes||!this._sizes.length)return;const t=this._sizeDatas.get(Gs.SCALE_ZOOMED_IN),e=this._sizeDatas.get(Gs.SCALE_ZOOMED_OUT);if(t&&e&&t.layerCount!==e.layerCount){this._sizeDatas.delete(Gs.SCALE_ZOOMED_OUT);const s=this._sizes.indexOf(Gs.SCALE_ZOOMED_OUT);s>=0&&this._sizes.splice(s,1)}}processVisualElement(t,e,s){if(!t||!e||!s)return!1;switch(e){case"layers":if(!t.processLayers(s))return!1;break;case"directions":if(!t.processDirections(s))return!1;break;case"colors":if(!t.processColors(s))return!1;break}return!0}getValidSize(t){if(t===this._lastSizeScale)return this._lastSize;const e=this.getSizeIndex(t);let s=-1;return e<this._sizes.length&&(s=this._sizes[e]),this._lastSizeScale=t,this._lastSize=s,s}getSizeIndex(t){if(t<=0)return 0;let e=0,s=1;for(;s<this._sizes.length;){if(this._sizes[s]>t){this._sizes[s]/t<t/this._sizes[s-1]&&(e=s);break}e=s,s++}return e}getSizeData(t){if(t===this._lastSizeDataScale)return this._lastSizeData;const e=this.getSizeIndex(t);return e<this._sizes.length?this._lastSizeData=this._sizeDatas.get(this._sizes[e]):this._lastSizeData=null,this._lastSizeDataScale=t,this._lastSizeData}getLayerCount(t){const e=this.getSizeData(t);return e?e.layerCount:Vt.DEFAULT_COUNT}getValidDirection(t,e){const s=this.getSizeData(t);return s?s.getValidDirection(e):Vt.DEFAULT_DIRECTION}getLayerTag(t,e,s){const r=this.getSizeData(t);return r?r.getLayerTag(e,s):Vt.DEFAULT_TAG}getLayerBlendMode(t,e,s){const r=this.getSizeData(t);return r?r.getLayerBlendMode(e,s):Vt.DEFAULT_BLEND_MODE}getLayerAlpha(t,e,s){const r=this.getSizeData(t);return r?r.getLayerAlpha(e,s):Vt.DEFAULT_ALPHA}getLayerColor(t,e,s){const r=this.getSizeData(t);return r?r.getLayerColor(e,s):bn.DEFAULT_COLOR}getLayerIgnoreMouse(t,e,s){const r=this.getSizeData(t);return r?r.getLayerIgnoreMouse(e,s):Vt.DEFAULT_IGNORE_MOUSE}getLayerXOffset(t,e,s){const r=this.getSizeData(t);return r?r.getLayerXOffset(e,s):Vt.DEFAULT_XOFFSET}getLayerYOffset(t,e,s){const r=this.getSizeData(t);return r?r.getLayerYOffset(e,s):Vt.DEFAULT_YOFFSET}getLayerZOffset(t,e,s){const r=this.getSizeData(t);return r?r.getLayerZOffset(e,s):Vt.DEFAULT_ZOFFSET}get type(){return this._type}};lO.LAYER_LETTERS=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];let Ii=lO;class eE extends Ii{createSizeData(t,e,s){return new jh(e,s)}processVisualElement(t,e,s){if(!t||!e||!s)return!1;switch(e){case"animations":if(!(t instanceof jh)||!t.defineAnimations(s))return!1;break;default:if(!super.processVisualElement(t,e,s))return!1;break}return!0}hasAnimation(t,e){const s=this.getSizeData(t);return s?s.hasAnimation(e):null}getAnimationCount(t){const e=this.getSizeData(t);return e?e.getAnimationCount():null}getAnimationId(t,e){const s=this.getSizeData(t);return s?s.getAnimationId(e):null}isImmediateChange(t,e,s){const r=this.getSizeData(t);return r?r.isImmediateChange(e,s):null}getStartFrame(t,e,s){const r=this.getSizeData(t);return r?r.getStartFrame(e,s):null}getFrame(t,e,s,r,n){const a=this.getSizeData(t);return a?a.getFrame(e,s,r,n):null}getFrameFromSequence(t,e,s,r,n,a,o){const u=this.getSizeData(t);return u?u.getFrameFromSequence(e,s,r,n,a,o):null}}const bl=class bl extends Xa{constructor(){super(),this._filters=[],this._data=null,this._type=null,this._direction=0,this._lastCameraAngle=NaN,this._selectedColor=0,this._furnitureLift=0,this._alphaMultiplier=1,this._alphaChanged=!1,this._clickUrl=null,this._clickHandling=!1,this._cacheDirection=-1,this._cacheScale=0,this._cacheSize=-1,this._layerCount=0,this._shadowLayerIndex=-1,this._updatedLayers=[],this._assetNames=[],this._spriteTags=[],this._spriteBlendModes=[],this._spriteAlphas=[],this._spriteColors=[],this._spriteMouseCaptures=[],this._spriteXOffsets=[],this._spriteYOffsets=[],this._spriteZOffsets=[],this._animationNumber=0,this._lookThrough=!1}initialize(t){return this.reset(),t instanceof Ii?(this._type=t.type,this._data=t,!0):!1}dispose(){super.dispose(),this._data=null,this._updatedLayers=null,this._assetNames=null,this._spriteTags=null,this._spriteBlendModes=null,this._spriteAlphas=null,this._spriteColors=null,this._spriteMouseCaptures=null,this._spriteXOffsets=null,this._spriteYOffsets=null,this._spriteZOffsets=null,this._filters=[]}reset(){super.reset(),this.setDirection(-1),this._data=null,this._updatedLayers=[],this._assetNames=[],this._spriteTags=[],this._spriteBlendModes=[],this._spriteAlphas=[],this._spriteColors=[],this._spriteMouseCaptures=[],this._spriteXOffsets=[],this._spriteYOffsets=[],this._spriteZOffsets=[],this.createSprites(0)}resetLayers(t,e){this._cacheDirection===e&&this._cacheScale===t||(this._updatedLayers=[],this._assetNames=[],this._spriteTags=[],this._spriteBlendModes=[],this._spriteAlphas=[],this._spriteColors=[],this._spriteMouseCaptures=[],this._spriteXOffsets=[],this._spriteYOffsets=[],this._spriteZOffsets=[],this._cacheDirection=e,this._cacheScale=t,this._cacheSize=this.getValidSize(t),this.setLayerCount((this._data&&this._data.getLayerCount(t)||0)+this.getAdditionalLayerCount()))}update(t,e,s,r){if(!t)return;const n=t.scale;let a=!1;this.updateObject(n,t.direction.x)&&(a=!0),this.updateModel(n)&&(a=!0),this._needsLookThroughUpdate&&(a=!0,this._needsLookThroughUpdate=!1);let o=0;r?this._animationNumber=this._animationNumber|this.updateAnimation(n):(o=this.updateAnimation(n)|this._animationNumber,this._animationNumber=0),(a||o!==0)&&(this.updateSprites(n,a,o),this._scale=n,this.updateSpriteCounter++)}updateObject(t,e){if(!this.object||this.updateObjectCounter===this.object.updateCounter&&t===this._scale&&this._lastCameraAngle===e)return!1;let s=this.object.getDirection().x-(e+135);if(s=(s%360+360)%360,this._data){const r=this._data.getValidDirection(t,s);this.setDirection(r)}return this._lastCameraAngle=e,this._scale=t,this.updateObjectCounter=this.object.updateCounter,this.resetLayers(t,this._direction),!0}updateModel(t){const e=this.object&&this.object.model;if(!e||this.updateModelCounter===e.updateCounter)return!1;this._selectedColor=e.getValue(I.FURNITURE_COLOR),this._clickUrl=e.getValue(I.FURNITURE_AD_URL),this._clickHandling=this._clickUrl&&this._clickUrl!==""&&this._clickUrl.indexOf("http")===0||!1,this._furnitureLift=e.getValue(I.FURNITURE_LIFT_AMOUNT)||0;let s=e.getValue(I.FURNITURE_ALPHA_MULTIPLIER);return isNaN(s)&&(s=1),this._alphaMultiplier!==s&&(this._alphaMultiplier=s,this._alphaChanged=!0),this.updateModelCounter=e.updateCounter,!0}updateSprites(t,e,s){if(this._layerCount!==this.totalSprites&&this.createSprites(this._layerCount),e){let r=this.totalSprites-1;for(;r>=0;)this.updateSprite(t,r),r--}else{let r=0;for(;s>0;)s&&this.updateSprite(t,r),r++,s=s>>1}this._alphaChanged=!1}updateSprite(t,e){const s=this.getSpriteAssetName(t,e),r=this.getSprite(e);if(s&&r){const n=this.getAsset(s,e);if(n){r.visible=!0,r.type=this._type,r.texture=this.getTexture(t,e,n),r.flipH=n.flipH,r.flipV=n.flipV,r.direction=this._direction;let a=0;e!==this._shadowLayerIndex?(r.tag=this.getLayerTag(t,this._direction,e),r.alpha=this.getLayerAlpha(t,this._direction,e),r.color=this.getLayerColor(t,e,this._selectedColor),r.offsetX=n.offsetX+this.getLayerXOffset(t,this._direction,e),r.offsetY=n.offsetY+this.getLayerYOffset(t,this._direction,e),r.blendMode=this.getLayerBlendMode(t,this._direction,e),r.alphaTolerance=this.getLayerIgnoreMouse(t,this._direction,e)?ii.MATCH_NOTHING:ii.MATCH_OPAQUE_PIXELS,a=this.getLayerZOffset(t,this._direction,e),a=a-e*.001):(r.offsetX=n.offsetX,r.offsetY=n.offsetY+this.getLayerYOffset(t,this._direction,e),r.alpha=48*this._alphaMultiplier,r.alphaTolerance=ii.MATCH_NOTHING,a=1),this._lookThrough&&(r.alpha*=.2),r.relativeDepth=a*bl.DEPTH_MULTIPLIER,r.name=s,r.libraryAssetName=this.getLibraryAssetNameForSprite(n,r),r.posture=this.getPostureForAsset(t,n.source),r.clickHandling=this._clickHandling,r.blendMode!=="add"&&(r.filters=this._filters)}else this.resetSprite(r)}else r&&this.resetSprite(r)}getLibraryAssetNameForSprite(t,e){return t.source}getPostureForAssetFile(t,e){return null}resetSprite(t){t&&(t.texture=null,t.libraryAssetName="",t.posture="",t.tag="",t.offsetX=0,t.offsetY=0,t.flipH=!1,t.flipV=!1,t.relativeDepth=0,t.clickHandling=!1)}getSpriteAssetName(t,e){if(!this._data||e>=Ii.LAYER_LETTERS.length)return"";let s=this._assetNames[e],r=this._updatedLayers[e];return(!s||!s.length)&&(s=this.cacheSpriteAssetName(t,e,!0),r=this._cacheSize!==1),r&&(s+=this.getFrameNumber(t,e)),s}cacheSpriteAssetName(t,e,s){this._type;const r=s?this._cacheSize:this.getValidSize(t);let n="";const a=r!==1;if(e!==this._shadowLayerIndex?n=Ii.LAYER_LETTERS[e]||"":n="sd",n==="")return null;const o=this._type+(a?"_"+r+"_"+n+"_"+this._direction+"_":"_icon_"+n);return s&&(this._assetNames[e]=o,this._updatedLayers[e]=a),o}getLayerTag(t,e,s){const r=this._spriteTags[s];if(r!==void 0)return r;if(!this._data)return Vt.DEFAULT_TAG;const n=this._data.getLayerTag(t,e,s);return this._spriteTags[s]=n,n}getLayerBlendMode(t,e,s){const r=this._spriteBlendModes[s];if(r!==void 0)return r;if(!this._data)return Vt.DEFAULT_BLEND_MODE;const n=this._data.getLayerBlendMode(t,e,s);return this._spriteBlendModes[s]=n,n}getLayerAlpha(t,e,s){if(!this._alphaChanged){const n=this._spriteAlphas[s];if(n!==void 0)return n}if(!this._data)return Vt.DEFAULT_ALPHA;let r=this._data.getLayerAlpha(t,e,s);return this._alphaMultiplier!==null&&(r=r*this._alphaMultiplier),this._spriteAlphas[s]=r,r}getLayerColor(t,e,s){const r=this._spriteColors[e];if(r!==void 0)return r;if(!this._data)return bn.DEFAULT_COLOR;const n=this._data.getLayerColor(t,e,s);return this._spriteColors[e]=n,n}getLayerIgnoreMouse(t,e,s){const r=this._spriteMouseCaptures[s];if(r!==void 0)return r;if(!this._data)return Vt.DEFAULT_IGNORE_MOUSE;const n=this._data.getLayerIgnoreMouse(t,e,s);return this._spriteMouseCaptures[s]=n,n}getLayerXOffset(t,e,s){const r=this._spriteXOffsets[s];if(r!==void 0)return r;if(!this._data)return Vt.DEFAULT_XOFFSET;const n=this._data.getLayerXOffset(t,e,s);return this._spriteXOffsets[s]=n,n}getLayerYOffset(t,e,s){if(s===this._shadowLayerIndex)return Math.ceil(this._furnitureLift*(t/2));const r=this._spriteYOffsets[s];if(r!==void 0)return r;if(!this._data)return Vt.DEFAULT_YOFFSET;const n=this._data.getLayerYOffset(t,e,s);return this._spriteYOffsets[s]=n,n}getLayerZOffset(t,e,s){const r=this._spriteZOffsets[s];if(r!==void 0)return r;if(!this._data)return Vt.DEFAULT_ZOFFSET;const n=this._data.getLayerZOffset(t,e,s);return this._spriteZOffsets[s]=n,n}getValidSize(t){return this._data?this._data.getValidSize(t):t}setLayerCount(t){this._layerCount=t,this._shadowLayerIndex=t-this.getAdditionalLayerCount()}setDirection(t){this._direction!==t&&(this._direction=t)}getAdditionalLayerCount(){return 1}updateAnimation(t){return 0}getFrameNumber(t,e){return 0}getPostureForAsset(t,e){return null}getAsset(t,e=-1){return this.asset?this.asset.getAsset(t):null}getTexture(t,e,s){return(s==null?void 0:s.texture)??null}set lookThrough(t){this._lookThrough!=t&&(this._lookThrough=t,this._needsLookThroughUpdate=!0)}get direction(){return this._direction}get data(){return this._data}};bl.DEPTH_MULTIPLIER=Math.sqrt(.5),bl.TYPE=j.FURNITURE_STATIC;let Ai=bl;const Bo=class Bo extends Ai{constructor(){super(...arguments),this._state=-1,this._frameIncrease=1,this._animationData=new C0,this._animationScale=0,this._animationChangeTime=0,this._animatedLayerCount=0,this._directionChanged=!1}initialize(t){return t instanceof eE?super.initialize(t):!1}dispose(){super.dispose(),this._animationData&&(this._animationData.dispose(),this._animationData=null)}get animatedLayerCount(){return this._animatedLayerCount}get animationId(){return this._animationData.animationId}getAnimationId(t){return this.animationId!==Bo.DEFAULT_ANIMATION_ID&&this.data.hasAnimation(this._animationScale,this.animationId)?this.animationId:Bo.DEFAULT_ANIMATION_ID}updateObject(t,e){if(super.updateObject(t,e)){const s=this.object.getState(0);return s!==this._state&&(this.setAnimation(s),this._state=s,this._animationChangeTime=this.object.model.getValue(I.FURNITURE_STATE_UPDATE_TIME)||0),!0}return!1}updateModel(t){if(super.updateModel(t)){if(this.usesAnimationResetting()){const s=this.object.model.getValue(I.FURNITURE_STATE_UPDATE_TIME);s>this._animationChangeTime&&(this._animationChangeTime=s,this.setAnimation(this._state))}const e=this.object.model.getValue(I.FURNITURE_AUTOMATIC_STATE_INDEX);if(!isNaN(e)){const s=this.data.getAnimationId(this._animationScale,e);this.setAnimation(s)}return!0}return!1}isPlayingTransition(t,e){return!(!Ce.isTransitionFromAnimation(t.animationId)&&!Ce.isTransitionToAnimation(t.animationId)||e!==t.animationAfterTransitionId||t.animationOver)}getCurrentState(t){const e=t.animationId;return!Ce.isTransitionFromAnimation(e)&&!Ce.isTransitionToAnimation(e)?e:t.animationAfterTransitionId}setAnimation(t){this.data&&this.setSubAnimation(this._animationData,t,this._state>=0)}setSubAnimation(t,e,s=!0){const r=t.animationId;if(s){if(this.isPlayingTransition(t,e))return!1;const n=this.getCurrentState(t);if(e!==n){if(!this.data.isImmediateChange(this._animationScale,e,n)){let a=Ce.getTransitionFromAnimationId(n);this.data.hasAnimation(this._animationScale,a)?(t.animationAfterTransitionId=e,e=a):(a=Ce.getTransitionToAnimationId(e),this.data.hasAnimation(this._animationScale,a)&&(t.animationAfterTransitionId=e,e=a))}}else if(Ce.isTransitionFromAnimation(t.animationId)){const a=Ce.getTransitionToAnimationId(e);this.data.hasAnimation(this._animationScale,a)&&(t.animationAfterTransitionId=e,e=a)}else if(!Ce.isTransitionToAnimation(t.animationId)&&this.usesAnimationResetting()){const a=Ce.getTransitionFromAnimationId(n);if(this.data.hasAnimation(this._animationScale,a))t.animationAfterTransitionId=e,e=a;else{const o=Ce.getTransitionToAnimationId(e);this.data.hasAnimation(this._animationScale,o)&&(t.animationAfterTransitionId=e,e=o)}}}return r!==e?(t.animationId=e,!0):!1}getLastFramePlayed(t){return this._animationData.getLastFramePlayed(t)}resetAllAnimationFrames(){this._animationData&&this._animationData.setLayerCount(this._animatedLayerCount)}updateAnimation(t){if(!this.data)return 0;t!==this._animationScale&&(this._animationScale=t,this._animatedLayerCount=this.data.getLayerCount(t),this.resetAllAnimationFrames());const e=this.updateAnimations(t);return this._directionChanged=!1,e}updateAnimations(t){if(this._animationData.animationOver&&!this._directionChanged)return 0;const e=this.updateFramesForAnimation(this._animationData,t);return this._animationData.animationOver&&(Ce.isTransitionFromAnimation(this._animationData.animationId)||Ce.isTransitionToAnimation(this._animationData.animationId))&&(this.setAnimation(this._animationData.animationAfterTransitionId),this._animationData.animationOver=!1),e}updateFramesForAnimation(t,e){if(t.animationOver&&!this._directionChanged)return 0;const s=this.getAnimationId(t);let r=t.frameCounter;r||(r=this.data.getStartFrame(e,s,this._direction)),r+=this.frameIncrease,t.frameCounter=r,t.animationOver=!0;let n=!1,a=this._animatedLayerCount-1,o=0,u=1<<this._animatedLayerCount-1;for(;a>=0;){let l=0;if(n=t.getAnimationPlayed(a),!n||this._directionChanged){let c=t.getLastFramePlayed(a),h=t.getFrame(a);h&&h.isLastFrame&&h.remainingFrameRepeats<=this.frameIncrease&&(c=!0),(this._directionChanged||!h||h.remainingFrameRepeats>=0&&(h.remainingFrameRepeats=h.remainingFrameRepeats-this.frameIncrease)<=0)&&(l=Vr.SEQUENCE_NOT_DEFINED,h&&(l=h.activeSequence),l===Vr.SEQUENCE_NOT_DEFINED?h=this.data.getFrame(e,s,this._direction,a,r):h=this.data.getFrameFromSequence(e,s,this._direction,a,l,h.activeSequenceOffset+h.repeats,r),t.setFrame(a,h),o=o|u),!h||h.remainingFrameRepeats==Vr.FRAME_REPEAT_FOREVER?(c=!0,n=!0):t.animationOver=!1,t.setLastFramePlayed(a,c),t.setAnimationPlayed(a,n)}u=u>>1,a--}return o}getFrameNumber(t,e){const s=this._animationData.getFrame(e);return s?s.id:super.getFrameNumber(t,e)}getLayerXOffset(t,e,s){const r=super.getLayerXOffset(t,e,s),n=this._animationData.getFrame(s);return n?r+n.x:r}getLayerYOffset(t,e,s){const r=super.getLayerYOffset(t,e,s),n=this._animationData.getFrame(s);return n?r+n.y:r}usesAnimationResetting(){return!1}setDirection(t){this._direction!==t&&(super.setDirection(t),this._directionChanged=!0)}get frameIncrease(){return this._frameIncrease}get data(){return this._data}};Bo.TYPE=j.FURNITURE_ANIMATED,Bo.DEFAULT_ANIMATION_ID=0;let ge=Bo;const Zs=class Zs extends Ai{constructor(){super(),this._imageUrl=null,this._shortUrl=null,this._imageReady=!1,this._offsetX=0,this._offsetY=0,this._offsetZ=0,this._currentFrame=-1,this._totalFrames=-1}dispose(){super.dispose(),this._imageUrl&&this.asset&&this.asset.disposeAsset(this._imageUrl)}updateObject(t,e){return super.updateObject(t,e)?(this._imageReady&&this.checkAndCreateImageForCurrentState(),!0):!1}updateModel(t){const e=super.updateModel(t);if(e&&(this._offsetX=this.object.model.getValue(I.FURNITURE_BRANDING_OFFSET_X)||0,this._offsetY=this.object.model.getValue(I.FURNITURE_BRANDING_OFFSET_Y)||0,this._offsetZ=this.object.model.getValue(I.FURNITURE_BRANDING_OFFSET_Z)||0),this._imageReady){if(this.checkIfImageChanged())return this._imageReady=!1,this._imageUrl=null,!0}else if(this._imageReady=this.checkIfImageReady(),this._imageReady)return this.checkAndCreateImageForCurrentState(),!0;return e}checkIfImageChanged(){const t=this.object.model.getValue(I.FURNITURE_BRANDING_IMAGE_URL);return t&&t===this._imageUrl?!1:(this.asset&&this.asset.disposeAsset(this._imageUrl),!0)}checkIfImageReady(){if(!(this.object&&this.object.model))return!1;const e=this.object.model.getValue(I.FURNITURE_BRANDING_IMAGE_URL);if(!e||this._imageUrl&&this._imageUrl===e)return!1;if(this.object.model.getValue(I.FURNITURE_BRANDING_IMAGE_STATUS)===1){let r=null;return r=Rt().getTexture(e),r?(this.imageReady(r,e),!0):!1}return!1}imageReady(t,e){if(!t){this._imageUrl=null;return}this._imageUrl=e}checkAndCreateImageForCurrentState(){if(!this._imageUrl)return;const t=Rt().getTexture(this._imageUrl);if(!t)return;const e=this.object.getState(0);this.addBackgroundAsset(t,e,0)}addBackgroundAsset(t,e,s){let r=0,n=0,a=!1,o=!1;switch(e){case Zs.STATE_0:r=0,n=0,a=!1,o=!1;break;case Zs.STATE_1:r=-t.width,n=0,a=!0,o=!1;break;case Zs.STATE_2:r=-t.width,n=-t.height,a=!0,o=!0;break;case Zs.STATE_3:r=0,n=-t.height,a=!1,o=!0;break}this.asset.addAsset(`${this._imageUrl}_${s}`,t,!0,r,n,a,o)}getSpriteAssetName(t,e){return this.getLayerTag(t,this._direction,e)===Zs.BRANDED_IMAGE&&this._imageUrl?`${this._imageUrl}_${this.getFrameNumber(t,e)}`:super.getSpriteAssetName(t,e)}};Zs.BRANDED_IMAGE="branded_image",Zs.STATE_0=0,Zs.STATE_1=1,Zs.STATE_2=2,Zs.STATE_3=3;let fu=Zs;class M0 extends fu{getLayerXOffset(t,e,s){return super.getLayerXOffset(t,e,s)+this._offsetX}getLayerYOffset(t,e,s){return super.getLayerYOffset(t,e,s)+this._offsetY}getLayerZOffset(t,e,s){return super.getLayerZOffset(t,e,s)+this._offsetZ}}const ko=class ko extends ge{constructor(){super(...arguments),this._badgeId="",this._badgeAssetNameNormalScale="",this._badgeAssetNameSmallScale="",this._badgeVisibleInState=-1}updateModel(t){let e=super.updateModel(t);const s=this.object.model.getValue(I.FURNITURE_BADGE_IMAGE_STATUS),r=this.object.model.getValue(I.FURNITURE_BADGE_ASSET_NAME);if(s===-1)this._badgeAssetNameNormalScale="",this._badgeAssetNameSmallScale="";else if(s===1&&r!==this._badgeId){this._badgeId=r,this._badgeAssetNameNormalScale=this._badgeId,this._badgeAssetNameSmallScale===""&&(this._badgeAssetNameSmallScale=this._badgeAssetNameNormalScale+"_32");const n=this.object.model.getValue(I.FURNITURE_BADGE_VISIBLE_IN_STATE);isNaN(n)||(this._badgeVisibleInState=n),e=!0}return e}getSpriteAssetName(t,e){return this.getLayerTag(t,this.direction,e)!==ko.BADGE||this._badgeVisibleInState!==-1&&this.object.getState(0)!==this._badgeVisibleInState?super.getSpriteAssetName(t,e):t===32?this._badgeAssetNameSmallScale:this._badgeAssetNameNormalScale}getLayerXOffset(t,e,s){let r=super.getLayerXOffset(t,e,s);if(this.getLayerTag(t,e,s)===ko.BADGE){const n=this.getAsset(t===32?this._badgeAssetNameSmallScale:this._badgeAssetNameNormalScale,s);n&&(t===64?r+=(40-n.width)/2:r+=(20-n.width)/2)}return r}getLayerYOffset(t,e,s){let r=super.getLayerYOffset(t,e,s);if(this.getLayerTag(t,e,s)===ko.BADGE){const n=this.getAsset(t===32?this._badgeAssetNameSmallScale:this._badgeAssetNameNormalScale,s);n&&(t===64?r+=(40-n.height)/2:r+=(20-n.height)/2)}return r}};ko.BADGE="BADGE";let ig=ko;const _n=class _n extends ge{constructor(){super(),this._stateQueue=[],this._running=!1}setAnimation(t){if(t===-1&&!this._running){this._running=!0,this._stateQueue=[],this._stateQueue.push(_n.ANIMATION_ID_ROLL);return}if(t>=0&&t<=7){if(this._running){this._running=!1,this._stateQueue=[],this._stateQueue.push(_n.ANIMATION_ID_OFFSET_SLOW1),this._stateQueue.push(_n.ANIMATION_ID_OFFSET_SLOW2+t),this._stateQueue.push(t);return}super.setAnimation(t)}}updateAnimation(t){return this.getLastFramePlayed(0)&&this._stateQueue.length&&super.setAnimation(this._stateQueue.shift()),super.updateAnimation(t)}};_n.ANIMATION_ID_OFFSET_SLOW1=20,_n.ANIMATION_ID_OFFSET_SLOW2=9,_n.ANIMATION_ID_ROLL=-1;let rg=_n;class nX extends Ai{}const Vi=class Vi extends ge{getFrameNumber(t,e){const s=this.getLayerTag(t,this.direction,e),r=this.object.getState(0);switch(s){case Vi.SECONDS_SPRITE:return Math.floor(r%60%10);case Vi.TEN_SECONDS_SPRITE:return Math.floor(r%60/10);case Vi.MINUTES_SPRITE:return Math.floor(r/60%10);case Vi.TEN_MINUTES_SPRITE:return Math.floor(r/60/10%10);default:return super.getFrameNumber(t,e)}}get animationId(){return 0}};Vi.SECONDS_SPRITE="seconds_sprite",Vi.TEN_SECONDS_SPRITE="ten_seconds_sprite",Vi.MINUTES_SPRITE="minutes_sprite",Vi.TEN_MINUTES_SPRITE="ten_minutes_sprite";let ng=Vi;class aX extends Xa{}const Nl=class Nl extends ge{constructor(){super(),this._thumbnailAssetNameNormal=null,this._thumbnailImageNormal=null,this._thumbnailDirection=-1,this._thumbnailChanged=!1,this._hasOutline=!1}get hasThumbnailImage(){return this._thumbnailImageNormal!=null}setThumbnailImages(t){this._thumbnailImageNormal=t,this._thumbnailChanged=!0}updateModel(t){const e=super.updateModel(t);return!this._thumbnailChanged&&this._thumbnailDirection===this.direction?e:(this.refreshThumbnail(),!0)}refreshThumbnail(){this.asset!=null&&(this._thumbnailImageNormal?this.addThumbnailAsset(this._thumbnailImageNormal,64):this.asset.disposeAsset(this.getThumbnailAssetName(64)),this._thumbnailChanged=!1,this._thumbnailDirection=this.direction)}addThumbnailAsset(t,e){let s=0;for(;s<this.totalSprites;){if(this.getLayerTag(e,this.direction,s)===Nl.THUMBNAIL){const r=this.cacheSpriteAssetName(e,s,!1)+this.getFrameNumber(e,s),n=this.getAsset(r,s);if(n){const a=this.generateTransformedThumbnail(t,n),o=this.getThumbnailAssetName(e);this.asset.disposeAsset(o),this.asset.addAsset(o,a,!0,n.offsetX,n.offsetY,!1,!1)}return}s++}}generateTransformedThumbnail(t,e){if(this._hasOutline){const o=new wt,u=new wt(W.WHITE);u.tint=0,u.width=t.width+40,u.height=t.height+40;const l=new wt(t),c=(u.width-l.width)/2,h=(u.height-l.height)/2;l.x=Math.floor(c),l.y=Math.floor(h),o.addChild(u,l),t=ue.generateTexture(o)}const s=1.1,r=new ot,n=e.width/t.width;switch(this.direction){case 2:r.a=n,r.b=-.5*n,r.c=0,r.d=n*s,r.tx=0,r.ty=.5*n*t.width;break;case 0:case 4:r.a=n,r.b=.5*n,r.c=0,r.d=n*s,r.tx=0,r.ty=0;break;default:r.a=n,r.b=0,r.c=0,r.d=n,r.tx=0,r.ty=0}const a=new wt(t);return a.setFromMatrix(r),ue.generateTexture(a)}getSpriteAssetName(t,e){return this._thumbnailImageNormal&&this.getLayerTag(t,this.direction,e)===Nl.THUMBNAIL?this.getThumbnailAssetName(t):super.getSpriteAssetName(t,e)}getThumbnailAssetName(t){return this._thumbnailAssetNameNormal=this.getFullThumbnailAssetName(this.object.id,64),this._thumbnailAssetNameNormal}getFullThumbnailAssetName(t,e){return[this._type,t,"thumb",e].join("_")}};Nl.THUMBNAIL="THUMBNAIL";let Xh=Nl;class x0 extends Xh{constructor(){super(),this._cachedUrl=null,this._hasOutline=!0}updateModel(t){if(this.object){const e=this.getThumbnailURL();if(this._cachedUrl!==e)if(this._cachedUrl=e,this._cachedUrl&&this._cachedUrl!==""){const s=new Image;s.src=e,s.crossOrigin="*",s.onload=()=>{const r=W.from(s);r.source.scaleMode="linear",this.setThumbnailImages(r)}}else this.setThumbnailImages(null)}return super.updateModel(t)}getThumbnailURL(){throw new Error("This method must be overridden!")}}class oX extends x0{constructor(){super(),this._url=null,this._typePrefix=null}getThumbnailURL(){if(!this.object)return null;if(this._url)return this._url;const t=this.object.model.getValue(I.FURNITURE_DATA);if(!t||t==="")return null;this.object.type.indexOf("")>=0&&(this._typePrefix=this.object.type.indexOf("")>=0?"":"postcards/selfie/");let s=JSON.parse(t).w||"";return s=this.buildThumbnailUrl(s),this._url=s,this._url}buildThumbnailUrl(t){return t=t.replace(".png","_small.png"),t.indexOf(".png")===-1&&(t=t+"_small.png"),t}}class NI{constructor(){this._hasMoved=!1,this._age=0,this._isEmitter=!1,this._fade=!1,this._alphaMultiplier=1}init(t,e,s,r,n,a,o,u=!1,l=null,c=!1){this._x=t,this._y=e,this._z=s,this._particleDirection=new v(r.x,r.y,r.z),this._particleDirection.multiply(n),this._lastX=this._x-this._particleDirection.x*a,this._lastY=this._y-this._particleDirection.y*a,this._lastZ=this._z-this._particleDirection.z*a,this._age=0,this._hasMoved=!1,this._lifeTime=o,this._isEmitter=u,this._frames=l,this._fade=c,this._alphaMultiplier=1,this._fadeTime=.5+Math.random()*.5}dispose(){this._particleDirection=null}update(){this._age++,this._age===this._lifeTime&&this.ignite(),this._fade&&this._age/this._lifeTime>this._fadeTime&&(this._alphaMultiplier=(this._lifeTime-this._age)/(this._lifeTime*(1-this._fadeTime)))}getAsset(){return this._frames&&this._frames.length>0?this._frames[this._age%this._frames.length]:null}ignite(){}get fade(){return this._fade}get alphaMultiplier(){return this._alphaMultiplier}get direction(){return this._particleDirection}get age(){return this._age}get isEmitter(){return this._isEmitter}get isAlive(){return this._age<=this._lifeTime}get x(){return this._x}set x(t){this._x=t}get y(){return this._y}set y(t){this._y=t}get z(){return this._z}set z(t){this._z=t}get lastX(){return this._lastX}set lastX(t){this._hasMoved=!0,this._lastX=t}get lastY(){return this._lastY}set lastY(t){this._hasMoved=!0,this._lastY=t}get lastZ(){return this._lastZ}set lastZ(t){this._hasMoved=!0,this._lastZ=t}get hasMoved(){return this._hasMoved}toString(){return[this._x,this._y,this._z].toString()}copy(t,e){this._x=t._x*e,this._y=t._y*e,this._z=t._z*e,this._lastX=t._lastX*e,this._lastY=t._lastY*e,this._lastZ=t._lastZ*e,this._hasMoved=t.hasMoved,this._particleDirection=t._particleDirection,this._age=t._age,this._lifeTime=t._lifeTime,this._isEmitter=t._isEmitter,this._fade=t._fade,this._fadeTime=t._fadeTime,this._alphaMultiplier=t._alphaMultiplier}}const dn=class dn extends NI{constructor(t="",e=-1){super(),this._roomObjectSpriteId=-1,this._timeStep=.1,this._fuseTime=10,this._energy=1,this._hasIgnited=!1,this._burstPulse=1,this._particles=[],this._name=t,this._roomObjectSpriteId=e,this._particleConfigurations=[]}dispose(){for(const t of this._particles)t.dispose();this._particles=null,this._particleConfigurations=null,super.dispose()}setup(t,e,s,r,n,a,o,u,l,c){this._maxNumberOfParticles=t,this._particlesPerFrame=e,this._force=s,this._emitterDirection=r,this._emitterDirection.normalize(),this._gravity=n,this._airFriction=a,this._explosionShape=o,this._fuseTime=l,this._energy=u,this._burstPulse=c,this.reset()}reset(){for(const t of this._particles)t.dispose();this._particles=[],this._emittedParticles=0,this._hasIgnited=!1,this.init(0,0,0,this._emitterDirection,this._force,this._timeStep,this._fuseTime,!0)}copyStateFrom(t,e){super.copy(t,e),this._force=t._force,this._emitterDirection=t._emitterDirection,this._gravity=t._gravity,this._airFriction=t._airFriction,this._explosionShape=t._explosionShape,this._fuseTime=t._fuseTime,this._energy=t._energy,this._burstPulse=t._burstPulse,this._timeStep=t._timeStep,this._hasIgnited=t._hasIgnited}configureParticle(t,e,s,r){const n={};n.lifeTime=t,n.isEmitter=e,n.frames=s,n.fade=r,this._particleConfigurations.push(n)}ignite(){this._hasIgnited=!0,this._emittedParticles<this._maxNumberOfParticles&&this.age>1&&this.releaseParticles(this,this.direction)}releaseParticles(t,e=null){e||(e=new v);const s=new v,r=this.getRandomParticleConfiguration();let n=0;for(;n<this._particlesPerFrame;){switch(this._explosionShape){case dn.CONE:s.x=this.randomBoolean(.5)?Math.random():-Math.random(),s.y=-(Math.random()+1),s.z=this.randomBoolean(.5)?Math.random():-Math.random();break;case dn.PLANE:s.x=this.randomBoolean(.5)?Math.random():-Math.random(),s.y=0,s.z=this.randomBoolean(.5)?Math.random():-Math.random();break;case dn.SPHERE:s.x=this.randomBoolean(.5)?Math.random():-Math.random(),s.y=this.randomBoolean(.5)?Math.random():-Math.random(),s.z=this.randomBoolean(.5)?Math.random():-Math.random();break}s.normalize();const a=new NI;let o=0,u=!1,l=!1,c=[];r?(o=Math.floor(Math.random()*r.lifeTime+10),u=r.isEmitter,c=r.frames,l=r.fade):(o=Math.trunc(Math.floor(Math.random()*20+10)),u=!1,c=[]),a.init(t.x,t.y,t.z,s,this._energy,this._timeStep,o,u,c,l),this._particles.push(a),this._emittedParticles++,n++}}getRandomParticleConfiguration(){const t=Math.trunc(Math.floor(Math.random()*this._particleConfigurations.length));return this._particleConfigurations[t]}update(){super.update(),this.accumulateForces(),this.verlet(),this.satisfyConstraints(),!this.isAlive&&this._emittedParticles<this._maxNumberOfParticles&&this.age%this._burstPulse===0&&this.releaseParticles(this,this.direction)}verlet(){if(this.isAlive||this._emittedParticles<this._maxNumberOfParticles){const e=this.x,s=this.y,r=this.z;this.x=(2-this._airFriction)*this.x-(1-this._airFriction)*this.lastX,this.y=(2-this._airFriction)*this.y-(1-this._airFriction)*this.lastY+this._gravity*this._timeStep*this._timeStep,this.z=(2-this._airFriction)*this.z-(1-this._airFriction)*this.lastZ,this.lastX=e,this.lastY=s,this.lastZ=r}const t=[];for(const e of this._particles){e.update();const s=e.x,r=e.y,n=e.z;e.x=(2-this._airFriction)*e.x-(1-this._airFriction)*e.lastX,e.y=(2-this._airFriction)*e.y-(1-this._airFriction)*e.lastY+this._gravity*this._timeStep*this._timeStep,e.z=(2-this._airFriction)*e.z-(1-this._airFriction)*e.lastZ,e.lastX=s,e.lastY=r,e.lastZ=n,(e.y>10||!e.isAlive)&&t.push(e)}for(const e of t)e.isEmitter,this._particles.splice(this._particles.indexOf(e),1),e.dispose()}satisfyConstraints(){}accumulateForces(){for(const t of this._particles);}get particles(){return this._particles}get hasIgnited(){return this._hasIgnited}randomBoolean(t){return Math.random()<t}get roomObjectSpriteId(){return this._roomObjectSpriteId}};dn.CONE="cone",dn.PLANE="plane",dn.SPHERE="sphere";let ag=dn;class uX{constructor(t){this._canvasId=-1,this._hasIgnited=!1,this._centerX=0,this._centerY=0,this._scaleMultiplier=1,this._blend=1,this._bgColor=4278190080,this._isDone=!1,this._emitters=new xe,this._visualization=t,this._blackOverlayAlphaTransform=new n_,this._blackOverlayAlphaTransform.alpha=1,this._particleColorTransform=new n_,this._identityMatrix=new ot,this._translationMatrix=new ot,this._particleSprite=new wt}dispose(){for(const t of this._emitters.getValues())t.dispose();this._emitters=null,this._canvasTexture&&(this._canvasTexture.destroy(),this._canvasTexture=null),this._blackOverlay&&(this._blackOverlay.destroy(),this._blackOverlay=null),this._emptySprite&&(this._emptySprite.destroy(),this._emptySprite=null),this._particleSprite&&(this._particleSprite.destroy(),this._particleSprite=null),this._blackOverlayAlphaTransform=null,this._particleColorTransform=null,this._identityMatrix=null,this._translationMatrix=null}reset(){this._currentEmitter&&this._currentEmitter.reset(),this._currentEmitter=null,this._hasIgnited=!1,this._isDone=!1,this.updateCanvas()}setAnimation(t){this._currentEmitter&&this._currentEmitter.reset(),this._currentEmitter=this._emitters.getValue(t),this._hasIgnited=!1,this._isDone=!1,this.updateCanvas()}updateCanvas(){if(!(!this._currentEmitter||this._canvasId===-1)&&(this._roomSprite=this._visualization.getSprite(this._canvasId),this._roomSprite&&this._roomSprite.texture)){if(this._roomSprite.width<=1||this._roomSprite.height<=1)return;this._canvasTexture&&(this._canvasTexture.width!==this._roomSprite.width||this._canvasTexture.height!==this._roomSprite.height)&&(this._canvasTexture.destroy(),this._canvasTexture=null),this.clearCanvas(),this._centerX=-this._roomSprite.offsetX,this._centerY=-this._roomSprite.offsetY,this._roomSprite.texture=this._canvasTexture}}getLayerYOffset(t,e,s){return this._currentEmitter&&this._currentEmitter.roomObjectSpriteId===s?this._currentEmitter.y*this._scaleMultiplier:0}controlsSprite(t){return this._currentEmitter?this._currentEmitter.roomObjectSpriteId==t:!1}updateSprites(){!this._currentEmitter||!this._roomSprite||(this._canvasTexture&&this._roomSprite.texture!==this._canvasTexture&&(this._roomSprite.texture=this._canvasTexture),this._hasIgnited&&this._currentEmitter.roomObjectSpriteId>=0&&(this._visualization.getSprite(this._currentEmitter.roomObjectSpriteId).visible=!1))}updateAnimation(){if(!this._currentEmitter||!this._roomSprite||this._isDone)return;const t=10;!this._hasIgnited&&this._currentEmitter.hasIgnited&&(this._hasIgnited=!0);const e=this._offsetY*this._scaleMultiplier;if(this._currentEmitter.update(),this._hasIgnited){this._currentEmitter.roomObjectSpriteId>=0&&(this._visualization.getSprite(this._currentEmitter.roomObjectSpriteId).visible=!1),this._canvasTexture||this.updateCanvas(),this.clearCanvas();for(const s of this._currentEmitter.particles){const r=this._centerX+(s.x-s.z)*t/10*this._scaleMultiplier,n=this._centerY-e+(s.y+(s.x+s.z)/2)*t/10*this._scaleMultiplier,a=s.getAsset();if(this._particleSprite.texture=null,this._particleSprite.tint=16777215,this._particleSprite.width=1,this._particleSprite.height=1,this._particleSprite.x=0,this._particleSprite.y=0,this._particleSprite.filters=[],a&&a.texture)if(this._particleSprite.texture=a.texture,this._particleSprite.width=a.texture.width,this._particleSprite.height=a.texture.height,s.fade&&s.alphaMultiplier<1)this._translationMatrix.identity(),this._translationMatrix.translate(r+a.offsetX,n+a.offsetY),this._particleColorTransform.alpha=s.alphaMultiplier,this._particleSprite.filters=[this._particleColorTransform],ue.writeToTexture(this._particleSprite,this._canvasTexture,!1,this._translationMatrix);else{const o=new st(r+a.offsetX,n+a.offsetY);this._particleSprite.x=o.x,this._particleSprite.y=o.y,ue.writeToTexture(this._particleSprite,this._canvasTexture,!1)}else this._particleSprite.tint=16777215,this._particleSprite.x=r-1,this._particleSprite.y=n-1,this._particleSprite.width=2,this._particleSprite.height=2,ue.writeToTexture(this._particleSprite,this._canvasTexture,!1)}if(!this._currentEmitter.particles.length){this._isDone=!0;return}}}parseData(t){this._size=t.size,this._canvasId=t.canvasId!==void 0?t.canvasId:-1,this._offsetY=t.offsetY!==void 0?t.offsetY:10,this._scaleMultiplier=this._size/64,this._blend=t.blend!==void 0?t.blend:1,this._blend=Math.min(this._blend,1),this._blackOverlayAlphaTransform.alpha=this._blend;const e=t.bgColor!==void 0?t.bgColor:"0";if(this._bgColor=parseInt(e,16)||0,!(!t.emitters||!t.emitters.length))for(const s of t.emitters){const r=s.id,n=s.name,a=s.spriteId,o=new ag(n,a);this._emitters.add(r,o);const u=s.maxNumParticles,l=s.particlesPerFrame,c=s.burstPulse!==void 0?s.burstPulse:1,h=s.fuseTime,_=s.simulation.force,d=s.simulation.direction,f=s.simulation.gravity,p=s.simulation.airFriction,g=s.simulation.shape,m=s.simulation.energy;for(const O of s.particles){const y=O.lifeTime,C=O.isEmitter||!1,P=O.fade||!1,L=[];for(const N of O.frames)L.push(this._visualization.asset.getAsset(N));o.configureParticle(y,C,L,P)}o.setup(u,l,_,new v(0,d,0),f,p,g,m,h,c)}}copyStateFrom(t){let e=0;t._emitters&&t._currentEmitter&&(e=t._emitters.getKey(t._emitters.getValues().indexOf(t._currentEmitter))),this.setAnimation(e),this._currentEmitter&&this._currentEmitter.copyStateFrom(t._currentEmitter,t._size/this._size),this._canvasTexture&&(this._canvasTexture.destroy(),this._canvasTexture=null)}clearCanvas(){this._emptySprite||(this._emptySprite=new wt(W.EMPTY),this._emptySprite.alpha=0),this._canvasTexture?ue.writeToTexture(this._emptySprite,this._canvasTexture,!0):this._canvasTexture=ue.createRenderTexture(this._roomSprite.width,this._roomSprite.height)}}class P0 extends ge{dispose(){if(super.dispose(),this._currentParticleSystem=null,this._particleSystems){for(const t of this._particleSystems.getValues())t.dispose();this._particleSystems=null}}updateObject(t,e){if(super.updateObject(t,e)){if(!this._particleSystems)this.readDefinition(),this._particleSystems?this._currentParticleSystem=this._particleSystems.getValue(t):it.log("ERROR Particle systems could not be read!",this.object.type);else if(t!==this._scale||this._particleSystems.getValue(t)!==this._currentParticleSystem){const s=this._particleSystems.getValue(t);if(!s)return!1;s.copyStateFrom(this._currentParticleSystem),this._currentParticleSystem&&this._currentParticleSystem.reset(),this._currentParticleSystem=s}return!0}return!1}updateSprites(t,e,s){super.updateSprites(t,e,s),this._currentParticleSystem&&this._currentParticleSystem.updateSprites()}updateAnimation(t){return this._currentParticleSystem&&this._currentParticleSystem.updateAnimation(),super.updateAnimation(t)}setAnimation(t){this._currentParticleSystem&&this._currentParticleSystem.setAnimation(t),super.setAnimation(t)}getLayerYOffset(t,e,s){return this._currentParticleSystem&&this._currentParticleSystem.controlsSprite(s)?this._currentParticleSystem.getLayerYOffset(t,e,s):super.getLayerYOffset(t,e,s)}readDefinition(){if(!this.object||!this.object.model)return!1;const t=this.object.model.getValue(I.FURNITURE_FIREWORKS_DATA);if(!t||!t.length)return!1;this._particleSystems=new xe;for(const e of t){const s=e.size,r=new uX(this);r.parseData(e),this._particleSystems.add(s,r)}return!0}}const fn=class fn extends P0{constructor(){super(...arguments),this._packetType=0,this._ribbonType=0,this._lastAnimationId=0}update(t,e,s,r){this.updatePresentWrap(),super.update(t,e,s,r)}updatePresentWrap(){if(!this.object)return;const t=1e3,e=this.object.model.getValue(I.FURNITURE_EXTRAS),s=parseInt(e),r=Math.floor(s/t),n=s%t;this._packetType=r>fn.MAX_PACKET_TYPE_VALUE?0:r,this._ribbonType=n>fn.MAX_RIBBON_TYPE_VALUE?0:n}getFrameNumber(t,e){if(this._lastAnimationId===fn.PRESENT_DEFAULT_STATE){if(e<=1)return this._packetType;if(e===2)return this._ribbonType}return super.getFrameNumber(t,e)}getSpriteAssetName(t,e){const s=this.getValidSize(t);let r=this._type,n="";e<this.spriteCount-1?n=String.fromCharCode(97+e):n="sd";const a=this.getFrameNumber(t,e);return r=r+("_"+s+"_"+n+"_"+this.direction),r=r+("_"+a),r}setAnimation(t){this._lastAnimationId=t,super.setAnimation(t)}};fn.PRESENT_DEFAULT_STATE=0,fn.MAX_PACKET_TYPE_VALUE=9,fn.MAX_RIBBON_TYPE_VALUE=11;let og=fn;class lX extends Ai{constructor(){super(...arguments),this._packetType=0,this._ribbonType=0}update(t,e,s,r){this.updatePresentWrap(),super.update(t,e,s,r)}updatePresentWrap(){if(!this.object)return;const t=this.object.model.getValue(I.FURNITURE_EXTRAS),e=1e3,s=parseInt(t);this._packetType=Math.floor(s/e),this._ribbonType=s%e}getFrameNumber(t,e){return e<=1?this._packetType:this._ribbonType}getSpriteAssetName(t,e){const s=this.getValidSize(t);let r=this._type,n="";e<this.spriteCount-1?n=String.fromCharCode(97+e):n="sd";const a=this.getFrameNumber(t,e);return r=r+("_"+s+"_"+n+"_"+this.direction),r=r+("_"+a),r}}const is=class is extends ge{constructor(){super(),this._color1=is.DEFAULT_COLOR_1,this._color2=is.DEFAULT_COLOR_2,this._badgeAssetNameNormalScale="",this._badgeAssetNameSmallScale=""}updateModel(t){const e=super.updateModel(t);if(this._badgeAssetNameNormalScale===""){const n=this.object.model.getValue(I.FURNITURE_GUILD_CUSTOMIZED_ASSET_NAME);n&&(this._badgeAssetNameNormalScale=n,this._badgeAssetNameSmallScale=this._badgeAssetNameNormalScale+"_32")}const s=this.object.model.getValue(I.FURNITURE_GUILD_CUSTOMIZED_COLOR_1);this._color1=s||is.DEFAULT_COLOR_1;const r=this.object.model.getValue(I.FURNITURE_GUILD_CUSTOMIZED_COLOR_2);return this._color2=r||is.DEFAULT_COLOR_2,e}getLayerColor(t,e,s){switch(this.getLayerTag(t,this._direction,e)){case is.PRIMARY_COLOUR_SPRITE_TAG:return this._color1;case is.SECONDARY_COLOUR_SPRITE_TAG:return this._color2}return super.getLayerColor(t,e,s)}getSpriteAssetName(t,e){return this.getLayerTag(t,this._direction,e)===is.BADGE?t===32?this._badgeAssetNameSmallScale:this._badgeAssetNameNormalScale:super.getSpriteAssetName(t,e)}getLibraryAssetNameForSprite(t,e){return e.tag===is.BADGE?"%group.badge.url%"+e.libraryAssetName.replace("badge_",""):super.getLibraryAssetNameForSprite(t,e)}};is.PRIMARY_COLOUR_SPRITE_TAG="COLOR1",is.SECONDARY_COLOUR_SPRITE_TAG="COLOR2",is.BADGE="BADGE",is.DEFAULT_COLOR_1=15658734,is.DEFAULT_COLOR_2=4934475;let ug=is;const di=class di extends Xh{updateModel(t){const e=super.updateModel(t);if(!this.hasThumbnailImage){const n=this.object.model.getValue(I.FURNITURE_GUILD_CUSTOMIZED_ASSET_NAME);n&&n.length&&this.setThumbnailImages(this.getBitmapAsset(n))}const s=this.object.model.getValue(I.FURNITURE_GUILD_CUSTOMIZED_COLOR_1);this._color1=s||di.DEFAULT_COLOR_1;const r=this.object.model.getValue(I.FURNITURE_GUILD_CUSTOMIZED_COLOR_2);return this._color2=r||di.DEFAULT_COLOR_2,e}generateTransformedThumbnail(t,e){const r=new ot,n=e.width/t.width;switch(this.direction){case 2:r.a=n,r.b=-.5*n,r.c=0,r.d=n*1.1,r.tx=0,r.ty=.5*n*t.width;break;case 0:case 4:r.a=n,r.b=.5*n,r.c=0,r.d=n*1.1,r.tx=0,r.ty=0;break;default:r.a=n,r.b=0,r.c=0,r.d=n,r.tx=0,r.ty=0}const a=new wt(t);return a.setFromMatrix(r),a.x=0,a.y=0,ue.generateTexture(a)}getLayerColor(t,e,s){switch(this.getLayerTag(t,this._direction,e)){case di.PRIMARY_COLOUR_SPRITE_TAG:return this._color1;case di.SECONDARY_COLOUR_SPRITE_TAG:return this._color2}return super.getLayerColor(t,e,s)}getLibraryAssetNameForSprite(t,e){return e.tag===di.THUMBNAIL&&this.object&&this.object.model.getValue(I.FURNITURE_GUILD_CUSTOMIZED_ASSET_NAME)?"%group.badge.url%"+this.object.model.getValue(I.FURNITURE_GUILD_CUSTOMIZED_ASSET_NAME):super.getLibraryAssetNameForSprite(t,e)}getBitmapAsset(t){const e=this.asset.getAsset(t);return!e||!e.texture?null:e.texture}};di.PRIMARY_COLOUR_SPRITE_TAG="COLOR1",di.SECONDARY_COLOUR_SPRITE_TAG="COLOR2",di.DEFAULT_COLOR_1=15658734,di.DEFAULT_COLOR_2=4934475;let lg=di;const fi=class fi extends ge{constructor(){super(),this._stateQueue=[],this._running=!1}setAnimation(t){if(t===-1&&!this._running){this._running=!0,this._stateQueue=[],this._stateQueue.push(fi.ANIMATION_ID_START_ROLL),this._stateQueue.push(fi.ANIMATION_ID_ROLL);return}if(t>0&&t<=fi.ANIMATION_ID_OFFSET_SLOW1){if(this._running){this._running=!1,this._stateQueue=[],this._stateQueue.push(fi.ANIMATION_ID_OFFSET_SLOW1+t),this._stateQueue.push(fi.ANIMATION_ID_OFFSET_SLOW2+t),this._stateQueue.push(t);return}super.setAnimation(t)}}updateAnimation(t){return this.getLastFramePlayed(1)&&this.getLastFramePlayed(2)&&this.getLastFramePlayed(3)&&this._stateQueue.length&&super.setAnimation(this._stateQueue.shift()),super.updateAnimation(t)}};fi.ANIMATION_ID_OFFSET_SLOW1=10,fi.ANIMATION_ID_OFFSET_SLOW2=20,fi.ANIMATION_ID_START_ROLL=31,fi.ANIMATION_ID_ROLL=32;let hg=fi;class hX extends M0{constructor(){super(...arguments),this._needsTransform=!0}generateTransformedImage(t,e){const r=new ot,n=e.width/t.width;switch(this.direction){case 2:r.a=n,r.b=-.5*n,r.c=0,r.d=n*1.1,r.tx=0,r.ty=.5*n*t.width;break;case 0:case 4:r.a=n,r.b=.5*n,r.c=0,r.d=n*1.1,r.tx=0,r.ty=0;break;default:r.a=n,r.b=0,r.c=0,r.d=n,r.tx=0,r.ty=0}const a=new wt(t),o=ue.createAndWriteRenderTexture(e.width+r.tx,e.height+r.ty,a,r);this.asset.disposeAsset(`${this._imageUrl}_0`),this.asset.addAsset(`${this._imageUrl}_0`,o,!0,a.x,a.y,e.flipH,e.flipV),this._needsTransform=!1}checkAndCreateImageForCurrentState(){super.checkAndCreateImageForCurrentState(),this._needsTransform=!0}getSpriteAssetName(t,e){return this.getLayerTag(t,this._direction,e)===fu.BRANDED_IMAGE&&this._imageUrl?(this._needsTransform&&this.generateTransformedImage(Rt().getTexture(this._imageUrl),this.getAsset(super.getSpriteAssetName(t,e))),`${this._imageUrl}_${this.getFrameNumber(t,e)}`):super.getSpriteAssetName(t,e)}}class b0 extends Ii{constructor(){super(),this._avatarData=new tE}dispose(){super.dispose(),this._avatarData&&(this._avatarData.dispose(),this._avatarData=null)}createAvatarImage(t,e,s=null,r=null,n=null){return this._avatarData.createAvatarImage(t,e,s,r,n)}}const zo=class zo extends Ai{constructor(){super(...arguments),this._mannequinScale=-1,this._figure=null,this._gender=null,this._avatarImage=null,this._avatarWidth=90,this._avatarHeight=130,this._needsUpdate=!1,this._placeHolderFigure="hd-99999-99998",this._disposed=!1}initialize(t){return t instanceof b0?super.initialize(t):!1}dispose(){this._disposed||(this._disposed=!0,this._avatarImage&&(this._avatarImage.dispose(),this._avatarImage=null),super.dispose())}updateObject(t,e){const s=super.updateObject(t,e);return s&&this._mannequinScale!==t&&(this._mannequinScale=t,this.updateAvatar()),s}updateModel(t){let e=super.updateModel(t);if(e){const s=this.object.model.getValue(I.FURNITURE_MANNEQUIN_FIGURE)||null;s&&(this._figure=`${s}.${this._placeHolderFigure}`,this._gender=this.object.model.getValue(I.FURNITURE_MANNEQUIN_GENDER)||null,this.updateAvatar())}return e=e||this._needsUpdate,this._needsUpdate=!1,e}updateAvatar(){this._avatarImage&&(this._avatarImage.dispose(),this._avatarImage=null),this._avatarImage=this.data.createAvatarImage(this._figure,this._mannequinScale,this._gender,this)}resetFigure(t){this.updateAvatar(),this._needsUpdate=!0}getLayerXOffset(t,e,s){return this.getLayerTag(t,e,s)===zo.AVATAR_IMAGE_SPRITE_TAG&&this._avatarImage?-this._avatarWidth/3:super.getLayerXOffset(t,e,s)}getLayerYOffset(t,e,s){return this.getLayerTag(t,e,s)===zo.AVATAR_IMAGE_SPRITE_TAG&&this._avatarImage?-this._avatarHeight/3:super.getLayerYOffset(t,e,s)}getTexture(t,e,s){return this.getLayerTag(t,this.direction,e)===zo.AVATAR_IMAGE_SPRITE_TAG&&this._avatarImage?(this._avatarImage.setDirection(as.FULL,this.direction),this._avatarImage.processAsTexture(as.FULL,!1)):super.getTexture(t,e,s)}get disposed(){return this._disposed}get data(){return this._data}};zo.AVATAR_IMAGE_SPRITE_TAG="avatar_image";let cg=zo;const bs=class bs extends ge{constructor(){super(),this._animOffsetIndex=[]}updateAnimation(t){this._animSpeedIndex||this.initItems(t);let e=this.getSprite(2);return e&&(this._animOffsetIndex[0]=this.getNewPoint(t,0)),e=this.getSprite(3),e&&(this._animOffsetIndex[1]=this.getNewPoint(t,1)),super.updateAnimation(t)}getNewPoint(t,e){let s=0,r=this._animPhaseIndex[e],n=this._animDirectionIndex[e];const a=this._animSpeedIndex[e],o=this._animFactorIndex[e];let u=1;t==32?(s=bs.AREA_DIAMETER_SMALL,u=.5):s=bs.AREA_DIAMETER_LARGE;const l=r+n*a;Math.abs(l)>=s&&(n>0?r=r-(l-s):r=r+(-s-l),n=-n,this._animDirectionIndex[e]=n);const c=(s-Math.abs(r))*o;let h=n*Math.sin(Math.abs(r/4))*c;return n>0?h=h-c:h=h+c,r=r+n*a*u,this._animPhaseIndex[e]=r,Math.trunc(h)==0&&(this._animFactorIndex[e]=this.getRandomAmplitudeFactor()),new st(r,h)}initItems(t){let e;t===32?e=bs.AREA_DIAMETER_SMALL:e=bs.AREA_DIAMETER_LARGE,this._animPhaseIndex=[],this._animPhaseIndex.push(Math.random()*e*1.5),this._animPhaseIndex.push(Math.random()*e*1.5),this._animDirectionIndex=[],this._animDirectionIndex.push(1),this._animDirectionIndex.push(-1),this._animSpeedIndex=[],this._animSpeedIndex.push(bs.ANIM_SPEED_FAST),this._animSpeedIndex.push(bs.ANIM_SPEED_SLOW),this._animFactorIndex=[],this._animFactorIndex.push(this.getRandomAmplitudeFactor()),this._animFactorIndex.push(this.getRandomAmplitudeFactor())}getLayerXOffset(t,e,s){return(s===2||s===3)&&this._animOffsetIndex.length==2?this._animOffsetIndex[s-2].x:super.getLayerXOffset(t,e,s)}getLayerYOffset(t,e,s){return(s===2||s===3)&&this._animOffsetIndex.length==2?this._animOffsetIndex[s-2].y:super.getLayerYOffset(t,e,s)}getRandomAmplitudeFactor(){return Math.random()*30/100+.15}};bs.UPDATE_INTERVAL=2,bs.AREA_DIAMETER_SMALL=15,bs.AREA_DIAMETER_LARGE=31,bs.ANIM_SPEED_FAST=2,bs.ANIM_SPEED_SLOW=1;let _g=bs;const om=class om{constructor(t,e,s,r,n,a){this._name=t,this._index=e,this._radius=s,this._arcSpeed=r*Math.PI*2/360,this._arcOffset=n*Math.PI*2/360,this._height=a,this._position=0,this._positionVector=new v(0,0,0),this._children=[]}dispose(){for(;this._children.length>0;)this._children.shift().dispose()}update(t,e,s){this._position=this._position+this._arcSpeed/om.SYSTEM_TEMPO,t[this._index]=this.getPositionVector(e,s);for(const r of this._children)r.update(t,this._positionVector,s)}getPositionVector(t,e){const s=this._radius*Math.cos(this._position+this._arcOffset),r=this._radius*Math.sin(this._position+this._arcOffset);return this._positionVector.x=(s-r)*(e/2),this._positionVector.y=(r+s)*(e/2)*.5-this._height*(e/2),this._positionVector.z=-Math.trunc(4*(s+r)-.7),t&&this._positionVector.add(t),this._positionVector}addChild(t){this._children.indexOf(t)>=0||this._children.push(t)}hasChild(t){return!!this.getChild(t)}getChild(t){for(const e of this._children){if(e.name===t)return e;if(e.hasChild(t))return e.getChild(t)}return null}get name(){return this._name}};om.SYSTEM_TEMPO=30;let dg=om;class cX extends ge{constructor(){super(),this._offsetArray=[],this._rootPosition=new v}dispose(){if(this._planetIndex)for(;this._planetIndex.length>0;)this._planetIndex.shift().dispose();this._planetIndex=null,this._planetNameIndex=null}updateAnimation(t){if(!this._planetIndex&&this.spriteCount>0&&!this.processPlanets())return 0;if(this._planetIndex){for(const e of this._planetIndex)e.update(this._offsetArray,this._rootPosition,t);return super.updateAnimation(t)}return 0}getLayerXOffset(t,e,s){return this._offsetArray[s]?this._offsetArray[s].x:super.getLayerXOffset(t,e,s)}getLayerYOffset(t,e,s){return this._offsetArray[s]?this._offsetArray[s].y:super.getLayerYOffset(t,e,s)}getLayerZOffset(t,e,s){return this._offsetArray[s]?this._offsetArray[s].z:super.getLayerZOffset(t,e,s)}processPlanets(){if(!this.object||!this.object.model)return;const t=this.object.model.getValue(I.FURNITURE_PLANETSYSTEM_DATA);if(!t)return!1;this._planetIndex=[],this._planetNameIndex=[];for(const e of t)this.getSprite(e.id)&&this.addPlanet(e.name,e.id,e.parent,e.radius||0,e.arcSpeed||0,e.arcOffset||0,e.height||0);return!0}addPlanet(t,e,s,r,n,a,o){if(!this._planetIndex)return;const u=new dg(t,e,r,n,a,o),l=this.getPlanet(s);l?l.addChild(u):(this._planetIndex.push(u),this._planetNameIndex.push(t))}getPlanet(t){for(const e of this._planetIndex){if(e.name===t)return e;if(e.hasChild(t))return e.getChild(t)}return null}}class _X extends ge{}const Sr=class Sr extends ge{constructor(){super(),this._stateQueue=[],this._animationCounter=-1}setAnimation(t){return t===Sr.ANIMATION_ID_ROLL_ONCE&&(this._stateQueue=[],this._stateQueue.push(Sr.ANIMATION_ID_NORMAL),this._animationCounter=Sr.ANIMATION_DURATION),super.setAnimation(t)}updateAnimation(t){return this._animationCounter>0&&this._animationCounter--,this._animationCounter||this._stateQueue.length&&super.setAnimation(this._stateQueue.shift()),super.updateAnimation(t)}usesAnimationResetting(){return!0}};Sr.ANIMATION_ID_ROLL=3,Sr.ANIMATION_ID_ROLL_ONCE=2,Sr.ANIMATION_ID_NORMAL=1,Sr.ANIMATION_DURATION=15;let fg=Sr;class dX extends ge{usesAnimationResetting(){return!0}}class fX extends fu{imageReady(t,e){super.imageReady(t,e),t&&this.setImageOffset(t.width,t.height)}setImageOffset(t,e){const s=new v0;s.setDirection(1,0,-e),s.setDirection(3,0,0),s.setDirection(5,-t,0),s.setDirection(7,-t,-e),s.setDirection(4,-t/2,-e/2),this._imageOffset=s}getLayerXOffset(t,e,s){if(this._imageOffset){const r=this._imageOffset.getXOffset(e,0);if(r!==void 0)return r+this._offsetX}return super.getLayerXOffset(t,e,s)+this._offsetX}getLayerYOffset(t,e,s){if(this._imageOffset){const r=this._imageOffset.getYOffset(e,0);if(r!==void 0)return r+this._offsetY}return super.getLayerYOffset(t,e,s)+this._offsetY}getLayerZOffset(t,e,s){return super.getLayerZOffset(t,e,s)+-this._offsetZ}getLayerIgnoreMouse(t,e,s){return!0}}const Hi=class Hi extends ge{getFrameNumber(t,e){const s=this.getLayerTag(t,this.direction,e),r=this.object.getState(0);switch(s){case Hi.ONES_SPRITE:return Math.floor(r%10);case Hi.TENS_SPRITE:return Math.floor(r/10%10);case Hi.HUNDREDS_SPRITE:return Math.floor(r/100%10);case Hi.THOUSANDS_SPRITE:return Math.floor(r/1e3%10);default:return super.getFrameNumber(t,e)}}};Hi.ONES_SPRITE="ones_sprite",Hi.TENS_SPRITE="tens_sprite",Hi.HUNDREDS_SPRITE="hundreds_sprite",Hi.THOUSANDS_SPRITE="thousands_sprite";let gg=Hi;class gX extends ge{constructor(){super(...arguments),this._internalFrameIncreaseCounter=0}updateAnimations(t){return this._internalFrameIncreaseCounter=this._internalFrameIncreaseCounter+this.object.model.getValue(I.FURNITURE_SOUNDBLOCK_RELATIVE_ANIMATION_SPEED),this._frameIncrease=this._internalFrameIncreaseCounter,this._internalFrameIncreaseCounter=this._internalFrameIncreaseCounter-this._frameIncrease,super.updateAnimations(t)}}class pX extends Ai{getLayerColor(t,e,s){return this._data?this._data.getLayerColor(t,e,s):bn.DEFAULT_COLOR}}const je=class je extends ge{constructor(){super(),this._stateQueue=[],this._running=!1,super.setAnimation(je.ANIMATION_ID_OFF)}setAnimation(t){if(t===0&&!this._running){this._running=!0,this._stateQueue=[],this._stateQueue.push(je.ANIMATION_ID_START_ROLL),this._stateQueue.push(je.ANIMATION_ID_ROLL);return}if(t>0&&t<=je.ANIMATION_ID_OFFSET_SLOW2){if(this._running){this._running=!1,this._stateQueue=[],this.direction===2?(this._stateQueue.push(je.ANIMATION_ID_OFFSET_SLOW1+5),this._stateQueue.push(je.ANIMATION_ID_OFFSET_SLOW2+5)):(this._stateQueue.push(je.ANIMATION_ID_OFFSET_SLOW1+t),this._stateQueue.push(je.ANIMATION_ID_OFFSET_SLOW2+t)),this._stateQueue.push(je.ANIMATION_ID_OFF);return}super.setAnimation(je.ANIMATION_ID_OFF)}}updateAnimation(t){return this.getLastFramePlayed(11)&&this._stateQueue.length&&super.setAnimation(this._stateQueue.shift()),super.updateAnimation(t)}};je.ANIMATION_ID_OFFSET_SLOW1=20,je.ANIMATION_ID_OFFSET_SLOW2=10,je.ANIMATION_ID_START_ROLL=31,je.ANIMATION_ID_ROLL=32,je.ANIMATION_ID_OFF=30;let pg=je;const Ns=class Ns extends ge{updateObject(t,e){return super.updateObject(t,e),!0}getFrameNumber(t,e){const s=this.object.model.getValue(I.FURNITURE_VOTE_COUNTER_COUNT);switch(this.getLayerTag(t,this.direction,e)){case Ns.ONES_SPRITE:return s%10;case Ns.TENS_SPRITE:return s/10%10;case Ns.HUNDREDS_SPRITE:return s/100%10;default:return super.getFrameNumber(t,e)}}getLayerAlpha(t,e,s){if(this.object.model.getValue(I.FURNITURE_VOTE_COUNTER_COUNT)===Ns.HIDE_COUNTER_SCORE)switch(this.getLayerTag(t,e,s)){case Ns.ONES_SPRITE:case Ns.TENS_SPRITE:case Ns.HUNDREDS_SPRITE:return 0}return super.getLayerAlpha(t,e,s)}};Ns.ONES_SPRITE="ones_sprite",Ns.TENS_SPRITE="tens_sprite",Ns.HUNDREDS_SPRITE="hundreds_sprite",Ns.HIDE_COUNTER_SCORE=-1;let mg=Ns;const rs=class rs extends ge{getFrameNumber(t,e){const s=this.object.model.getValue(I.FURNITURE_VOTE_MAJORITY_RESULT);switch(this.getLayerTag(t,this.direction,e)){case rs.ONES_SPRITE:return s%10;case rs.TENS_SPRITE:return s/10%10;case rs.HUNDREDS_SPRITE:return s/100%10;default:return super.getFrameNumber(t,e)}}getLayerAlpha(t,e,s){const r=this.object.model.getValue(I.FURNITURE_VOTE_MAJORITY_RESULT);if(rs.HIDE_RESULTS_STATES.indexOf(this.object.getState(0))!==-1||r===rs.HIDE_RESULTS_VALUE)switch(this.getLayerTag(t,e,s)){case rs.ONES_SPRITE:case rs.TENS_SPRITE:case rs.HUNDREDS_SPRITE:return 0}return super.getLayerAlpha(t,e,s)}};rs.ONES_SPRITE="ones_sprite",rs.TENS_SPRITE="tens_sprite",rs.HUNDREDS_SPRITE="hundreds_sprite",rs.HIDE_RESULTS_STATES=[-1,1],rs.HIDE_RESULTS_VALUE=-1;let Eg=rs;class mX extends ge{}const um=class um extends x0{getThumbnailURL(){if(!this.object)return null;const t=this.object.model.getValue(I.FURNITURE_DATA);return t&&t[um.THUMBNAIL_URL]||null}};um.THUMBNAIL_URL="THUMBNAIL_URL";let Tg=um;class EX{constructor(t){this._sprite=new wt(t),this._texture=null,this._amount=-1,this._alpha=0}renderBubble(t){if(!this._sprite||this._amount===t)return null;const e=new $t;e.addChild(this._sprite);const s=new uQ({text:"+"+t,style:new vn({fontFamily:"Arial",fontSize:9,fill:16777215,align:"center"})});return s.anchor.x=.5,s.x=this._sprite.width/2,s.y=19,e.addChild(s),this._texture?ue.writeToTexture(e,this._texture,!0):this._texture=ue.generateTexture(e),this._texture}get amount(){return this._amount}set amount(t){this._amount=t}get alpha(){return this._alpha}set alpha(t){this._alpha=t}}class N0 extends eE{constructor(){super(),this._isAllowedToTurnHead=!0}createSizeData(t,e,s){return t>1?new mn(e,s):new jh(e,s)}defineVisualizations(t){return this._isAllowedToTurnHead=!0,super.defineVisualizations(t)}processVisualElement(t,e,s){if(!t||!e||!s)return!1;switch(e){case"postures":if(!(t instanceof mn)||!t.processPostures(s))return!1;break;case"gestures":if(!(t instanceof mn)||!t.processGestures(s))return!1;break;default:if(!super.processVisualElement(t,e,s))return!1;break}return!0}postureToAnimation(t,e){const s=this.getSizeData(t);return s?s.postureToAnimation(e):mn.DEFAULT}getGestureDisabled(t,e){const s=this.getSizeData(t);return s?s.getGestureDisabled(e):!1}gestureToAnimation(t,e){const s=this.getSizeData(t);return s?s.gestureToAnimation(e):mn.DEFAULT}animationToPosture(t,e,s){const r=this.getSizeData(t);return r?r.animationToPosture(e,s):null}animationToGesture(t,e){const s=this.getSizeData(t);return s?s.animationToGesture(e):null}getGestureForAnimationId(t,e){const s=this.getSizeData(t);return s?s.getGestureForAnimationId(e):null}totalPostures(t){const e=this.getSizeData(t);return e?e.totalPostures:0}totalGestures(t){const e=this.getSizeData(t);return e?e.totalGestures:0}get isAllowedToTurnHead(){return this._isAllowedToTurnHead}}const ee=class ee extends ge{constructor(){for(super(),this._posture="",this._gesture="",this._isSleeping=!1,this._headDirection=-1,this._headOnly=!1,this._nonHeadSprites=[],this._headSprites=[],this._saddleSprites=[],this._animationOver=!1,this._paletteIndex=-1,this._paletteName="",this._customLayerIds=[],this._customPartIds=[],this._customPaletteIds=[],this._isRiding=!1,this._color=16777215,this._experience=0,this._experienceTimestamp=0,this._experienceData=null,this._previousAnimationDirection=-1,this._animationStates=[];this._animationStates.length<ee.ANIMATION_INDEX_COUNT;)this._animationStates.push(new C0)}initialize(t){if(!(t instanceof N0))return!1;const e=Rt().getTexture(ee.PET_EXPERIENCE_BUBBLE);return e&&(this._experienceData=new EX(e)),super.initialize(t)}dispose(){if(super.dispose(),this._animationStates){for(;this._animationStates.length;){const t=this._animationStates[0];t&&t.dispose(),this._animationStates.pop()}this._animationStates=null}}getAnimationId(t){return t.animationId}update(t,e,s,r){super.update(t,e,s,r),this.updateExperienceBubble(e)}updateExperienceBubble(t){if(this._experienceData&&(this._experienceData.alpha=0,this._experienceTimestamp)){const e=t-this._experienceTimestamp;e<ee.EXPERIENCE_BUBBLE_VISIBLE_IN_MS?this._experienceData.alpha=Math.sin(e/ee.EXPERIENCE_BUBBLE_VISIBLE_IN_MS*Math.PI)*255:this._experienceTimestamp=0;const s=this.getSprite(this.totalSprites-1);if(s){if(this._experienceData.alpha>0){const r=this._experienceData.renderBubble(this._experience);if(r){s.texture=r,s.offsetX=-20,s.offsetY=-80,s.alpha=this._experienceData.alpha,s.visible=!0,s.relativeDepth=-.2;return}}s.texture=null,s.visible=!1}}}updateModel(t){const e=this.object&&this.object.model;if(!e||this.updateModelCounter===e.updateCounter)return!1;const s=e.getValue(I.FIGURE_POSTURE),r=e.getValue(I.FIGURE_GESTURE);this.setPostureAndGesture(s,r);let n=e.getValue(I.FURNITURE_ALPHA_MULTIPLIER)||null;(n===null||isNaN(n))&&(n=1),this._alphaMultiplier!==n&&(this._alphaMultiplier=n,this._alphaChanged=!0),this._isSleeping=e.getValue(I.FIGURE_SLEEP)>0;const a=e.getValue(I.HEAD_DIRECTION);!isNaN(a)&&this.data.isAllowedToTurnHead?this._headDirection=a:this._headDirection=this.object.getDirection().x,this._experience=e.getValue(I.FIGURE_GAINED_EXPERIENCE),this._experienceTimestamp=e.getValue(I.FIGURE_EXPERIENCE_TIMESTAMP);const o=e.getValue(I.PET_PALETTE_INDEX),u=e.getValue(I.PET_CUSTOM_LAYER_IDS),l=e.getValue(I.PET_CUSTOM_PARTS_IDS),c=e.getValue(I.PET_CUSTOM_PALETTE_IDS),h=e.getValue(I.PET_IS_RIDING),_=e.getValue(I.PET_HEAD_ONLY),d=e.getValue(I.PET_COLOR);return o!==this._paletteIndex&&(this._paletteIndex=o,this._paletteName=this._paletteIndex.toString()),this._customLayerIds=u||[],this._customPartIds=l||[],this._customPaletteIds=c||[],this._isRiding=!isNaN(h)&&h>0,this._headOnly=!isNaN(_)&&_>0,!isNaN(d)&&this._color!==d&&(this._color=d),this.updateModelCounter=e.updateCounter,!0}updateAnimation(t){if(this.object){const e=this.object.getDirection().x;e!==this._previousAnimationDirection&&(this._previousAnimationDirection=e,this.resetAllAnimationFrames())}return super.updateAnimation(t)}setPostureAndGesture(t,e){this.data&&(t!==this._posture&&(this._posture=t,this.setAnimationForIndex(ee.POSTURE_ANIMATION_INDEX,this.data.postureToAnimation(this._scale,t))),this.data.getGestureDisabled(this._scale,t)&&(e=null),e!==this._gesture&&(this._gesture=e,this.setAnimationForIndex(ee.GESTURE_ANIMATION_INDEX,this.data.gestureToAnimation(this._scale,e))))}getAnimationStateData(t){return t>=0&&t<this._animationStates.length?this._animationStates[t]:null}setAnimationForIndex(t,e){const s=this.getAnimationStateData(t);s&&this.setSubAnimation(s,e)&&(this._animationOver=!1)}resetAllAnimationFrames(){this._animationOver=!1;let t=this._animationStates.length-1;for(;t>=0;){const e=this._animationStates[t];e&&e.setLayerCount(this.animatedLayerCount),t--}}updateAnimations(t){if(this._animationOver)return 0;let e=!0,s=0,r=0;for(;r<this._animationStates.length;){const n=this._animationStates[r];if(n&&!n.animationOver){const a=this.updateFramesForAnimation(n,t);s=s|a,n.animationOver?(Ce.isTransitionFromAnimation(n.animationId)||Ce.isTransitionToAnimation(n.animationId))&&(this.setAnimationForIndex(r,n.animationAfterTransitionId),e=!1):e=!1}r++}return this._animationOver=e,s}getSpriteAssetName(t,e){if(this._headOnly&&this.isNonHeadSprite(e)||this._isRiding&&this._parser3(e))return null;const s=this.totalSprites;if(e<s-ee.ADDITIONAL_SPRITE_COUNT){const r=this.getValidSize(t);if(e<s-(1+ee.ADDITIONAL_SPRITE_COUNT)){if(e>=Ii.LAYER_LETTERS.length)return null;const n=Ii.LAYER_LETTERS[e];return r===1?this._type+"_icon_"+n:this._type+"_"+r+"_"+n+"_"+this.getDirection(t,e)+"_"+this.getFrameNumber(r,e)}return this._type+"_"+r+"_sd_"+this.getDirection(t,e)+"_0"}return null}getLayerColor(t,e,s){return e<this.totalSprites-ee.ADDITIONAL_SPRITE_COUNT?this._color:16777215}getLayerXOffset(t,e,s){let r=super.getLayerXOffset(t,e,s),n=this._animationStates.length-1;for(;n>=0;){const a=this._animationStates[n];if(a){const o=a.getFrame(s);o&&(r+=o.x)}n--}return r}getLayerYOffset(t,e,s){let r=super.getLayerYOffset(t,e,s),n=this._animationStates.length-1;for(;n>=0;){const a=this._animationStates[n];if(a){const o=a.getFrame(s);o&&(r+=o.y)}n--}return r}getLayerZOffset(t,e,s){return this.data?this.data.getLayerZOffset(t,this.getDirection(t,s),s):Vt.DEFAULT_ZOFFSET}getDirection(t,e){return this.isHeadSprite(e)?this.data.getValidDirection(t,this._headDirection):this._direction}getFrameNumber(t,e){let s=this._animationStates.length-1;for(;s>=0;){const r=this._animationStates[s];if(r){const n=r.getFrame(e);if(n)return n.id}s--}return super.getFrameNumber(t,e)}isHeadSprite(t){if(this._headSprites[t]===void 0){const e=this.data.getLayerTag(this._scale,Lr.USE_DEFAULT_DIRECTION,t)===ee.HEAD,s=this.data.getLayerTag(this._scale,Lr.USE_DEFAULT_DIRECTION,t)===ee.HAIR;e||s?this._headSprites[t]=!0:this._headSprites[t]=!1}return this._headSprites[t]}isNonHeadSprite(t){if(this._nonHeadSprites[t]===void 0)if(t<this.totalSprites-(1+ee.ADDITIONAL_SPRITE_COUNT)){const e=this.data.getLayerTag(this._scale,Lr.USE_DEFAULT_DIRECTION,t);e&&e.length>0&&e!==ee.HEAD&&e!==ee.HAIR?this._nonHeadSprites[t]=!0:this._nonHeadSprites[t]=!1}else this._nonHeadSprites[t]=!0;return this._nonHeadSprites[t]}_parser3(t){return this._saddleSprites[t]===void 0&&(this.data.getLayerTag(this._scale,Lr.USE_DEFAULT_DIRECTION,t)===ee.SADDLE?this._saddleSprites[t]=!0:this._saddleSprites[t]=!1),this._saddleSprites[t]}getAsset(t,e=-1){if(!this.asset)return null;const s=this._customLayerIds.indexOf(e);let r=this._paletteName,n=-1,a=-1;return s>-1&&(n=this._customPartIds[s],a=this._customPaletteIds[s],r=a>-1?a.toString():this._paletteName),!isNaN(n)&&n>-1&&(t=t+"_"+n),this.asset.getAssetWithPalette(t,r)}getAdditionalLayerCount(){return super.getAdditionalLayerCount()+ee.ADDITIONAL_SPRITE_COUNT}setLayerCount(t){super.setLayerCount(t),this._headSprites=[]}getPostureForAsset(t,e){const s=e.split("_");let r=s.length,n=0;for(;n<s.length;){if(s[n]==="64"||s[n]==="32"){r=n+3;break}n++}let a=null;if(r<s.length){let o=s[r];o=o.split("@")[0],a=this.data.animationToPosture(t,parseInt(o)/100,!1),a||(a=this.data.getGestureForAnimationId(t,parseInt(o)/100))}return a}get data(){return this._data}};ee.TYPE=j.PET_ANIMATED,ee.HEAD="head",ee.SADDLE="saddle",ee.HAIR="hair",ee.ADDITIONAL_SPRITE_COUNT=1,ee.EXPERIENCE_BUBBLE_VISIBLE_IN_MS=1e3,ee.PET_EXPERIENCE_BUBBLE="avatar_addition_pet_experience_bubble",ee.POSTURE_ANIMATION_INDEX=0,ee.GESTURE_ANIMATION_INDEX=1,ee.ANIMATION_INDEX_COUNT=2;let Ig=ee;class Zrt{constructor(t=null,e=0,s=!1){this._assetNames=[],this._maskAssetNames=[],this._maskAssetLocations=[],this._maskAssetFlipHs=[],this._maskAssetFlipVs=[],t!=null&&(this._maskAssetNames=t._maskAssetNames,this._maskAssetLocations=t._maskAssetLocations,this._maskAssetFlipHs=t._maskAssetFlipHs,this._maskAssetFlipVs=t._maskAssetFlipVs),this._color=e,this._alignBottom=s}addMask(t,e,s,r){this._maskAssetNames.push(t),this._maskAssetLocations.push(e),this._maskAssetFlipHs.push(s),this._maskAssetFlipVs.push(r)}addAssetColumn(t){this._assetNames.push(t)}set z(t){this._z=t}get z(){return this._z}set cornerPoints(t){this._points=t}get cornerPoints(){return this._points}get color(){return this._color}get maskAssetNames(){return this._maskAssetNames}get maskAssetLocations(){return this._maskAssetLocations}get maskAssetFlipHs(){return this._maskAssetFlipHs}get maskAssetFlipVs(){return this._maskAssetFlipVs}isBottomAligned(){return this._alignBottom}get assetNameColumns(){return this._assetNames}}class TX{constructor(t,e,s){this._type=t,this._leftSideLoc=e,this._rightSideLoc=s}get type(){return this._type}get leftSideLoc(){return this._leftSideLoc}get rightSideLoc(){return this._rightSideLoc}}class IX{constructor(t,e,s,r){this._leftSideLoc=t,this._rightSideLoc=e,this._leftSideLength=s,this._rightSideLength=r}get leftSideLoc(){return this._leftSideLoc}get rightSideLoc(){return this._rightSideLoc}get leftSideLength(){return this._leftSideLength}get rightSideLength(){return this._rightSideLength}}class Jrt{constructor(t,e){this._texture=t,this._timeStamp=e}dispose(){this._texture=null}get texture(){return this._texture}get timeStamp(){return this._timeStamp}}const ve=class ve{constructor(){this._seed=1,this._modulus=16777216,this._multiplier=69069,this._increment=5}static setSeed(t=1){ve._randomizer||(ve._randomizer=new ve),ve._randomizer.seed=t}static setModulus(t=16777216){ve._randomizer||(ve._randomizer=new ve),ve._randomizer.modulus=t}static getValues(t,e,s){return ve._randomizer||(ve._randomizer=new ve),ve._randomizer.getRandomValues(t,e,s)}static getArray(t,e){return ve._randomizer||(ve._randomizer=new ve),ve._randomizer.getRandomArray(t,e)}set seed(t){this._seed=t}set modulus(t){t<1&&(t=1),this._modulus=t}dispose(){}getRandomValues(t,e,s){const r=[];let n=0;for(;n<t;)r.push(this.iterateScaled(e,s-e)),n++;return r}getRandomArray(t,e){if(t>e||e>1e3)return null;const s=[];let r=0;for(;r<=e;)s.push(r),r++;const n=[];let a=0;for(;a<t;){const o=this.iterateScaled(0,s.length-1);n.push(s[o]),s.splice(o,1),a++}return n}iterate(){let t=lS(Math.trunc(this._multiplier*this._seed)+this._increment);return t<0&&(t=-t),t=t%this._modulus,this._seed=t,t}iterateScaled(t,e){let s=this.iterate();return e<1?t:(s=Math.trunc(t+s/this._modulus*e),s)}};ve.DEFAULT_SEED=1,ve.DEFAULT_MODULUS=16777216,ve._randomizer=null;let Sg=ve;const se=class se{constructor(t,e,s,r,n,a,o,u,l=0,c=0,h=0,_=0){if(this._disposed=!1,this._origin=new v,this._location=new v,this._leftSide=new v,this._rightSide=new v,this._normal=null,this._secondaryNormals=[],this._isVisible=!1,this._offset=new st,this._relativeDepth=0,this._color=0,this._maskManager=null,this._id=null,this._cornerA=new v,this._cornerB=new v,this._cornerC=new v,this._cornerD=new v,this._width=0,this._height=0,this._hasTexture=!0,this._canBeVisible=!0,this._geometryUpdateId=-1,this._extraDepth=0,this._isHighlighter=!1,this._bitmapMasks=[],this._rectangleMasks=[],this._maskChanged=!1,this._bitmapMasksOld=[],this._rectangleMasksOld=[],this._planeSprite=null,this._planeTexture=null,this._maskFilter=null,this._randomSeed=u,this._origin.assign(t),this._location.assign(e),this._leftSide.assign(s),this._rightSide.assign(r),this._normal=v.crossProduct(this._leftSide,this._rightSide),this._normal.length>0&&this._normal.multiply(1/this._normal.length),o!=null)for(const d of o){if(!d)continue;const f=new v;f.assign(d),this._secondaryNormals.push(f)}this._type=n,this._textureOffsetX=l,this._textureOffsetY=c,this._textureMaxX=h,this._textureMaxY=_,this._useMask=a,this._uniqueId=++se._uniqueIdCounter}dispose(){this._location=null,this._origin=null,this._leftSide=null,this._rightSide=null,this._normal=null,this._cornerA=null,this._cornerB=null,this._cornerC=null,this._cornerD=null,this._planeSprite&&this._planeSprite.destroy(),this._planeTexture&&(wr().putTexture(this._planeTexture),this._planeTexture=null),this._disposed=!0}update(t,e,s=!1){if(!t||this._disposed||(this._geometryUpdateId!==t.updateId&&(this._geometryUpdateId=t.updateId,s=!0),(!s||!this._canBeVisible)&&!this.visible))return!1;if(s){let r=0;if(r=v.cosAngle(t.directionAxis,this.normal),r>-.001)return this._isVisible?(this._isVisible=!1,!0):!1;let n=0;for(;n<this._secondaryNormals.length;){if(r=v.cosAngle(t.directionAxis,this._secondaryNormals[n]),r>-.001)return this._isVisible?(this._isVisible=!1,!0):!1;n++}this.updateCorners(t);let a=Math.max(this._cornerA.z,this._cornerB.z,this._cornerC.z,this._cornerD.z)-t.getScreenPosition(this._origin).z;switch(this._type){case se.TYPE_FLOOR:a=a-(this._location.z+Math.min(0,this._leftSide.z,this._rightSide.z))*8;break;case se.TYPE_LANDSCAPE:a=a+.02;break}this._relativeDepth=a,this._isVisible=!0,Sg.setSeed(this._randomSeed);const o=se.PLANE_GEOMETRY[t.scale];let u=this._leftSide.length*t.scale,l=this._rightSide.length*t.scale;t.getCoordinatePosition(this._normal);const h=((d,f)=>{var x,U,k,gt,X,Y,lt,Gt,V,Pt;const p=f===se.TYPE_FLOOR?"floorData":f===se.TYPE_WALL?"wallData":"landscapeData",g=Rt().getCollection("room"),m=(U=(x=g==null?void 0:g.data)==null?void 0:x.roomVisualization)==null?void 0:U[p],O=(k=m==null?void 0:m.planes)==null?void 0:k.find(K=>K.id===d),y=((gt=p==="landscapeData"?O==null?void 0:O.animatedVisualization:O==null?void 0:O.visualizations)==null?void 0:gt.find(K=>K.size===o.scale))??null,C=(X=y==null?void 0:y.allLayers)==null?void 0:X[0],P=C==null?void 0:C.materialId,L=C==null?void 0:C.color,N=(V=(Gt=(lt=(Y=m==null?void 0:m.textures)==null?void 0:Y.find(K=>K.id===P))==null?void 0:lt.bitmaps)==null?void 0:Gt[0])==null?void 0:V.assetName;return{texture:(Pt=Rt().getAsset(N))==null?void 0:Pt.texture,color:L}})(this._id,this._type),_=this._hasTexture?h.texture??W.WHITE:W.WHITE;switch(this._type){case se.TYPE_FLOOR:{const d=o.getScreenPoint(new v(0,0,0)),f=o.getScreenPoint(new v(0,l/o.scale,0)),p=o.getScreenPoint(new v(u/o.scale,0,0));let g=0,m=0;if(d&&f&&p){u=Math.round(Math.abs(d.x-p.x)),l=Math.round(Math.abs(d.x-f.x));const O=d.x-o.getScreenPoint(new v(1,0,0)).x;g=this._textureOffsetX*Math.trunc(Math.abs(O)),m=this._textureOffsetY*Math.trunc(Math.abs(O))}if(g!==0||m!==0){for(;g<0;)g+=_.width;for(;m<0;)m+=_.height}this._planeSprite=new Ac({texture:_,width:u,height:l,tint:h.color,tilePosition:{x:g%_.width+this._textureOffsetX*_.width,y:m%_.height+this._textureOffsetY*_.height}});break}case se.TYPE_WALL:{const d=o.getScreenPoint(new v(0,0,0)),f=o.getScreenPoint(new v(0,0,l/o.scale)),p=o.getScreenPoint(new v(0,u/o.scale,0));d&&f&&p&&(u=Math.round(Math.abs(d.x-p.x)),l=Math.round(Math.abs(d.y-f.y))),this._planeSprite=new Ac({texture:_,width:u,height:l,tint:h.color,tilePosition:{x:this._textureOffsetX*_.width,y:this._textureOffsetY*_.height}});break}case se.TYPE_LANDSCAPE:{const d=o.getScreenPoint(new v(0,0,0)),f=o.getScreenPoint(new v(0,0,1)),p=o.getScreenPoint(new v(0,1,0));d&&f&&p&&(u=Math.round(Math.abs((d.x-p.x)*u/o.scale)),l=Math.round(Math.abs((d.y-f.y)*l/o.scale))),Math.trunc(this._textureMaxX*Math.abs(d.x-p.x)),Math.trunc(this._textureMaxY*Math.abs(d.y-f.y));const g=Math.trunc(this._textureOffsetX*Math.abs(d.x-p.x)),m=Math.trunc(this._textureOffsetY*Math.abs(d.y-f.y));this._planeSprite=new Ac({texture:_,width:u,height:l,tilePosition:{x:g,y:m},tint:se.LANDSCAPE_COLOR});break}default:this._planeSprite=new Ac({texture:W.WHITE,width:u,height:l})}this._planeSprite.allowChildren=!0}return(s||this._maskChanged)&&(this.updateMask(this._planeSprite,t),s=!0),this._planeTexture&&(this._planeTexture.width!==this._width||this._planeTexture.height!==this._height)&&(wr().putTexture(this._planeTexture),this._planeTexture=null),this._planeTexture||(this._planeTexture=wr().getTexture(this._width,this._height)),this._planeTexture.source.label=`room_plane_${this._uniqueId.toString()}`,s&&Mn().render({target:this._planeTexture,container:this._planeSprite,transform:this.getMatrixForDimensions(this._planeSprite.width,this._planeSprite.height),clear:!0}),!0}updateCorners(t){this._cornerA.assign(t.getScreenPosition(this._location)),this._cornerB.assign(t.getScreenPosition(v.sum(this._location,this._rightSide))),this._cornerC.assign(t.getScreenPosition(v.sum(v.sum(this._location,this._leftSide),this._rightSide))),this._cornerD.assign(t.getScreenPosition(v.sum(this._location,this._leftSide))),this._offset=t.getScreenPoint(this._origin),this._cornerA.x=Math.round(this._cornerA.x),this._cornerA.y=Math.round(this._cornerA.y),this._cornerB.x=Math.round(this._cornerB.x),this._cornerB.y=Math.round(this._cornerB.y),this._cornerC.x=Math.round(this._cornerC.x),this._cornerC.y=Math.round(this._cornerC.y),this._cornerD.x=Math.round(this._cornerD.x),this._cornerD.y=Math.round(this._cornerD.y),this._offset.x=Math.round(this._offset.x),this._offset.y=Math.round(this._offset.y);const e=Math.min(this._cornerA.x,this._cornerB.x,this._cornerC.x,this._cornerD.x),s=Math.max(this._cornerA.x,this._cornerB.x,this._cornerC.x,this._cornerD.x)-e,r=Math.min(this._cornerA.y,this._cornerB.y,this._cornerC.y,this._cornerD.y),n=Math.max(this._cornerA.y,this._cornerB.y,this._cornerC.y,this._cornerD.y)-r;this._offset.x=this._offset.x-e,this._cornerA.x=this._cornerA.x-e,this._cornerB.x=this._cornerB.x-e,this._cornerC.x=this._cornerC.x-e,this._cornerD.x=this._cornerD.x-e,this._offset.y=this._offset.y-r,this._cornerA.y=this._cornerA.y-r,this._cornerB.y=this._cornerB.y-r,this._cornerC.y=this._cornerC.y-r,this._cornerD.y=this._cornerD.y-r,this._width=s,this._height=n}getMatrixForDimensions(t,e){let s=this._cornerD.x-this._cornerC.x,r=this._cornerD.y-this._cornerC.y,n=this._cornerB.x-this._cornerC.x,a=this._cornerB.y-this._cornerC.y;(this._type===se.TYPE_WALL||this._type===se.TYPE_LANDSCAPE)&&(Math.abs(n-t)<=1&&(n=t),Math.abs(a-t)<=1&&(a=t),Math.abs(s-e)<=1&&(s=e),Math.abs(r-e)<=1&&(r=e));const o=n/t,u=a/t,l=s/e,c=r/e,h=new ot(o,u,l,c);return h.translate(this._cornerC.x,this._cornerC.y),h}resetBitmapMasks(){this._disposed||!this._useMask||!this._bitmapMasks.length||(this._maskChanged=!0,this._bitmapMasks=[])}addBitmapMask(t,e,s){if(!this._useMask)return!1;for(const n of this._bitmapMasks)if(n&&n.type===t&&n.leftSideLoc===e&&n.rightSideLoc===s)return!1;const r=new TX(t,e,s);return this._bitmapMasks.push(r),this._maskChanged=!0,!0}resetRectangleMasks(){!this._useMask||!this._rectangleMasks.length||(this._maskChanged=!0,this._rectangleMasks=[])}addRectangleMask(t,e,s,r){if(this._useMask){for(const n of this._rectangleMasks)if(n&&n.leftSideLoc===t&&n.rightSideLoc===e&&n.leftSideLength===s&&n.rightSideLength===r)return!1;return this._rectangleMasks.push(new IX(t,e,s,r)),this._maskChanged=!0,!0}return!1}updateMask(t,e){var u;if((u=t.children)!=null&&u.length&&t.removeChildren(),!t||!e||!this._useMask||!this._bitmapMasks.length&&!this._rectangleMasks.length||!this._maskManager)return!1;const s=e.getCoordinatePosition(this._normal);let r=null,n=0,a=0,o=0;for(;o<this._bitmapMasks.length;){const l=this._bitmapMasks[o];l&&(r=l.type,n=t.width-t.width*l.leftSideLoc/this._leftSide.length,a=t.height-t.height*l.rightSideLoc/this._rightSide.length,this._maskManager.addMaskToContainer(t,r,e.scale,s,n,a)),o++}for(o=0;o<this._rectangleMasks.length;){const l=this._rectangleMasks[o];if(l){n=t.width-t.width*l.leftSideLoc/this._leftSide.length,a=t.height-t.height*l.rightSideLoc/this._rightSide.length;const c=t.width*l.leftSideLength/this._leftSide.length,h=t.height*l.rightSideLength/this._rightSide.length,_=new wt(W.WHITE);_.tint=0,_.width=c,_.height=h,_.position.set(Math.trunc(n-c),Math.trunc(a-h)),t.addChild(_)}o++}return this._maskChanged=!1,this._maskFilter||(this._maskFilter=new S_({})),t.filters||(t.filters=[this._maskFilter]),!0}get canBeVisible(){return this._canBeVisible}set canBeVisible(t){t!==this._canBeVisible&&(this._canBeVisible=t)}get visible(){return this._isVisible&&this._canBeVisible}get offset(){return this._offset}get relativeDepth(){return this._relativeDepth+this._extraDepth}set extraDepth(t){this._extraDepth=t}get color(){return this._color}set color(t){this._color=t}get type(){return this._type}get leftSide(){return this._leftSide}get rightSide(){return this._rightSide}get location(){return this._location}get normal(){return this._normal}set id(t){t!==this._id&&(this._id=t)}set maskManager(t){this._maskManager=t}get uniqueId(){return this._uniqueId}get planeTexture(){return this._planeTexture}set hasTexture(t){this._hasTexture=t}get isHighlighter(){return this._isHighlighter}set isHighlighter(t){this._isHighlighter=t}};se.HORIZONTAL_ANGLE_DEFAULT=45,se.VERTICAL_ANGLE_DEFAULT=30,se.PLANE_GEOMETRY={32:new Gs(32,new v(se.HORIZONTAL_ANGLE_DEFAULT,se.VERTICAL_ANGLE_DEFAULT),new v(-10,0,0)),64:new Gs(64,new v(se.HORIZONTAL_ANGLE_DEFAULT,se.VERTICAL_ANGLE_DEFAULT),new v(-10,0,0))},se.LANDSCAPE_COLOR=33520,se.TYPE_UNDEFINED=0,se.TYPE_WALL=1,se.TYPE_FLOOR=2,se.TYPE_LANDSCAPE=3,se._uniqueIdCounter=1;let Yt=se;const lm=class lm{constructor(t,e=-1,s=1,r=-1,n=1){this._normalMinX=e,this._normalMaxX=s,this._normalMinY=r,this._normalMaxY=n,this._asset=t}get asset(){return this._asset}get normalMinX(){return this._normalMinX}get normalMaxX(){return this._normalMaxX}get normalMinY(){return this._normalMinY}get normalMaxY(){return this._normalMaxY}dispose(){this._asset=null}};lm.MIN_NORMAL_COORDINATE_VALUE=-1,lm.MAX_NORMAL_COORDINATE_VALUE=1;let Rg=lm;const hm=class hm{constructor(){this._bitmaps=[]}dispose(){for(const t of this._bitmaps)t&&t.dispose();this._bitmaps=null}addBitmap(t,e=-1,s=1,r=-1,n=1){this._bitmaps.push(new Rg(t,e,s,r,n))}getAsset(t){if(!t)return null;for(const e of this._bitmaps)if(e&&t.x>=e.normalMinX&&t.x<=e.normalMaxX&&t.y>=e.normalMinY&&t.y<=e.normalMaxY)return e.asset;return null}};hm.MIN_NORMAL_COORDINATE_VALUE=-1,hm.MAX_NORMAL_COORDINATE_VALUE=1;let In=hm;class SX{constructor(){this._sizes=[],this._maskVisualizations=new Map,this._assetNames=new Map,this._lastMaskVisualization=null,this._lastSize=-1}dispose(){if(this._maskVisualizations){for(const t of this._maskVisualizations.values())t&&t.dispose();this._maskVisualizations=null}this._lastMaskVisualization=null,this._sizes=null}createMaskVisualization(t){if(this._maskVisualizations.get(t))return null;const s=new In;return this._maskVisualizations.set(t,s),this._sizes.push(t),this._sizes.sort(),s}getSizeIndex(t){let e=0,s=1;for(;s<this._sizes.length;){if(this._sizes[s]>t){this._sizes[s]-t<t-this._sizes[s-1]&&(e=s);break}e=s,s++}return e}getMaskVisualization(t){if(t===this._lastSize)return this._lastMaskVisualization;const e=this.getSizeIndex(t);return e<this._sizes.length?this._lastMaskVisualization=this._maskVisualizations.get(this._sizes[e]):this._lastMaskVisualization=null,this._lastSize=t,this._lastMaskVisualization}getGraphicAsset(t,e){const s=this.getMaskVisualization(t);return s?s.getAsset(e):null}getAssetName(t){return this._assetNames&&this._assetNames.get(t)||null}setAssetName(t,e){this._assetNames&&this._assetNames.set(t,e)}}class RX{constructor(){this._assetCollection=null,this._masks=new Map,this._data=null}get data(){return this._data}dispose(){if(this._assetCollection=null,this._data=null,this._masks&&this._masks.size){for(const t of this._masks.values())t&&t.dispose();this._masks.clear()}}initialize(t){this._data=t}initializeAssetCollection(t){this.data&&(this._assetCollection=t,this.parseMasks(this.data,t))}parseMasks(t,e){if(!(!t||!e)&&t.masks&&t.masks.length){let s=0;for(;s<t.masks.length;){const r=t.masks[s];if(r){const n=r.id;if(this._masks.get(n))continue;const o=new SX;if(r.visualizations&&r.visualizations.length){let u=0;for(;u<r.visualizations.length;){const l=r.visualizations[u];if(l){const c=l.size,h=o.createMaskVisualization(c);if(h){const _=this.parseMaskBitmaps(l.bitmaps,h,e);o.setAssetName(c,_)}}u++}}this._masks.set(n,o)}s++}}}parseMaskBitmaps(t,e,s){if(!t||!t.length)return null;let r=null;for(const n of t){if(!n)continue;const a=n.assetName,o=s.getAsset(a);if(!o)continue;let u=In.MIN_NORMAL_COORDINATE_VALUE,l=In.MAX_NORMAL_COORDINATE_VALUE,c=In.MIN_NORMAL_COORDINATE_VALUE,h=In.MAX_NORMAL_COORDINATE_VALUE;n.normalMinX!==void 0&&(u=n.normalMinX),n.normalMaxX!==void 0&&(l=n.normalMaxX),n.normalMinY!==void 0&&(c=n.normalMinY),n.normalMaxY!==void 0&&(h=n.normalMaxY),o.flipH||(r=a),e.addBitmap(o,u,l,c,h)}return r}addMaskToContainer(t,e,s,r,n,a){const o=this._masks.get(e);if(!o)return!0;const u=o.getGraphicAsset(s,r);if(!u)return!0;const l=u.texture;if(!l)return!0;const c=new st(n+u.offsetX,a+u.offsetY),h=new ot;let _=1,d=1,f=0,p=0,g=c.x+f,m=c.y+p;u.flipH&&(_=-1,f=l.width,g=c.x+f-l.width),u.flipV&&(d=-1,p=l.height,m=c.y+p-l.height),h.scale(_,d),h.translate(g,m);const O=new wt(l);return O.setFromMatrix(h),t.addChild(O),!0}writeMaskToTexture(t,e,s,r,n,a){const o=this._masks.get(e);if(!o)return!0;const u=o.getGraphicAsset(s,r);if(!u)return!0;const l=u.texture;if(!l)return!0;const c=new st(n+u.offsetX,a+u.offsetY),h=new ot;let _=1,d=1,f=0,p=0,g=c.x+f,m=c.y+p;return u.flipH&&(_=-1,f=l.width,g=c.x+f-l.width),u.flipV&&(d=-1,p=l.height,m=c.y+p-l.height),h.scale(_,d),h.translate(g,m),Mn().render({target:t,container:new wt(l),clear:!1,transform:h}),!0}getMask(t){return!this._masks||!this._masks.size?null:this._masks.get(t)||null}}class U0{constructor(){this._maskManager=new RX,this._initialized=!1}initialize(t){if(!t.roomVisualization)return!1;const e=t.roomVisualization.maskData;return e&&this._maskManager.initialize(e),!0}dispose(){this._maskManager&&(this._maskManager.dispose(),this._maskManager=null)}setGraphicAssetCollection(t){this._initialized||(this._maskManager.initializeAssetCollection(t),this._initialized=!0)}clearCache(){}get maskManager(){return this._maskManager}}const ne=class ne extends Xa{constructor(){super(),this._data=null,this._roomPlaneParser=new Ae,this._roomPlaneBitmapMaskParser=new n0,this._geometryUpdateId=-1,this._boundingRectangle=null,this._directionX=0,this._directionY=0,this._directionZ=0,this._floorThickness=1,this._wallThickness=1,this._holeUpdateTime=NaN,this._planes=[],this._visiblePlanes=[],this._visiblePlaneSpriteNumbers=[],this._roomScale=0,this._colorBackgroundOnly=!0,this._color=16777215,this._redColor=16777215,this._greenColor=16777215,this._blueColor=16777215,this._wallType=null,this._floorType=null,this._landscapeType=null,this._typeVisibility=[],this._assetUpdateCounter=0,this._maskData=null,this._isPlaneSet=!1,this._highlightAreaX=0,this._highlightAreaY=0,this._highlightAreaWidth=0,this._highlightAreaHeight=0,this._highlightFilter=null,this._highlightPlaneOffsets=[],this._typeVisibility[Yt.TYPE_UNDEFINED]=!1,this._typeVisibility[Yt.TYPE_FLOOR]=!0,this._typeVisibility[Yt.TYPE_WALL]=!0,this._typeVisibility[Yt.TYPE_LANDSCAPE]=!0}initialize(t){return t instanceof U0?(this._data=t,super.initialize(t),this._data.setGraphicAssetCollection(this.asset),!0):!1}dispose(){super.dispose(),this.clearPlanes(),this._planes=null,this._visiblePlanes=null,this._visiblePlaneSpriteNumbers=null,this._highlightPlaneOffsets=[],this._roomPlaneParser&&(this._roomPlaneParser.dispose(),this._roomPlaneParser=null),this._roomPlaneBitmapMaskParser&&(this._roomPlaneBitmapMaskParser.dispose(),this._roomPlaneBitmapMaskParser=null),this._data&&(this._data.clearCache(),this._data=null)}reset(){super.reset(),this._floorType=null,this._wallType=null,this._landscapeType=null,this._maskData=null,this._geometryUpdateId=-1,this._roomScale=0}update(t,e,s,r){if(!this.object||!t)return;const n=this.updateGeometry(t),a=this.object.model;let o=n;if(this.updateThickness(a)&&(o=!0),this.updateHole(a)&&(o=!0),this.initializeRoomPlanes(),this.updateMasks(a)&&(o=!0),this.updatePlaneTexturesAndVisibilities(a)&&(o=!0),this.updatePlanes(t,n,e,o)&&(o=!0),o){let u=0;for(;u<this._visiblePlanes.length;){const l=this._visiblePlaneSpriteNumbers[u],c=this.getSprite(l),h=this._visiblePlanes[u];if(c&&h&&h.type!==Yt.TYPE_LANDSCAPE)if(this._colorBackgroundOnly){let _=h.color;const d=(_&255)*this._redColor/255,f=(_>>8&255)*this._greenColor/255,p=(_>>16&255)*this._blueColor/255;_=(_>>24<<24)+(p<<16)+(f<<8)+d,c.color=_}else c.color=h.color;u++}}this.updateSpriteCounter++,this.updateModelCounter=a.updateCounter}updateGeometry(t){if(!t||this._geometryUpdateId===t.updateId)return!1;this._geometryUpdateId=t.updateId,this._boundingRectangle=null;const e=t.direction;return e&&(e.x!==this._directionX||e.y!==this._directionY||e.z!==this._directionZ||t.scale!==this._roomScale)?(this._directionX=e.x,this._directionY=e.y,this._directionZ=e.z,this._roomScale=t.scale,!0):!1}updateThickness(t){if(this.updateModelCounter===t.updateCounter)return!1;const e=t.getValue(I.ROOM_FLOOR_THICKNESS),s=t.getValue(I.ROOM_WALL_THICKNESS);return!isNaN(e)&&!isNaN(s)&&(e!==this._floorThickness||s!==this._wallThickness)?(this._floorThickness=e,this._wallThickness=s,this.clearPlanes(),!0):!1}updateHole(t){if(this.updateModelCounter===t.updateCounter)return!1;const e=t.getValue(I.ROOM_FLOOR_HOLE_UPDATE_TIME);return!isNaN(e)&&e!==this._holeUpdateTime?(this._holeUpdateTime=e,this.clearPlanes(),!0):!1}updatePlaneTexturesAndVisibilities(t){if(this.updateModelCounter===t.updateCounter)return!1;const e=t.getValue(I.ROOM_FLOOR_TYPE),s=t.getValue(I.ROOM_WALL_TYPE),r=t.getValue(I.ROOM_LANDSCAPE_TYPE),n=t.getValue(I.ROOM_FLOOR_VISIBILITY)===1,a=t.getValue(I.ROOM_WALL_VISIBILITY)===1,o=t.getValue(I.ROOM_LANDSCAPE_VISIBILITY)===1;let u=!1;return u=this.updatePlaneTypes(e,s,r),u=this.updatePlaneVisibility(n,a,o)?!0:u,u}updateMasks(t){if(this.updateModelCounter===t.updateCounter)return!1;let e=!1;const s=t.getValue(I.ROOM_PLANE_MASK_XML);s!==this._maskData&&(this.updatePlaneMasks(s),this._maskData=s,e=!0);const r=t.getValue(I.ROOM_BACKGROUND_COLOR);r!==this._color&&(this._color=r,this._redColor=this._color&255,this._greenColor=this._color>>8&255,this._blueColor=this._color>>16&255,e=!0);const n=t.getValue(I.ROOM_COLORIZE_BG_ONLY)||!1;return n!==this._colorBackgroundOnly&&(this._colorBackgroundOnly=n,e=!0),e}clearPlanes(){if(this._planes){for(;this._planes.length;){const t=this._planes[0];t&&t.dispose(),this._planes.shift()}this._planes=[],this._highlightPlaneOffsets=[]}this._isPlaneSet=!1,this._assetUpdateCounter=this._assetUpdateCounter+1,this.reset()}initializeRoomPlanes(){if(!this.object||this._isPlaneSet)return;isNaN(this._floorThickness)||(this._roomPlaneParser.floorThicknessMultiplier=this._floorThickness),isNaN(this._wallThickness)||(this._roomPlaneParser.wallThicknessMultiplier=this._wallThickness),this._roomPlaneParser.clearHighlightArea();const t=this.object.model.getValue(I.ROOM_MAP_DATA);this._roomPlaneParser.initializeFromMapData(t)&&(this._roomPlaneParser.initializeHighlightArea(this._highlightAreaX,this._highlightAreaY,this._highlightAreaWidth,this._highlightAreaHeight),this.createPlanesAndSprites())}createPlanesAndSprites(t=0){const e=this.getLandscapeWidth(),s=this.getLandscapeHeight();let r=0,n=this.object.model.getValue(I.ROOM_RANDOM_SEED),a=t;for(;a<this._roomPlaneParser.planeCount;){this._highlightPlaneOffsets[a]=-1;const o=this._roomPlaneParser.getPlaneLocation(a),u=this._roomPlaneParser.getPlaneLeftSide(a),l=this._roomPlaneParser.getPlaneRightSide(a),c=this._roomPlaneParser.getPlaneSecondaryNormals(a),h=this._roomPlaneParser.getPlaneType(a);let _=null;if(o&&u&&l){const d=v.crossProduct(u,l);if(n=lS(Math.trunc(n*7613+517)>>>0),_=null,h===oe.PLANE_FLOOR){const f=o.x+u.x+.5,p=o.y+l.y+.5,g=Math.trunc(f)-f,m=Math.trunc(p)-p;_=new Yt(this.object.getLocation(),o,u,l,Yt.TYPE_FLOOR,!0,c,n,-g,-m),_.color=d.z!==0?ne.FLOOR_COLOR:d.x!==0?ne.FLOOR_COLOR_RIGHT:ne.FLOOR_COLOR_LEFT}else h===oe.PLANE_WALL?(_=new Yt(this.object.getLocation(),o,u,l,Yt.TYPE_WALL,!0,c,n),(u.length<1||l.length<1)&&(_.hasTexture=!1),_.color=d.x===0&&d.y===0?ne.WALL_COLOR_BORDER:d.y>0?ne.WALL_COLOR_TOP:d.y===0?ne.WALL_COLOR_SIDE:ne.WALL_COLOR_BOTTOM):h===oe.PLANE_LANDSCAPE&&(_=new Yt(this.object.getLocation(),o,u,l,Yt.TYPE_LANDSCAPE,!0,c,n,r,0,e,s),(u.length<1||l.length<1)&&(_.hasTexture=!1),_.color=d.y>0?ne.LANDSCAPE_COLOR_TOP:d.y===0?ne.LANDSCAPE_COLOR_SIDE:ne.LANDSCAPE_COLOR_BOTTOM,r=r+u.length);if(_){_.maskManager=this._data.maskManager;let f=0;for(;f<this._roomPlaneParser.getPlaneMaskCount(a);){const p=this._roomPlaneParser.getPlaneMaskLeftSideLoc(a,f),g=this._roomPlaneParser.getPlaneMaskRightSideLoc(a,f),m=this._roomPlaneParser.getPlaneMaskLeftSideLength(a,f),O=this._roomPlaneParser.getPlaneMaskRightSideLength(a,f);_.addRectangleMask(p,g,m,O),f++}this._highlightPlaneOffsets[a]=this._planes.length,this._planes.push(_)}}else return;a++}this._isPlaneSet=!0,this.defineSprites()}initializeHighlightArea(t,e,s,r,n){this.clearHighlightArea(),this._highlightAreaX=t,this._highlightAreaY=e,this._highlightAreaWidth=s,this._highlightAreaHeight=r,this._highlightFilter=n,this._roomPlaneParser.initializeHighlightArea(t,e,s,r),this.createPlanesAndSprites(this._planes.length),this.reset()}clearHighlightArea(){this._highlightAreaX=0,this._highlightAreaY=0,this._highlightAreaWidth=0,this._highlightAreaHeight=0;const t=this._roomPlaneParser.clearHighlightArea();let e=0,s=this._roomPlaneParser.planeCount;for(;s<this._roomPlaneParser.planeCount+t;)this._highlightPlaneOffsets[s]!==-1&&(e=e+1,this._highlightPlaneOffsets[s]=-1),s=s+1;this._planes=this._planes.slice(0,this._planes.length-e),this.createSprites(this._planes.length),this.reset()}defineSprites(){this.createSprites(this._planes.length);let t=0;for(;t<this._planes.length;){const e=this._planes[t],s=this.getSprite(t);e&&s&&e.leftSide&&e.rightSide&&(e.type===Yt.TYPE_WALL&&(e.leftSide.length<1||e.rightSide.length<1)?s.alphaTolerance=ii.MATCH_NOTHING:s.alphaTolerance=ii.MATCH_OPAQUE_PIXELS,e.type===Yt.TYPE_WALL?s.tag="plane.wall@"+(t+1):e.type===Yt.TYPE_FLOOR?s.tag="plane.floor@"+(t+1):s.tag="plane@"+(t+1),s.spriteType=Rs.ROOM_PLANE,this._roomPlaneParser.isPlaneTemporaryHighlighter(t)?(this._highlightFilter&&(s.filters=[this._highlightFilter]),s.skipMouseHandling=!0,e.extraDepth=-100,e.isHighlighter=!0):(s.filters=[],s.skipMouseHandling=!1,e.extraDepth=0,e.isHighlighter=!1)),t++}}getLandscapeWidth(){let t=0,e=0;for(;e<this._roomPlaneParser.planeCount;){if(this._roomPlaneParser.getPlaneType(e)===oe.PLANE_LANDSCAPE){const r=this._roomPlaneParser.getPlaneLeftSide(e);t+=r.length}e++}return t}getLandscapeHeight(){let t=0,e=0;for(;e<this._roomPlaneParser.planeCount;){if(this._roomPlaneParser.getPlaneType(e)===oe.PLANE_LANDSCAPE){const r=this._roomPlaneParser.getPlaneRightSide(e);r.length>t&&(t=r.length)}e++}return t>5&&(t=5),t}updatePlaneTypes(t,e,s){if(t!==this._floorType?this._floorType=t:t=null,e!==this._wallType?this._wallType=e:e=null,s!==this._landscapeType?this._landscapeType=s:s=null,!t&&!e&&!s)return!1;let r=0;for(;r<this._planes.length;){const n=this._planes[r];n&&(n.type===Yt.TYPE_FLOOR&&t?n.id=t:n.type===Yt.TYPE_WALL&&e?n.id=e:n.type===Yt.TYPE_LANDSCAPE&&s&&(n.id=s)),r++}return!0}updatePlaneVisibility(t,e,s){return t===this._typeVisibility[Yt.TYPE_FLOOR]&&e===this._typeVisibility[Yt.TYPE_WALL]&&s===this._typeVisibility[Yt.TYPE_LANDSCAPE]?!1:(this._typeVisibility[Yt.TYPE_FLOOR]=t,this._typeVisibility[Yt.TYPE_WALL]=e,this._typeVisibility[Yt.TYPE_LANDSCAPE]=s,this._visiblePlanes=[],this._visiblePlaneSpriteNumbers=[],!0)}updatePlanes(t,e,s,r=!1){if(!t||!this.object)return!1;this._assetUpdateCounter++,e&&(this._visiblePlanes=[],this._visiblePlaneSpriteNumbers=[]);const n=this._visiblePlanes.length>0;let a=this._visiblePlanes;this._visiblePlanes.length||(a=this._planes);let o=0,u=!1,l=0;for(;l<a.length;){let c=l;n&&(c=this._visiblePlaneSpriteNumbers[l]);const h=this.getSprite(c);if(h){const _=a[l];_?(h.id=_.uniqueId,_.update(t,s,r)&&(_.visible&&(o=_.relativeDepth+this.floorRelativeDepth+c/1e3,_.type!==Yt.TYPE_FLOOR&&(o=_.relativeDepth+this.wallRelativeDepth+c/1e3,(_.leftSide.length<1||_.rightSide.length<1)&&(o=o+ne.ROOM_DEPTH_OFFSET*.5)),this.updateSprite(h,t,_,`plane ${c} ${t.scale}`,o)),u=!0),h.visible!=(_.visible&&this._typeVisibility[_.type])&&(h.visible=!h.visible,u=!0),h.visible&&(n||(this._visiblePlanes.push(_),this._visiblePlaneSpriteNumbers.push(l)))):(h.id=0,h.visible&&(h.visible=!1,u=!0))}l++}return u}updatePlaneMasks(t){if(!t)return;this._roomPlaneBitmapMaskParser.initialize(t);const e=[],s=[];let r=!1,n=0;for(;n<this._planes.length;){const a=this._planes[n];a&&(a.resetBitmapMasks(),a.type===Yt.TYPE_LANDSCAPE&&e.push(n)),n++}for(const a of this._roomPlaneBitmapMaskParser.masks.values()){const o=this._roomPlaneBitmapMaskParser.getMaskType(a),u=this._roomPlaneBitmapMaskParser.getMaskLocation(a),l=this._roomPlaneBitmapMaskParser.getMaskCategory(a);if(u){let c=0;for(;c<this._planes.length;){const h=this._planes[c];if((h.type===Yt.TYPE_WALL||h.type===Yt.TYPE_LANDSCAPE)&&h&&h.location&&h.normal){const _=v.dif(u,h.location);if(Math.abs(v.scalarProjection(_,h.normal))<.01&&h.leftSide&&h.rightSide){const f=v.scalarProjection(_,h.leftSide),p=v.scalarProjection(_,h.rightSide);h.type===Yt.TYPE_WALL||h.type===Yt.TYPE_LANDSCAPE&&l===xn.HOLE?h.addBitmapMask(o,f,p):h.type===Yt.TYPE_LANDSCAPE&&(h.canBeVisible||(r=!0),h.canBeVisible=!0,s.push(c))}}c++}}}for(n=0;n<e.length;){const a=e[n];if(s.indexOf(a)<0){const o=this._planes[a];o.canBeVisible=!1,r=!0}n++}r&&(this._visiblePlanes=[],this._visiblePlaneSpriteNumbers=[])}updateSprite(t,e,s,r,n){const a=s.offset;t.offsetX=-a.x,t.offsetY=-a.y,t.relativeDepth=n,t.color=s.color,t.texture=s.planeTexture??W.EMPTY,t.name=r+"_"+this._assetUpdateCounter}getBoundingRectangle(){return this._boundingRectangle||(this._boundingRectangle=super.getBoundingRectangle()),new Kt(this._boundingRectangle.x,this._boundingRectangle.y,this._boundingRectangle.width,this._boundingRectangle.height)}get planes(){const t=[];for(const e of this._visiblePlanes)t.push(e);return t}get floorRelativeDepth(){return ne.ROOM_DEPTH_OFFSET+.1}get wallRelativeDepth(){return ne.ROOM_DEPTH_OFFSET+.5}};ne.FLOOR_COLOR=16777215,ne.FLOOR_COLOR_LEFT=14540253,ne.FLOOR_COLOR_RIGHT=12303291,ne.WALL_COLOR_TOP=16777215,ne.WALL_COLOR_SIDE=13421772,ne.WALL_COLOR_BOTTOM=10066329,ne.WALL_COLOR_BORDER=10066329,ne.LANDSCAPE_COLOR_TOP=16777215,ne.LANDSCAPE_COLOR_SIDE=13421772,ne.LANDSCAPE_COLOR_BOTTOM=10066329,ne.ROOM_DEPTH_OFFSET=1e3;let Ag=ne;class AX extends ge{constructor(){super(),this._tileHeight=0}getLayerYOffset(t,e,s){return s===1?(this._tileHeight=this.object.model.getValue(I.TILE_CURSOR_HEIGHT),-this._tileHeight*32):super.getLayerYOffset(t,e,s)}}class OX{constructor(){this._events=M(),this._cachedEvents=new Map,this._registeredEvents=new Map,this._functions=[]}getLogic(t){const e=this.getLogicType(t);if(!e)return null;const s=new e;if(!s)return null;if(s.eventDispatcher=this._events,!this._cachedEvents.get(t)){this._cachedEvents.set(t,!0);const r=s.getEventTypes();for(const n of r)n&&this.registerEventType(n)}return s}registerEventType(t){if(!this._registeredEvents.get(t)){this._registeredEvents.set(t,!0);for(const e of this._functions)e&&this._events.addEventListener(t,e)}}registerEventFunction(t){if(t&&!(this._functions.indexOf(t)>=0)){this._functions.push(t);for(const e of this._registeredEvents.keys())e&&this._events.addEventListener(e,t)}}removeEventFunction(t){if(!t)return;const e=this._functions.indexOf(t);if(e!==-1){this._functions.splice(e,1);for(const s of this._registeredEvents.keys())s&&this._events.removeEventListener(s,t)}}getLogicType(t){if(!t)return null;let e=null;switch(t){case tt.ROOM:e=Z8;break;case tt.TILE_CURSOR:e=Bf;break;case tt.SELECTION_ARROW:e=J8;break;case tt.USER:case tt.BOT:case tt.RENTABLE_BOT:e=Gf;break;case tt.PET:e=Q8;break;case tt.FURNITURE_BASIC:e=Dt;break;case tt.FURNITURE_BADGE_DISPLAY:e=A0;break;case tt.FURNITURE_CHANGE_STATE_WHEN_STEP_ON:e=eK;break;case tt.FURNITURE_COUNTER_CLOCK:e=iK;break;case tt.FURNITURE_CRACKABLE:e=rK;break;case tt.FURNITURE_CREDIT:e=aK;break;case tt.FURNITURE_CUSTOM_STACK_HEIGHT:e=uK;break;case tt.FURNITURE_DICE:e=lK;break;case tt.FURNITURE_EDITABLE_INTERNAL_LINK:e=cK;break;case tt.FURNITURE_EDITABLE_ROOM_LINK:e=_K;break;case tt.FURNITURE_EXTERNAL_IMAGE_WALLITEM:e=fK;break;case tt.FURNITURE_FIREWORKS:e=gK;break;case tt.FURNITURE_FLOOR_HOLE:e=zf;break;case tt.FURNITURE_GUILD_CUSTOMIZED:e=Vh;break;case tt.FURNITURE_HIGH_SCORE:e=Vf;break;case tt.FURNITURE_HOCKEY_SCORE:e=EK;break;case tt.FURNITURE_ES:e=IK;break;case tt.FURNITURE_MANNEQUIN:e=Hf;break;case tt.FURNITURE_MULTIHEIGHT:e=yK;break;case tt.FURNITURE_MULTISTATE:e=he;break;case tt.FURNITURE_ONE_WAY_DOOR:e=MK;break;case tt.FURNITURE_PET_CUSTOMIZATION:e=xK;break;case tt.FURNITURE_PRESENT:e=Yf;break;case tt.FURNITURE_PURCHASABLE_CLOTHING:e=NK;break;case tt.FURNITURE_PUSHABLE:e=Wf;break;case tt.FURNITURE_BACKGROUND_COLOR:e=FK;break;case tt.FURNITURE_BG:e=wK;break;case tt.FURNITURE_BB:e=GK;break;case tt.FURNITURE_ROOMDIMMER:e=BK;break;case tt.FURNITURE_SCORE:e=jf;break;case tt.FURNITURE_SOUNDBLOCK:e=Kf;break;case tt.FURNITURE_STICKIE:e=Xf;break;case tt.FURNITURE_TROPHY:e=VK;break;case tt.FURNITURE_VOTE_COUNTER:e=qf;break;case tt.FURNITURE_VOTE_MAJORITY:e=HK;break;case tt.FURNITURE_WINDOW:e=WK;break;case tt.FURNITURE_LOVELOCK:e=AK;break;case tt.FURNITURE_YOUTUBE:e=jK;break;case tt.FURNITURE_CRAFTING_GIZMO:e=nK;break;case tt.FURNITURE_RENTABLE_SPACE:e=LK;break;case tt.FURNITURE_EFFECTBOX:e=dK;break;case tt.FURNITURE_MONSTERPLANT_SEED:e=OK;break;case tt.FURNITURE_MYSTERYBOX:e=vK;break;case tt.FURNITURE_MYSTERYTROPHY:e=CK;break;case tt.FURNITURE_RANDOM_TELEPORT:e=DK;break;case tt.FURNITURE_CLOTHING_CHANGE:e=sK;break;case tt.FURNITURE_CUCKOO_CLOCK:e=oK;break;case tt.FURNITURE_ECOTRON_BOX:e=hK;break;case tt.FURNITURE_GROUP_FORUM_TERMINAL:e=pK;break;case tt.FURNITURE_HWEEN_LOVELOCK:e=TK;break;case tt.FURNITURE_INTERNAL_LINK:e=SK;break;case tt.FURNITURE_JUKEBOX:e=RK;break;case tt.FURNITURE_PLACEHOLDER:e=PK;break;case tt.FURNITURE_PLANET_SYSTEM:e=bK;break;case tt.FURNITURE_RANDOMSTATE:e=UK;break;case tt.FURNITURE_SONG_DISK:e=kK;break;case tt.FURNITURE_SOUND_MACHINE:e=zK;break;case tt.FURNITURE_WELCOME_GIFT:e=YK;break;case tt.FURNITURE_ACHIEVEMENT_RESOLUTION:e=kf;break;case tt.FURNITURE_HABBOWHEEL:e=mK;break;case tt.FURNITURE_AREA_HIDE:e=tK;break;default:e=Dt;break}return e||(it.warn("Unknown Logic",t),null)}get events(){return this._events}}const tnt=new OX,Og=()=>tnt,cm=class cm{constructor(){this._visualizationDatas=new Map}getVisualization(t){const e=this.getVisualizationType(t);return e?new e:null}getVisualizationType(t){if(!t)return null;let e=null;switch(t){case j.ROOM:e=Ag;break;case j.TILE_CURSOR:e=AX;break;case j.USER:case j.BOT:case j.RENTABLE_BOT:e=tg;break;case j.PET_ANIMATED:e=Ig;break;case j.FURNITURE_STATIC:e=Ai;break;case j.FURNITURE_ANIMATED:e=ge;break;case j.FURNITURE_RESETTING_ANIMATED:e=dX;break;case j.FURNITURE_BADGE_DISPLAY:e=ig;break;case j.FURNITURE_BG:e=fX;break;case j.FURNITURE_BB:e=M0;break;case j.FURNITURE_ISOMETRIC_BB:e=hX;break;case j.FURNITURE_BOTTLE:e=rg;break;case j.FURNITURE_BUILDER_PLACEHOLDER:e=nX;break;case j.FURNITURE_COUNTER_CLOCK:e=ng;break;case j.FURNITURE_CUBOID:e=aX;break;case j.FURNITURE_EXTERNAL_IMAGE:e=oX;break;case j.FURNITURE_FIREWORKS:e=P0;break;case j.FURNITURE_GIFT_WRAPPED_FIREWORKS:e=og;break;case j.FURNITURE_GIFT_WRAPPED:e=lX;break;case j.FURNITURE_GUILD_CUSTOMIZED:e=ug;break;case j.FURNITURE_GUILD_ISOMETRIC_BADGE:e=lg;break;case j.FURNITURE_HABBOWHEEL:e=hg;break;case j.FURNITURE_MANNEQUIN:e=cg;break;case j.FURNITURE_PARTY_BEAMER:e=_g;break;case j.FURNITURE_PLANET_SYSTEM:e=cX;break;case j.FURNITURE_POSTER:e=_X;break;case j.FURNITURE_QUEUE_TILE:e=fg;break;case j.FURNITURE_SCORE_BOARD:e=gg;break;case j.FURNITURE_SOUNDBLOCK:e=gX;break;case j.FURNITURE_STICKIE:e=pX;break;case j.FURNITURE_VAL_RANDOMIZER:e=pg;break;case j.FURNITURE_VOTE_COUNTER:e=mg;break;case j.FURNITURE_VOTE_MAJORITY:e=Eg;break;case j.FURNITURE_WATER_AREA:e=mX;break;case j.FURNITURE_YOUTUBE:e=Tg;break}return e||(it.log("Unknown Visualization",t),null)}getVisualizationData(t,e,s){const r=this._visualizationDatas.get(t);if(r)return r;let n=null;switch(e){case j.FURNITURE_STATIC:case j.FURNITURE_GIFT_WRAPPED:case j.FURNITURE_BB:case j.FURNITURE_ISOMETRIC_BB:case j.FURNITURE_BG:case j.FURNITURE_STICKIE:case j.FURNITURE_BUILDER_PLACEHOLDER:n=new Ii;break;case j.FURNITURE_ANIMATED:case j.FURNITURE_RESETTING_ANIMATED:case j.FURNITURE_POSTER:case j.FURNITURE_HABBOWHEEL:case j.FURNITURE_VAL_RANDOMIZER:case j.FURNITURE_BOTTLE:case j.FURNITURE_PLANET_SYSTEM:case j.FURNITURE_QUEUE_TILE:case j.FURNITURE_PARTY_BEAMER:case j.FURNITURE_COUNTER_CLOCK:case j.FURNITURE_WATER_AREA:case j.FURNITURE_SCORE_BOARD:case j.FURNITURE_FIREWORKS:case j.FURNITURE_GIFT_WRAPPED_FIREWORKS:case j.FURNITURE_GUILD_CUSTOMIZED:case j.FURNITURE_GUILD_ISOMETRIC_BADGE:case j.FURNITURE_VOTE_COUNTER:case j.FURNITURE_VOTE_MAJORITY:case j.FURNITURE_SOUNDBLOCK:case j.FURNITURE_BADGE_DISPLAY:case j.FURNITURE_EXTERNAL_IMAGE:case j.FURNITURE_YOUTUBE:case j.TILE_CURSOR:n=new eE;break;case j.FURNITURE_MANNEQUIN:n=new b0;break;case j.ROOM:n=new U0;break;case j.USER:case j.BOT:case j.RENTABLE_BOT:n=new tE;break;case j.PET_ANIMATED:n=new N0;break}return n?n.initialize(s)?(cm.CACHING_ENABLED&&this._visualizationDatas.set(t,n),n):(n.dispose(),null):null}};cm.CACHING_ENABLED=!0;let yg=cm;const ent=new yg,ku=()=>ent;class yX{constructor(t,e){this._renderer=null,this._managers=new Map,this._updateCategories=[],this._model=new r0,this._id=t,this._container=e}dispose(){this.removeAllManagers(),this.destroyRenderer(),this._container=null,this._model.dispose()}setRenderer(t){if(t!==this._renderer&&(this._renderer&&this.destroyRenderer(),this._renderer=t,!!this._renderer&&(this._renderer.reset(),this._managers.size)))for(const e of this._managers.values()){if(!e)continue;const s=e.objects;if(s.length)for(const r of s.getValues())r&&this._renderer.addObject(r)}}destroyRenderer(){this._renderer&&(this._renderer.dispose(),this._renderer=null)}getManager(t){const e=this._managers.get(t);return e||null}getManagerOrCreate(t){let e=this.getManager(t);return e||(e=this._container.createRoomObjectManager(t),e?(this._managers.set(t,e),e):null)}getTotalObjectsForManager(t){const e=this.getManager(t);return e?e.totalObjects:0}getRoomObject(t,e){const s=this.getManager(e);if(!s)return null;const r=s.getObject(t);return r||null}getRoomObjectsForCategory(t){const e=this.getManager(t);return e?e.objects.getValues():[]}getRoomObjectByIndex(t,e){const s=this.getManager(e);if(!s)return null;const r=s.getObjectByIndex(t);return r||null}createRoomObject(t,e,s,r){const n=this.getManagerOrCreate(r);if(!n)return null;const a=n.createObject(t,e,s);return a?(this._renderer&&this._renderer.addObject(a),a):null}createRoomObjectAndInitalize(t,e,s){return this._container?this._container.createRoomObjectAndInitalize(this._id,t,e,s):null}removeRoomObject(t,e){const s=this.getManager(e);if(!s)return;const r=s.getObject(t);r&&(r.tearDown(),this._renderer&&this._renderer.removeObject(r),s.removeObject(t))}removeAllManagers(){for(const t of this._managers.values())if(t){if(this._renderer){const e=t.objects;if(e.length)for(const s of e.getValues())s&&this._renderer.removeObject(s)}t.dispose()}this._managers.clear()}addUpdateCategory(t){this._updateCategories.indexOf(t)>=0||this._updateCategories.push(t)}removeUpdateCategory(t){const e=this._updateCategories.indexOf(t);e!==-1&&this._updateCategories.splice(e,1)}update(t,e=!1){for(const s of this._updateCategories){const r=this.getManager(s);if(!r)continue;const n=r.objects;if(n.length)for(const a of n.getValues()){if(!a)continue;const o=a.logic;o&&o.update(t)}}this._renderer&&this._renderer.update(t,e)}hasUninitializedObjects(){for(const t of this._managers.values())if(t){for(const e of t.objects.getValues())if(e&&!e.isReady)return!0}return!1}get id(){return this._id}get container(){return this._container}get renderer(){return this._renderer}get managers(){return this._managers}get model(){return this._model}}class vX{constructor(){this._objects=new xe,this._objectsPerType=new xe}dispose(){this.removeAllObjects()}getObject(t){const e=this._objects.getValue(t);return e||null}getObjectByIndex(t){const e=this._objects.getWithIndex(t);return e||null}createObject(t,e,s){const r=new wf(t,e,s);return this.addObject(t,s,r)}addObject(t,e,s){if(this._objects.getValue(t))return s.dispose(),null;this._objects.add(t,s);const r=this.getTypeMap(e);return r&&r.add(t,s),s}removeObject(t){const e=this._objects.remove(t);if(e){const s=this.getTypeMap(e.type);s&&s.remove(e.id),e.dispose()}}removeAllObjects(){let t=0;for(;t<this._objects.length;){const e=this._objects.getWithIndex(t);e&&e.dispose(),t++}for(this._objects.reset(),t=0;t<this._objectsPerType.length;){const e=this._objectsPerType.getWithIndex(t);e&&e.dispose(),t++}this._objectsPerType.reset()}getTypeMap(t,e=!0){let s=this._objectsPerType.getValue(t);return!s&&e&&(s=new xe,this._objectsPerType.add(t,s)),s}get objects(){return this._objects}get totalObjects(){return this._objects.length}}class CX{constructor(){this._rooms=new Map,this._updateCategories=[],this._pendingContentTypes=[],this._skipContentProcessing=!1}async init(t){this._listener=t;const e=s=>{if(!Hs())return;const r=s.contentType;this._pendingContentTypes.indexOf(r)>=0||this._pendingContentTypes.push(r)};M().addEventListener(Ts.RCLE_SUCCESS,e),M().addEventListener(Ts.RCLE_FAILURE,e),M().addEventListener(Ts.RCLE_CANCEL,e)}getRoomInstance(t){const e=this._rooms.get(t);return e||null}createRoomInstance(t){if(this._rooms.get(t))return null;const e=new yX(t,this);if(this._rooms.set(e.id,e),this._updateCategories.length)for(const s of this._updateCategories)e.addUpdateCategory(s);return e}removeRoomInstance(t){const e=this._rooms.get(t);return e?(this._rooms.delete(t),e.dispose(),!0):!1}createRoomObjectAndInitalize(t,e,s,r){const n=this.getRoomInstance(t);if(!n)return null;let a=s,o=s,u=s,l=null,c=!1;if(Hs().isLoaderType(s)){if(l=Hs().getCollection(s),!l&&(c=!0,Hs().downloadAssetSync(s),u=Hs().getPlaceholderName(s),l=Hs().getCollection(u),!l))return null;a=l.data.visualizationType,o=l.data.logicType}const h=n.createRoomObject(e,1,s,r);if(!h)return null;const _=ku().getVisualization(a);if(!_)return n.removeRoomObject(e,r),null;_.asset=l;const d=ku().getVisualizationData(u,a,l&&l.data||null);if(!d||!_.initialize(d))return n.removeRoomObject(e,r),null;h.setVisualization(_);const f=Og().getLogic(o);return h.setLogic(f),f&&f.initialize(l&&l.data||null),c||(h.isReady=!0),Hs().setRoomObjectRoomId(h,t),h}reinitializeRoomObjectsByType(t){if(!t||!Hs())return;const e=Hs().getCollection(t);if(!e)return;const s=e.data.visualizationType,r=e.data.logicType,n=ku().getVisualizationData(t,s,e.data);for(const a of this._rooms.values())if(a){for(const[o,u]of a.managers.entries())if(u)for(const l of u.objects.getValues()){if(!l||l.type!==t)continue;const c=ku().getVisualization(s);if(c)if(c.asset=e,!n||!c.initialize(n))u.removeObject(l.id);else{l.setVisualization(c);const h=Og().getLogic(r);l.setLogic(h),h&&h.initialize(e.data),l.isReady=!0,this._listener&&this._listener.objectInitialized(a.id,l.id,o)}else u.removeObject(l.id)}}}addUpdateCategory(t){if(!(this._updateCategories.indexOf(t)>=0)&&(this._updateCategories.push(t),!!this._rooms.size))for(const s of this._rooms.values())s&&s.addUpdateCategory(t)}removeUpdateCategory(t){const e=this._updateCategories.indexOf(t);if(e!==-1&&(this._updateCategories.splice(e,1),!!this._rooms.size))for(const s of this._rooms.values())s&&s.removeUpdateCategory(t)}processPendingContentTypes(t){if(this._skipContentProcessing){this._skipContentProcessing=!1;return}for(;this._pendingContentTypes.length;){const e=this._pendingContentTypes.shift();if(!Hs().getCollection(e)){this._listener&&this._listener.initalizeTemporaryObjectsByType(e,!1),it.log("Invalid Collection",e);continue}this.reinitializeRoomObjectsByType(e),this._listener&&this._listener.initalizeTemporaryObjectsByType(e,!0)}}update(t,e=!1){if(this.processPendingContentTypes(t),!!this._rooms.size)for(const s of this._rooms.values())s&&s.update(t,e)}createRoomObjectManager(t){return new vX}get rooms(){return this._rooms}}const snt=new CX,MX=()=>snt,Yi=class Yi{};Yi.ROOM_MIN_X="room_min_x",Yi.ROOM_MAX_X="room_max_x",Yi.ROOM_MIN_Y="room_min_y",Yi.ROOM_MAX_Y="room_max_y",Yi.ROOM_IS_PUBLIC="room_is_public",Yi.ROOM_Z_SCALE="room_z_scale",Yi.AD_DISPLAY_DELAY="ad_display_delay",Yi.IS_PLAYING_GAME="is_playing_game";let Be=Yi;class xX{constructor(){this._connection=null,this._roomEngine=null,this._planeParser=new Ae,this._latestEntryTileEvent=null,this._currentRoomId=0,this._ownUserId=0,this._initialConnection=!0,this._guideId=-1,this._requesterId=-1}async init(){this._connection=G().connection,this._roomEngine=iE(),this._connection.addMessageEvent(new Dh(this.onUserInfoEvent.bind(this))),this._connection.addMessageEvent(new ja(this.onRoomReadyMessageEvent.bind(this))),this._connection.addMessageEvent(new _f(this.onRoomPaintEvent.bind(this))),this._connection.addMessageEvent(new uf(this.onRoomModelEvent.bind(this))),this._connection.addMessageEvent(new hf(this.onRoomHeightMapEvent.bind(this))),this._connection.addMessageEvent(new cf(this.onRoomHeightMapUpdateEvent.bind(this))),this._connection.addMessageEvent(new df(this.onRoomThicknessEvent.bind(this))),this._connection.addMessageEvent(new lf(this.onRoomDoorEvent.bind(this))),this._connection.addMessageEvent(new jd(this.onRoomRollingEvent.bind(this))),this._connection.addMessageEvent(new Wd(this.onObjectsDataUpdateEvent.bind(this))),this._connection.addMessageEvent(new qd(this.onFurnitureAliasesEvent.bind(this))),this._connection.addMessageEvent(new Jd(this.onFurnitureFloorAddEvent.bind(this))),this._connection.addMessageEvent(new tf(this.onFurnitureFloorEvent.bind(this))),this._connection.addMessageEvent(new ef(this.onFurnitureFloorRemoveEvent.bind(this))),this._connection.addMessageEvent(new sf(this.onFurnitureFloorUpdateEvent.bind(this))),this._connection.addMessageEvent(new rf(this.onFurnitureWallAddEvent.bind(this))),this._connection.addMessageEvent(new nf(this.onFurnitureWallEvent.bind(this))),this._connection.addMessageEvent(new af(this.onFurnitureWallRemoveEvent.bind(this))),this._connection.addMessageEvent(new of(this.onFurnitureWallUpdateEvent.bind(this))),this._connection.addMessageEvent(new $d(this.onFurnitureDataEvent.bind(this))),this._connection.addMessageEvent(new Qd(this.onItemDataUpdateMessageEvent.bind(this))),this._connection.addMessageEvent(new Zd(this.onOneWayDoorStatusMessageEvent.bind(this))),this._connection.addMessageEvent(new Kd(this.onAreaHideMessageEvent.bind(this))),this._connection.addMessageEvent(new Ph(this.onRoomUnitDanceEvent.bind(this))),this._connection.addMessageEvent(new gf(this.onRoomUnitEffectEvent.bind(this))),this._connection.addMessageEvent(new bh(this.onRoomUnitEvent.bind(this))),this._connection.addMessageEvent(new pf(this.onRoomUnitExpressionEvent.bind(this))),this._connection.addMessageEvent(new mf(this.onRoomUnitHandItemEvent.bind(this))),this._connection.addMessageEvent(new Ef(this.onRoomUnitIdleEvent.bind(this))),this._connection.addMessageEvent(new Nh(this.onRoomUnitInfoEvent.bind(this))),this._connection.addMessageEvent(new Tf(this.onRoomUnitNumberEvent.bind(this))),this._connection.addMessageEvent(new Uh(this.onRoomUnitRemoveEvent.bind(this))),this._connection.addMessageEvent(new If(this.onRoomUnitStatusEvent.bind(this))),this._connection.addMessageEvent(new Wm(this.onRoomUnitChatEvent.bind(this))),this._connection.addMessageEvent(new Mh(this.onRoomUnitChatEvent.bind(this))),this._connection.addMessageEvent(new xh(this.onRoomUnitChatEvent.bind(this))),this._connection.addMessageEvent(new ff(this.onRoomUnitTypingEvent.bind(this))),this._connection.addMessageEvent(new Ch(this.onPetFigureUpdateEvent.bind(this))),this._connection.addMessageEvent(new nR(this.onPetExperienceEvent.bind(this))),this._connection.addMessageEvent(new uR(this.onYouArePlayingGameEvent.bind(this))),this._connection.addMessageEvent(new Xd(this.onDiceValueMessageEvent.bind(this))),this._connection.addMessageEvent(new Km(this.onIgnoreResultEvent.bind(this))),this._connection.addMessageEvent(new wS(this.onGuideSessionStartedMessageEvent.bind(this))),this._connection.addMessageEvent(new LS(this.onGuideSessionEndedMessageEvent.bind(this))),this._connection.addMessageEvent(new FS(this.onGuideSessionErrorMessageEvent.bind(this)))}setRoomId(t){this._currentRoomId!==0&&this._roomEngine&&this._roomEngine.destroyRoom(this._currentRoomId),this._currentRoomId=t,this._latestEntryTileEvent=null}clearRoomId(){this._currentRoomId=0,this._latestEntryTileEvent=null}onUserInfoEvent(t){if(!(t instanceof Dh)||!t.connection)return;const e=t.getParser();e&&(this._ownUserId=e.userInfo.userId)}onRoomReadyMessageEvent(t){const e=t.getParser();if(this._currentRoomId!==e.roomId&&this.setRoomId(e.roomId),this._roomEngine&&this._roomEngine.setRoomInstanceModelName(e.roomId,e.name),this._initialConnection){t.connection.send(new pA),this._initialConnection=!1;return}t.connection.send(new Uf)}onRoomPaintEvent(t){if(!(t instanceof _f))return;const e=t.getParser();if(!e)return;const s=e.floorType,r=e.wallType,n=e.landscapeType;this._roomEngine&&this._roomEngine.updateRoomInstancePlaneType(this._currentRoomId,s,r,n)}onRoomModelEvent(t){if(!(t instanceof uf)||!t.connection||!this._roomEngine)return;const e=t.getParser();if(!e)return;const s=this._roomEngine.getLegacyWallGeometry(this._currentRoomId);if(!s)return;this._planeParser.reset();const r=e.width,n=e.height;this._planeParser.initializeTileMap(r,n);let a=null;this._latestEntryTileEvent&&(a=this._latestEntryTileEvent.getParser());let o=-1,u=-1,l=0,c=0,h=0;for(;h<n;){let f=0;for(;f<r;){const p=e.getHeight(f,h);(h>0&&h<n-1||f>0&&f<r-1)&&p!=Ae.TILE_BLOCKED&&(a==null||f==a.x&&h==a.y)&&(e.getHeight(f,h-1)==Ae.TILE_BLOCKED&&e.getHeight(f-1,h)==Ae.TILE_BLOCKED&&e.getHeight(f,h+1)==Ae.TILE_BLOCKED&&(o=f+.5,u=h,l=p,c=90),e.getHeight(f,h-1)==Ae.TILE_BLOCKED&&e.getHeight(f-1,h)==Ae.TILE_BLOCKED&&e.getHeight(f+1,h)==Ae.TILE_BLOCKED&&(o=f,u=h+.5,l=p,c=180)),this._planeParser.setTileHeight(f,h,p),f++}h++}this._planeParser.setTileHeight(Math.floor(o),Math.floor(u),l),this._planeParser.initializeFromTileData(e.wallHeight),this._planeParser.setTileHeight(Math.floor(o),Math.floor(u),l+this._planeParser.wallHeight),s.scale=du.DEFAULT_SCALE,s.initialize(r,n,this._planeParser.floorHeight);let _=e.height-1;for(;_>=0;){let f=e.width-1;for(;f>=0;)s.setHeight(f,_,this._planeParser.getTileHeight(f,_)),f--;_--}const d=this._planeParser.getMapData();d.doors.push({x:o,y:u,z:l,dir:c}),this._roomEngine.createRoomInstance(this._currentRoomId,d)}onRoomHeightMapEvent(t){if(!(t instanceof hf)||!t.connection||!this._roomEngine)return;const e=t.getParser();if(!e)return;const s=e.width,r=e.height,n=new tX(s,r);let a=0;for(;a<r;){let o=0;for(;o<s;)n.setTileHeight(o,a,e.getTileHeight(o,a)),n.setStackingBlocked(o,a,e.getStackingBlocked(o,a)),n.setIsRoomTile(o,a,e.isRoomTile(o,a)),o++;a++}this._roomEngine.setFurnitureStackingHeightMap(this._currentRoomId,n)}onRoomHeightMapUpdateEvent(t){if(!(t instanceof cf)||!t.connection||!this._roomEngine)return;const e=t.getParser();if(!e)return;const s=this._roomEngine.getFurnitureStackingHeightMap(this._currentRoomId);if(s){for(;e.next();)s.setTileHeight(e.x,e.y,e.tileHeight()),s.setStackingBlocked(e.x,e.y,e.isStackingBlocked()),s.setIsRoomTile(e.x,e.y,e.isRoomTile());this._roomEngine.refreshTileObjectMap(this._currentRoomId,"RoomMessageHandler.onRoomHeightMapUpdateEvent()")}}onRoomThicknessEvent(t){if(!(t instanceof df))return;const e=t.getParser();if(!e)return;const s=!e.hideWalls,r=!0,n=e.thicknessWall,a=e.thicknessFloor;this._roomEngine&&(this._roomEngine.updateRoomInstancePlaneVisibility(this._currentRoomId,s,r),this._roomEngine.updateRoomInstancePlaneThickness(this._currentRoomId,n,a))}onRoomDoorEvent(t){t instanceof lf&&(this._latestEntryTileEvent=t)}onRoomRollingEvent(t){if(!(t instanceof jd)||!t.connection||!this._roomEngine)return;const e=t.getParser();this._roomEngine.updateRoomObjectFloor(this._currentRoomId,e.rollerId,null,null,1,null),this._roomEngine.updateRoomObjectFloor(this._currentRoomId,e.rollerId,null,null,2,null);const s=e.itemsRolling;if(s&&s.length)for(const n of s)n&&this._roomEngine.rollRoomObjectFloor(this._currentRoomId,n.id,n.location,n.targetLocation);const r=e.unitRolling;if(r){this._roomEngine.updateRoomObjectUserLocation(this._currentRoomId,r.id,r.location,r.targetLocation);const n=this._roomEngine.getRoomObjectUser(this._currentRoomId,r.id);if(n&&n.type!==jt.MONSTER_PLANT){let a="std";switch(r.movementType){case ji.MOVE:a="mv";break;case ji.SLIDE:a="std";break}this._roomEngine.updateRoomObjectUserPosture(this._currentRoomId,r.id,a)}}}onObjectsDataUpdateEvent(t){if(!(t instanceof Wd)||!t.connection||!this._roomEngine)return;const e=t.getParser();if(e)for(const s of e.objects)this._roomEngine.updateRoomObjectFloor(this._currentRoomId,s.id,null,null,s.state,s.data)}onFurnitureAliasesEvent(t){!(t instanceof qd)||!t.connection||!this._roomEngine||(t.getParser().aliases,this._connection.send(new Uf))}onFurnitureFloorAddEvent(t){if(!(t instanceof Jd)||!t.connection||!this._roomEngine)return;const e=t.getParser().item;e&&this.addRoomObjectFurnitureFloor(this._currentRoomId,e)}onFurnitureFloorEvent(t){if(!(t instanceof tf)||!t.connection||!this._roomEngine)return;const e=t.getParser();if(!e)return;const s=e.items.length;let r=0;for(;r<s;){const n=e.items[r];n&&this.addRoomObjectFurnitureFloor(this._currentRoomId,n),r++}}onFurnitureFloorRemoveEvent(t){if(!(t instanceof ef)||!t.connection||!this._roomEngine)return;const e=t.getParser();e&&(e.delay>0?setTimeout(()=>{this._roomEngine.removeRoomObjectFloor(this._currentRoomId,e.itemId,e.isExpired?-1:e.userId,!0)},e.delay):this._roomEngine.removeRoomObjectFloor(this._currentRoomId,e.itemId,e.isExpired?-1:e.userId,!0))}onFurnitureFloorUpdateEvent(t){if(!(t instanceof sf)||!t.connection||!this._roomEngine)return;const e=t.getParser().item;if(!e)return;const s=new v(e.x,e.y,e.z),r=new v(e.direction);this._roomEngine.updateRoomObjectFloor(this._currentRoomId,e.itemId,s,r,e.data.state,e.data,e.extra),this._roomEngine.updateRoomObjectFloorHeight(this._currentRoomId,e.itemId,e.stackHeight),this._roomEngine.updateRoomObjectFloorExpiration(this._currentRoomId,e.itemId,e.expires)}onFurnitureWallAddEvent(t){if(!(t instanceof rf)||!t.connection||!this._roomEngine)return;const e=t.getParser().item;e&&this.addRoomObjectFurnitureWall(this._currentRoomId,e)}onFurnitureWallEvent(t){if(!(t instanceof nf)||!t.connection||!this._roomEngine)return;const e=t.getParser();if(!e)return;const s=e.items.length;let r=0;for(;r<s;){const n=e.items[r];n&&this.addRoomObjectFurnitureWall(this._currentRoomId,n),r++}}onFurnitureWallRemoveEvent(t){if(!(t instanceof af)||!t.connection||!this._roomEngine)return;const e=t.getParser();e&&this._roomEngine.removeRoomObjectWall(this._currentRoomId,e.itemId,e.userId)}onFurnitureWallUpdateEvent(t){if(!(t instanceof of)||!t.connection||!this._roomEngine)return;const e=this._roomEngine.getLegacyWallGeometry(this._currentRoomId);if(!e)return;const s=t.getParser().item;if(!s)return;const r=e.getLocation(s.width,s.height,s.localX,s.localY,s.direction),n=new v(e.getDirection(s.direction));this._roomEngine.updateRoomObjectWall(this._currentRoomId,s.itemId,r,n,s.state,s.stuffData),this._roomEngine.updateRoomObjectWallExpiration(this._currentRoomId,s.itemId,s.secondsToExpiration)}onFurnitureDataEvent(t){if(!(t instanceof $d)||!t.connection||!this._roomEngine)return;const e=t.getParser();this._roomEngine.updateRoomObjectFloor(this._currentRoomId,e.furnitureId,null,null,e.objectData.state,e.objectData)}onItemDataUpdateMessageEvent(t){if(!(t instanceof Qd)||!t.connection||!this._roomEngine)return;const e=t.getParser();this._roomEngine.updateRoomObjectWallItemData(this._currentRoomId,e.furnitureId,e.data)}onOneWayDoorStatusMessageEvent(t){if(!(t instanceof Zd)||!t.connection||!this._roomEngine)return;const e=t.getParser();this._roomEngine.updateRoomObjectFloor(this._currentRoomId,e.itemId,null,null,e.state,new Ze)}onAreaHideMessageEvent(t){if(!(t instanceof Kd)||!t.connection||!this._roomEngine)return;const s=t.getParser().areaData;this._roomEngine.updateAreaHide(this._currentRoomId,s.furniId,s.on,s.rootX,s.rootY,s.width,s.length,s.invert)}onDiceValueMessageEvent(t){if(!(t instanceof Xd)||!t.connection||!this._roomEngine)return;const e=t.getParser();this._roomEngine.updateRoomObjectFloor(this._currentRoomId,e.itemId,null,null,e.value,new Ze)}onRoomUnitDanceEvent(t){!(t instanceof Ph)||!t.connection||!this._roomEngine||this._roomEngine.updateRoomObjectUserAction(this._currentRoomId,t.getParser().unitId,I.FIGURE_DANCE,t.getParser().danceId)}onRoomUnitEffectEvent(t){!(t instanceof gf)||!t.connection||!this._roomEngine||this._roomEngine.updateRoomObjectUserEffect(this._currentRoomId,t.getParser().unitId,t.getParser().effectId,t.getParser().delay)}onRoomUnitEvent(t){if(!(t instanceof bh)||!t.connection||!this._roomEngine)return;const e=t.getParser().users;if(!(!e||!e.length)){for(const s of e){if(!s)continue;const r=new v(s.x,s.y,s.z),n=new v(s.dir);this._roomEngine.addRoomObjectUser(this._currentRoomId,s.roomIndex,r,n,s.dir,s.userType,s.figure),s.webID===this._ownUserId&&(this._roomEngine.setRoomSessionOwnUser(this._currentRoomId,s.roomIndex),this._roomEngine.updateRoomObjectUserOwn(this._currentRoomId,s.roomIndex)),this._roomEngine.updateRoomObjectUserFigure(this._currentRoomId,s.roomIndex,s.figure,s.sex,s.subType,s.isRiding),jt.getTypeString(s.userType)===jt.PET&&this._roomEngine.getPetTypeId(s.figure)===tu.MONSTERPLANT&&this._roomEngine.updateRoomObjectUserPosture(this._currentRoomId,s.roomIndex,s.petPosture),this._roomEngine.updateRoomObjectUserAction(this._currentRoomId,s.roomIndex,I.FIGURE_IS_MUTED,Ka().isUserIgnored(s.name)?1:0)}this.updateGuideMarker()}}onRoomUnitExpressionEvent(t){!(t instanceof pf)||!t.connection||!this._roomEngine||this._roomEngine.updateRoomObjectUserAction(this._currentRoomId,t.getParser().unitId,I.FIGURE_EXPRESSION,t.getParser().expression)}onRoomUnitHandItemEvent(t){!(t instanceof mf)||!t.connection||!this._roomEngine||this._roomEngine.updateRoomObjectUserAction(this._currentRoomId,t.getParser().unitId,I.FIGURE_CARRY_OBJECT,t.getParser().handId)}onRoomUnitIdleEvent(t){!(t instanceof Ef)||!t.connection||!this._roomEngine||this._roomEngine.updateRoomObjectUserAction(this._currentRoomId,t.getParser().unitId,I.FIGURE_SLEEP,t.getParser().isIdle?1:0)}onRoomUnitInfoEvent(t){!(t instanceof Nh)||!t.connection||!this._roomEngine||this._roomEngine.updateRoomObjectUserFigure(this._currentRoomId,t.getParser().unitId,t.getParser().figure,t.getParser().gender)}onRoomUnitNumberEvent(t){if(!(t instanceof Tf)||!t.connection||!this._roomEngine)return;const e=t.getParser();e&&this._roomEngine.updateRoomObjectUserAction(this._currentRoomId,e.unitId,I.FIGURE_NUMBER_VALUE,e.value)}onRoomUnitRemoveEvent(t){!(t instanceof Uh)||!t.connection||!this._roomEngine||(this._roomEngine.removeRoomObjectUser(this._currentRoomId,t.getParser().unitId),this.updateGuideMarker())}onRoomUnitStatusEvent(t){if(!(t instanceof If)||!t.connection||!this._roomEngine)return;const e=t.getParser().statuses;if(!e||!e.length)return;const s=this._roomEngine.getRoomInstance(this._currentRoomId);if(!s)return;const r=s.model.getValue(Be.ROOM_Z_SCALE)||1;for(const n of e){if(!n)continue;let a=n.height;a&&(a=a/r);const o=new v(n.x,n.y,n.z+a),u=new v(n.direction);let l=null;n.didMove&&(l=new v(n.targetX,n.targetY,n.targetZ)),this._roomEngine.updateRoomObjectUserLocation(this._currentRoomId,n.id,o,l,n.canStandUp,a,u,n.headDirection),this._roomEngine.updateRoomObjectUserFlatControl(this._currentRoomId,n.id,null);let c=!0,h=!1,_=I.STD,d="",f=!1,p=!1;if(n.actions&&n.actions.length){for(const g of n.actions)if(g)switch(g.action){case"flatctrl":this._roomEngine.updateRoomObjectUserFlatControl(this._currentRoomId,n.id,g.value);break;case"sign":n.actions.length===1&&(c=!1),this._roomEngine.updateRoomObjectUserAction(this._currentRoomId,n.id,I.FIGURE_SIGN,parseInt(g.value));break;case"gst":n.actions.length===1&&(c=!1),this._roomEngine.updateRoomObjectUserPetGesture(this._currentRoomId,n.id,g.value);break;case"wav":case"mv":f=!0,h=!0,_=g.action,d=g.value;break;case"swim":p=!0,h=!0,_=g.action,d=g.value;break;case"trd":break;default:h=!0,_=g.action,d=g.value;break}}!f&&p&&(h=!0,_="float"),h?this._roomEngine.updateRoomObjectUserPosture(this._currentRoomId,n.id,_,d):c&&this._roomEngine.updateRoomObjectUserPosture(this._currentRoomId,n.id,I.STD,"")}this.updateGuideMarker()}onRoomUnitChatEvent(t){if(!t.connection||!this._roomEngine)return;const e=t.getParser();e&&(this._roomEngine.updateRoomObjectUserGesture(this._currentRoomId,e.roomIndex,e.gesture),this._roomEngine.updateRoomObjectUserAction(this._currentRoomId,e.roomIndex,I.FIGURE_TALK,e.message.length/10))}onRoomUnitTypingEvent(t){!(t instanceof ff)||!t.connection||!this._roomEngine||this._roomEngine.updateRoomObjectUserAction(this._currentRoomId,t.getParser().unitId,I.FIGURE_IS_TYPING,t.getParser().isTyping?1:0)}onPetFigureUpdateEvent(t){if(!(t instanceof Ch)||!t.connection||!this._roomEngine)return;const e=t.getParser();e&&this._roomEngine.updateRoomObjectUserFigure(this._currentRoomId,e.roomIndex,e.figureData.figuredata,"","",e.isRiding)}onPetExperienceEvent(t){const e=t.getParser();e&&this._roomEngine.updateRoomObjectUserAction(this._currentRoomId,e.roomIndex,I.FIGURE_GAINED_EXPERIENCE,e.gainedExperience)}onYouArePlayingGameEvent(t){if(!t)return;const e=t.getParser();e&&this._roomEngine.setRoomEngineGameMode(this._currentRoomId,e.isPlaying)}addRoomObjectFurnitureFloor(t,e){if(!e||!this._roomEngine)return;const s=new v(e.x,e.y,e.z),r=new v(e.direction);e.spriteName?this._roomEngine.addFurnitureFloorByTypeName(t,e.itemId,e.spriteName,s,r,e.state,e.data,e.extra,e.expires,e.usagePolicy,e.userId,e.username,!0,!0,e.stackHeight):this._roomEngine.addFurnitureFloor(t,e.itemId,e.spriteId,s,r,e.state,e.data,e.extra,e.expires,e.usagePolicy,e.userId,e.username,!0,!0,e.stackHeight)}addRoomObjectFurnitureWall(t,e){if(!e||!this._roomEngine)return;const s=this._roomEngine.getLegacyWallGeometry(t);if(!s)return;let r=null;e.isOldFormat||(r=s.getLocation(e.width,e.height,e.localX,e.localY,e.direction));const n=new v(s.getDirection(e.direction));this._roomEngine.addFurnitureWall(t,e.itemId,e.spriteId,r,n,e.state,e.stuffData,e.secondsToExpiration,e.usagePolicy,e.userId,e.username)}onIgnoreResultEvent(t){if(!t)return;const e=t.getParser();if(!e)return;const s=xr().getSession(this._currentRoomId);if(!s)return;const r=s.userDataManager.getUserDataByName(e.name);if(r)switch(e.result){case 1:case 2:this._roomEngine.updateRoomObjectUserAction(this._currentRoomId,r.roomIndex,I.FIGURE_IS_MUTED,1);return;case 3:this._roomEngine.updateRoomObjectUserAction(this._currentRoomId,r.roomIndex,I.FIGURE_IS_MUTED,0);return}}onGuideSessionStartedMessageEvent(t){const e=t.getParser();this._guideId=e.guideUserId,this._requesterId=e.requesterUserId,this.updateGuideMarker()}onGuideSessionEndedMessageEvent(t){this.removeGuideMarker()}onGuideSessionErrorMessageEvent(t){this.removeGuideMarker()}updateGuideMarker(){const t=Ka().userId;this.setUserGuideStatus(this._guideId,this._requesterId===t?pi.GUIDE:pi.NONE),this.setUserGuideStatus(this._requesterId,this._guideId===t?pi.REQUESTER:pi.NONE)}removeGuideMarker(){this.setUserGuideStatus(this._guideId,pi.NONE),this.setUserGuideStatus(this._requesterId,pi.NONE),this._guideId=-1,this._requesterId=-1}setUserGuideStatus(t,e){const s=xr().getSession(this._currentRoomId);if(!s)return;const r=s.userDataManager.getDataByType(t,qi.USER);r&&this._roomEngine.updateRoomObjectUserAction(this._currentRoomId,r.roomIndex,I.FIGURE_GUIDE_STATUS,e)}get currentRoomId(){return this._currentRoomId}}const int=new xX,qc=()=>int;class zu{constructor(t=0,e=null,s=null){this.id=t,this.data=e,this.image=s}async getImage(){return this.image?this.image:this.data?await ue.generateImage(this.data):null}}class PX{constructor(t){this._roomEngine=t,this._eventIds=new Map,this._selectedAvatarId=-1,this._selectedObjectId=-1,this._selectedObjectCategory=-2,this._whereYouClickIsWhereYouGo=!0,this._objectPlacementSource=null,M().addEventListener(ht.ADDED,e=>this.onRoomEngineObjectEvent(e))}onRoomEngineObjectEvent(t){let e=this.getSelectedRoomObjectData(t.roomId);if(e&&e.operation===yt.OBJECT_PLACE&&e.id===t.objectId){const s=this._roomEngine.getRoomObject(t.roomId,e.id,e.category);if(s&&s.model&&e.category===D.FLOOR){const r=s.model.getValue(I.FURNITURE_ALLOWED_DIRECTIONS);if(r&&r.length){const n=new v(r[0]);if(s.setDirection(n),this.updateSelectedObjectData(t.roomId,e.id,e.category,e.loc,n,e.operation,e.typeId,e.instanceData,e.stuffData,e.state,e.animFrame,e.posture),e=this.getSelectedRoomObjectData(t.roomId),!e)return}}this.setFurnitureAlphaMultiplier(s,.5)}}processRoomCanvasMouseEvent(t,e,s){if(!t||!e||Ti.isRunning())return;const r=e.type;let n=this._roomEngine.getRoomObjectCategoryForType(r);if(n!==D.ROOM&&(!this._roomEngine.isPlayingGame()||n!==D.UNIT)&&(n=D.MINIMUM),this.getMouseEventId(n,t.type)===t.eventId){if(t.type===J.MOUSE_CLICK||t.type===J.DOUBLE_CLICK||t.type===J.MOUSE_DOWN||t.type===J.MOUSE_UP||t.type===J.MOUSE_MOVE)return}else t.eventId&&this.setMouseEventId(n,t.type,t.eventId);e.mouseHandler&&e.mouseHandler.mouseEvent(t,s)}processRoomObjectPlacement(t,e,s,r,n,a=null,o=null,u=-1,l=-1,c=null){this._objectPlacementSource=t;const h=new v(-100,-100),_=new v(0);return this.setSelectedRoomObjectData(e,s,r,h,_,yt.OBJECT_PLACE,n,a,o,u,l,c),this._roomEngine&&(this._roomEngine.setObjectMoverIconSprite(n,r,!1,a,o,u,l,c),this._roomEngine.setObjectMoverIconSpriteVisible(!1)),!0}cancelRoomObjectInsert(t){return this.resetSelectedObjectData(t),!0}getMouseEventId(t,e){const s=this._eventIds.get(t);return s&&s.get(e)||null}setMouseEventId(t,e,s){let r=this._eventIds.get(t);r||(r=new Map,this._eventIds.set(t,r)),r.delete(e),r.set(e,s)}handleRoomObjectEvent(t,e){if(t){if(t instanceof at){this.handleRoomObjectMouseEvent(t,e);return}switch(t.type){case St.STATE_CHANGE:case St.STATE_RANDOM:this.onRoomObjectStateChangedEvent(t,e);return;case yn.DIMMER_STATE:this.onRoomObjectDimmerStateUpdateEvent(t,e);return;case $e.POSITION_CHANGED:case $e.OBJECT_REMOVED:this.handleSelectedObjectRemove(t,e);return;case b.OPEN_WIDGET:case b.CLOSE_WIDGET:case b.OPEN_FURNI_CONTEXT_MENU:case b.CLOSE_FURNI_CONTEXT_MENU:case b.PLACEHOLDER:case b.CREDITFURNI:case b.STACK_HEIGHT:case b.EXTERNAL_IMAGE:case b.STICKIE:case b.PRESENT:case b.TROPHY:case b.TEASER:case b.ECOTRONBOX:case b.DIMMER:case b.WIDGET_REMOVE_DIMMER:case b.CLOTHING_CHANGE:case b.JUKEBOX_PLAYLIST_EDITOR:case b.MANNEQUIN:case b.PET_PRODUCT_MENU:case b.GUILD_FURNI_CONTEXT_MENU:case b.MONSTERPLANT_SEED_PLANT_CONFIRMATION_DIALOG:case b.PURCHASABLE_CLOTHING_CONFIRMATION_DIALOG:case b.BACKGROUND_COLOR:case b.AREA_HIDE:case b.MYSTERYBOX_OPEN_DIALOG:case b.EFFECTBOX_OPEN_DIALOG:case b.MYSTERYTROPHY_OPEN_DIALOG:case b.ACHIEVEMENT_RESOLUTION_OPEN:case b.ACHIEVEMENT_RESOLUTION_ENGRAVING:case b.ACHIEVEMENT_RESOLUTION_FAILED:case b.FRIEND_FURNITURE_CONFIRM:case b.FRIEND_FURNITURE_ENGRAVING:case b.BADGE_DISPLAY_ENGRAVING:case b.HIGH_SCORE_DISPLAY:case b.HIDE_HIGH_SCORE_DISPLAY:case b.INERNAL_LINK:case b.ROOM_LINK:case b.YOUTUBE:this.onRoomObjectWidgetRequestEvent(t,e);return;case z.DICE_ACTIVATE:case z.DICE_OFF:case z.USE_HABBOWHEEL:case z.STICKIE:case z.ENTER_ONEWAYDOOR:this.onRoomObjectFurnitureActionEvent(t,e);return;case z.SOUND_MACHINE_INIT:case z.SOUND_MACHINE_START:case z.SOUND_MACHINE_STOP:case z.SOUND_MACHINE_DISPOSE:this.handleObjectSoundMachineEvent(t,e);return;case z.JUKEBOX_INIT:case z.JUKEBOX_START:case z.JUKEBOX_MACHINE_STOP:case z.JUKEBOX_DISPOSE:this.handleObjectJukeboxEvent(t,e);return;case Xe.ADD_HOLE:case Xe.REMOVE_HOLE:this.onRoomObjectFloorHoleEvent(t,e);return;case te.ROOM_AD_FURNI_CLICK:case te.ROOM_AD_FURNI_DOUBLE_CLICK:case te.ROOM_AD_TOOLTIP_SHOW:case te.ROOM_AD_TOOLTIP_HIDE:case te.ROOM_AD_LOAD_IMAGE:this.onRoomObjectRoomAdEvent(t,e);return;case ri.LOAD_BADGE:this.onRoomObjectBadgeAssetEvent(t,e);return;case z.MOUSE_ARROW:case z.MOUSE_BUTTON:this.handleMousePointer(t,e);return;case Qi.PLAY_SOUND:case Qi.PLAY_SOUND_AT_PITCH:this.handleRoomObjectPlaySoundEvent(t,e);return;case Ee.ROOM_OBJECT_INITIALIZED:case Ee.ROOM_OBJECT_DISPOSED:case Ee.PLAY_SAMPLE:case Ee.CHANGE_PITCH:this.handleRoomObjectSamplePlaybackEvent(t,e);return;case Xi.ROOM_BACKGROUND_COLOR:this.onHSLColorEnableEvent(t,e);return;case ws.RODRE_CURRENT_USER_ID:case ws.RODRE_URL_PREFIX:this.onRoomObjectDataRequestEvent(t,e);return;default:it.warn("Unhandled Event",t.constructor.name,"Object ID",t.object.id);return}}}handleRoomObjectMouseEvent(t,e){if(!(!t||!t.type))switch(t instanceof ui&&this._roomEngine.areaSelectionManager.handleTileMouseEvent(t),t.type){case at.CLICK:this.handleRoomObjectMouseClickEvent(t,e);return;case at.DOUBLE_CLICK:this.handleRoomObjectMouseDoubleClickEvent(t,e);return;case at.MOUSE_MOVE:this.handleRoomObjectMouseMoveEvent(t,e);return;case at.MOUSE_DOWN:this.handleRoomObjectMouseDownEvent(t,e);return;case at.MOUSE_DOWN_LONG:this.handleRoomObjectMouseDownLongEvent(t,e);return;case at.MOUSE_ENTER:this.handleRoomObjectMouseEnterEvent(t,e);return;case at.MOUSE_LEAVE:this.handleRoomObjectMouseLeaveEvent(t,e);return}}clickRoomObject(t){if(!t||t.altKey||t.ctrlKey||t.shiftKey)return;const e=t.objectId,s=t.objectType,r=this._roomEngine.getRoomObjectCategoryForType(s);if(r===D.FLOOR){G().connection.send(new Pf(e,r));return}if(r===D.WALL){G().connection.send(new Pf(-Math.abs(e),r));return}}handleRoomObjectMouseClickEvent(t,e){if(!t)return;this.clickRoomObject(t);let s=yt.OBJECT_UNDEFINED;const r=this.getSelectedRoomObjectData(e);r&&(s=r.operation);let n=!1,a=!1;this.whereYouClickIsWhereYouGo()&&(!s||s===yt.OBJECT_UNDEFINED)&&(n=this.handleMoveTargetFurni(e,t));const o=this._roomEngine.getRoomObjectCategoryForType(t.objectType);switch(s){case yt.OBJECT_MOVE:o===D.ROOM?r&&this.modifyRoomObject(e,r.id,r.category,yt.OBJECT_MOVE_TO):o===D.UNIT&&(r&&t.objectType===jt.MONSTER_PLANT&&this.modifyRoomObject(e,r.id,r.category,yt.OBJECT_MOVE_TO),t.eventId&&this.setMouseEventId(D.ROOM,J.MOUSE_CLICK,t.eventId),this.placeObjectOnUser(e,t.objectId,o)),a=!0,t.objectId!==-1&&this.setSelectedObject(e,t.objectId,o);break;case yt.OBJECT_PLACE:if(o===D.ROOM)this.placeObject(e,t instanceof ui,t instanceof Xn);else if(o===D.UNIT)switch(t.objectType){case jt.MONSTER_PLANT:case jt.RENTABLE_BOT:this.placeObject(e,t instanceof ui,t instanceof Xn);break;default:t.eventId&&this.setMouseEventId(D.ROOM,J.MOUSE_CLICK,t.eventId),this.placeObjectOnUser(e,t.objectId,o);break}break;case yt.OBJECT_UNDEFINED:o===D.ROOM?!n&&t instanceof ui&&this.handleClickOnTile(e,t):(!this._roomEngine.isAreaSelectionMode()||o===D.UNIT?this.setSelectedObject(e,t.objectId,o):(this.deselectObject(e),M().dispatchEvent(new ht(ht.DESELECTED,e,-1,D.MINIMUM))),a=!1,o===D.UNIT?(t.ctrlKey&&!t.altKey&&!t.shiftKey&&t.objectType===jt.RENTABLE_BOT?this.modifyRoomObject(e,t.objectId,o,yt.OBJECT_PICKUP_BOT):t.ctrlKey&&!t.altKey&&!t.shiftKey&&t.objectType===jt.MONSTER_PLANT?this.modifyRoomObject(e,t.objectId,o,yt.OBJECT_PICKUP_PET):!t.ctrlKey&&!t.altKey&&t.shiftKey&&t.objectType===jt.MONSTER_PLANT&&this.modifyRoomObject(e,t.objectId,o,yt.OBJECT_ROTATE_POSITIVE),this._roomEngine.isPlayingGame()?a=!0:n=!0):(o===D.FLOOR||o===D.WALL)&&(t.altKey||t.ctrlKey||t.shiftKey)&&(!t.ctrlKey&&!t.altKey&&t.shiftKey?o===D.FLOOR&&M()&&M().dispatchEvent(new ht(ht.REQUEST_ROTATE,e,t.objectId,o)):t.ctrlKey&&!t.altKey&&!t.shiftKey&&this.modifyRoomObject(e,t.objectId,o,yt.OBJECT_PICKUP),this._roomEngine.isPlayingGame()?a=!0:n=!0),t.eventId&&(n&&this.setMouseEventId(D.ROOM,J.MOUSE_CLICK,t.eventId),a&&this.setMouseEventId(D.MINIMUM,J.MOUSE_CLICK,t.eventId)));break}if(o===D.ROOM){const u=this.getMouseEventId(D.MINIMUM,J.MOUSE_CLICK),l=this.getMouseEventId(D.UNIT,J.MOUSE_CLICK);u!==t.eventId&&l!==t.eventId&&!a&&(this.deselectObject(e),M()&&M().dispatchEvent(new ht(ht.DESELECTED,e,-1,D.MINIMUM)),this.setSelectedAvatar(e,0,!1))}}handleRoomObjectMouseDoubleClickEvent(t,e){const s=t.objectId,r=t.objectType,n=this._roomEngine.getRoomObjectCategoryForType(r);M()&&M().dispatchEvent(new ht(ht.DOUBLE_CLICK,e,s,n))}handleRoomObjectMouseMoveEvent(t,e){if(!t)return;let s=yt.OBJECT_UNDEFINED;const r=this.getSelectedRoomObjectData(e);r&&(s=r.operation);const n=this._roomEngine.getRoomObjectCategoryForType(t.objectType);if(this._roomEngine){const a=this._roomEngine.getRoomObjectCursor(e);if(a&&a.logic){let o=null;t instanceof ui?o=this.handleMouseOverTile(t,e):t.object&&t.object.id!==-1?this.whereYouClickIsWhereYouGo()&&(o=this.handleMouseOverObject(n,e,t)):o=new qn(null,0,!1,t.eventId),a.processUpdateMessage(o)}}switch(s){case yt.OBJECT_MOVE:n===D.ROOM&&this.handleObjectMove(t,e);return;case yt.OBJECT_PLACE:n===D.ROOM&&this.handleObjectPlace(t,e);return}}handleRoomObjectMouseDownEvent(t,e){if(!t)return;let s=yt.OBJECT_UNDEFINED;const r=this.getSelectedRoomObjectData(e);r&&(s=r.operation);const n=this._roomEngine.getRoomObjectCategoryForType(t.objectType);switch(s){case yt.OBJECT_UNDEFINED:(n===D.FLOOR||n===D.WALL||t.objectType===jt.MONSTER_PLANT)&&(t.altKey&&!t.ctrlKey&&!t.shiftKey||this.decorateModeMove(t))&&M()&&M().dispatchEvent(new ht(ht.REQUEST_MOVE,e,t.objectId,n));return}}handleRoomObjectMouseDownLongEvent(t,e){if(!t)return;let s=yt.OBJECT_UNDEFINED;const r=this.getSelectedRoomObjectData(e);r&&(s=r.operation);const n=this._roomEngine.getRoomObjectCategoryForType(t.objectType);switch(s){case yt.OBJECT_UNDEFINED:(n===D.FLOOR||n===D.WALL||t.objectType===jt.MONSTER_PLANT)&&(!t.ctrlKey&&!t.shiftKey||this.decorateModeMove(t))&&M()&&M().dispatchEvent(new ht(ht.REQUEST_MANIPULATION,e,t.objectId,n));return}}handleRoomObjectMouseEnterEvent(t,e){const s=t.objectId,r=t.objectType,n=this._roomEngine.getRoomObjectCategoryForType(r);M()&&M().dispatchEvent(new ht(ht.MOUSE_ENTER,e,s,n))}handleRoomObjectMouseLeaveEvent(t,e){const s=t.objectId,r=t.objectType,n=this._roomEngine.getRoomObjectCategoryForType(r);if(n!==D.ROOM&&n===D.UNIT){const a=this._roomEngine.getRoomObjectCursor(e);a&&a.processUpdateMessage(new Ht(0,null))}M()&&M().dispatchEvent(new ht(ht.MOUSE_LEAVE,e,s,n))}onRoomObjectStateChangedEvent(t,e){if(t)switch(t.type){case St.STATE_CHANGE:this.changeObjectState(e,t.object.id,t.object.type,t.state,!1);return;case St.STATE_RANDOM:this.changeObjectState(e,t.object.id,t.object.type,t.state,!0);return}}onRoomObjectDimmerStateUpdateEvent(t,e){if(t)switch(t.type){case yn.DIMMER_STATE:M().dispatchEvent(new P_(e,t.state,t.presetId,t.effectId,t.color,t.brightness));return}}handleSelectedObjectRemove(t,e){if(!(!t||!this._roomEngine))switch(t.type){case $e.POSITION_CHANGED:{const s=t.objectId,r=t.objectType,n=this._roomEngine.getRoomObjectCategoryForType(r),a=this._roomEngine.getRoomObject(e,s,n),o=this._roomEngine.getRoomObjectSelectionArrow(e);if(a&&o&&o.logic){const u=a.getLocation();o.logic.processUpdateMessage(new ye(u,null))}return}case $e.OBJECT_REMOVED:this.setSelectedAvatar(e,0,!1);return}}onRoomObjectWidgetRequestEvent(t,e){if(!t||!this._roomEngine)return;const s=t.objectId,r=t.objectType,n=this._roomEngine.getRoomObjectCategoryForType(r);if(!uh.isRoomPreviewerId(e))switch(t.type){case b.OPEN_WIDGET:M().dispatchEvent(new Z(Z.OPEN_WIDGET,e,s,n,t.object.logic.widget));return;case b.CLOSE_WIDGET:M().dispatchEvent(new Z(Z.CLOSE_WIDGET,e,s,n,t.object.logic.widget));return;case b.OPEN_FURNI_CONTEXT_MENU:M().dispatchEvent(new Z(Z.OPEN_FURNI_CONTEXT_MENU,e,s,n,t.object.logic.contextMenu));return;case b.CLOSE_FURNI_CONTEXT_MENU:M().dispatchEvent(new Z(Z.CLOSE_FURNI_CONTEXT_MENU,e,s,n));return;case b.PLACEHOLDER:M().dispatchEvent(new Z(Z.REQUEST_PLACEHOLDER,e,s,n));return;case b.CREDITFURNI:M().dispatchEvent(new Z(Z.REQUEST_CREDITFURNI,e,s,n));return;case b.STACK_HEIGHT:M().dispatchEvent(new Z(Z.REQUEST_STACK_HEIGHT,e,s,n));return;case b.EXTERNAL_IMAGE:M().dispatchEvent(new Z(Z.REQUEST_EXTERNAL_IMAGE,e,s,n));return;case b.STICKIE:M().dispatchEvent(new Z(Z.REQUEST_STICKIE,e,s,n));return;case b.PRESENT:M().dispatchEvent(new Z(Z.REQUEST_PRESENT,e,s,n));return;case b.TROPHY:M().dispatchEvent(new Z(Z.REQUEST_TROPHY,e,s,n));return;case b.TEASER:M().dispatchEvent(new Z(Z.REQUEST_TEASER,e,s,n));return;case b.ECOTRONBOX:M().dispatchEvent(new Z(Z.REQUEST_ECOTRONBOX,e,s,n));return;case b.DIMMER:M().dispatchEvent(new Z(Z.REQUEST_DIMMER,e,s,n));return;case b.WIDGET_REMOVE_DIMMER:M().dispatchEvent(new Z(Z.REMOVE_DIMMER,e,s,n));return;case b.CLOTHING_CHANGE:M().dispatchEvent(new Z(Z.REQUEST_CLOTHING_CHANGE,e,s,n));return;case b.JUKEBOX_PLAYLIST_EDITOR:M().dispatchEvent(new Z(Z.REQUEST_PLAYLIST_EDITOR,e,s,n));return;case b.MANNEQUIN:M().dispatchEvent(new Z(Z.REQUEST_MANNEQUIN,e,s,n));return;case b.PET_PRODUCT_MENU:M().dispatchEvent(new _h(_h.USE_PRODUCT_FROM_ROOM,e,s,n));return;case b.GUILD_FURNI_CONTEXT_MENU:G().connection.send(new mA(t.objectId,t.object.model.getValue(I.FURNITURE_GUILD_CUSTOMIZED_GUILD_ID)));return;case b.MONSTERPLANT_SEED_PLANT_CONFIRMATION_DIALOG:M().dispatchEvent(new Z(Z.REQUEST_MONSTERPLANT_SEED_PLANT_CONFIRMATION_DIALOG,e,s,n));return;case b.PURCHASABLE_CLOTHING_CONFIRMATION_DIALOG:M().dispatchEvent(new Z(Z.REQUEST_PURCHASABLE_CLOTHING_CONFIRMATION_DIALOG,e,s,n));return;case b.BACKGROUND_COLOR:M().dispatchEvent(new Z(Z.REQUEST_BACKGROUND_COLOR,e,s,n));return;case b.AREA_HIDE:M().dispatchEvent(new Z(Z.REQUEST_AREA_HIDE,e,s,n));return;case b.MYSTERYBOX_OPEN_DIALOG:M().dispatchEvent(new Z(Z.REQUEST_MYSTERYBOX_OPEN_DIALOG,e,s,n));return;case b.EFFECTBOX_OPEN_DIALOG:M().dispatchEvent(new Z(Z.REQUEST_EFFECTBOX_OPEN_DIALOG,e,s,n));return;case b.MYSTERYTROPHY_OPEN_DIALOG:M().dispatchEvent(new Z(Z.REQUEST_MYSTERYTROPHY_OPEN_DIALOG,e,s,n));return;case b.ACHIEVEMENT_RESOLUTION_OPEN:G().connection.send(new PR(t.objectId,0));return;case b.ACHIEVEMENT_RESOLUTION_ENGRAVING:M().dispatchEvent(new Z(Z.REQUEST_ACHIEVEMENT_RESOLUTION_ENGRAVING,e,s,n));return;case b.ACHIEVEMENT_RESOLUTION_FAILED:M().dispatchEvent(new Z(Z.REQUEST_ACHIEVEMENT_RESOLUTION_FAILED,e,s,n));return;case b.FRIEND_FURNITURE_CONFIRM:M().dispatchEvent(new Z(Z.REQUEST_FRIEND_FURNITURE_CONFIRM,e,s,n));return;case b.FRIEND_FURNITURE_ENGRAVING:M().dispatchEvent(new Z(Z.REQUEST_FRIEND_FURNITURE_ENGRAVING,e,s,n));return;case b.BADGE_DISPLAY_ENGRAVING:M().dispatchEvent(new Z(Z.REQUEST_BADGE_DISPLAY_ENGRAVING,e,s,n));return;case b.HIGH_SCORE_DISPLAY:M().dispatchEvent(new Z(Z.REQUEST_HIGH_SCORE_DISPLAY,e,s,n));return;case b.HIDE_HIGH_SCORE_DISPLAY:M().dispatchEvent(new Z(Z.REQUEST_HIDE_HIGH_SCORE_DISPLAY,e,s,n));return;case b.INERNAL_LINK:M().dispatchEvent(new Z(Z.REQUEST_INTERNAL_LINK,e,s,n));return;case b.ROOM_LINK:M().dispatchEvent(new Z(Z.REQUEST_ROOM_LINK,e,s,n));return;case b.YOUTUBE:M().dispatchEvent(new Z(Z.REQUEST_YOUTUBE,e,s,n));return}}onRoomObjectFurnitureActionEvent(t,e){t&&this.useObject(e,t.object.id,t.object.type,t.type)}handleObjectSoundMachineEvent(t,e){if(!t)return;const s=this._roomEngine.getRoomObjectCategoryForType(t.objectType),r=this.getSelectedRoomObjectData(e);if(!(r&&r.category===s&&r.id===t.objectId&&r.operation===yt.OBJECT_PLACE))switch(t.type){case z.SOUND_MACHINE_INIT:M().dispatchEvent(new ie(ie.SOUND_MACHINE_INIT,e,t.objectId,s));return;case z.SOUND_MACHINE_START:M().dispatchEvent(new ie(ie.SOUND_MACHINE_SWITCHED_ON,e,t.objectId,s));return;case z.SOUND_MACHINE_STOP:M().dispatchEvent(new ie(ie.SOUND_MACHINE_SWITCHED_OFF,e,t.objectId,s));return;case z.SOUND_MACHINE_DISPOSE:M().dispatchEvent(new ie(ie.SOUND_MACHINE_DISPOSE,e,t.objectId,s));return}}handleObjectJukeboxEvent(t,e){if(!t)return;const s=this._roomEngine.getRoomObjectCategoryForType(t.objectType),r=this.getSelectedRoomObjectData(e);if(!(r&&r.category===s&&r.id===t.objectId&&r.operation===yt.OBJECT_PLACE))switch(t.type){case z.JUKEBOX_INIT:M().dispatchEvent(new ie(ie.JUKEBOX_INIT,e,t.objectId,s));return;case z.JUKEBOX_START:M().dispatchEvent(new ie(ie.JUKEBOX_SWITCHED_ON,e,t.objectId,s));return;case z.JUKEBOX_MACHINE_STOP:M().dispatchEvent(new ie(ie.JUKEBOX_SWITCHED_OFF,e,t.objectId,s));return;case z.JUKEBOX_DISPOSE:M().dispatchEvent(new ie(ie.JUKEBOX_DISPOSE,e,t.objectId,s));return}}onRoomObjectFloorHoleEvent(t,e){if(t)switch(t.type){case Xe.ADD_HOLE:this._roomEngine.addRoomInstanceFloorHole(e,t.objectId);return;case Xe.REMOVE_HOLE:this._roomEngine.removeRoomInstanceFloorHole(e,t.objectId);return}}onRoomObjectRoomAdEvent(t,e){if(!t)return;let s=null;switch(t.type){case te.ROOM_AD_FURNI_CLICK:M().dispatchEvent(t),t.clickUrl&&t.clickUrl.length>0&&g_(t.clickUrl),s=Aa.FURNI_CLICK;break;case te.ROOM_AD_FURNI_DOUBLE_CLICK:if(t.clickUrl&&t.clickUrl.length>0){const r="CATALOG_PAGE";t.clickUrl.indexOf(r)===0&&g_(t.clickUrl.substr(r.length))}s=Aa.FURNI_DOUBLE_CLICK;break;case te.ROOM_AD_TOOLTIP_SHOW:s=Aa.TOOLTIP_SHOW;break;case te.ROOM_AD_TOOLTIP_HIDE:s=Aa.TOOLTIP_HIDE;break}s&&M().dispatchEvent(new ht(s,e,t.objectId,this._roomEngine.getRoomObjectCategoryForType(t.objectType)))}onRoomObjectBadgeAssetEvent(t,e){if(!(!t||!this._roomEngine))switch(t.type){case ri.LOAD_BADGE:{const s=t.objectId,r=t.objectType,n=this._roomEngine.getRoomObjectCategoryForType(r);this._roomEngine.loadRoomObjectBadgeImage(e,s,n,t.badgeId,t.groupBadge);return}}}handleMousePointer(t,e){t&&this._roomEngine.updateMousePointer(t.type,t.objectId,t.objectType)}handleRoomObjectPlaySoundEvent(t,e){const s=this._roomEngine.getRoomObjectCategoryForType(t.objectType);switch(t.type){case Qi.PLAY_SOUND:M().dispatchEvent(new Ra(Ra.PLAY_SOUND,e,t.objectId,s,t.soundId,t.pitch));return;case Qi.PLAY_SOUND_AT_PITCH:M().dispatchEvent(new Ra(Ra.PLAY_SOUND_AT_PITCH,e,t.objectId,s,t.soundId,t.pitch));return}}handleRoomObjectSamplePlaybackEvent(t,e){if(!t)return;const s=this._roomEngine.getRoomObjectCategoryForType(t.objectType);switch(t.type){case Ee.ROOM_OBJECT_INITIALIZED:M().dispatchEvent(new Ds(Ds.ROOM_OBJECT_INITIALIZED,e,t.objectId,s,t.sampleId,t.pitch));break;case Ee.ROOM_OBJECT_DISPOSED:M().dispatchEvent(new Ds(Ds.ROOM_OBJECT_DISPOSED,e,t.objectId,s,t.sampleId,t.pitch));break;case Ee.PLAY_SAMPLE:M().dispatchEvent(new Ds(Ds.PLAY_SAMPLE,e,t.objectId,s,t.sampleId,t.pitch));break;case Ee.CHANGE_PITCH:M().dispatchEvent(new Ds(Ds.CHANGE_PITCH,e,t.objectId,s,t.sampleId,t.pitch));break}}onHSLColorEnableEvent(t,e){if(!(!t||!this._roomEngine))switch(t.type){case Xi.ROOM_BACKGROUND_COLOR:M().dispatchEvent(new dh(dh.ROOM_BACKGROUND_COLOR,e,t.enable,t.hue,t.saturation,t.lightness));return}}onRoomObjectDataRequestEvent(t,e){if(!(!t||!this._roomEngine||!t.object))switch(t.type){case ws.RODRE_CURRENT_USER_ID:t.object.model.setValue(I.SESSION_CURRENT_USER_ID,Ka().userId);return;case ws.RODRE_URL_PREFIX:t.object.model.setValue(I.SESSION_URL_PREFIX,vt().getValue("url.prefix"));return}}handleClickOnTile(t,e){if(!this._roomEngine||this._roomEngine.isDecorating)return;const s=xr().getSession(t);!s||s.isSpectator||this._roomEngine.moveBlocked||this.sendWalkUpdate(e.tileXAsInt,e.tileYAsInt)}handleObjectMove(t,e){if(!t||!this._roomEngine||!M())return;const r=this.getSelectedRoomObjectData(e);if(!r)return;const n=this._roomEngine.getRoomObject(e,r.id,r.category);if(!n)return;let a=!0;if(r.category===D.FLOOR||r.category===D.UNIT){const o=this._roomEngine.getFurnitureStackingHeightMap(e);t instanceof ui&&this.handleFurnitureMove(n,r,Math.trunc(t.tileX+.5),Math.trunc(t.tileY+.5),o)||(this.handleFurnitureMove(n,r,r.loc.x,r.loc.y,o),a=!1)}else if(r.category===D.WALL){if(a=!1,t instanceof Xn){const o=t.wallLocation,u=t.wallWidth,l=t.wallHeight,c=t.x,h=t.y,_=t.direction;this.handleWallItemMove(n,r,o,u,l,c,h,_)&&(a=!0)}a||(n.setLocation(r.loc),n.setDirection(r.dir)),this._roomEngine.updateRoomObjectMask(e,r.id,a)}a?(this.setFurnitureAlphaMultiplier(n,.5),this._roomEngine.setObjectMoverIconSpriteVisible(!1)):(this.setFurnitureAlphaMultiplier(n,0),this._roomEngine.setObjectMoverIconSpriteVisible(!0))}handleObjectPlace(t,e){if(!t||!this._roomEngine||!M())return;let r=this.getSelectedRoomObjectData(e);if(!r)return;let n=this._roomEngine.getRoomObject(e,r.id,r.category);if(!n){if(t instanceof ui){if(r.category===D.FLOOR)this._roomEngine.addFurnitureFloor(e,r.id,r.typeId,r.loc,r.dir,0,r.stuffData,parseFloat(r.instanceData),-1,0,0,"",!1);else if(r.category===D.UNIT){this._roomEngine.addRoomObjectUser(e,r.id,new v,new v(180),180,r.typeId,r.instanceData);const a=this._roomEngine.getRoomObject(e,r.id,r.category);a&&r.posture&&a.model.setValue(I.FIGURE_POSTURE,r.posture)}}else t instanceof Xn&&r.category===D.WALL&&this._roomEngine.addFurnitureWall(e,r.id,r.typeId,r.loc,r.dir,0,r.instanceData,0);if(n=this._roomEngine.getRoomObject(e,r.id,r.category),n&&r.category===D.FLOOR){const a=n.model.getValue(I.FURNITURE_ALLOWED_DIRECTIONS);if(a&&a.length){const o=new v(a[0]);if(n.setDirection(o),this.updateSelectedObjectData(e,r.id,r.category,r.loc,o,r.operation,r.typeId,r.instanceData,r.stuffData,r.state,r.animFrame,r.posture),r=this.getSelectedRoomObjectData(e),!r)return}}this.setFurnitureAlphaMultiplier(n,.5),this._roomEngine.setObjectMoverIconSpriteVisible(!0)}if(n){let a=!0;const o=this._roomEngine.getFurnitureStackingHeightMap(e);if(r.category===D.FLOOR)t instanceof ui&&this.handleFurnitureMove(n,r,Math.trunc(t.tileX+.5),Math.trunc(t.tileY+.5),o)||(this._roomEngine.removeRoomObjectFloor(e,r.id),a=!1);else if(r.category===D.WALL){if(a=!1,t instanceof Xn){const u=t.wallLocation,l=t.wallWidth,c=t.wallHeight,h=t.x,_=t.y,d=t.direction;this.handleWallItemMove(n,r,u,l,c,h,_,d)&&(a=!0)}a||this._roomEngine.removeRoomObjectWall(e,r.id),this._roomEngine.updateRoomObjectMask(e,r.id,a)}else r.category===D.UNIT&&(t instanceof ui&&this.handleUserPlace(n,Math.trunc(t.tileX+.5),Math.trunc(t.tileY+.5),this._roomEngine.getLegacyWallGeometry(e))||(this._roomEngine.removeRoomObjectUser(e,r.id),a=!1));this._roomEngine.setObjectMoverIconSpriteVisible(!a)}}handleFurnitureMove(t,e,s,r,n){if(!t||!e)return!1;const a=new v;a.assign(t.getDirection()),t.setDirection(e.dir);const o=new v(s,r,0),u=new v;u.assign(t.getDirection());let l=this.validateFurnitureLocation(t,o,e.loc,e.dir,n);return l||(u.x=this.getValidRoomObjectDirection(t,!0),t.setDirection(u),l=this.validateFurnitureLocation(t,o,e.loc,e.dir,n)),l?(t.setLocation(l),u&&t.setDirection(u),!0):(t.setDirection(a),!1)}handleWallItemMove(t,e,s,r,n,a,o,u){if(!t||!e)return!1;const l=new v(u),c=this.validateWallItemLocation(t,s,r,n,a,o,e);return c?(t.setLocation(c),t.setDirection(l),!0):!1}validateFurnitureLocation(t,e,s,r,n){if(!t||!t.model||!e)return null;let a=null;const o=t.getDirection();if(!o||!s||!r)return null;if(e.x===s.x&&e.y===s.y&&o.x===r.x)return a=new v,a.assign(s),a;let u=t.model.getValue(I.FURNITURE_SIZE_X),l=t.model.getValue(I.FURNITURE_SIZE_Y);u<1&&(u=1),l<1&&(l=1);const c=s.x,h=s.y;let _=u,d=l,f=0,p=Math.trunc(Math.trunc(o.x+45)%360/90);if((p===1||p===3)&&(f=u,u=l,l=f),p=Math.trunc(Math.trunc(r.x+45)%360/90),(p===1||p===3)&&(f=_,_=d,d=f),n&&e){const g=t.model.getValue(I.FURNITURE_ALWAYS_STACKABLE)===1;return n.validateLocation(e.x,e.y,u,l,c,h,_,d,g)?new v(e.x,e.y,n.getTileHeight(e.x,e.y)):null}return null}validateWallItemLocation(t,e,s,r,n,a,o){if(t==null||t.model==null||e==null||s==null||r==null||o==null)return null;const u=t.model.getValue(I.FURNITURE_SIZE_X),l=t.model.getValue(I.FURNITURE_SIZE_Z),c=t.model.getValue(I.FURNITURE_CENTER_Z);if((n<u/2||n>s.length-u/2||a<c||a>r.length-(l-c))&&(n<u/2&&n<=s.length-u/2?n=u/2:n>=u/2&&n>s.length-u/2&&(n=s.length-u/2),a<c&&a<=r.length-(l-c)?a=c:a>=c&&a>r.length-(l-c)&&(a=r.length-(l-c))),n<u/2||n>s.length-u/2||a<c||a>r.length-(l-c))return null;let h=v.sum(v.product(s,n/s.length),v.product(r,a/r.length));return h=v.sum(e,h),h}changeObjectState(t,e,s,r,n){const a=this._roomEngine.getRoomObjectCategoryForType(s);this.changeRoomObjectState(t,e,a,r,n)}useObject(t,e,s,r){if(!(!this._roomEngine||!G().connection))switch(r){case z.DICE_ACTIVATE:G().connection.send(new RA(e));return;case z.DICE_OFF:G().connection.send(new AA(e));return;case z.USE_HABBOWHEEL:G().connection.send(new SA(e));return;case z.STICKIE:G().connection.send(new nA(e));return;case z.ENTER_ONEWAYDOOR:G().connection.send(new OA(e));return}}changeRoomObjectState(t,e,s,r,n){return!this._roomEngine||!G().connection||(s===D.FLOOR?n?G().connection.send(new yA(e,r)):G().connection.send(new Xm(e,r)):s===D.WALL&&G().connection.send(new vA(e,r))),!0}sendWalkUpdate(t,e){!this._roomEngine||!G().connection||G().connection.send(new zA(t,e))}handleMouseOverObject(t,e,s){if(t!==D.FLOOR)return null;const r=this._roomEngine.getRoomObject(e,s.objectId,D.FLOOR);if(!r)return null;const n=this.getActiveSurfaceLocation(r,s);if(!n||!this._roomEngine.getFurnitureStackingHeightMap(e))return null;const o=n.x,u=n.y,l=n.z;return new qn(new v(o,u,r.getLocation().z),l,!0,s.eventId)}handleMoveTargetFurni(t,e){const s=this._roomEngine.getRoomObject(t,e.objectId,D.FLOOR),r=this.getActiveSurfaceLocation(s,e);return r&&!this._roomEngine.moveBlocked?(this.sendWalkUpdate(r.x,r.y),!0):!1}getActiveSurfaceLocation(t,e){if(!t||!e)return null;const s=Ka().getFloorItemDataByName(t.type);if(!s||!s.canStandOn&&!s.canSitOn&&!s.canLayOn)return null;const r=t.model;if(!r)return null;const n=t.getLocation(),a=t.getDirection();let o=r.getValue(I.FURNITURE_SIZE_X),u=r.getValue(I.FURNITURE_SIZE_Y);const l=r.getValue(I.FURNITURE_SIZE_Z);(a.x===90||a.x===270)&&([o,u]=[u,o]),o<1&&(o=1),u<1&&(u=1);const c=this._roomEngine.getActiveRoomInstanceRenderingCanvas();if(!c)return null;const h=c.geometry.scale,_=s.canSitOn?.5:0,d=(h/2+e.spriteOffsetX+e.localX)/(h/4),f=(e.spriteOffsetY+e.localY+(l-_)*h/2)/(h/4),p=(d+2*f)/4,g=(d-2*f)/4,m=Math.floor(n.x+p),O=Math.floor(n.y-g+1);let y=!1;(m<n.x||m>=n.x+o||O<n.y||O>=n.y+u)&&(y=!0);const C=s.canSitOn?l-.5:l;return y?null:new v(m,O,C)}handleMouseOverTile(t,e){if(this.whereYouClickIsWhereYouGo())return new qn(new v(t.tileXAsInt,t.tileYAsInt,t.tileZAsInt),0,!0,t.eventId);const s=this._roomEngine.getRoomObjectCursor(e);if(s&&s.visualization){const r=t.tileXAsInt,n=t.tileYAsInt,a=t.tileZAsInt;if(this._roomEngine.getRoomInstance(e)){const u=this._roomEngine.getRoomTileObjectMap(e);if(u){const l=u.getObjectIntTile(r,n),c=this._roomEngine.getFurnitureStackingHeightMap(e);if(c){if(l&&l.model&&l.model.getValue(I.FURNITURE_IS_VARIABLE_HEIGHT)>0){const h=c.getTileHeight(r,n),_=this._roomEngine.getLegacyWallGeometry(e).getHeight(r,n);return new qn(new v(r,n,a),h-_,!0,t.eventId)}return new qn(new v(r,n,a),0,!0,t.eventId)}}}}return null}placeObject(t,e,s){const r=this.getSelectedRoomObjectData(t);if(!r)return;let n=null,a=r.id;const o=r.category;let u=0,l=0,c=0,h=0,_="";if(this._roomEngine&&G().connection&&(n=this._roomEngine.getRoomObject(t,a,o),n)){const d=n.getLocation();if(h=n.getDirection().x,o===D.FLOOR||o===D.UNIT)u=d.x,l=d.y,c=d.z;else if(o===D.WALL){u=d.x,l=d.y,c=d.z;const f=this._roomEngine.getLegacyWallGeometry(t);f&&(_=f.getOldLocationString(d,h))}h=(h/45%8+8)%8,a<0&&o===D.UNIT&&(a=a*-1),this._objectPlacementSource!==l_.CATALOG&&(o===D.UNIT?r.typeId===qi.PET?G().connection.send(new oA(a,Math.trunc(u),Math.trunc(l))):r.typeId===qi.RENTABLE_BOT&&G().connection.send(new eA(a,Math.trunc(u),Math.trunc(l))):n.model.getValue(I.FURNITURE_IS_STICKIE)!==void 0?G().connection.send(new IA(a,_)):G().connection.send(new TA(a,o,_,Math.trunc(u),Math.trunc(l),h)))}if(this._roomEngine.setPlacedRoomObjectData(t,new Xc(r.id,r.category,null,r.dir,null)),this.resetSelectedObjectData(t),this._roomEngine&&M()){const d=n&&n.id===r.id;M().dispatchEvent(new wx(ht.PLACED,t,a,o,_,u,l,c,h,d,e,s,r.instanceData))}}modifyRoomObject(t,e,s,r){if(!this._roomEngine)return!1;const n=this._roomEngine.getRoomObject(t,e,s);if(!n)return!1;let a=!0;switch(r){case yt.OBJECT_ROTATE_POSITIVE:case yt.OBJECT_ROTATE_NEGATIVE:if(G().connection){let o=0;r==yt.OBJECT_ROTATE_NEGATIVE?o=this.getValidRoomObjectDirection(n,!1):o=this.getValidRoomObjectDirection(n,!0);const u=n.getLocation().x,l=n.getLocation().y;if(this.isValidLocation(n,new v(o),this._roomEngine.getFurnitureStackingHeightMap(t)))if(o=Math.trunc(o/45),n.type===jt.MONSTER_PLANT){const c=xr().getSession(t);if(c){const h=c.userDataManager.getUserDataByIndex(e);h&&G().connection.send(new bf(h.webID,Math.trunc(u),Math.trunc(l),o))}}else G().connection.send(new Nf(e,u,l,o))}break;case yt.OBJECT_EJECT:case yt.OBJECT_PICKUP:G().connection&&G().connection.send(new EA(s,e));break;case yt.OBJECT_PICKUP_PET:if(G().connection){const o=xr().getSession(t);if(o){const u=o.userDataManager.getUserDataByIndex(e);o.pickupPet(u.webID)}}break;case yt.OBJECT_PICKUP_BOT:if(G().connection){const o=xr().getSession(t);if(o){const u=o.userDataManager.getUserDataByIndex(e);o.pickupBot(u.webID)}}break;case yt.OBJECT_MOVE:a=!1,this.setFurnitureAlphaMultiplier(n,.5),this.setSelectedRoomObjectData(t,n.id,s,n.getLocation(),n.getDirection(),r),this._roomEngine.setObjectMoverIconSprite(n.id,s,!0),this._roomEngine.setObjectMoverIconSpriteVisible(!1);break;case yt.OBJECT_MOVE_TO:{const o=this.getSelectedRoomObjectData(t);if(this.updateSelectedObjectData(t,o.id,o.category,o.loc,o.dir,yt.OBJECT_MOVE_TO,o.typeId,o.instanceData,o.stuffData,o.state,o.animFrame,o.posture),this.setFurnitureAlphaMultiplier(n,1),this._roomEngine.removeObjectMoverIconSprite(),G().connection){if(s===D.FLOOR){const u=n.getDirection().x%360,l=n.getLocation(),c=u/45;G().connection.send(new Nf(e,l.x,l.y,c))}else if(s===D.WALL){const u=n.getDirection().x%360,l=this._roomEngine.getLegacyWallGeometry(t);if(l){const c=l.getOldLocationString(n.getLocation(),u);c&&G().connection.send(new xA(e,c))}}else if(s===D.UNIT){const u=n.getDirection().x%360,l=n.getLocation(),c=u/45;parseInt(n.model.getValue(I.RACE));const h=xr().getSession(t);if(h){const _=h.userDataManager.getUserDataByIndex(e);_&&G().connection.send(new bf(_.webID,l.x,l.y,c))}}}break}}return a&&this.resetSelectedObjectData(t),!0}modifyRoomObjectDataWithMap(t,e,s,r,n){if(!this._roomEngine||!this._roomEngine.getRoomObject(t,e,s))return!1;switch(r){case yt.OBJECT_SAVE_STUFF_DATA:G().connection&&G().connection.send(new _A(e,n));break}return!0}modifyWallItemData(t,e,s,r){return!this._roomEngine||!G().connection?!1:(G().connection.send(new cA(e,s,r)),!0)}deleteWallItem(t,e){return!this._roomEngine||!G().connection?!1:(G().connection.send(new lA(e)),!0)}getValidRoomObjectDirection(t,e){if(!t||!t.model)return 0;let s=0,r=0,n=[];t.type===jt.MONSTER_PLANT?n=t.model.getValue(I.PET_ALLOWED_DIRECTIONS):n=t.model.getValue(I.FURNITURE_ALLOWED_DIRECTIONS);let a=t.getDirection().x;if(n&&n.length){if(s=n.indexOf(a),s<0){for(s=0,r=0;r<n.length&&!(a<=n[r]);)s++,r++;s=s%n.length}e?s=(s+1)%n.length:s=(s-1+n.length)%n.length,a=n[s]}return a}isValidLocation(t,e,s){if(!t||!t.model||!e)return!1;const r=t.getDirection(),n=t.getLocation();if(!r||!n)return!1;if(r.x%180===e.x%180)return!0;let a=t.model.getValue(I.FURNITURE_SIZE_X),o=t.model.getValue(I.FURNITURE_SIZE_Y);a<1&&(a=1),o<1&&(o=1);let u=a,l=o,c=Math.trunc(Math.trunc(e.x+45)%360/90);if((c===1||c===3)&&([a,o]=[o,a]),c=Math.trunc(Math.trunc(r.x+45)%360/90),(c===1||c===3)&&([u,l]=[l,u]),s&&n){const h=t.model.getValue(I.FURNITURE_ALWAYS_STACKABLE)===1;if(s.validateLocation(n.x,n.y,a,o,n.x,n.y,u,l,h,n.z))return!0}return!1}placeObjectOnUser(t,e,s){const r=this.getSelectedRoomObjectData(t);!r||!this._roomEngine.getRoomObject(t,e,s)||!this._roomEngine||!M()||M().dispatchEvent(new Gx(ht.PLACED_ON_USER,t,e,s,r.id,r.category))}setSelectedObject(t,e,s){if(!(!this._roomEngine||!M()))switch(s){case D.UNIT:case D.FLOOR:case D.WALL:if(s===D.UNIT)this.deselectObject(t),this.setSelectedAvatar(t,e,!0);else if(this.setSelectedAvatar(t,0,!1),e!==this._selectedObjectId){this.deselectObject(t);const n=this._roomEngine.getRoomObject(t,e,s);n&&n.logic&&(n.logic.processUpdateMessage(new _u(!0)),this._selectedObjectId=e,this._selectedObjectCategory=s)}M().dispatchEvent(new ht(ht.SELECTED,t,e,s));return}}deselectObject(t){if(this._selectedObjectId===-1)return;const e=this._roomEngine.getRoomObject(t,this._selectedObjectId,this._selectedObjectCategory);e&&e.logic&&(e.logic.processUpdateMessage(new _u(!1)),this._selectedObjectId=-1,this._selectedObjectCategory=D.MINIMUM)}setSelectedAvatar(t,e,s){if(!this._roomEngine)return;const r=D.UNIT,n=this._roomEngine.getRoomObject(t,this._selectedAvatarId,r);n&&n.logic&&(n.logic.processUpdateMessage(new Gh(!1)),this._selectedAvatarId=-1);let a=!1;if(s){const u=this._roomEngine.getRoomObject(t,e,r);if(u&&u.logic){u.logic.processUpdateMessage(new Gh(!0)),a=!0,this._selectedAvatarId=e;const l=u.getLocation();l&&G().connection.send(new GA(~~l.x,~~l.y))}}const o=this._roomEngine.getRoomObjectSelectionArrow(t);o&&o.logic&&(a&&!this._roomEngine.isPlayingGame()?o.logic.processUpdateMessage(new tr(tr.ENABLED)):o.logic.processUpdateMessage(new tr(tr.DISABLED)))}resetSelectedObjectData(t){if(!this._roomEngine)return;this._roomEngine.removeObjectMoverIconSprite();const e=this.getSelectedRoomObjectData(t);if(e){if(e.operation===yt.OBJECT_MOVE||e.operation===yt.OBJECT_MOVE_TO){const s=this._roomEngine.getRoomObject(t,e.id,e.category);s&&e.operation!==yt.OBJECT_MOVE_TO&&(s.setLocation(e.loc),s.setDirection(e.dir)),this.setFurnitureAlphaMultiplier(s,1),e.category===D.WALL&&this._roomEngine.updateRoomObjectMask(t,e.id,!0),this.updateSelectedObjectData(t,e.id,e.category,e.loc,e.dir,yt.OBJECT_MOVE,e.typeId,e.instanceData,e.stuffData,e.state,e.animFrame,e.posture)}else if(e.operation===yt.OBJECT_PLACE){const s=e.id;switch(e.category){case D.FLOOR:this._roomEngine.removeRoomObjectFloor(t,s);break;case D.WALL:this._roomEngine.removeRoomObjectWall(t,s);break;case D.UNIT:this._roomEngine.removeRoomObjectUser(t,s);break}}this._roomEngine.setSelectedRoomObjectData(t,null)}}getSelectedRoomObjectData(t){return this._roomEngine?this._roomEngine.getSelectedRoomObjectData(t):null}setFurnitureAlphaMultiplier(t,e){!t||!t.model||t.model.setValue(I.FURNITURE_ALPHA_MULTIPLIER,e)}decorateModeMove(t){return this._roomEngine.isDecorating&&!(t.ctrlKey||t.shiftKey)}cancelRoomObjectPlacement(t){return this.resetSelectedObjectData(t),!0}setSelectedRoomObjectData(t,e,s,r,n,a,o=0,u=null,l=null,c=-1,h=-1,_=null){if(this.resetSelectedObjectData(t),!this._roomEngine)return;const d=new Xc(e,s,a,r,n,o,u,l,c,h,_);this._roomEngine.setSelectedRoomObjectData(t,d)}updateSelectedObjectData(t,e,s,r,n,a,o=0,u=null,l=null,c=-1,h=-1,_=null){if(!this._roomEngine)return null;const d=new Xc(e,s,a,r,n,o,u,l,c,h,_);this._roomEngine.setSelectedRoomObjectData(t,d)}handleUserPlace(t,e,s,r){return r.isRoomTile(e,s)?(t.setLocation(new v(e,s,r.getHeight(e,s))),!0):!1}get engine(){return this._roomEngine}get selectedAvatarId(){return this._selectedAvatarId}whereYouClickIsWhereYouGo(){return this._roomEngine.whereYouClickIsWhereYouGo()}}class bX{constructor(t){this._roomObjectVariableAccurateZ=t||"",this._location=new v,this._screenLocation=new v,this._locationChanged=!1,this._geometryUpdateId=-1,this._objectUpdateId=-1}dispose(){this._screenLocation=null}updateLocation(t,e){if(!t||!e)return null;let s=!1;const r=t.getLocation();if((e.updateId!==this._geometryUpdateId||t.updateCounter!==this._objectUpdateId)&&(this._objectUpdateId=t.updateCounter,(e.updateId!==this._geometryUpdateId||r.x!==this._location.x||r.y!==this._location.y||r.z!==this._location.z)&&(this._geometryUpdateId=e.updateId,this._location.assign(r),s=!0)),this._locationChanged=s,this._locationChanged){const n=e.getScreenPosition(r);if(!n)return null;const a=t.model.getValue(this._roomObjectVariableAccurateZ);if(isNaN(a)||a===0){const o=new v(Math.round(r.x),Math.round(r.y),r.z);if(o.x!==r.x||o.y!==r.y){const u=e.getScreenPosition(o);this._screenLocation.assign(n),u&&(this._screenLocation.z=u.z)}else this._screenLocation.assign(n)}else this._screenLocation.assign(n);this._screenLocation.x=Math.round(this._screenLocation.x),this._screenLocation.y=Math.round(this._screenLocation.y)}return this._screenLocation}get locationChanged(){return this._locationChanged}}class NX{constructor(){this._sprites=[],this._updateId1=-1,this._updateId2=-1,this._isEmpty=!1}dispose(){this.setSpriteCount(0)}addSprite(t){this._sprites.push(t)}getSprite(t){return this._sprites[t]}needsUpdate(t,e){return t===this._updateId1&&e===this._updateId2?!1:(this._updateId1=t,this._updateId2=e,!0)}setSpriteCount(t){var e;if(t<this._sprites.length){let s=t;for(;s<this._sprites.length;)(e=this._sprites[s])==null||e.dispose(),s++;this._sprites.splice(t,this._sprites.length-t)}this._isEmpty=!this._sprites.length}get sprites(){return this._sprites}get spriteCount(){return this._sprites.length}get isEmpty(){return this._isEmpty}}class UX{constructor(t){this._location=new bX(t),this._sprites=new NX}dispose(){this._location&&(this._location.dispose(),this._location=null),this._sprites&&(this._sprites.dispose(),this._sprites=null)}get objectId(){return this._objectId}set objectId(t){this._objectId=t}get location(){return this._location}get sprites(){return this._sprites}}const Ul=class Ul{constructor(t){this._data=new Map,this._roomObjectVariableAccurateZ=t}dispose(){if(this._data){for(const[t,e]of this._data.entries())e&&(this._data.delete(t),e.dispose());this._data=null}}getObjectCache(t){let e=this._data.get(t);return e||(e=new UX(this._roomObjectVariableAccurateZ),this._data.set(t,e)),e}removeObjectCache(t){const e=this._data.get(t);e&&(this._data.delete(t),e.dispose())}getSortableSpriteList(){const t=[];for(const e of this._data.values()){if(!e)continue;const s=e.sprites&&e.sprites.sprites;if(!(!s||!s.length)){for(const r of s)if(r&&r.sprite.spriteType!==Rs.ROOM_PLANE&&r.sprite.name!==""){const n=new zM;n.objectId=e.objectId,n.x=r.x,n.y=r.y,n.z=r.z,n.name=r.sprite.name||"",n.flipH=r.sprite.flipH,n.alpha=r.sprite.alpha,n.color=r.sprite.color.toString(),n.blendMode=r.sprite.blendMode.toString(),n.width=r.sprite.width,n.height=r.sprite.height,n.type=r.sprite.type,n.posture=r.sprite.posture;const a=this.isSkewedSprite(r.sprite);a&&(n.skew=r.sprite.direction%4===0?-.5:.5),(a||r.name.indexOf("%image.library.url%")>=0||r.name.indexOf("%group.badge.url%")>=0)&&n.width<=Ul.MAX_SIZE_FOR_AVG_COLOR&&n.height<=Ul.MAX_SIZE_FOR_AVG_COLOR&&r.sprite.name.indexOf("external_image_wallitem")===0&&(n.frame=!0),t.push(n)}}}return!t||!t.length?null:t}isSkewedSprite(t){return t.type?t.type.indexOf("external_image_wallitem")===0&&t.tag==="THUMBNAIL"||t.type.indexOf("guild_forum")===0&&t.tag==="THUMBNAIL":!1}getPlaneSortableSprites(){const t=[];for(const e of this._data.values())for(const s of e.sprites.sprites)s.sprite.spriteType===Rs.ROOM_PLANE&&t.push(s);return t}};Ul.MAX_SIZE_FOR_AVG_COLOR=200;let vg=Ul;const rnt=4;class sE extends wt{constructor(){super(...arguments),this._offsetX=0,this._offsetY=0,this._tag="",this._alphaTolerance=ii.MATCH_OPAQUE_PIXELS,this._varyingDepth=!1,this._clickHandling=!1,this._skipMouseHandling=!1,this._updateId1=-1,this._updateId2=-1}needsUpdate(t,e){return this._updateId1===t&&this._updateId2===e?!1:(this._updateId1=t,this._updateId2=e,!0)}setTexture(t){t||(t=W.EMPTY),t!==this.texture&&(t===W.EMPTY&&(this._updateId1=-1,this._updateId2=-1),this.texture=t)}containsPoint(t){if(!t||this.alphaTolerance>255||!this.texture||this.texture===W.EMPTY||(t=new st(t.x*this.scale.x,t.y*this.scale.y),!super.containsPoint(t)))return!1;const e=this.texture,s=this.texture.source;if((!s||!s.hitMap)&&!sE.generateHitMapForTextureSource(s))return!1;const r=s.hitMap;if(!r)return!1;let n=t.x+e.frame.x,a=t.y+e.frame.y;this.texture.trim&&(n-=e.trim.x,a-=e.trim.y),n=Math.round(n)*s.resolution,a=Math.round(a)*s.resolution;const o=(n+a*s.width)*4;return r[o+3]>=this.alphaTolerance}static generateHitMapForTextureSource(t){var a;if(!t)return!1;const e=Mn(),s=Math.max(Math.round(t.width*t.resolution),1),r=Math.max(Math.round(t.height*t.resolution),1);let n=null;if(e instanceof BM)n=((a=ue.getPixels(new W(t)))==null?void 0:a.pixels)??null;else if(e.type===ir.WEBGL){n=new Uint8ClampedArray(rnt*s*r);const o=e.renderTarget.getRenderTarget(t),u=e.renderTarget.getGpuRenderTarget(o),l=e.gl;l.bindFramebuffer(l.FRAMEBUFFER,u.resolveTargetFramebuffer),l.readPixels(0,0,s,r,l.RGBA,l.UNSIGNED_BYTE,n)}return n?(t.hitMap=n,!0):!1}get offsetX(){return this._offsetX}set offsetX(t){this._offsetX=t}get offsetY(){return this._offsetY}set offsetY(t){this._offsetY=t}get tag(){return this._tag}set tag(t){this._tag=t}get alphaTolerance(){return this._alphaTolerance}set alphaTolerance(t){this._alphaTolerance=t}get varyingDepth(){return this._varyingDepth}set varyingDepth(t){this._varyingDepth=t}get clickHandling(){return this._clickHandling}set clickHandling(t){this._clickHandling=t}get skipMouseHandling(){return this._skipMouseHandling}set skipMouseHandling(t){this._skipMouseHandling=t}}class DX{constructor(){this._objectId="",this._spriteTag=""}get objectId(){return this._objectId}set objectId(t){this._objectId=t}get spriteTag(){return this._spriteTag}set spriteTag(t){this._spriteTag=t}}const _m=class _m{constructor(){this._name="",this._sprite=null,this._x=0,this._y=0,this._z=0}dispose(){this._z=-_m.Z_INFINITY,this._sprite=null}get name(){return this._name}set name(t){this._name=t}get sprite(){return this._sprite}set sprite(t){this._sprite=t}get x(){return this._x}set x(t){this._x=t}get y(){return this._y}set y(t){this._y=t}get z(){return this._z}set z(t){this._z=t}};_m.Z_INFINITY=1e8;let Cg=_m;class LX{constructor(t,e,s,r,n){this._id=t,this._container=e,this._renderTimestamp=0,this._totalTimeRunning=0,this._lastFrame=0,this._master=null,this._display=null,this._mask=null,this._sortableSprites=[],this._spriteCount=0,this._activeSpriteCount=0,this._spritePool=[],this._skipObjectUpdate=!1,this._runningSlow=!1,this._width=0,this._height=0,this._renderedWidth=0,this._renderedHeight=0,this._screenOffsetX=0,this._screenOffsetY=0,this._mouseLocation=new st,this._mouseOldX=0,this._mouseOldY=0,this._mouseCheckCount=0,this._mouseSpriteWasHit=!1,this._mouseActiveObjects=new Map,this._eventCache=new Map,this._eventId=0,this._scale=1,this._SafeStr_4507=!1,this._rotation=0,this._rotationOrigin=null,this._rotationRodLength=0,this._SafeStr_795=0,this._noSpriteVisibilityChecking=!1,this._usesExclusionRectangles=!1,this._usesMask=!0,this._canvasUpdated=!1,this._mouseListener=null,this._geometry=new Gs(n,new v(-135,30,0),new v(11,11,5),new v(-135,.5,0)),this._animationFPS=vt().getValue("system.fps.animation",24),this._objectCache=new vg(this._container.roomObjectVariableAccurateZ),this.setupCanvas(),this.initialize(s,r)}setupCanvas(){if(this._master||(this._master=new $t),this._master.cullableChildren=!1,!this._display){const t=new $t;t.isRenderGroup=!1,t.cullableChildren=!1,this._master.addChild(t),this._display=t}}dispose(){if(this.cleanSprites(0,!0),this._geometry&&(this._geometry.dispose(),this._geometry=null),this._mask&&(this._mask=null),this._objectCache&&(this._objectCache.dispose(),this._objectCache=null),this._master){for(;this._master.children.length;)this._master.removeChildAt(0).destroy();this._master.parent&&this._master.parent.removeChild(this._master),this._master.destroy(),this._master=null}if(this._display=null,this._sortableSprites=[],this._mouseActiveObjects&&(this._mouseActiveObjects.clear(),this._mouseActiveObjects=null),this._spritePool){for(const t of this._spritePool)this.cleanSprite(t,!0);this._spritePool=[]}this._eventCache&&(this._eventCache.clear(),this._eventCache=null),this._mouseListener=null}initialize(t,e){if(t=t<1?1:t,e=e<1?1:e,this._usesMask&&(this._mask?(this._mask.width=t,this._mask.height=e):(this._mask=new wt(W.WHITE),this._mask.tint=16711680,this._mask.width=t,this._mask.height=e,this._master&&(this._master.addChild(this._mask),this._display&&(this._display.mask=this._mask)))),this._master)if(this._master.filterArea){const s=this._master.filterArea;s.width=t,s.height=e}else this._master.filterArea=new Kt(0,0,t,e);this._width=t,this._height=e}setMask(t){t&&!this._usesMask?(this._usesMask=!0,this._mask&&this._mask.parent!==this._master&&(this._master.addChild(this._mask),this._display.mask=this._mask)):!t&&this._usesMask&&(this._usesMask=!1,this._mask&&this._mask.parent===this._master&&(this._master.removeChild(this._mask),this._display.mask=null))}setScale(t,e=null,s=null,r=!1){!this._master||!this._display||(e||(e=new st(this._width/2,this._height/2)),s||(s=e),e=this._display.toLocal(e),this._scale=t,this.screenOffsetX=s.x-e.x*this._scale,this.screenOffsetY=s.y-e.y*this._scale)}render(t,e=!1){if(this._canvasUpdated=!1,this._totalTimeRunning+=Cm().deltaTime,this._totalTimeRunning===this._renderTimestamp||(t===-1&&(t=this._renderTimestamp+1),!this._container||!this._geometry))return;(this._width!==this._renderedWidth||this._height!==this._renderedHeight)&&(e=!0),(this._display.x!==this._screenOffsetX||this._display.y!==this._screenOffsetY)&&(this._display.x=Math.floor(this._screenOffsetX),this._display.y=Math.floor(this._screenOffsetY),e=!0),this._display.scale.x!==this._scale&&(this._display.scale.set(this._scale),e=!0),this.doMagic();const s=Math.round(this._totalTimeRunning/(60/this._animationFPS));let r=!1;s!==this._lastFrame&&(this._lastFrame=s,r=!0);let n=0;const a=this._container.objects;if(a.size)for(const u of a.values())u&&(n=n+this.renderObject(u,u.instanceId.toString(),t,e,r,n));this._sortableSprites.sort((u,l)=>l.z-u.z),n<this._sortableSprites.length&&this._sortableSprites.splice(n);let o=0;for(;o<n;){const u=this._sortableSprites[o];u&&u.sprite&&this.renderSprite(o,u),o++}this.cleanSprites(n),(e||r)&&(this._canvasUpdated=!0),this._renderTimestamp=this._totalTimeRunning,this._renderedWidth=this._width,this._renderedHeight=this._height}skipSpriteVisibilityChecking(){this._noSpriteVisibilityChecking=!0,this.render(-1,!0)}resumeSpriteVisibilityChecking(){this._noSpriteVisibilityChecking=!1}getSortableSpriteList(){return this._objectCache.getSortableSpriteList()}getPlaneSortableSprites(){return this._objectCache.getPlaneSortableSprites()}removeFromCache(t){this._objectCache.removeObjectCache(t)}renderObject(t,e,s,r,n,a){if(!t)return 0;const o=t.visualization;if(!o)return this.removeFromCache(e),0;const u=this.getCacheItem(e);u.objectId=t.instanceId;const l=u.location,c=u.sprites,h=l.updateLocation(t,this._geometry);if(!h)return this.removeFromCache(e),0;if(n&&o.update(this._geometry,s,!c.isEmpty||r,this._skipObjectUpdate&&this._runningSlow),l.locationChanged&&(r=!0),!c.needsUpdate(o.instanceId,o.updateSpriteCounter)&&!r)return c.spriteCount;let _=h.x,d=h.y,f=h.z;_>0?f=f+_*12e-8:f=f+-_*12e-8,_=_+Math.trunc(this._width/2),d=d+Math.trunc(this._height/2);let p=0;for(const g of o.sprites.values()){if(!g||!g.visible)continue;const m=g.texture,O=m&&m.source;if(!m||!O)continue;const y=_+g.offsetX+this._screenOffsetX,C=d+g.offsetY+this._screenOffsetY;if(g.flipH){const L=_+-(m.width+-g.offsetX)+this._screenOffsetX;if(!this.isSpriteVisible(L,C,m.width,m.height))continue}else if(g.flipV){const L=d+-(m.height+-g.offsetY)+this._screenOffsetY;if(!this.isSpriteVisible(y,L,m.width,m.height))continue}else if(!this.isSpriteVisible(y,C,m.width,m.height))continue;let P=c.getSprite(p);P||(P=new Cg,c.addSprite(P),this._sortableSprites.push(P),P.name=e),P.sprite=g,(g.spriteType===Rs.AVATAR||g.spriteType===Rs.AVATAR_OWN)&&(P.sprite.libraryAssetName="avatar_"+t.id),P.x=y-this._screenOffsetX,P.y=C-this._screenOffsetY,P.z=f+g.relativeDepth+37e-12*a,p++,a++}return c.setSpriteCount(p),this._canvasUpdated=!0,p}getExtendedSprite(t){if(t<0||t>=this._spriteCount)return null;const e=this._display.getChildAt(t);return e||null}getExtendedSpriteIdentifier(t){return t?t.label:""}renderSprite(t,e){if(t>=this._spriteCount)return this.createAndAddSprite(e),!0;if(!e)return!1;const s=e.sprite,r=this.getExtendedSprite(t);if(!s||!r)return!1;if(r.varyingDepth!==s.varyingDepth)return r.varyingDepth&&!s.varyingDepth?(this._display.removeChildAt(t),this._spritePool.push(r),this.renderSprite(t,e)):(this.createAndAddSprite(e,t),!0);if(r.needsUpdate(s.id,s.updateCounter)||Ti.isVisualizationOn()){r.tag=s.tag,r.alphaTolerance=s.alphaTolerance,r.label=e.name,r.varyingDepth=s.varyingDepth,r.clickHandling=s.clickHandling,r.skipMouseHandling=s.skipMouseHandling,r.filters=s.filters;const n=s.alpha/255;r.alpha!==n&&(r.alpha=n),r.tint!==s.color&&(r.tint=s.color),r.blendMode!==s.blendMode&&(r.blendMode=s.blendMode),r.texture!==s.texture&&r.setTexture(s.texture),s.flipH?r.scale.x!==-1&&(r.scale.x=-1):r.scale.x!==1&&(r.scale.x=1),s.flipV?r.scale.y!==-1&&(r.scale.y=-1):r.scale.y!==1&&(r.scale.y=1),this.updateEnterRoomEffect(r,s)}return r.x=Math.round(e.x),r.y=Math.round(e.y),r.offsetX=s.offsetX,r.offsetY=s.offsetY,!0}createAndAddSprite(t,e=-1){const s=t.sprite;if(!s)return;let r=null;this._spritePool.length>0&&(r=this._spritePool.pop());let n=!1;r||(r=new sE({texture:s.texture}),n=!0),r.children.length&&r.removeChildren(),r.tag=s.tag,r.alphaTolerance=s.alphaTolerance,r.alpha=s.alpha/255,r.tint=s.color,r.x=t.x,r.y=t.y,r.offsetX=s.offsetX,r.offsetY=s.offsetY,r.label=s.name,r.varyingDepth=s.varyingDepth,r.clickHandling=s.clickHandling,r.skipMouseHandling=s.skipMouseHandling,r.blendMode=s.blendMode,r.filters=s.filters,n||r.setTexture(s.texture),s.flipH&&(r.scale.x=-1),s.flipV&&(r.scale.y=-1),this.updateEnterRoomEffect(r,s),e<0||e>=this._spriteCount?(this._display.addChild(r),this._spriteCount++):this._display.addChildAt(r,e),this._activeSpriteCount++}cleanSprites(t,e=!1){if(this._display){if(t<0&&(t=0),t<this._activeSpriteCount||!this._activeSpriteCount){let s=this._spriteCount-1;for(;s>=t;)this.cleanSprite(this.getExtendedSprite(s),e),s--}this._activeSpriteCount=t}}updateEnterRoomEffect(t,e){if(!(!Ti.isVisualizationOn()||!e))switch(e.spriteType){case Rs.AVATAR_OWN:return;case Rs.ROOM_PLANE:t.alpha=Ti.getDelta(.9);return;case Rs.AVATAR:t.alpha=Ti.getDelta(.5);return;default:t.alpha=Ti.getDelta(.1)}}cleanSprite(t,e){t&&(e?(t.parent&&t.parent.removeChild(t),t.destroy({children:!0})):t.setTexture(null))}update(){this._mouseCheckCount,this._mouseCheckCount=0,this._eventId++}setMouseListener(t){this._mouseListener=t}getCacheItem(t){return this._objectCache.getObjectCache(t)}isSpriteVisible(t,e,s,r){return!!(this._noSpriteVisibilityChecking||(t=(t-this._screenOffsetX)*this._scale+this._screenOffsetX,e=(e-this._screenOffsetY)*this._scale+this._screenOffsetY,s=s*this._scale,r=r*this._scale,t<this._width&&t+s>=0&&e<this._height&&e+r>=0&&!this._usesExclusionRectangles))}handleMouseEvent(t,e,s,r,n,a,o){return t=t-this._screenOffsetX,e=e-this._screenOffsetY,this._mouseLocation.x=t/this._scale,this._mouseLocation.y=e/this._scale,this._mouseCheckCount>0&&s==J.MOUSE_MOVE?this._mouseSpriteWasHit:(this._mouseSpriteWasHit=this.checkMouseHits(Math.trunc(t/this._scale),Math.trunc(e/this._scale),s,r,n,a,o),this._mouseCheckCount++,this._mouseSpriteWasHit)}checkMouseHits(t,e,s,r=!1,n=!1,a=!1,o=!1){const u=[];let l=!1,c=null,h=this._activeSpriteCount-1;for(;h>=0;){const f=this.getExtendedSprite(h);if(f&&f.containsPoint(new st(t-f.x,e-f.y))&&!f.skipMouseHandling&&!(f.clickHandling&&(s===J.MOUSE_CLICK||s===J.DOUBLE_CLICK))){const p=this.getExtendedSpriteIdentifier(f);if(u.indexOf(p)===-1){const g=f.tag;let m=this._mouseActiveObjects.get(p);m&&m.spriteTag!==g&&(c=this.createMouseEvent(0,0,0,0,J.ROLL_OUT,m.spriteTag,r,n,a,o),this.bufferMouseEvent(c,p)),s===J.MOUSE_MOVE&&(!m||m.spriteTag!==g)?c=this.createMouseEvent(t,e,t-f.x,e-f.y,J.ROLL_OVER,g,r,n,a,o):(c=this.createMouseEvent(t,e,t-f.x,e-f.y,s,g,r,n,a,o),c.spriteOffsetX=f.offsetX,c.spriteOffsetY=f.offsetY),m||(m=new DX,m.objectId=p,this._mouseActiveObjects.set(p,m)),m.spriteTag=g,(s!==J.MOUSE_MOVE||t!==this._mouseOldX||e!==this._mouseOldY)&&this.bufferMouseEvent(c,p),u.push(p)}l=!0}h--}const _=[];for(const f of this._mouseActiveObjects.keys())f&&_.push(f);let d=0;for(;d<_.length;){const f=_[d];u.indexOf(f)>=0&&(_[d]=null),d++}for(d=0;d<_.length;){const f=_[d];if(f!==null){const p=this._mouseActiveObjects.get(f);p&&this._mouseActiveObjects.delete(f);const g=this.createMouseEvent(0,0,0,0,J.ROLL_OUT,p.spriteTag,r,n,a,o);this.bufferMouseEvent(g,f)}d++}return this.processMouseEvents(),this._mouseOldX=t,this._mouseOldY=e,l}createMouseEvent(t,e,s,r,n,a,o,u,l,c){const h=t-this._width/2,_=e-this._height/2,d=`canvas_${this._id}`;return new Bx(n,d+"_"+this._eventId,d,a,h,_,s,r,u,o,l,c)}bufferMouseEvent(t,e){!t||!this._eventCache||(this._eventCache.delete(e),this._eventCache.set(e,t))}processMouseEvents(){if(!(!this._container||!this._eventCache)){for(const[t,e]of this._eventCache.entries()){if(!this._eventCache)return;if(!e)continue;const s=this._container.getRoomObject(parseInt(t));if(s)if(this._mouseListener)this._mouseListener.processRoomCanvasMouseEvent(e,s,this._geometry);else{const r=s.mouseHandler;r&&r.mouseEvent(e,this._geometry)}}this._eventCache&&this._eventCache.clear()}}getDisplayAsTexture(){this._noSpriteVisibilityChecking=!0;const t=this._scale,e=this._screenOffsetX,s=this._screenOffsetY;this.setScale(1),this._screenOffsetX=0,this._screenOffsetY=0,this.render(-1,!0),this._display.mask=null;const r=this._display.getBounds(),n=ue.createAndWriteRenderTexture(this._display.width,this._display.height,this._display,new ot(1,0,0,1,-r.x,-r.y));return this._display.mask=this._mask,this._noSpriteVisibilityChecking=!1,this.setScale(t),this._screenOffsetX=e,this._screenOffsetY=s,n}doMagic(){const t=this.geometry;if(this._rotation!==0){let e=this._effectDirection;t.direction=new v(e.x+this._rotation,e.y,e.z),e=t.direction,t.setDepthVector(new v(e.x,e.y,5));const s=new v;s.assign(this._rotationOrigin),s.x=s.x+this._rotationRodLength*Math.cos((e.x+180)/180*Math.PI)*Math.cos(e.y/180*Math.PI),s.y=s.y+this._rotationRodLength*Math.sin((e.x+180)/180*Math.PI)*Math.cos(e.y/180*Math.PI),s.z=s.z+this._rotationRodLength*Math.sin(e.y/180*Math.PI),t.location=s,this._effectLocation=new v,this._effectLocation.assign(s),this._effectDirection=new v,this._effectDirection.assign(t.direction)}if(Kh.isVisualizationOn()&&!this._SafeStr_4507?this.changeShaking():!Kh.isVisualizationOn()&&this._SafeStr_4507&&this.changeShaking(),sg.isVisualizationOn()&&this.changeRotation(),this._SafeStr_4507){this._SafeStr_795++;const e=this._effectDirection,s=v.sum(e,new v(Math.sin(this._SafeStr_795*5/180*Math.PI)*2,Math.sin(this._SafeStr_795/180*Math.PI)*5,Math.sin(this._SafeStr_795*10/180*Math.PI)*2));t.direction=s}else this._SafeStr_795=0,t.direction=this._effectDirection}changeShaking(){if(this._SafeStr_4507=!this._SafeStr_4507,this._SafeStr_4507){const t=this.geometry.direction;this._effectDirection=new v(t.x,t.y,t.z)}}changeRotation(){if(this._SafeStr_4507)return;const t=this.geometry;if(t){if(this._rotation===0){const e=t.location,s=t.directionAxis;this._effectLocation=new v,this._effectLocation.assign(e),this._effectDirection=new v,this._effectDirection.assign(t.direction);const r=Gs.getIntersectionVector(e,s,new v(0,0,0),new v(0,0,1));r!==null&&(this._rotationOrigin=new v(r.x,r.y,r.z),this._rotationRodLength=v.dif(r,e).length,this._rotation=1);return}this._rotation=0,t.location=this._effectLocation,t.direction=this._effectDirection,t.setDepthVector(new v(this._effectDirection.x,this._effectDirection.y,5))}}moveLeft(){if(this._rotation!==0){this._rotation===1?this._rotation=-1:this._rotation=this._rotation-1;return}const t=this.geometry,e=(t.direction.x-90)/180*Math.PI;t.location=v.sum(t.location,new v(Math.cos(e)*Math.sqrt(2),Math.sin(e)*Math.sqrt(2)))}moveRight(){if(this._rotation!==0){this._rotation===-1?this._rotation=1:this._rotation=this._rotation+1;return}const t=this.geometry,e=(t.direction.x+90)/180*Math.PI;t.location=v.sum(t.location,new v(Math.cos(e)*Math.sqrt(2),Math.sin(e)*Math.sqrt(2)))}moveUp(){if(this._rotation!==0)return;const t=this.geometry,e=t.direction.x/180*Math.PI;t.location=v.sum(t.location,new v(Math.cos(e)*Math.sqrt(2),Math.sin(e)*Math.sqrt(2)))}moveDown(){if(this._rotation!==0)return;const t=this.geometry,e=(t.direction.x+180)/180*Math.PI;t.location=v.sum(t.location,new v(Math.cos(e)*Math.sqrt(2),Math.sin(e)*Math.sqrt(2)))}get id(){return this._id}get geometry(){return this._geometry}get master(){return this._master}get display(){return this._display}get screenOffsetX(){return this._screenOffsetX}set screenOffsetX(t){t=Math.trunc(t),this._mouseLocation.x=this._mouseLocation.x-(t-this._screenOffsetX),this._screenOffsetX=t}get screenOffsetY(){return this._screenOffsetY}set screenOffsetY(t){t=Math.trunc(t),this._mouseLocation.y=this._mouseLocation.y-(t-this._screenOffsetY),this._screenOffsetY=t}get scale(){return this._scale}get width(){return this._width*this._scale}get height(){return this._height*this._scale}get canvasUpdated(){return this._canvasUpdated}set canvasUpdated(t){this._canvasUpdated=t}}class FX{constructor(){this._objects=new Map,this._canvases=new Map,this._disposed=!1,this._roomObjectVariableAccurateZ=null}dispose(){if(!this._disposed){if(this._canvases){for(const[t,e]of this._canvases.entries())this._canvases.delete(t),e&&e.dispose();this._canvases=null}this._objects&&(this._objects=null),this._disposed=!0}}reset(){this._objects.clear()}getInstanceId(t){return t?t.instanceId:-1}getRoomObject(t){return this._objects.get(t)}addObject(t){t&&this._objects.set(this.getInstanceId(t),t)}removeObject(t){const e=this.getInstanceId(t);this._objects.delete(e);for(const s of this._canvases.values()){if(!s)continue;s.removeFromCache(e.toString())}}render(t,e=!1){if(!(!this._canvases||!this._canvases.size))for(const s of this._canvases.values())s&&s.render(t,e)}update(t,e=!1){if(!(!this._canvases||!this._canvases.size)){this.render(t,e);for(const s of this._canvases.values())s&&s.update()}}getCanvas(t){const e=this._canvases.get(t);return e||null}createCanvas(t,e,s,r){const n=this._canvases.get(t);if(n)return n.initialize(e,s),n.geometry&&(n.geometry.scale=r),n;const a=this.createSpriteCanvas(t,e,s,r);if(a)return this._canvases.set(t,a),a}createSpriteCanvas(t,e,s,r){return new LX(t,this,e,s,r)}removeCanvas(t){const e=this._canvases.get(t);e&&(this._canvases.delete(t),e.dispose())}get objects(){return this._objects}get disposed(){return this._disposed}get roomObjectVariableAccurateZ(){return this._roomObjectVariableAccurateZ}set roomObjectVariableAccurateZ(t){this._roomObjectVariableAccurateZ=t}}const It=class It{constructor(){this._roomContentLoader=Hs(),this._roomSessionManager=xr(),this._sessionDataManager=Ka(),this._roomManager=MX(),this._roomObjectEventHandler=new PX(this),this._imageObjectIdBank=new qT(1e3),this._imageCallbacks=new Map,this._thumbnailObjectIdBank=new qT(1e3),this._thumbnailCallbacks=new Map,this._activeRoomId=-1,this._activeRoomActiveCanvas=-1,this._activeRoomActiveCanvasMouseX=0,this._activeRoomActiveCanvasMouseY=0,this._activeRoomIsDragged=!1,this._activeRoomWasDragged=!1,this._activeRoomDragStartX=0,this._activeRoomDragStartY=0,this._activeRoomDragX=0,this._activeRoomDragY=0,this._moveBlocked=!1,this._roomDraggingAlwaysCenters=!1,this._roomAllowsDragging=!0,this._roomDatas=new Map,this._roomInstanceDatas=new Map,this._skipFurnitureCreationForNextFrame=!1,this._mouseCursorUpdate=!1,this._badgeListenerObjects=new Map,this._areaSelectionManager=new qo(this)}async init(){Og().registerEventFunction(t=>this.processRoomObjectEvent(t)),M().addEventListener(ft.STARTED,t=>this.onRoomSessionEvent(t)),M().addEventListener(ft.ENDED,t=>this.onRoomSessionEvent(t)),await qc().init(),await this._roomContentLoader.init(),await this._roomManager.init(this);for(const t of this._roomDatas.values())t&&this.createRoomInstance(t.roomId,t.data);this._roomContentLoader.setIconListener(this),this._roomManager.addUpdateCategory(D.FLOOR),this._roomManager.addUpdateCategory(D.WALL),this._roomManager.addUpdateCategory(D.UNIT),this._roomManager.addUpdateCategory(D.CURSOR),this._roomManager.addUpdateCategory(D.ROOM)}onRoomSessionEvent(t){if(t instanceof ft)switch(t.type){case ft.STARTED:qc().setRoomId(t.session.roomId);return;case ft.ENDED:qc().clearRoomId(),this.removeRoomInstance(t.session.roomId);return}}setActiveRoomId(t){this._activeRoomId=t}destroyRoom(t){this.removeRoomInstance(t)}getRoomInstance(t){return this._roomManager&&this._roomManager.getRoomInstance(this.getRoomId(t))||null}removeRoomInstance(t){this.getRoomInstance(t)&&this._roomManager&&this._roomManager.removeRoomInstance(this.getRoomId(t));const s=this._roomInstanceDatas.get(t);s&&(this._roomInstanceDatas.delete(s.roomId),s.dispose()),M().dispatchEvent(new ae(ae.DISPOSED,t))}createRoomInstance(t,e){let s="111",r="201",n="1";if(!e){it.warn("Room property messages");return}const a=this._roomDatas.get(t);a&&(this._roomDatas.delete(t),a.floorType&&(s=a.floorType),a.wallType&&(r=a.wallType),a.landscapeType&&(n=a.landscapeType)),this.setupRoomInstance(t,e,s,r,n,this.getRoomInstanceModelName(t))&&(this._roomAllowsDragging=!0,M().dispatchEvent(new ae(ae.INITIALIZED,t)))}setupRoomInstance(t,e,s,r,n,a){if(!this._roomManager)return;const o=this._roomManager.createRoomInstance(this.getRoomId(t));if(!o)return null;const u=D.ROOM,l=o.createRoomObjectAndInitalize(It.ROOM_OBJECT_ID,It.ROOM_OBJECT_TYPE,u);if(o.model.setValue(Be.ROOM_IS_PUBLIC,0),o.model.setValue(Be.ROOM_Z_SCALE,1),e&&e.dimensions){const _=e.dimensions.minX,d=e.dimensions.maxX,f=e.dimensions.minY,p=e.dimensions.maxY;o.model.setValue(Be.ROOM_MIN_X,_),o.model.setValue(Be.ROOM_MAX_X,d),o.model.setValue(Be.ROOM_MIN_Y,f),o.model.setValue(Be.ROOM_MAX_Y,p);const g=Math.trunc(_*423+d*671+f*913+p*7509);l&&l.model&&l.model.setValue(I.ROOM_RANDOM_SEED,g)}const c=l&&l.logic||null;if(c&&(c.initialize(e),s&&(c.processUpdateMessage(new Ue(Ue.ROOM_FLOOR_UPDATE,s)),o.model.setValue(I.ROOM_FLOOR_TYPE,s)),r&&(c.processUpdateMessage(new Ue(Ue.ROOM_WALL_UPDATE,r)),o.model.setValue(I.ROOM_WALL_TYPE,r)),n&&(c.processUpdateMessage(new Ue(Ue.ROOM_LANDSCAPE_UPDATE,n)),o.model.setValue(I.ROOM_LANDSCAPE_TYPE,n))),e&&e.doors.length){let h=0;for(;h<e.doors.length;){const _=e.doors[h];if(_){const d=_.x,f=_.y,p=_.z,g=_.dir,m=qe.DOOR,O="door_"+h,y=new v(d,f,p);c.processUpdateMessage(new qe(qe.ADD_MASK,O,m,y,qe.HOLE)),(g===90||g===180)&&(g===90&&(o.model.setValue(I.ROOM_DOOR_X,d-.5),o.model.setValue(I.ROOM_DOOR_Y,f)),g===180&&(o.model.setValue(I.ROOM_DOOR_X,d),o.model.setValue(I.ROOM_DOOR_Y,f-.5)),o.model.setValue(I.ROOM_DOOR_Z,p),o.model.setValue(I.ROOM_DOOR_DIR,g))}h++}}return o.createRoomObjectAndInitalize(It.CURSOR_OBJECT_ID,It.CURSOR_OBJECT_TYPE,D.CURSOR),vt().getValue("enable.avatar.arrow",!1)&&o.createRoomObjectAndInitalize(It.ARROW_OBJECT_ID,It.ARROW_OBJECT_TYPE,D.CURSOR),o}getRoomInstanceDisplay(t,e,s,r,n){const a=this.getRoomInstance(t);if(!a)return null;let o=a.renderer;if(!o&&(o=new FX,!o))return null;o.roomObjectVariableAccurateZ=I.OBJECT_ACCURATE_Z_VALUE,a.setRenderer(o);const u=o.createCanvas(e,s,r,n);if(!u)return null;if(u.setMouseListener(this._roomObjectEventHandler),u.geometry){u.geometry.z_scale=a.model.getValue(Be.ROOM_Z_SCALE);const l=a.model.getValue(I.ROOM_DOOR_X),c=a.model.getValue(I.ROOM_DOOR_Y),h=a.model.getValue(I.ROOM_DOOR_Z),_=a.model.getValue(I.ROOM_DOOR_DIR),d=new v(l,c,h);let f=null;_===90&&(f=new v(-2e3,0,0)),_===180&&(f=new v(0,-2e3,0)),u.geometry.setDisplacement(d,f);const p=u.master;if(p){const g=new $t;g.label=It.OVERLAY,p.addChild(g)}}return u.master}setRoomInstanceRenderingCanvasMask(t,e,s){const r=this.getRoomInstanceRenderingCanvas(t,e);r&&r.setMask(s)}setRoomInstanceRenderingCanvasScale(t,e,s,r=null,n=null,a=!1,o=!1){if(!vt().getValue("room.zoom.enabled",!0))return;o||(s=a?-1:s<1?.5:Math.floor(s));const u=this.getRoomInstanceRenderingCanvas(t,e);u&&(u.setScale(s,r,n,a),M().dispatchEvent(new ae(ae.ROOM_ZOOMED,t)))}getRoomInstanceRenderingCanvas(t,e=-1){const s=this.getRoomInstance(t);if(!s)return null;const r=s.renderer;if(!r)return null;e===-1&&(e=this._activeRoomActiveCanvas);const n=r.getCanvas(e);return n||null}getActiveRoomInstanceRenderingCanvas(){return this.getRoomInstanceRenderingCanvas(this._activeRoomId,this._activeRoomActiveCanvas)}getRoomInstanceRenderingCanvasOffset(t,e=-1){e===-1&&(e=this._activeRoomActiveCanvas);const s=this.getRoomInstanceRenderingCanvas(t,e);return s?new st(s.screenOffsetX,s.screenOffsetY):null}setRoomInstanceRenderingCanvasOffset(t,e,s){const r=this.getRoomInstanceRenderingCanvas(t,e);if(!r||!s)return!1;const n=~~s.x,a=~~s.y;if(!(r.screenOffsetX===n&&r.screenOffsetY===a))return M().dispatchEvent(new M_(t,-(r.screenOffsetX-n),-(r.screenOffsetY-a))),r.screenOffsetX=n,r.screenOffsetY=a,!0}getRoomInstanceRenderingCanvasScale(t=-1e3,e=-1){t===-1e3&&(t=this._activeRoomId),e===-1&&(e=this._activeRoomActiveCanvas);const s=this.getRoomInstanceRenderingCanvas(t,e);return s?s.scale:1}initializeRoomInstanceRenderingCanvas(t,e,s,r){const n=this.getRoomInstanceRenderingCanvas(t,e);n&&n.initialize(s,r)}getRoomInstanceGeometry(t,e=-1){const s=this.getRoomInstance(t);if(!s)return null;const r=s.renderer;if(!r)return null;e===-1&&(e=this._activeRoomActiveCanvas);const n=r.getCanvas(e);return n?n.geometry:null}getRoomInstanceVariable(t,e){const s=this.getRoomInstance(t);return s&&s.model&&s.model.getValue(e)||null}updateRoomInstancePlaneVisibility(t,e,s=!0){const r=this.getRoomOwnObject(t);return r?(r.processUpdateMessage(new Ji(Ji.WALL_VISIBILITY,e)),r.processUpdateMessage(new Ji(Ji.FLOOR_VISIBILITY,s)),!0):!1}updateRoomInstancePlaneThickness(t,e,s){const r=this.getRoomOwnObject(t);return r?(r.processUpdateMessage(new Zi(Zi.WALL_THICKNESS,e)),r.processUpdateMessage(new Zi(Zi.FLOOR_THICKNESS,s)),!0):!1}updateRoomInstancePlaneType(t,e=null,s=null,r=null,n=!1){const a=this.getRoomOwnObject(t),o=this.getRoomInstance(t);if(!a){let u=this._roomDatas.get(t);return u||(u=new eX(t,null),this._roomDatas.set(t,u)),e&&(u.floorType=e),s&&(u.wallType=s),r&&(u.landscapeType=r),!0}return e&&(o&&!n&&o.model.setValue(I.ROOM_FLOOR_TYPE,e),a.processUpdateMessage(new Ue(Ue.ROOM_FLOOR_UPDATE,e))),s&&(o&&!n&&o.model.setValue(I.ROOM_WALL_TYPE,s),a.processUpdateMessage(new Ue(Ue.ROOM_WALL_UPDATE,s))),r&&(o&&!n&&o.model.setValue(I.ROOM_LANDSCAPE_TYPE,r),a.processUpdateMessage(new Ue(Ue.ROOM_LANDSCAPE_UPDATE,r))),!0}updateAreaHide(t,e,s,r,n,a,o,u){const l=this.getRoomOwnObject(t);if(!l||!l.logic)return!1;M().dispatchEvent(new x_(t,e,D.FLOOR,s)),s?l.logic.processUpdateMessage(new Is(Is.ADD,e,r,n,a,o,u)):l.logic.processUpdateMessage(new Is(Is.REMOVE,e))}updateObjectRoomColor(t,e,s,r){const n=this.getRoomOwnObject(t);if(!n||!n.logic)return!1;const a=new cu(cu.BACKGROUND_COLOR,e,s,r);return n.logic.processUpdateMessage(a),M().dispatchEvent(new C_(t,e,s,r)),!0}addRoomInstanceFloorHole(t,e){if(e<0)return;const s=this.getRoomOwnObject(t),r=this.getRoomObjectFloor(t,e);if(s&&s.logic&&r&&r.model){const n=r.getLocation(),a=r.model.getValue(I.FURNITURE_SIZE_X),o=r.model.getValue(I.FURNITURE_SIZE_Y);s.processUpdateMessage(new Is(Is.ADD,e,n.x,n.y,a,o))}}removeRoomInstanceFloorHole(t,e){if(e<0)return;const s=this.getRoomOwnObject(t);s&&s.processUpdateMessage(new Is(Is.REMOVE,e))}setRoomEngineGameMode(t,e){const s=this.getRoomInstance(t);if(!s)return;const r=e?1:0;s.model.setValue(Be.IS_PLAYING_GAME,r),r===0?M().dispatchEvent(new ae(ae.NORMAL_MODE,t)):M().dispatchEvent(new ae(ae.GAME_MODE,t))}isRoomIdPlayingGame(t){const e=this.getRoomInstance(t);return e?e.model.getValue(Be.IS_PLAYING_GAME)>0:!1}isPlayingGame(){return this.isRoomIdPlayingGame(this._activeRoomId)}update(t){if(!this._roomManager)return;const e=t.lastTime,s=!1;Ti.turnVisualizationOn(),this.processPendingFurniture(),this._roomManager.update(e,s),this.updateRoomCameras(e),this._mouseCursorUpdate&&this.setPointer(),Ti.turnVisualizationOff()}setPointer(){this._mouseCursorUpdate=!1;const t=this.getRoomInstanceData(this._activeRoomId);t&&t.hasButtonMouseCursorOwners()?document.body.style.cursor="pointer":document.body.style.cursor="auto"}processPendingFurniture(){if(this._skipFurnitureCreationForNextFrame){this._skipFurnitureCreationForNextFrame=!1;return}const t=new Date().valueOf(),e=5;for(const s of this._roomInstanceDatas.values()){if(!s)continue;let r=null,n=0,a=!1;for(;r=s.getNextPendingFurnitureFloor();)if(a=this.addObjectFurnitureFromData(s.roomId,r.id,r),!(++n%e)&&new Date().valueOf()-t>=40){this._skipFurnitureCreationForNextFrame=!0;break}for(;!this._skipFurnitureCreationForNextFrame&&(r=s.getNextPendingFurnitureWall());)if(a=this.addObjectWallItemFromData(s.roomId,r.id,r),!(++n%e)&&new Date().valueOf()-t>=40){this._skipFurnitureCreationForNextFrame=!0;break}if(a&&this._roomManager&&(this._roomManager.getRoomInstance(this.getRoomId(s.roomId)).hasUninitializedObjects()||this.objectsInitialized(s.roomId.toString())),this._skipFurnitureCreationForNextFrame)return}}addObjectFurnitureFromData(t,e,s){if(!s){const u=this.getRoomInstanceData(t);if(u&&(s=u.getPendingFurnitureFloor(e)),!s)return!1}let r=s.type;r||(r=this.getFurnitureFloorName(s.typeId));const n=this.createRoomObjectFloor(t,e,r);if(!n)return!1;const a=n.model;if(a&&(a.setValue(I.FURNITURE_COLOR,this.getFurnitureFloorColorIndex(s.typeId)),a.setValue(I.FURNITURE_TYPE_ID,s.typeId),a.setValue(I.FURNITURE_AD_URL,this.getRoomObjectAdUrl(s.type)),a.setValue(I.FURNITURE_REAL_ROOM_OBJECT,s.realRoomObject?1:0),a.setValue(I.FURNITURE_EXPIRY_TIME,s.expiryTime),a.setValue(I.FURNITURE_EXPIRTY_TIMESTAMP,Nt()),a.setValue(I.FURNITURE_USAGE_POLICY,s.usagePolicy),a.setValue(I.FURNITURE_OWNER_ID,s.ownerId),a.setValue(I.FURNITURE_OWNER_NAME,s.ownerName)),!this.updateRoomObjectFloor(t,e,s.location,s.direction,s.state,s.data,s.extra)||s.sizeZ>=0&&!this.updateRoomObjectFloorHeight(t,e,s.sizeZ))return!1;M()&&M().dispatchEvent(new ht(ht.ADDED,t,e,D.FLOOR));const o=this.getPlacedRoomObjectData(t);return o&&o.id===e&&o.category===D.FLOOR&&this.selectRoomObject(t,e,D.FLOOR),n.isReady&&s.synchronized&&this.addObjectToTileMap(t,n),!0}addObjectWallItemFromData(t,e,s){if(!s){const l=this.getRoomInstanceData(t);if(l&&(s=l.getPendingFurnitureWall(e)),!s)return!1}let r="";s.data&&(r=s.data.getLegacyString());let n=this.getFurnitureWallName(s.typeId,r);n||(n="");const a=this.createRoomObjectWall(t,e,n);if(!a)return!1;const o=a.model;if(o&&(o.setValue(I.FURNITURE_COLOR,this.getFurnitureWallColorIndex(s.typeId)),o.setValue(I.FURNITURE_TYPE_ID,s.typeId),o.setValue(I.FURNITURE_AD_URL,this.getRoomObjectAdUrl(s.type)),o.setValue(I.FURNITURE_REAL_ROOM_OBJECT,s.realRoomObject?1:0),o.setValue(I.OBJECT_ACCURATE_Z_VALUE,1),o.setValue(I.FURNITURE_EXPIRY_TIME,s.expiryTime),o.setValue(I.FURNITURE_EXPIRTY_TIMESTAMP,Nt()),o.setValue(I.FURNITURE_USAGE_POLICY,s.usagePolicy),o.setValue(I.FURNITURE_OWNER_ID,s.ownerId),o.setValue(I.FURNITURE_OWNER_NAME,s.ownerName)),!this.updateRoomObjectWall(t,e,s.location,s.direction,s.state,r))return!1;M()&&M().dispatchEvent(new ht(ht.ADDED,t,e,D.WALL));const u=this.getPlacedRoomObjectData(t);return u&&Math.abs(u.id)===e&&u.category===D.WALL&&this.selectRoomObject(t,e,D.WALL),!0}setRoomSessionOwnUser(t,e){const s=this._roomSessionManager.getSession(t);s&&s.setOwnRoomIndex(e);const r=this.getRoomCamera(t);r&&(r.targetId=e,r.targetCategory=D.UNIT,r.activateFollowing(this.cameraFollowDuration))}get cameraFollowDuration(){return 1e3}updateRoomCameras(t){for(const e of this._roomInstanceDatas.values()){if(!e)continue;const s=e.roomCamera;if(!s)continue;let r=null;const n=this.getRoomObject(e.roomId,s.targetId,s.targetCategory);n&&(r=n.getLocation()),r&&(e.roomId!==this._activeRoomId||!this._activeRoomIsDragged)&&this.updateRoomCamera(e.roomId,1,r,t)}if(this._activeRoomWasDragged){const e=this.getRoomInstanceRenderingCanvas(this._activeRoomId,1);e&&this.setRoomInstanceRenderingCanvasOffset(this._activeRoomId,1,new st(e.screenOffsetX+this._activeRoomDragX,e.screenOffsetY+this._activeRoomDragY)),this._activeRoomDragX=0,this._activeRoomDragY=0}}updateRoomCamera(t,e,s,r){const n=this.getRoomInstanceRenderingCanvas(t,e),a=this.getRoomInstanceData(t);if(!n||!a||n.scale!==1)return;const o=n.geometry,u=a.roomCamera,l=this.getRoomInstance(t);if(!o||!u||!l)return;const c=this.getRoomCanvasRectangle(t,e);if(!c)return;let h=Math.floor(s.z)+1;const _=Math.round(c.width),d=Math.round(c.height),f=this.getCanvasBoundingRectangle(e);if(f&&(f.right<0||f.bottom<0||f.left>=_||f.top>=d)&&u.reset(),u.screenWd!==_||u.screenHt!==d||u.scale!==o.scale||u.geometryUpdateId!==o.updateId||!v.isEqual(s,u.targetObjectLoc)||u.isMoving){u.targetObjectLoc=s;const p=new v;p.assign(s),p.x=Math.round(p.x),p.y=Math.round(p.y);const g=l.model.getValue(Be.ROOM_MIN_X)-.5,m=l.model.getValue(Be.ROOM_MIN_Y)-.5,O=l.model.getValue(Be.ROOM_MAX_X)+.5,y=l.model.getValue(Be.ROOM_MAX_Y)+.5,C=Math.round((g+O)/2),P=Math.round((m+y)/2),L=2;let N=new st(p.x-C,p.y-P);const F=o.scale/Math.sqrt(2),x=F/2,U=new ot;U.rotate(-(o.direction.x+90)/180*Math.PI),N=U.apply(N),N.y=N.y*(x/F);const k=c.width/2/F-1,gt=c.height/2/x-1;let X=0,Y=0,lt=0,Gt=0,V=o.getScreenPoint(new v(C,P,L));if(!V)return;if(V.x=V.x+Math.round(c.width/2),V.y=V.y+Math.round(c.height/2),f)if(f.x+=-n.screenOffsetX,f.y+=-n.screenOffsetY,f.width>1&&f.height>1)X=(f.left-V.x-o.scale*.25)/F,lt=(f.right-V.x+o.scale*.25)/F,Y=(f.top-V.y-o.scale*.5)/x,Gt=(f.bottom-V.y+o.scale*.5)/x;else{o.adjustLocation(new v(-30,-30),25);return}else{o.adjustLocation(new v(0,0),25);return}let Pt=!1,K=!1,ut=!1,Kr=!1;Math.round((lt-X)*F)<c.width?(h=2,N.x=(lt+X)/2,ut=!0):(N.x>lt-k&&(N.x=lt-k,Pt=!0),N.x<X+k&&(N.x=X+k,Pt=!0)),Math.round((Gt-Y)*x)<c.height?(h=2,N.y=(Gt+Y)/2,Kr=!0):(N.y>Gt-gt&&(N.y=Gt-gt,K=!0),N.y<Y+gt&&(N.y=Y+gt,K=!0),K&&(N.y=N.y/(x/F))),U.invert(),N=U.apply(N),N.x=N.x+C,N.y=N.y+P;let Vs=.35,vs=.2,yi=.2;const Ou=10,Ln=10;if(yi*_>100&&(yi=100/_),Vs*d>150&&(Vs=150/d),vs*d>150&&(vs=150/d),u.limitedLocationX&&u.screenWd==_&&u.screenHt==d&&(yi=0),u.limitedLocationY&&u.screenWd==_&&u.screenHt==d&&(Vs=0,vs=0),c.width=c.width*(1-yi*2),c.height=c.height*(1-(Vs+vs)),c.width<Ou&&(c.width=Ou),c.height<Ln&&(c.height=Ln),Vs+vs>0?(c.x+=-c.width/2,c.y+=-c.height*(vs/(Vs+vs))):(c.x+=-c.width/2,c.y+=-c.height/2),V=o.getScreenPoint(p),!V)return;if(V){V.x=V.x+n.screenOffsetX,V.y=V.y+n.screenOffsetY,p.z=h,p.x=Math.round(N.x*2)/2,p.y=Math.round(N.y*2)/2,u.location||(o.location=p,this.useOffsetScrolling?u.initializeLocation(new v(0,0,0)):u.initializeLocation(p));const ar=o.getScreenPoint(p),to=new v(0,0,0);ar&&(to.x=ar.x,to.y=ar.y),(V.x<c.left||V.x>c.right)&&!u.centeredLocX||(V.y<c.top||V.y>c.bottom)&&!u.centeredLocY||ut&&!u.centeredLocX&&u.screenWd!=_||Kr&&!u.centeredLocY&&u.screenHt!=d||u.roomWd!=f.width||u.roomHt!=f.height||u.screenWd!=_||u.screenHt!=d?(u.limitedLocationX=Pt,u.limitedLocationY=K,this.useOffsetScrolling?u.target=to:u.target=p):(Pt||(u.limitedLocationX=!1),K||(u.limitedLocationY=!1))}u.centeredLocX=ut,u.centeredLocY=Kr,u.screenWd=_,u.screenHt=d,u.scale=o.scale,u.geometryUpdateId=o.updateId,u.roomWd=f.width,u.roomHt=f.height,this._sessionDataManager.isCameraFollowDisabled||(this.useOffsetScrolling?u.update(r,8):u.update(r,.5)),this.useOffsetScrolling?this.setRoomInstanceRenderingCanvasOffset(this.activeRoomId,1,new st(-u.location.x,-u.location.y)):o.adjustLocation(u.location,25)}else u.limitedLocationX=!1,u.limitedLocationY=!1,u.centeredLocX=!1,u.centeredLocY=!1}getRoomCanvasRectangle(t,e){const s=this.getRoomInstanceRenderingCanvas(t,e);return s?new Kt(0,0,s.width,s.height):null}getRoomObjectBoundingRectangle(t,e,s,r){const n=this.getRoomInstanceGeometry(t,r);if(!n)return null;const a=this.getRoomObject(t,e,s);if(!a)return null;const o=a.visualization;if(!o)return null;const u=o.getBoundingRectangle(),l=this.getRoomInstanceRenderingCanvas(t,r),c=l?l.scale:1,h=n.getScreenPoint(a.getLocation());return!h||(h.x=Math.round(h.x),h.y=Math.round(h.y),u.x=u.x*c,u.y=u.y*c,u.width=u.width*c,u.height=u.height*c,h.x=h.x*c,h.y=h.y*c,u.x+=h.x,u.y+=h.y,!l)?null:(u.x+=Math.round(l.width/2)+l.screenOffsetX,u.y+=Math.round(l.height/2)+l.screenOffsetY,u)}getCanvasBoundingRectangle(t){return this.getRoomObjectBoundingRectangle(this._activeRoomId,It.ROOM_OBJECT_ID,D.ROOM,t)}getFurnitureFloorName(t){return this._roomContentLoader.getFurnitureFloorNameForTypeId(t)}getFurnitureWallName(t,e=null){return this._roomContentLoader.getFurnitureWallNameForTypeId(t,e)}getFurnitureFloorColorIndex(t){return this._roomContentLoader.getFurnitureFloorColorIndex(t)}getFurnitureWallColorIndex(t){return this._roomContentLoader.getFurnitureWallColorIndex(t)}getRoomInstanceData(t){const e=this._roomInstanceDatas.get(t);if(e)return e;const s=new iX(t);return this._roomInstanceDatas.set(s.roomId,s),s}getRoomInstanceModelName(t){const e=this.getRoomInstanceData(t);return e?e.modelName:null}setRoomInstanceModelName(t,e){const s=this.getRoomInstanceData(t);s&&s.setModelName(e)}getRoomTileObjectMap(t){const e=this.getRoomInstanceData(t);return e?e.tileObjectMap:null}getCurrentRoomCamera(){return this.getRoomCamera(this._activeRoomId)}getRoomCamera(t){const e=this.getRoomInstanceData(t);return e?e.roomCamera:null}getSelectedRoomObjectData(t){const e=this.getRoomInstanceData(t);return e?e.selectedObject:null}setSelectedRoomObjectData(t,e){const s=this.getRoomInstanceData(t);if(!s)return null;s.setSelectedObject(e),e&&s.setPlacedObject(null)}getPlacedRoomObjectData(t){const e=this.getRoomInstanceData(t);return e?e.placedObject:null}setPlacedRoomObjectData(t,e){const s=this.getRoomInstanceData(t);if(!s)return null;s.setPlacedObject(e)}cancelRoomObjectPlacement(){this._roomObjectEventHandler&&this._roomObjectEventHandler.cancelRoomObjectPlacement(this._activeRoomId)}getFurnitureStackingHeightMap(t){const e=this.getRoomInstanceData(t);return e?e.furnitureStackingHeightMap:null}setFurnitureStackingHeightMap(t,e){const s=this.getRoomInstanceData(t);if(!s)return null;s.setFurnitureStackingHeightMap(e)}getLegacyWallGeometry(t){const e=this.getRoomInstanceData(t);return e?e.legacyGeometry:null}createRoomObjectAndInitialize(t,e,s,r){const n=this.getRoomInstance(t);return n?n.createRoomObjectAndInitalize(e,s,r):null}getTotalObjectsForManager(t,e){const s=this.getRoomInstance(t);return s?s.getTotalObjectsForManager(e):0}getRoomObject(t,e,s){let r=this.getRoomId(t);return t===0&&(r=It.TEMPORARY_ROOM),this.getObject(r,e,s)}getObject(t,e,s){let r=null;if(this._roomManager&&(r=this._roomManager.getRoomInstance(t)),!r)return null;let n=r.getRoomObject(e,s);if(!n)switch(s){case D.FLOOR:this.addObjectFurnitureFromData(this.getRoomIdFromString(t),e,null),n=r.getRoomObject(e,s);break;case D.WALL:this.addObjectWallItemFromData(this.getRoomIdFromString(t),e,null),n=r.getRoomObject(e,s);break}return n}getRoomObjectByIndex(t,e,s){const r=this.getRoomInstance(t);return r?r.getRoomObjectByIndex(e,s):null}getRoomObjectCategoryForType(t){return this._roomContentLoader.getCategoryForType(t)}getRoomObjectCursor(t){return this.getObject(this.getRoomId(t),It.CURSOR_OBJECT_ID,D.CURSOR)}getRoomObjectSelectionArrow(t){return this.getObject(this.getRoomId(t),It.ARROW_OBJECT_ID,D.CURSOR)}getRoomOwnObject(t){return this.getObject(this.getRoomId(t),It.ROOM_OBJECT_ID,D.ROOM)}getRoomObjectUser(t,e){return this.getObject(this.getRoomId(t),e,D.UNIT)}removeRoomObjectUser(t,e){return this.removeRoomObject(t,e,D.UNIT)}createRoomObjectUser(t,e,s){return this.createRoomObjectAndInitialize(t,e,s,D.UNIT)}getRoomObjectFloor(t,e){return this.getObject(this.getRoomId(t),e,D.FLOOR)}createRoomObjectFloor(t,e,s){return this.createRoomObjectAndInitialize(t,e,s,D.FLOOR)}removeRoomObjectFloor(t,e,s=-1,r=!1){const n=this.getRoomInstanceData(t);if(n&&n.removePendingFunitureFloor(e),this._sessionDataManager.userId===s&&!Ql.isBuilderClubId(e)){const a=this.getRoomObject(t,e,D.FLOOR);if(a){const o=this.getRoomObjectScreenLocation(t,e,D.FLOOR,this._activeRoomActiveCanvas);if(o&&!(a.model.getValue(I.FURNITURE_DISABLE_PICKING_ANIMATION)===1)){const l=a.model.getValue(I.FURNITURE_TYPE_ID),c=a.model.getValue(I.FURNITURE_EXTRAS),h=a.model.getValue(I.FURNITURE_DATA_FORMAT),_=br.getData(h),d=this.getFurnitureFloorIcon(l,null,c,_).data;d&&(async()=>{const f=await ue.generateImage(d),p=new hh(f,o.x,o.y);p.iconName=Hl.INVENTORY,M().dispatchEvent(p)})()}}}this.removeRoomObject(t,e,D.FLOOR),this.setMouseDefault(t,D.FLOOR,e),r&&this.refreshTileObjectMap(t,"RoomEngine.disposeObjectFurniture()")}getRoomObjectWall(t,e){return this.getObject(this.getRoomId(t),e,D.WALL)}removeRoomObjectWall(t,e,s=-1){if(this._sessionDataManager.userId===s&&!Ql.isBuilderClubId(e)){const r=this.getRoomObject(t,e,D.WALL);if(r&&r.type.indexOf("post_it")===-1&&r.type.indexOf("external_image_wallitem")===-1){const n=this.getRoomObjectScreenLocation(t,e,D.WALL,this._activeRoomActiveCanvas);if(n){const a=r.model.getValue(I.FURNITURE_TYPE_ID),o=r.model.getValue(I.FURNITURE_DATA),u=this.getFurnitureWallIcon(a,null,o).data;u&&(async()=>{const l=await ue.generateImage(u);if(M()){const c=new hh(l,n.x,n.y);c.iconName=Hl.INVENTORY,M().dispatchEvent(c)}})()}}}this.removeRoomObject(t,e,D.WALL),this.updateRoomObjectMask(t,e,!1),this.setMouseDefault(t,D.WALL,e)}createRoomObjectWall(t,e,s){return this.createRoomObjectAndInitialize(t,e,s,D.WALL)}removeRoomObject(t,e,s){const r=this.getRoomInstance(t);if(!r)return null;r.removeRoomObject(e,s),M()&&M().dispatchEvent(new ht(ht.REMOVED,t,e,s))}addFurnitureFloor(t,e,s,r,n,a,o,u=NaN,l=-1,c=0,h=0,_="",d=!0,f=!0,p=-1){const g=this.getRoomInstanceData(t);if(!g)return!1;const m=new Kc(e,s,null,r,n,a,o,u,l,c,h,_,d,f,p);return g.addPendingFurnitureFloor(m),!0}addFurnitureFloorByTypeName(t,e,s,r,n,a,o,u=NaN,l=-1,c=0,h=0,_="",d=!0,f=!0,p=-1){const g=this.getRoomInstanceData(t);if(!g)return!1;const m=new Kc(e,0,s,r,n,a,o,u,l,c,h,_,d,f,p);return g.addPendingFurnitureFloor(m),!0}addFurnitureWall(t,e,s,r,n,a,o,u=-1,l=0,c=0,h="",_=!0){const d=this.getRoomInstanceData(t);if(!d)return!1;const f=new Ze;f.setString(o);const p=new Kc(e,s,null,r,n,a,f,NaN,u,l,c,h,!0,_);return d.addPendingFurnitureWall(p),!0}updateRoomObjectFloor(t,e,s,r,n,a,o=null){const u=this.getRoomObjectFloor(t,e);return u?(u.processUpdateMessage(new ye(s,r)),u.processUpdateMessage(new Ht(n,a,o)),!0):!1}updateRoomObjectWall(t,e,s,r,n,a=null){const o=this.getRoomObjectWall(t,e);if(!o||!o.logic)return!1;const u=new ye(s,r),l=new Ze,c=new Ht(n,l);return l.setString(a),o.logic.processUpdateMessage(u),o.logic.processUpdateMessage(c),this.updateRoomObjectMask(t,e),!0}updateRoomObjectWallItemData(t,e,s){const r=this.getRoomObjectWall(t,e);return!r||!r.logic?!1:(r.logic.processUpdateMessage(new Jm(s)),!0)}updateRoomObjectFloorHeight(t,e,s){const r=this.getRoomObjectFloor(t,e);return r?(r.processUpdateMessage(new S0(null,null,s)),!0):!1}updateRoomObjectFloorExpiration(t,e,s){const r=this.getRoomObjectFloor(t,e);return r?(r.model.setValue(I.FURNITURE_EXPIRY_TIME,s),r.model.setValue(I.FURNITURE_EXPIRTY_TIMESTAMP,Nt()),!0):!1}updateRoomObjectWallExpiration(t,e,s){const r=this.getRoomObjectWall(t,e);return r?(r.model.setValue(I.FURNITURE_EXPIRY_TIME,s),r.model.setValue(I.FURNITURE_EXPIRTY_TIMESTAMP,Nt()),!0):!1}updateRoomObjectMask(t,e,s=!0){const r=D.WALL+"_"+e,n=this.getRoomObjectWall(t,e);let a=null;if(n&&n.model){if(n.model.getValue(I.FURNITURE_USES_PLANE_MASK)>0){const u=n.model.getValue(I.FURNITURE_PLANE_MASK_TYPE),l=n.getLocation();s?a=new qe(qe.ADD_MASK,r,u,l):a=new qe(qe.REMOVE_MASK,r)}}else a=new qe(qe.REMOVE_MASK,r);const o=this.getRoomOwnObject(t);o&&o.logic&&a&&o.logic.processUpdateMessage(a)}rollRoomObjectFloor(t,e,s,r){const n=this.getRoomObjectFloor(t,e);n&&n.processUpdateMessage(new kr(s,r,null,!!r))}updateRoomObjectWallLocation(t,e,s){const r=this.getRoomObjectWall(t,e);return r?(r.logic&&r.logic.processUpdateMessage(new kr(s,null,null)),this.updateRoomObjectMask(t,e),!0):!1}addRoomObjectUser(t,e,s,r,n,a,o){if(this.getRoomObjectUser(t,e))return!1;let l=jt.getTypeString(a);l===jt.PET&&(l=this.getPetType(o));const c=this.createRoomObjectUser(t,e,l);return c?(c.processUpdateMessage(new Bh(this.fixedUserLocation(t,s),null,r,n,!1,0)),o&&c.processUpdateMessage(new wh(o)),M()&&M().dispatchEvent(new ht(ht.ADDED,t,e,D.UNIT)),!0):!1}updateRoomObjectUserLocation(t,e,s,r,n=!1,a=0,o=null,u=NaN){const l=this.getRoomObjectUser(t,e);if(!l)return!1;s||(s=l.getLocation()),o||(o=l.getDirection()),isNaN(u)&&(u=l.model.getValue(I.HEAD_DIRECTION)),l.processUpdateMessage(new Bh(this.fixedUserLocation(t,s),this.fixedUserLocation(t,r),o,u,n,a));const c=this._roomSessionManager.getSession(t);return c&&c.ownRoomIndex===e&&M().dispatchEvent(new za(za.ROAME_MOVE_TO,r)),!0}fixedUserLocation(t,e){if(!e)return null;const s=this.getFurnitureStackingHeightMap(t),r=this.getLegacyWallGeometry(t);if(!s||!r)return e;let n=e.z;const a=s.getTileHeight(e.x,e.y),o=r.getHeight(e.x,e.y);return Math.abs(n-a)<.1&&Math.abs(a-o)<.1&&(n=r.getFloorAltitude(e.x,e.y)),new v(e.x,e.y,n)}updateRoomObjectUserAction(t,e,s,r,n=null){const a=this.getRoomObjectUser(t,e);if(!a)return!1;let o=null;switch(s){case I.FIGURE_TALK:o=new $m(r);break;case I.FIGURE_SLEEP:o=new Zm(r===1);break;case I.FIGURE_IS_TYPING:o=new T0(r===1);break;case I.FIGURE_IS_MUTED:o=new d0(r===1);break;case I.FIGURE_CARRY_OBJECT:o=new a0(r,n);break;case I.FIGURE_USE_OBJECT:o=new I0(r);break;case I.FIGURE_DANCE:o=new o0(r);break;case I.FIGURE_GAINED_EXPERIENCE:o=new l0(r);break;case I.FIGURE_NUMBER_VALUE:o=new p0(r);break;case I.FIGURE_SIGN:o=new E0(r);break;case I.FIGURE_EXPRESSION:o=new h0(r);break;case I.FIGURE_IS_PLAYING_GAME:o=new m0(r===1);break;case I.FIGURE_GUIDE_STATUS:o=new $8(r);break}return o?(a.processUpdateMessage(o),!0):!1}updateRoomObjectUserFigure(t,e,s,r=null,n=null,a=!1){const o=this.getRoomObjectUser(t,e);return o?(o.processUpdateMessage(new wh(s,r,n,a)),!0):!1}updateRoomObjectUserFlatControl(t,e,s){const r=this.getRoomObjectUser(t,e);return r?(r.processUpdateMessage(new c0(parseInt(s))),!0):!1}updateRoomObjectUserEffect(t,e,s,r=0){const n=this.getRoomObjectUser(t,e);return n?(n.processUpdateMessage(new u0(s,r)),!0):!1}updateRoomObjectUserGesture(t,e,s){const r=this.getRoomObjectUser(t,e);return r?(r.processUpdateMessage(new _0(s)),!0):!1}updateRoomObjectUserPetGesture(t,e,s){const r=this.getRoomObjectUser(t,e);return r?(r.processUpdateMessage(new g0(s)),!0):!1}updateRoomObjectUserPosture(t,e,s,r=null){const n=this.getRoomObjectUser(t,e);return n?(n.processUpdateMessage(new Qm(s,r)),!0):!1}updateRoomObjectUserOwn(t,e){const s=this.getRoomObjectUser(t,e);s&&s.processUpdateMessage(new f0)}useRoomObject(t,e){const s=this.getRoomObject(this._activeRoomId,t,e);if(s){const r=s.logic;if(r)return r.useObject(),!0}return!1}objectInitialized(t,e,s){const r=this.getRoomIdFromString(t);s===D.WALL&&this.updateRoomObjectMask(r,e);const n=this.getRoomObject(r,e,s);if(n&&n.model&&n.logic){const a=n.model.getValue(I.FURNITURE_DATA_FORMAT);if(!isNaN(a)){const o=br.getData(a);o.initializeFromRoomObjectModel(n.model),n.processUpdateMessage(new Ht(n.getState(0),o))}M().dispatchEvent(new ht(ht.CONTENT_UPDATED,r,e,s))}t!==It.TEMPORARY_ROOM&&this.addObjectToTileMap(r,n)}changeObjectModelData(t,e,s,r,n){const a=this.getObject(this.getRoomId(t),e,s);if(!a||!a.logic)return!1;const o=new R0(r,n);return a.processUpdateMessage(o),!0}changeObjectState(t,e,s){const r=this.getObject(this.getRoomId(t),e,s);if(!r||!r.model)return;let n=r.model.getValue(I.FURNITURE_AUTOMATIC_STATE_INDEX);isNaN(n)?n=1:n=n+1,r.model.setValue(I.FURNITURE_AUTOMATIC_STATE_INDEX,n);const a=r.model.getValue(I.FURNITURE_DATA_FORMAT),o=br.getData(a);o.initializeFromRoomObjectModel(r.model),r.logic&&r.logic.processUpdateMessage(new Ht(n,o))}loadRoomObjectBadgeImage(t,e,s,r,n=!0){let a=null;if(t===0){const u=this._roomManager.getRoomInstance(It.TEMPORARY_ROOM);u&&(a=u.getRoomObject(e,s))}else a=this.getRoomObjectFloor(t,e);if(!a||!a.logic)return;let o=n?this._sessionDataManager.loadGroupBadgeImage(r):this._sessionDataManager.loadBadgeImage(r);if(o)this.putBadgeInObjectAssets(a,r,n);else{if(o="loading_icon",this._badgeListenerObjects||(this._badgeListenerObjects=new Map),!this._badgeListenerObjects.size){const l=c=>{const h=this._badgeListenerObjects&&this._badgeListenerObjects.get(c.badgeId);if(h){for(const _ of h){if(!_)continue;this.putBadgeInObjectAssets(_.object,c.badgeId,_.groupBadge);const d=_.groupBadge?this._sessionDataManager.loadGroupBadgeImage(c.badgeId):this._sessionDataManager.loadBadgeImage(c.badgeId);_.object&&_.object.logic&&_.object.logic.processUpdateMessage(new Pn(c.badgeId,d))}this._badgeListenerObjects.delete(c.badgeId),this._badgeListenerObjects.size||M().removeEventListener(Va.IMAGE_READY,l)}};M().addEventListener(Va.IMAGE_READY,l)}let u=this._badgeListenerObjects.get(r);u||(u=[]),u.push(new rX(a,n)),this._badgeListenerObjects.set(r,u)}a.logic.processUpdateMessage(new Pn(r,o))}putBadgeInObjectAssets(t,e,s=!1){const r=s?this._sessionDataManager.loadGroupBadgeImage(e):this._sessionDataManager.loadBadgeImage(e),n=s?this._sessionDataManager.getGroupBadgeImage(e):this._sessionDataManager.getBadgeImage(e);n&&this._roomContentLoader.addAssetToCollection(t.type,r,n,!1)}dispatchMouseEvent(t,e,s,r,n,a,o,u){const l=this.getRoomInstanceRenderingCanvas(this._activeRoomId,t);if(!l)return;const c=this.getRenderingCanvasOverlay(l),h=this.getOverlayIconSprite(c,It.OBJECT_ICON_SPRITE);if(h){const _=h.getLocalBounds();h.x=e-_.width/2,h.y=s-_.height/2}if(r===J.MOUSE_CLICK&&this._areaSelectionManager.finishSelecting())this._areaSelectionManager.finishSelecting();else if(!this.handleRoomDragging(l,e,s,r,n,a,o)&&!l.handleMouseEvent(e,s,r,n,a,o,u)){let _=null;r===J.MOUSE_CLICK?(M().dispatchEvent(new ht(ht.DESELECTED,this._activeRoomId,-1,D.MINIMUM)),_=at.CLICK):r===J.MOUSE_MOVE?_=at.MOUSE_MOVE:r===J.MOUSE_DOWN?_=at.MOUSE_DOWN:r===J.MOUSE_DOWN_LONG?_=at.MOUSE_DOWN_LONG:r===J.MOUSE_UP&&(_=at.MOUSE_UP),this._roomObjectEventHandler.handleRoomObjectEvent(new at(_,this.getRoomObject(this._activeRoomId,It.ROOM_OBJECT_ID,D.ROOM),null,n),this._activeRoomId)}this._activeRoomActiveCanvas=t,this._activeRoomActiveCanvasMouseX=e,this._activeRoomActiveCanvasMouseY=s}handleRoomDragging(t,e,s,r,n,a,o){if(this.isPlayingGame())return!1;if(this._areaSelectionManager.areaSelectionState===qo.SELECTING)return this._activeRoomIsDragged=!1,this._activeRoomWasDragged=!1,!1;let u=e-this._activeRoomActiveCanvasMouseX,l=s-this._activeRoomActiveCanvasMouseY;if(r===J.MOUSE_DOWN)!n&&!a&&!o&&!this.isDecorating&&this._roomAllowsDragging&&(this._activeRoomIsDragged=!0,this._activeRoomWasDragged=!1,this._activeRoomDragStartX=this._activeRoomActiveCanvasMouseX,this._activeRoomDragStartY=this._activeRoomActiveCanvasMouseY);else if(r===J.MOUSE_UP){if(this._activeRoomIsDragged&&(this._activeRoomIsDragged=!1,this._activeRoomWasDragged)){const c=this.getRoomInstanceData(this._activeRoomId);if(c){const h=c.roomCamera;h&&(this.useOffsetScrolling&&(h.isMoving||(h.centeredLocX=!1,h.centeredLocY=!1),h.resetLocation(new v(-t.screenOffsetX,-t.screenOffsetY))),this._roomDraggingAlwaysCenters&&h.reset())}}}else if(r===J.MOUSE_MOVE)this._activeRoomIsDragged&&(this._activeRoomWasDragged||(u=e-this._activeRoomDragStartX,l=s-this._activeRoomDragStartY,(u<=-It.DRAG_THRESHOLD||u>=It.DRAG_THRESHOLD||l<=-It.DRAG_THRESHOLD||l>=It.DRAG_THRESHOLD)&&(this._activeRoomWasDragged=!0),u=0,l=0),(u!=0||l!=0)&&(this._activeRoomDragX+=u,this._activeRoomDragY+=l,this._activeRoomWasDragged=!0));else if((r===J.MOUSE_CLICK||r===J.DOUBLE_CLICK)&&(this._activeRoomIsDragged=!1,this._activeRoomWasDragged))return this._activeRoomWasDragged=!1,!0;return!1}updateMousePointer(t,e,s){const r=this.getRoomObjectCategoryForType(s);switch(t){case z.MOUSE_BUTTON:this.setMouseButton(this._activeRoomId,r,e);return;default:this.setMouseDefault(this._activeRoomId,r,e);return}}setMouseButton(t,e,s){const r=this._roomSessionManager.getSession(t);if(r&&(e!==D.FLOOR&&e!==D.WALL||r.controllerLevel>=$i.GUEST)){const n=this.getRoomInstanceData(t);n&&n.addButtonMouseCursorOwner(e+"_"+s)&&(this._mouseCursorUpdate=!0)}}setMouseDefault(t,e,s){const r=this.getRoomInstanceData(t);r&&r.removeButtonMouseCursorOwner(e+"_"+s)&&(this._mouseCursorUpdate=!0)}processRoomObjectOperation(t,e,s){if(!this._roomObjectEventHandler)return!1;this._roomObjectEventHandler.modifyRoomObject(this._activeRoomId,t,e,s)}modifyRoomObjectDataWithMap(t,e,s,r){if(!this._roomObjectEventHandler)return!1;e===D.FLOOR&&this._roomObjectEventHandler.modifyRoomObjectDataWithMap(this._activeRoomId,t,e,s,r)}modifyRoomObjectData(t,e,s,r){if(!this._roomObjectEventHandler)return!1;e===D.WALL&&this._roomObjectEventHandler.modifyWallItemData(this._activeRoomId,t,s,r)}processRoomObjectEvent(t){if(!this._roomObjectEventHandler)return;const e=this.getRoomObjectRoomId(t.object);if(!e)return;const s=this.getRoomIdFromString(e);this._roomObjectEventHandler.handleRoomObjectEvent(t,s)}processRoomObjectPlacement(t,e,s,r,n=null,a=null,o=-1,u=-1,l=null){const c=this.getRoomInstance(this._activeRoomId);return!c||c.model.getValue(Be.ROOM_IS_PUBLIC)!==0||!this._roomObjectEventHandler?!1:this._roomObjectEventHandler.processRoomObjectPlacement(t,this._activeRoomId,e,s,r,n,a,o,u,l)}getRoomObjectScreenLocation(t,e,s,r=-1){r==-1&&(r=this._activeRoomActiveCanvas);const n=this.getRoomInstanceGeometry(t,r);if(!n)return null;const a=this.getRoomObject(t,e,s);if(!a)return null;const o=n.getScreenPoint(a.getLocation());if(!o)return null;const u=this.getRoomInstanceRenderingCanvas(t,r);return u?(o.x=o.x*u.scale,o.y=o.y*u.scale,o.x+=u.width/2+u.screenOffsetX,o.y+=u.height/2+u.screenOffsetY,o.x=Math.round(o.x),o.y=Math.round(o.y),o):null}selectRoomObject(t,e,s){this._roomObjectEventHandler&&this._roomObjectEventHandler.setSelectedObject(t,e,s)}setSelectedAvatar(t,e){this._roomObjectEventHandler||this._roomObjectEventHandler.setSelectedAvatar(t,e,!0)}cancelRoomObjectInsert(){this._roomObjectEventHandler&&this._roomObjectEventHandler.cancelRoomObjectInsert(this._activeRoomId)}addOverlayIconSprite(t,e,s,r=1){if(!t||!s)return;let n=this.getOverlayIconSprite(t,e);return n?null:(n=new wt(s),n.label=e,n.scale.set(r),t.addChild(n),n)}onRoomContentLoaded(t,e,s){if(t===-1)return;this._thumbnailObjectIdBank.freeNumber(t-1);const r=this._thumbnailCallbacks.get(e);if(r){this._thumbnailCallbacks.delete(e);const n=this._roomContentLoader.getImage(e);if(n)for(const a of r)a&&a.imageReady(new zu(t,null,n))}}setObjectMoverIconSprite(t,e,s,r=null,n=null,a=-1,o=-1,u=null){let l=null,c=0,h=null;const _=1;if(s)h=this.getRoomObjectImage(this._activeRoomId,t,e,new v,1,null);else if(e===D.FLOOR?(l=this._roomContentLoader.getFurnitureFloorNameForTypeId(t),c=this._roomContentLoader.getFurnitureFloorColorIndex(t)):e===D.WALL&&(l=this._roomContentLoader.getFurnitureWallNameForTypeId(t,r),c=this._roomContentLoader.getFurnitureWallColorIndex(t)),e===D.UNIT)if(l=jt.getTypeString(t),l==="pet"){l=this.getPetType(r);const g=new Xl(r);h=this.getRoomObjectPetImage(g.typeId,g.paletteId,g.color,new v(180),64,null,!0,0,g.customParts,u)}else h=this.getGenericRoomObjectImage(l,r,new v(180),64,null,0,null,n,a,o,u);else h=this.getGenericRoomObjectImage(l,c.toString(),new v,1,null,0,r,n,a,o,u);if(!h||!h.data)return;const d=this.getActiveRoomInstanceRenderingCanvas();if(!d)return;const f=this.getRenderingCanvasOverlay(d);this.removeOverlayIconSprite(f,It.OBJECT_ICON_SPRITE);const p=this.addOverlayIconSprite(f,It.OBJECT_ICON_SPRITE,h.data,_);p&&(p.x=this._activeRoomActiveCanvasMouseX-h.data.width/2,p.y=this._activeRoomActiveCanvasMouseY-h.data.height/2)}getRoomObjectImage(t,e,s,r,n,a,o=0){if(!this._roomManager)return null;let u=-1,l=null,c=null,h="",_=null;const d=this.getRoomId(t),f=this._roomManager.getRoomInstance(d);if(f){const p=f.getRoomObject(e,s);if(p&&p.model)switch(u=p.id,l=p.type,s){case D.FLOOR:case D.WALL:{h=p.model.getValue(I.FURNITURE_COLOR).toString(),_=p.model.getValue(I.FURNITURE_EXTRAS);const g=p.model.getValue(I.FURNITURE_DATA_FORMAT);g!==Ze.FORMAT_KEY&&(c=br.getData(g),c.initializeFromRoomObjectModel(p.model));break}case D.UNIT:h=p.model.getValue(I.FIGURE);break}}return this.getGenericRoomObjectImage(l,h,r,n,a,o,_,c,-1,-1,null,u)}getFurnitureFloorIconUrl(t){const e=this._roomContentLoader.getFurnitureFloorNameForTypeId(t),s=this._roomContentLoader.getFurnitureFloorColorIndex(t).toString();return this._roomContentLoader.getAssetIconUrl(e,s)}getFurnitureFloorIcon(t,e,s=null,r=null){return this.getFurnitureFloorImage(t,new v,1,e,0,s,-1,-1,r)}getFurnitureWallIconUrl(t,e=null){const s=this._roomContentLoader.getFurnitureWallNameForTypeId(t,e),r=this._roomContentLoader.getFurnitureWallColorIndex(t).toString();return this._roomContentLoader.getAssetIconUrl(s,r)}getFurnitureWallIcon(t,e,s=null){return this.getFurnitureWallImage(t,new v,1,e,0,s)}getFurnitureFloorImage(t,e,s,r,n=0,a=null,o=-1,u=-1,l=null){const c=this._roomContentLoader.getFurnitureFloorNameForTypeId(t),h=this._roomContentLoader.getFurnitureFloorColorIndex(t).toString();return s===1&&r?this.getGenericRoomObjectThumbnail(c,h,r,a,l):this.getGenericRoomObjectImage(c,h,e,s,r,n,a,l,o,u)}getFurnitureWallImage(t,e,s,r,n=0,a=null,o=-1,u=-1){const l=this._roomContentLoader.getFurnitureWallNameForTypeId(t),c=this._roomContentLoader.getFurnitureWallColorIndex(t).toString();return s===1&&r?this.getGenericRoomObjectThumbnail(l,c,r,a,null):this.getGenericRoomObjectImage(l,c,e,s,r,n,a,null,o,u)}getRoomObjectPetImage(t,e,s,r,n,a,o=!1,u=0,l=null,c=null){let h=null,_=t+" "+e+" "+s.toString(16);if(o&&(_=_+" head"),l){_=_+(" "+l.length);for(const d of l)_=_+(" "+d.layerId+" "+d.partId+" "+d.paletteId)}return h=this._roomContentLoader.getPetNameForType(t),this.getGenericRoomObjectImage(h,_,r,n,a,u,null,null,-1,-1,c)}getGenericRoomObjectImage(t,e,s,r,n,a=0,o=null,u=null,l=-1,c=-1,h=null,_=-1){if(!this._roomManager)return null;const d=new zu;if(d.id=-1,!t)return d;let f=this._roomManager.getRoomInstance(It.TEMPORARY_ROOM);if(!f&&(f=this._roomManager.createRoomInstance(It.TEMPORARY_ROOM),!f))return d;let p=this._imageObjectIdBank.reserveNumber();const g=this.getRoomObjectCategoryForType(t);if(p<0)return d;p++;const m=f.createRoomObjectAndInitalize(p,t,g);if(!m||!m.model||!m.logic)return d;const O=m.model;switch(g){case D.FLOOR:case D.WALL:O.setValue(I.FURNITURE_COLOR,parseInt(e)),O.setValue(I.FURNITURE_EXTRAS,o);break;case D.UNIT:if(t===jt.USER||t===jt.BOT||t===jt.RENTABLE_BOT||t===jt.PET)O.setValue(I.FIGURE,e);else{const L=new Xl(e);O.setValue(I.PET_PALETTE_INDEX,L.paletteId),O.setValue(I.PET_COLOR,L.color),L.headOnly&&O.setValue(I.PET_HEAD_ONLY,1),L.hasCustomParts&&(O.setValue(I.PET_CUSTOM_LAYER_IDS,L.customLayerIds),O.setValue(I.PET_CUSTOM_PARTS_IDS,L.customPartIds),O.setValue(I.PET_CUSTOM_PALETTE_IDS,L.customPaletteIds)),h&&O.setValue(I.FIGURE_POSTURE,h)}break;case D.ROOM:break}m.setDirection(s);const y=m.visualization;if(!y)return f.removeRoomObject(p,g),d;(l>-1||u)&&(u&&u.getLegacyString()!==""?m.logic.processUpdateMessage(new Ht(parseInt(u.getLegacyString()),u)):m.logic.processUpdateMessage(new Ht(l,u)));const C=new Gs(r,new v(-135,30,0),new v(11,11,5));if(y.update(C,0,!0,!1),c>0){let L=0;for(;L<c;)y.update(C,0,!0,!1),L++}const P=y.getImage();if(d.data=P,d.id=p,!this.isRoomContentTypeLoaded(t)&&n){let L=this._imageCallbacks.get(p.toString());L||(L=[],this._imageCallbacks.set(p.toString(),L)),L.push(n),O.setValue(I.IMAGE_QUERY_SCALE,r)}else f.removeRoomObject(p,g),this._imageObjectIdBank.freeNumber(p-1),d.id=0;return C.dispose(),d}getGenericRoomObjectThumbnail(t,e,s,r=null,n=null){if(!this._roomManager)return null;const a=new zu;if(a.id=-1,!t)return a;let o=this._roomManager.getRoomInstance(It.TEMPORARY_ROOM);if(!o&&(o=this._roomManager.createRoomInstance(It.TEMPORARY_ROOM),!o))return a;let u=this._thumbnailObjectIdBank.reserveNumber();if(this.getRoomObjectCategoryForType(t),u<0)return a;u++,a.id=u,a.data=null,a.image=null;const l=[t,e].join("_"),c=this._roomContentLoader.getImage(l);if(!c&&s){let h=this._thumbnailCallbacks.get(l);h||(h=[],this._thumbnailCallbacks.set(l,h),this._roomContentLoader.downloadImage(u,t,e,null)),h.push(s)}else c&&(a.image=c),this._thumbnailObjectIdBank.freeNumber(u-1),a.id=0;return a}initalizeTemporaryObjectsByType(t,e){const s=this._roomManager.getRoomInstance(It.TEMPORARY_ROOM);if(!s)return;const r=this._roomContentLoader.getCategoryForType(t),n=s.getManager(r);let a=null,o=0;if(n&&n.objects.length){for(const u of n.objects.getValues())if(u&&u.model&&u.type===t){const l=u.id,c=u.visualization;let h=null;if(c){const d=u.model.getValue(I.IMAGE_QUERY_SCALE);a&&o!==d&&(a.dispose(),a=null),a||(o=d,a=new Gs(d,new v(-135,30,0),new v(11,11,5))),c.update(a,0,!0,!1),h=c.image}s.removeRoomObject(l,r),this._imageObjectIdBank.freeNumber(l-1);const _=this._imageCallbacks.get(l.toString());if(_){this._imageCallbacks.delete(l.toString());for(const d of _)d&&(h?d.imageReady(new zu(l,h)):d.imageFailed(l))}}}a&&a.dispose()}setObjectMoverIconSpriteVisible(t){const e=this.getActiveRoomInstanceRenderingCanvas();if(!e)return;const s=this.getRenderingCanvasOverlay(e),r=this.getOverlayIconSprite(s,It.OBJECT_ICON_SPRITE);r&&(r.visible=t)}removeObjectMoverIconSprite(){const t=this.getActiveRoomInstanceRenderingCanvas();if(!t)return;const e=this.getRenderingCanvasOverlay(t);this.removeOverlayIconSprite(e,It.OBJECT_ICON_SPRITE)}getRenderingCanvasOverlay(t){if(!t)return null;const e=t.master;return e?e.getChildByName(It.OVERLAY)??null:null}removeOverlayIconSprite(t,e){if(!t)return!1;let s=t.children.length-1;for(;s>=0;){const r=t.getChildAt(s);if(r&&r.label===e){if(t.removeChildAt(s),r.children.length){const n=r.getChildAt(0);n.parent.removeChild(n),n.destroy()}return!0}s--}return!1}getOverlayIconSprite(t,e){if(!t)return null;let s=t.children.length-1;for(;s>=0;){const r=t.getChildAt(s);if(r&&r.label===e)return r;s--}return null}getRoomObjects(t,e){const s=this.getRoomId(t),r=this._roomManager.getRoomInstance(s);return r?r.getRoomObjectsForCategory(e):[]}addObjectToTileMap(t,e){const s=this.getRoomInstanceData(t).tileObjectMap;s&&s.addRoomObject(e)}refreshTileObjectMap(t,e){const s=this.getRoomInstanceData(t).tileObjectMap;s&&s.populate(this.getRoomObjects(t,D.FLOOR))}createTextureFromRoom(t,e=-1,s=null){let r=null;e>-1?r=this.getRoomInstanceRenderingCanvas(this._activeRoomId,e):r=this.getActiveRoomInstanceRenderingCanvas();let n=null;return s?n=ue.generateTexture({target:r.master,frame:s}):n=r.getDisplayAsTexture(),n}async saveTextureAsScreenshot(t,e=!1){let s=null;e?s=new Af:s=new Lh,await s.assignBitmap(t),G().connection.send(s)}saveBase64AsScreenshot(t,e=!1){let s=null;e?s=new Af:s=new Lh,s.assignBase64(t),G().connection.send(s)}objectsInitialized(t){const e=this.getRoomIdFromString(t);M().dispatchEvent(new ae(ae.OBJECTS_INITIALIZED,e))}getRoomId(t){return t.toString()}getRoomIdFromString(t){if(!t)return-1;const e=t.split("_");return e.length<=0?-1:parseInt(e[0])||0}getRoomObjectRoomId(t){return!t||!t.model?null:t.model.getValue(I.OBJECT_ROOM_ID)}getRoomObjectAdUrl(t){return this._roomContentLoader.getRoomObjectAdUrl(t)}getPetTypeId(t){let e=-1;if(t){const s=t.split(" ");s.length>1&&(e=parseInt(s[0]))}return e}getPetType(t){if(!t)return null;const e=t.split(" ");if(e.length>1){const s=parseInt(e[0]);return this._roomContentLoader.getPetNameForType(s)}return null}isRoomContentTypeLoaded(t){return!!this._roomContentLoader.getCollection(t)}getPetColorResult(t,e){return this._roomContentLoader.getPetColorResult(t,e)}getPetColorResultsForTag(t,e){return this._roomContentLoader.getPetColorResultsForTag(t,e)}deleteRoomObject(t,e){return!this._roomObjectEventHandler||e!==D.WALL?!1:this._roomObjectEventHandler.deleteWallItem(this._activeRoomId,t)}get roomManager(){return this._roomManager}set roomManager(t){this._roomManager=t}get areaSelectionManager(){return this._areaSelectionManager}get objectEventHandler(){return this._roomObjectEventHandler}get activeRoomId(){return this._activeRoomId}get isDecorating(){const t=this._roomSessionManager.getSession(this._activeRoomId);return t&&t.isDecorating||!1}get useOffsetScrolling(){return!0}get selectedAvatarId(){return this._roomObjectEventHandler?this._roomObjectEventHandler.selectedAvatarId:-1}getRoomObjectCount(t,e){return this._roomManager==null?0:this._roomManager.getRoomInstance(t.toString()).getRoomObjectsForCategory(e).length}get moveBlocked(){return this._moveBlocked}set moveBlocked(t){this._moveBlocked=t}isAreaSelectionMode(){return this._areaSelectionManager.areaSelectionState!==qo.NOT_ACTIVE}whereYouClickIsWhereYouGo(){return!this.isAreaSelectionMode()}};It.ROOM_OBJECT_ID=-1,It.ROOM_OBJECT_TYPE="room",It.CURSOR_OBJECT_ID=-2,It.CURSOR_OBJECT_TYPE="tile_cursor",It.ARROW_OBJECT_ID=-3,It.ARROW_OBJECT_TYPE="selection_arrow",It.OVERLAY="overlay",It.OBJECT_ICON_SPRITE="object_icon_sprite",It.DRAG_THRESHOLD=15,It.TEMPORARY_ROOM="temporary_room";let qh=It;const nnt=new qh,iE=()=>nnt,H=class H{constructor(t,e=1){this._previewRoomId=1,this._currentPreviewObjectType=0,this._currentPreviewObjectCategory=0,this._currentPreviewObjectData="",this._currentPreviewRectangle=null,this._currentPreviewCanvasWidth=0,this._currentPreviewCanvasHeight=0,this._currentPreviewScale=64,this._backgroundColor=0,this._backgroundSprite=null,this._disableUpdate=!1,this._roomEngine=t,this._planeParser=new Ae,this._previewRoomId=uh.makeRoomPreviewerId(e),this._addViewOffset=new st(0,0),this.onRoomObjectAdded=this.onRoomObjectAdded.bind(this),this.onRoomInitializedonRoomInitialized=this.onRoomInitializedonRoomInitialized.bind(this),this.isRoomEngineReady&&M()&&(M().addEventListener(ht.ADDED,this.onRoomObjectAdded),M().addEventListener(ht.CONTENT_UPDATED,this.onRoomObjectAdded),M().addEventListener(ae.INITIALIZED,this.onRoomInitializedonRoomInitialized)),this.createRoomForPreview()}dispose(){this.reset(!0),this.isRoomEngineReady&&M()&&(M().removeEventListener(ht.ADDED,this.onRoomObjectAdded),M().removeEventListener(ht.CONTENT_UPDATED,this.onRoomObjectAdded),M().removeEventListener(ae.INITIALIZED,this.onRoomInitializedonRoomInitialized)),this._backgroundSprite&&(this._backgroundSprite.destroy(),this._backgroundSprite=null),this._planeParser&&(this._planeParser.dispose(),this._planeParser=null)}createRoomForPreview(){if(this.isRoomEngineReady){const e=new Ae;e.initializeTileMap(9,9);let s=1;for(;s<8;){let r=1;for(;r<8;)e.setTileHeight(r,s,0),r++;s++}e.initializeFromTileData(),this._roomEngine.createRoomInstance(this._previewRoomId,e.getMapData()),e.dispose()}}reset(t){this.isRoomEngineReady&&(this._roomEngine.removeRoomObjectFloor(this._previewRoomId,H.PREVIEW_OBJECT_ID),this._roomEngine.removeRoomObjectWall(this._previewRoomId,H.PREVIEW_OBJECT_ID),this._roomEngine.removeRoomObjectUser(this._previewRoomId,H.PREVIEW_OBJECT_ID),t||this.updatePreviewRoomView()),this._currentPreviewObjectCategory=D.MINIMUM}updatePreviewModel(t,e,s=!0){const r=new Oh;r.flush(),r.parseModel(t,e,s);const n=this._roomEngine.getLegacyWallGeometry(this._previewRoomId);if(!n)return;this._planeParser.reset();const a=r.width,o=r.height;this._planeParser.initializeTileMap(a,o);const u=null;let l=-1,c=-1,h=0,_=0,d=0;for(;d<o;){let m=0;for(;m<a;){const O=r.getHeight(m,d);(d>0&&d<o-1||m>0&&m<a-1)&&O!=Ae.TILE_BLOCKED&&u==null&&(r.getHeight(m,d-1)==Ae.TILE_BLOCKED&&r.getHeight(m-1,d)==Ae.TILE_BLOCKED&&r.getHeight(m,d+1)==Ae.TILE_BLOCKED&&(l=m+.5,c=d,h=O,_=90),r.getHeight(m,d-1)==Ae.TILE_BLOCKED&&r.getHeight(m-1,d)==Ae.TILE_BLOCKED&&r.getHeight(m+1,d)==Ae.TILE_BLOCKED&&(l=m,c=d+.5,h=O,_=180)),this._planeParser.setTileHeight(m,d,O),m++}d++}this._planeParser.setTileHeight(Math.floor(l),Math.floor(c),h),this._planeParser.initializeFromTileData(r.wallHeight),this._planeParser.setTileHeight(Math.floor(l),Math.floor(c),h+this._planeParser.wallHeight),n.scale=du.DEFAULT_SCALE,n.initialize(a,o,this._planeParser.floorHeight);let f=r.height-1;for(;f>=0;){let m=r.width-1;for(;m>=0;)n.setHeight(m,f,this._planeParser.getTileHeight(m,f)),m--;f--}const p=this._planeParser.getMapData();p.doors.push({x:l,y:c,z:h,dir:_});const g=this.getRoomPreviewOwnRoomObject();g&&g.processUpdateMessage(new kh(p))}addFurnitureIntoRoom(t,e,s=null,r=null){if(s||(s=new Ze),this.isRoomEngineReady&&(this.reset(!1),this._currentPreviewObjectType=t,this._currentPreviewObjectCategory=D.FLOOR,this._currentPreviewObjectData="",this._roomEngine.addFurnitureFloor(this._previewRoomId,H.PREVIEW_OBJECT_ID,t,new v(H.PREVIEW_OBJECT_LOCATION_X,H.PREVIEW_OBJECT_LOCATION_Y,0),e,0,s,NaN,-1,0,-1,"",!0,!1))){this._previousAutomaticStateChangeTime=Nt(),this._automaticStateChange=!0;const n=this._roomEngine.getRoomObject(this._previewRoomId,H.PREVIEW_OBJECT_ID,this._currentPreviewObjectCategory);return n&&r&&n.model.setValue(I.FURNITURE_EXTRAS,r),this.updatePreviewRoomView(),H.PREVIEW_OBJECT_ID}return-1}addWallItemIntoRoom(t,e,s){if(this.isRoomEngineReady){if(this._currentPreviewObjectCategory===D.WALL&&this._currentPreviewObjectType===t&&this._currentPreviewObjectData===s)return H.PREVIEW_OBJECT_ID;if(this.reset(!1),this._currentPreviewObjectType=t,this._currentPreviewObjectCategory=D.WALL,this._currentPreviewObjectData=s,this._roomEngine.addFurnitureWall(this._previewRoomId,H.PREVIEW_OBJECT_ID,t,new v(.5,2.3,1.8),e,0,s,0,0,-1,"",!1))return this._previousAutomaticStateChangeTime=Nt(),this._automaticStateChange=!0,this.updatePreviewRoomView(),H.PREVIEW_OBJECT_ID}return-1}addAvatarIntoRoom(t,e){return this.isRoomEngineReady?(this.reset(!1),this._currentPreviewObjectType=1,this._currentPreviewObjectCategory=D.UNIT,this._currentPreviewObjectData=t,this._roomEngine.addRoomObjectUser(this._previewRoomId,H.PREVIEW_OBJECT_ID,new v(H.PREVIEW_OBJECT_LOCATION_X,H.PREVIEW_OBJECT_LOCATION_Y,0),new v(90,0,0),135,jt.getTypeNumber(jt.USER),t)&&(this._previousAutomaticStateChangeTime=Nt(),this._automaticStateChange=!0,this.updateUserGesture(1),this.updateUserEffect(e),this.updateUserPosture("std")),this.updatePreviewRoomView(),H.PREVIEW_OBJECT_ID):-1}addPetIntoRoom(t){return this.isRoomEngineReady?(this.reset(!1),this._currentPreviewObjectType=1,this._currentPreviewObjectCategory=D.UNIT,this._currentPreviewObjectData=t,this._roomEngine.addRoomObjectUser(this._previewRoomId,H.PREVIEW_OBJECT_ID,new v(H.PREVIEW_OBJECT_LOCATION_X,H.PREVIEW_OBJECT_LOCATION_Y,0),new v(90,0,0),90,jt.getTypeNumber(jt.PET),t)&&(this._previousAutomaticStateChangeTime=Nt(),this._automaticStateChange=!1,this.updateUserGesture(1),this.updateUserPosture("std")),this.updatePreviewRoomView(),H.PREVIEW_OBJECT_ID):-1}updateUserPosture(t,e=""){this.isRoomEngineReady&&this._roomEngine.updateRoomObjectUserPosture(this._previewRoomId,H.PREVIEW_OBJECT_ID,t,e)}updateUserGesture(t){this.isRoomEngineReady&&this._roomEngine.updateRoomObjectUserGesture(this._previewRoomId,H.PREVIEW_OBJECT_ID,t)}updateUserEffect(t){this.isRoomEngineReady&&this._roomEngine.updateRoomObjectUserEffect(this._previewRoomId,H.PREVIEW_OBJECT_ID,t)}updateObjectUserFigure(t,e=null,s=null,r=!1){return this.isRoomEngineReady?this._roomEngine.updateRoomObjectUserFigure(this._previewRoomId,H.PREVIEW_OBJECT_ID,t,e,s,r):!1}updateObjectUserAction(t,e,s=null){this.isRoomEngineReady&&this._roomEngine.updateRoomObjectUserAction(this._previewRoomId,H.PREVIEW_OBJECT_ID,t,e,s)}updateObjectStuffData(t){this.isRoomEngineReady&&this._roomEngine.updateRoomObjectFloor(this._previewRoomId,H.PREVIEW_OBJECT_ID,null,null,t.state,t)}changeRoomObjectState(){this.isRoomEngineReady&&(this._automaticStateChange=!1,this._currentPreviewObjectCategory!==D.UNIT&&this._roomEngine.changeObjectState(this._previewRoomId,H.PREVIEW_OBJECT_ID,this._currentPreviewObjectCategory))}changeRoomObjectDirection(){if(this.isRoomEngineReady){const t=this._roomEngine.getRoomObject(this._previewRoomId,H.PREVIEW_OBJECT_ID,this._currentPreviewObjectCategory);if(!t)return;const e=this._roomEngine.objectEventHandler.getValidRoomObjectDirection(t,!0);switch(this._currentPreviewObjectCategory){case D.FLOOR:{const s=new v(H.PREVIEW_OBJECT_LOCATION_X,H.PREVIEW_OBJECT_LOCATION_Y),r=new v(e,e,e);this._roomEngine.updateRoomObjectFloor(this._previewRoomId,H.PREVIEW_OBJECT_ID,s,r,null,null);return}case D.WALL:return}}}checkAutomaticRoomObjectStateChange(){if(this._automaticStateChange){const t=Nt();t>this._previousAutomaticStateChangeTime+H.AUTOMATIC_STATE_CHANGE_INTERVAL&&(this._previousAutomaticStateChangeTime=t,this.isRoomEngineReady&&this._roomEngine.changeObjectState(this._previewRoomId,H.PREVIEW_OBJECT_ID,this._currentPreviewObjectCategory))}}getRoomCanvas(t,e){if(this.isRoomEngineReady){const s=this._roomEngine.getRoomInstanceDisplay(this._previewRoomId,H.PREVIEW_CANVAS_ID,t,e,this._currentPreviewScale);if(s&&this._backgroundColor!==null){let n=this._backgroundSprite;n||(n=new wt(W.WHITE),s.addChildAt(n,0)),n.width=t,n.height=e,n.tint=this._backgroundColor}this._roomEngine.setRoomInstanceRenderingCanvasMask(this._previewRoomId,H.PREVIEW_CANVAS_ID,!0);const r=this._roomEngine.getRoomInstanceGeometry(this._previewRoomId,H.PREVIEW_CANVAS_ID);return r&&r.adjustLocation(new v(H.PREVIEW_OBJECT_LOCATION_X,H.PREVIEW_OBJECT_LOCATION_Y,0),30),this._currentPreviewCanvasWidth=t,this._currentPreviewCanvasHeight=e,s}return null}modifyRoomCanvas(t,e){this.isRoomEngineReady&&(this._currentPreviewCanvasWidth=t,this._currentPreviewCanvasHeight=e,this._backgroundSprite&&(this._backgroundSprite.width=t,this._backgroundSprite.height=e),this._roomEngine.initializeRoomInstanceRenderingCanvas(this._previewRoomId,H.PREVIEW_CANVAS_ID,t,e))}set addViewOffset(t){this._addViewOffset=t}get addViewOffset(){return this._addViewOffset}updatePreviewObjectBoundingRectangle(t=null){t||(t=new st(0,0));const e=this._roomEngine.getRoomObjectBoundingRectangle(this._previewRoomId,H.PREVIEW_OBJECT_ID,this._currentPreviewObjectCategory,H.PREVIEW_CANVAS_ID);if(e&&t)if(e.x+=-(this._currentPreviewCanvasWidth>>1),e.y+=-(this._currentPreviewCanvasHeight>>1),e.x+=-t.x,e.y+=-t.y,!this._currentPreviewRectangle)this._currentPreviewRectangle=e;else{const s=this._currentPreviewRectangle.clone().enlarge(e);(s.width-this._currentPreviewRectangle.width>this._currentPreviewCanvasWidth-this._currentPreviewRectangle.width>>1||s.height-this._currentPreviewRectangle.height>this._currentPreviewCanvasHeight-this._currentPreviewRectangle.height>>1||this._currentPreviewRectangle.width<1||this._currentPreviewRectangle.height<1)&&(this._currentPreviewRectangle=s)}}validatePreviewSize(t){if(this._currentPreviewRectangle.width<1||this._currentPreviewRectangle.height<1)return t;if(this.isRoomEngineReady){const e=this._roomEngine.getRoomInstanceGeometry(this._previewRoomId,H.PREVIEW_CANVAS_ID);this._currentPreviewRectangle.width>this._currentPreviewCanvasWidth*(1+H.ALLOWED_IMAGE_CUT)||this._currentPreviewRectangle.height>this._currentPreviewCanvasHeight*(1+H.ALLOWED_IMAGE_CUT)?H.ZOOM_ENABLED?this._roomEngine.getRoomInstanceRenderingCanvasScale(this._previewRoomId,H.PREVIEW_CANVAS_ID)!==.5&&(this._roomEngine.setRoomInstanceRenderingCanvasScale(this._previewRoomId,H.PREVIEW_CANVAS_ID,.5,null,null),this._currentPreviewScale=H.SCALE_SMALL,this._currentPreviewNeedsZoomOut=!0,t.x=t.x>>1,t.y=t.y>>1,this._currentPreviewRectangle.x=this._currentPreviewRectangle.x>>2,this._currentPreviewRectangle.y=this._currentPreviewRectangle.y>>2,this._currentPreviewRectangle.width=this._currentPreviewRectangle.width>>2,this._currentPreviewRectangle.height=this._currentPreviewRectangle.height>>2):e.isZoomedIn()&&(e.performZoomOut(),this._currentPreviewScale=H.SCALE_SMALL,this._currentPreviewNeedsZoomOut=!0):this._currentPreviewNeedsZoomOut||(H.ZOOM_ENABLED?this._roomEngine.getRoomInstanceRenderingCanvasScale(this._previewRoomId,H.PREVIEW_CANVAS_ID)!==1&&(this._roomEngine.setRoomInstanceRenderingCanvasScale(this._previewRoomId,H.PREVIEW_CANVAS_ID,1,null,null),this._currentPreviewScale=H.SCALE_NORMAL):e.isZoomedIn()||(e.performZoomIn(),this._currentPreviewScale=H.SCALE_NORMAL))}return t}zoomIn(){this.isRoomEngineReady&&(H.ZOOM_ENABLED?this._roomEngine.setRoomInstanceRenderingCanvasScale(this._previewRoomId,H.PREVIEW_CANVAS_ID,1):this._roomEngine.getRoomInstanceGeometry(this._previewRoomId,H.PREVIEW_CANVAS_ID).performZoomIn()),this._currentPreviewScale=H.SCALE_NORMAL}zoomOut(){this.isRoomEngineReady&&(H.ZOOM_ENABLED?this._roomEngine.setRoomInstanceRenderingCanvasScale(this._previewRoomId,H.PREVIEW_CANVAS_ID,.5):this._roomEngine.getRoomInstanceGeometry(this._previewRoomId,H.PREVIEW_CANVAS_ID).performZoomOut()),this._currentPreviewScale=H.SCALE_SMALL}updateAvatarDirection(t,e){this.isRoomEngineReady&&this._roomEngine.updateRoomObjectUserLocation(this._previewRoomId,H.PREVIEW_OBJECT_ID,new v(H.PREVIEW_OBJECT_LOCATION_X,H.PREVIEW_OBJECT_LOCATION_Y,0),new v(H.PREVIEW_OBJECT_LOCATION_X,H.PREVIEW_OBJECT_LOCATION_Y,0),!1,0,new v(t*45,0,0),e*45)}updateObjectRoom(t=null,e=null,s=null,r=!1){return this.isRoomEngineReady?this._roomEngine.updateRoomInstancePlaneType(this._previewRoomId,t,e,s,r):!1}updateRoomWallsAndFloorVisibility(t,e=!0){this.isRoomEngineReady&&this._roomEngine.updateRoomInstancePlaneVisibility(this._previewRoomId,t,e)}getCanvasOffset(t){if(this._currentPreviewRectangle.width<1||this._currentPreviewRectangle.height<1)return t;let e=-(this._currentPreviewRectangle.left+this._currentPreviewRectangle.right)>>1,s=-(this._currentPreviewRectangle.top+this._currentPreviewRectangle.bottom)>>1;const r=this._currentPreviewCanvasHeight-this._currentPreviewRectangle.height>>1;r>10?s=s+Math.min(15,r-10):this._currentPreviewObjectCategory!==D.UNIT?s=s+(5-Math.max(0,r/2)):s=s-(5-Math.min(0,r/2)),s=s+this._addViewOffset.y,e=e+this._addViewOffset.x;const n=e-t.x,a=s-t.y;if(n!==0||a!==0){const o=Math.sqrt(n*n+a*a);return o>10&&(e=t.x+n*10/o,s=t.y+a*10/o),new st(e,s)}return null}updatePreviewRoomView(t=!1){if(!(this._disableUpdate&&!t)&&(this.checkAutomaticRoomObjectStateChange(),this.isRoomEngineReady)){let e=this._roomEngine.getRoomInstanceRenderingCanvasOffset(this._previewRoomId,H.PREVIEW_CANVAS_ID);if(e&&(this.updatePreviewObjectBoundingRectangle(e),this._currentPreviewRectangle)){const s=this._currentPreviewScale;e=this.validatePreviewSize(e);const r=this.getCanvasOffset(e);r&&this._roomEngine.setRoomInstanceRenderingCanvasOffset(this._previewRoomId,H.PREVIEW_CANVAS_ID,r),this._currentPreviewScale!==s&&(this._currentPreviewRectangle=null)}}}onRoomInitializedonRoomInitialized(t){if(t)switch(t.type){case ae.INITIALIZED:t.roomId===this._previewRoomId&&this.isRoomEngineReady&&this._roomEngine.updateRoomInstancePlaneType(this._previewRoomId,"110","99999");return}}onRoomObjectAdded(t){if(t.roomId===this._previewRoomId&&t.objectId===H.PREVIEW_OBJECT_ID&&t.category===this._currentPreviewObjectCategory){this._currentPreviewRectangle=null,this._currentPreviewNeedsZoomOut=!1;const e=this._roomEngine.getRoomObject(t.roomId,t.objectId,t.category);if(e&&e.model&&t.category===D.WALL){const s=e.model.getValue(I.FURNITURE_SIZE_Z),r=e.model.getValue(I.FURNITURE_CENTER_Z);(s!==null||r!==null)&&this._roomEngine.updateRoomObjectWallLocation(t.roomId,t.objectId,new v(.5,2.3,(3.6-s)/2+r))}}}getRenderingCanvas(){const t=this._roomEngine.getRoomInstanceRenderingCanvas(this._previewRoomId,H.PREVIEW_CANVAS_ID);return t||null}getGenericRoomObjectImage(t,e,s,r,n,a=0,o=null,u=null,l=-1,c=-1,h=null){return this.isRoomEngineReady?this._roomEngine.getGenericRoomObjectImage(t,e,s,r,n,a,o,u,l,c,h):null}getRoomObjectImage(t,e,s,r=0){return this.isRoomEngineReady?this._roomEngine.getRoomObjectImage(this._previewRoomId,H.PREVIEW_OBJECT_ID,this._currentPreviewObjectCategory,t,e,s,r):null}getRoomObjectCurrentImage(){if(this.isRoomEngineReady){const t=this._roomEngine.getRoomObject(this._previewRoomId,H.PREVIEW_OBJECT_ID,this._currentPreviewObjectCategory);if(t&&t.visualization)return t.visualization.getImage()}return null}getRoomPreviewObject(){if(this.isRoomEngineReady){const t=this._roomEngine.getRoomObject(this._previewRoomId,H.PREVIEW_OBJECT_ID,this._currentPreviewObjectCategory);if(t)return t}return null}getRoomPreviewOwnRoomObject(){if(this.isRoomEngineReady){const t=this._roomEngine.getRoomObject(this._previewRoomId,qh.ROOM_OBJECT_ID,D.ROOM);if(t)return t}return null}get isRoomEngineReady(){return!0}get roomId(){return this._previewRoomId}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){this._backgroundColor=t}get width(){return this._currentPreviewCanvasWidth}get height(){return this._currentPreviewCanvasHeight}};H.SCALE_NORMAL=64,H.SCALE_SMALL=32,H.PREVIEW_COUNTER=0,H.PREVIEW_CANVAS_ID=1,H.PREVIEW_OBJECT_ID=1,H.PREVIEW_OBJECT_LOCATION_X=2,H.PREVIEW_OBJECT_LOCATION_Y=2,H.ALLOWED_IMAGE_CUT=.25,H.AUTOMATIC_STATE_CHANGE_INTERVAL=2500,H.ZOOM_ENABLED=!0;let $h=H;const ant=()=>new $h(iE(),++$h.PREVIEW_COUNTER);class D0{constructor(t,e,s,r,n=""){this.id=t,this.length=e,this.name=s,this.creator=r,this.songData=n,this._jukeboxDiskId=-1}get diskId(){return this._jukeboxDiskId}set diskId(t){this._jukeboxDiskId=t}}class wX{constructor(t,e,s,r,n){this._songId=t,this._startPos=e,this._playLength=s,this._fadeInSeconds=r,this._fadeOutSeconds=n,this._playRequestTime=Date.now()}get songId(){return this._songId}get startPos(){return this._startPos<0?0:this._startPos+(Date.now()-this._playRequestTime)/1e3}get playLength(){return this._playLength}get playRequestTime(){return this._playRequestTime}get fadeInSeconds(){return this._fadeInSeconds}get fadeOutSeconds(){return this._fadeOutSeconds}}class GX{constructor(t){this._id=t,this._items=[]}addChannelItem(t){this._items.push(t)}get items(){return this._items}}class BX{constructor(t,e){this._id=t,this._length=e}get id(){return this._id}get length(){return this._length}}class Mg{constructor(t){this._channels=[],this._metaData=new Map;let e=[];const s=t.split(":"),r=s[s.length-1];if(r.indexOf("meta")>-1){const n=r.split(";");for(const a of n){const o=a.split(",");this._metaData.set(o[0],o[1])}e=s.slice(0,s.length-1)}else e=s;for(let n=0;n<e.length/2;n++)if(e[n*2].length>0){const a=parseInt(e[n*2]),o=e[n*2+1].split(";"),u=new GX(a);for(const l of o){const c=l.split(",");if(c.length!==2)return;u.addChannelItem(new BX(parseInt(c[0]),parseInt(c[1])))}this._channels.push(u)}}get channels(){return this._channels}getSampleIds(){const t=[];for(const e of this._channels)for(const s of e.items)t.indexOf(s.id)===-1&&t.push(s.id);return t}get hasMetaData(){return this._metaData.has("meta")}get metaCutMode(){return this._metaData.has("c")}get metaTempo(){const t=this._metaData.get("t");return t?parseInt(t):null}}const fa=class fa{};fa.PRIORITY_ROOM_PLAYLIST=0,fa.PRIORITY_USER_PLAYLIST=1,fa.PRIORITY_SONG_PLAY=2,fa.PRIORITY_PURCHASE_PREVIEW=3,fa.PRIORITY_COUNT=4;let Ss=fa;class kX{constructor(){this._isPlaying=!1,this._currentSongId=-1,this._missingSongInfo=[],this._playPosition=-1,this._disposed=!1,this._messageEvents=[],this.onSongInfoReceivedEvent=this.onSongInfoReceivedEvent.bind(this)}init(){this._messageEvents=[new pR(this.onNowPlayingMessageEvent.bind(this)),new gR(this.onJukeboxSongDisksMessageEvent.bind(this)),new fR(this.onJukeboxPlayListFullMessageEvent.bind(this))],this._messageEvents.forEach(t=>G().registerMessageEvent(t)),M().addEventListener(Ha.SIR_TRAX_SONG_INFO_RECEIVED,this.onSongInfoReceivedEvent)}dispose(){this._disposed||(this.stopPlaying(),M().removeEventListener(Ha.SIR_TRAX_SONG_INFO_RECEIVED,this.onSongInfoReceivedEvent),this._messageEvents.forEach(t=>G().removeMessageEvent(t)),this._disposed=!0)}onNowPlayingMessageEvent(t){const e=t.getParser();this._isPlaying=e.currentSongId!==-1,e.currentSongId>=0?($r().musicController.playSong(e.currentSongId,Ss.PRIORITY_ROOM_PLAYLIST,e.syncCount/1e3,0,1,1),this._currentSongId=e.currentSongId):this.stopPlaying(),e.nextSongId>=0&&$r().musicController.addSongInfoRequest(e.nextSongId),this._playPosition=e.currentPosition,M().dispatchEvent(new Dr(Dr.NPE_SONG_CHANGED,Ss.PRIORITY_ROOM_PLAYLIST,e.currentSongId,e.currentPosition))}onJukeboxSongDisksMessageEvent(t){const e=t.getParser();this._entries=[];for(let s=0;s<e.songDisks.length;s++){const r=e.songDisks.getWithIndex(s),n=e.songDisks.getKey(s);let a=$r().musicController.getSongInfo(r);a||(a=new D0(r,-1,null,null,null),this._missingSongInfo.indexOf(r)<0&&(this._missingSongInfo.push(r),$r().musicController.requestSongInfoWithoutSamples(r))),a.diskId=n,this._entries.push(a)}this._missingSongInfo.length||M().dispatchEvent(new Mr(Mr.PLUE_PLAY_LIST_UPDATED))}onJukeboxPlayListFullMessageEvent(t){M().dispatchEvent(new Mr(Mr.PLUE_PLAY_LIST_FULL))}onSongInfoReceivedEvent(t){for(let s=0;s<this.length;s++){const r=this._entries[s];if(r.id===t.id){const n=r.diskId,a=$r().musicController.getSongInfo(t.id);a&&(a.diskId=n,this._entries[s]=a);break}}const e=this._missingSongInfo.indexOf(t.id);e>=0&&this._missingSongInfo.splice(e,1),this._missingSongInfo.length||M().dispatchEvent(new Mr(Mr.PLUE_PLAY_LIST_UPDATED))}stopPlaying(){$r().musicController.stop(this.priority),this._currentSongId=-1,this._playPosition=-1,this._isPlaying=!1}getEntry(t){return t<0||t>=this._entries.length?null:this._entries[t]}requestPlayList(){G().connection.send(new VA)}get priority(){return Ss.PRIORITY_ROOM_PLAYLIST}get length(){return this._entries?this._entries.length:0}get playPosition(){return this._playPosition}get currentSongId(){return this._currentSongId}get isPlaying(){return this._isPlaying}get entries(){return this._entries}}var Kn={};/*!
* howler.js v2.2.4
* howlerjs.com
*
* (c) 2013-2020, James Simpson of GoldFire Studios
* goldfirestudios.com
*
* MIT License
*/(function(i){(function(){var t=function(){this.init()};t.prototype={init:function(){var h=this||e;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 _=this||e;if(h=parseFloat(h),_.ctx||c(),typeof h<"u"&&h>=0&&h<=1){if(_._volume=h,_._muted)return _;_.usingWebAudio&&_.masterGain.gain.setValueAtTime(h,e.ctx.currentTime);for(var d=0;d<_._howls.length;d++)if(!_._howls[d]._webAudio)for(var f=_._howls[d]._getSoundIds(),p=0;p<f.length;p++){var g=_._howls[d]._soundById(f[p]);g&&g._node&&(g._node.volume=g._volume*h)}return _}return _._volume},mute:function(h){var _=this||e;_.ctx||c(),_._muted=h,_.usingWebAudio&&_.masterGain.gain.setValueAtTime(h?0:_._volume,e.ctx.currentTime);for(var d=0;d<_._howls.length;d++)if(!_._howls[d]._webAudio)for(var f=_._howls[d]._getSoundIds(),p=0;p<f.length;p++){var g=_._howls[d]._soundById(f[p]);g&&g._node&&(g._node.muted=h?!0:g._muted)}return _},stop:function(){for(var h=this||e,_=0;_<h._howls.length;_++)h._howls[_].stop();return h},unload:function(){for(var h=this||e,_=h._howls.length-1;_>=0;_--)h._howls[_].unload();return h.usingWebAudio&&h.ctx&&typeof h.ctx.close<"u"&&(h.ctx.close(),h.ctx=null,c()),h},codecs:function(h){return(this||e)._codecs[h.replace(/^x-/,"")]},_setup:function(){var h=this||e;if(h.state=h.ctx&&h.ctx.state||"suspended",h._autoSuspend(),!h.usingWebAudio)if(typeof Audio<"u")try{var _=new Audio;typeof _.oncanplaythrough>"u"&&(h._canPlayEvent="canplay")}catch{h.noAudio=!0}else h.noAudio=!0;try{var _=new Audio;_.muted&&(h.noAudio=!0)}catch{}return h.noAudio||h._setupCodecs(),h},_setupCodecs:function(){var h=this||e,_=null;try{_=typeof Audio<"u"?new Audio:null}catch{return h}if(!_||typeof _.canPlayType!="function")return h;var d=_.canPlayType("audio/mpeg;").replace(/^no$/,""),f=h._navigator?h._navigator.userAgent:"",p=f.match(/OPR\/(\d+)/g),g=p&&parseInt(p[0].split("/")[1],10)<33,m=f.indexOf("Safari")!==-1&&f.indexOf("Chrome")===-1,O=f.match(/Version\/(.*?) /),y=m&&O&&parseInt(O[1],10)<15;return h._codecs={mp3:!!(!g&&(d||_.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!d,opus:!!_.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!_.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!_.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(_.canPlayType('audio/wav; codecs="1"')||_.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!_.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!_.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(_.canPlayType("audio/x-m4a;")||_.canPlayType("audio/m4a;")||_.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(_.canPlayType("audio/x-m4b;")||_.canPlayType("audio/m4b;")||_.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(_.canPlayType("audio/x-mp4;")||_.canPlayType("audio/mp4;")||_.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!y&&_.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!y&&_.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!_.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(_.canPlayType("audio/x-flac;")||_.canPlayType("audio/flac;")).replace(/^no$/,"")},h},_unlockAudio:function(){var h=this||e;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 _=function(d){for(;h._html5AudioPool.length<h.html5PoolSize;)try{var f=new Audio;f._unlocked=!0,h._releaseHtml5Audio(f)}catch{h.noAudio=!0;break}for(var p=0;p<h._howls.length;p++)if(!h._howls[p]._webAudio)for(var g=h._howls[p]._getSoundIds(),m=0;m<g.length;m++){var O=h._howls[p]._soundById(g[m]);O&&O._node&&!O._node._unlocked&&(O._node._unlocked=!0,O._node.load())}h._autoResume();var y=h.ctx.createBufferSource();y.buffer=h._scratchBuffer,y.connect(h.ctx.destination),typeof y.start>"u"?y.noteOn(0):y.start(0),typeof h.ctx.resume=="function"&&h.ctx.resume(),y.onended=function(){y.disconnect(0),h._audioUnlocked=!0,document.removeEventListener("touchstart",_,!0),document.removeEventListener("touchend",_,!0),document.removeEventListener("click",_,!0),document.removeEventListener("keydown",_,!0);for(var C=0;C<h._howls.length;C++)h._howls[C]._emit("unlock")}};return document.addEventListener("touchstart",_,!0),document.addEventListener("touchend",_,!0),document.addEventListener("click",_,!0),document.addEventListener("keydown",_,!0),h}},_obtainHtml5Audio:function(){var h=this||e;if(h._html5AudioPool.length)return h._html5AudioPool.pop();var _=new Audio().play();return _&&typeof Promise<"u"&&(_ instanceof Promise||typeof _.then=="function")&&_.catch(function(){console.warn("HTML5 Audio pool exhausted, returning potentially locked audio object.")}),new Audio},_releaseHtml5Audio:function(h){var _=this||e;return h._unlocked&&_._html5AudioPool.push(h),_},_autoSuspend:function(){var h=this;if(!(!h.autoSuspend||!h.ctx||typeof h.ctx.suspend>"u"||!e.usingWebAudio)){for(var _=0;_<h._howls.length;_++)if(h._howls[_]._webAudio){for(var d=0;d<h._howls[_]._sounds.length;d++)if(!h._howls[_]._sounds[d]._paused)return h}return h._suspendTimer&&clearTimeout(h._suspendTimer),h._suspendTimer=setTimeout(function(){if(h.autoSuspend){h._suspendTimer=null,h.state="suspending";var f=function(){h.state="suspended",h._resumeAfterSuspend&&(delete h._resumeAfterSuspend,h._autoResume())};h.ctx.suspend().then(f,f)}},3e4),h}},_autoResume:function(){var h=this;if(!(!h.ctx||typeof h.ctx.resume>"u"||!e.usingWebAudio))return h.state==="running"&&h.ctx.state!=="interrupted"&&h._suspendTimer?(clearTimeout(h._suspendTimer),h._suspendTimer=null):h.state==="suspended"||h.state==="running"&&h.ctx.state==="interrupted"?(h.ctx.resume().then(function(){h.state="running";for(var _=0;_<h._howls.length;_++)h._howls[_]._emit("resume")}),h._suspendTimer&&(clearTimeout(h._suspendTimer),h._suspendTimer=null)):h.state==="suspending"&&(h._resumeAfterSuspend=!0),h}};var e=new t,s=function(h){var _=this;if(!h.src||h.src.length===0){console.error("An array of source files must be passed with any new Howl.");return}_.init(h)};s.prototype={init:function(h){var _=this;return e.ctx||c(),_._autoplay=h.autoplay||!1,_._format=typeof h.format!="string"?h.format:[h.format],_._html5=h.html5||!1,_._muted=h.mute||!1,_._loop=h.loop||!1,_._pool=h.pool||5,_._preload=typeof h.preload=="boolean"||h.preload==="metadata"?h.preload:!0,_._rate=h.rate||1,_._sprite=h.sprite||{},_._src=typeof h.src!="string"?h.src:[h.src],_._volume=h.volume!==void 0?h.volume:1,_._xhr={method:h.xhr&&h.xhr.method?h.xhr.method:"GET",headers:h.xhr&&h.xhr.headers?h.xhr.headers:null,withCredentials:h.xhr&&h.xhr.withCredentials?h.xhr.withCredentials:!1},_._duration=0,_._state="unloaded",_._sounds=[],_._endTimers={},_._queue=[],_._playLock=!1,_._onend=h.onend?[{fn:h.onend}]:[],_._onfade=h.onfade?[{fn:h.onfade}]:[],_._onload=h.onload?[{fn:h.onload}]:[],_._onloaderror=h.onloaderror?[{fn:h.onloaderror}]:[],_._onplayerror=h.onplayerror?[{fn:h.onplayerror}]:[],_._onpause=h.onpause?[{fn:h.onpause}]:[],_._onplay=h.onplay?[{fn:h.onplay}]:[],_._onstop=h.onstop?[{fn:h.onstop}]:[],_._onmute=h.onmute?[{fn:h.onmute}]:[],_._onvolume=h.onvolume?[{fn:h.onvolume}]:[],_._onrate=h.onrate?[{fn:h.onrate}]:[],_._onseek=h.onseek?[{fn:h.onseek}]:[],_._onunlock=h.onunlock?[{fn:h.onunlock}]:[],_._onresume=[],_._webAudio=e.usingWebAudio&&!_._html5,typeof e.ctx<"u"&&e.ctx&&e.autoUnlock&&e._unlockAudio(),e._howls.push(_),_._autoplay&&_._queue.push({event:"play",action:function(){_.play()}}),_._preload&&_._preload!=="none"&&_.load(),_},load:function(){var h=this,_=null;if(e.noAudio){h._emit("loaderror",null,"No audio support.");return}typeof h._src=="string"&&(h._src=[h._src]);for(var d=0;d<h._src.length;d++){var f,p;if(h._format&&h._format[d])f=h._format[d];else{if(p=h._src[d],typeof p!="string"){h._emit("loaderror",null,"Non-string found in selected audio sources - ignoring.");continue}f=/^data:audio\/([^;,]+);/i.exec(p),f||(f=/\.([^.]+)$/.exec(p.split("?",1)[0])),f&&(f=f[1].toLowerCase())}if(f||console.warn('No file extension was found. Consider using the "format" property or specify an extension.'),f&&e.codecs(f)){_=h._src[d];break}}if(!_){h._emit("loaderror",null,"No codec support for selected audio sources.");return}return h._src=_,h._state="loading",window.location.protocol==="https:"&&_.slice(0,5)==="http:"&&(h._html5=!0,h._webAudio=!1),new r(h),h._webAudio&&a(h),h},play:function(h,_){var d=this,f=null;if(typeof h=="number")f=h,h=null;else{if(typeof h=="string"&&d._state==="loaded"&&!d._sprite[h])return null;if(typeof h>"u"&&(h="__default",!d._playLock)){for(var p=0,g=0;g<d._sounds.length;g++)d._sounds[g]._paused&&!d._sounds[g]._ended&&(p++,f=d._sounds[g]._id);p===1?h=null:f=null}}var m=f?d._soundById(f):d._inactiveSound();if(!m)return null;if(f&&!h&&(h=m._sprite||"__default"),d._state!=="loaded"){m._sprite=h,m._ended=!1;var O=m._id;return d._queue.push({event:"play",action:function(){d.play(O)}}),O}if(f&&!m._paused)return _||d._loadQueue("play"),m._id;d._webAudio&&e._autoResume();var y=Math.max(0,m._seek>0?m._seek:d._sprite[h][0]/1e3),C=Math.max(0,(d._sprite[h][0]+d._sprite[h][1])/1e3-y),P=C*1e3/Math.abs(m._rate),L=d._sprite[h][0]/1e3,N=(d._sprite[h][0]+d._sprite[h][1])/1e3;m._sprite=h,m._ended=!1;var F=function(){m._paused=!1,m._seek=y,m._start=L,m._stop=N,m._loop=!!(m._loop||d._sprite[h][2])};if(y>=N){d._ended(m);return}var x=m._node;if(d._webAudio){var U=function(){d._playLock=!1,F(),d._refreshBuffer(m);var Y=m._muted||d._muted?0:m._volume;x.gain.setValueAtTime(Y,e.ctx.currentTime),m._playStart=e.ctx.currentTime,typeof x.bufferSource.start>"u"?m._loop?x.bufferSource.noteGrainOn(0,y,86400):x.bufferSource.noteGrainOn(0,y,C):m._loop?x.bufferSource.start(0,y,86400):x.bufferSource.start(0,y,C),P!==1/0&&(d._endTimers[m._id]=setTimeout(d._ended.bind(d,m),P)),_||setTimeout(function(){d._emit("play",m._id),d._loadQueue()},0)};e.state==="running"&&e.ctx.state!=="interrupted"?U():(d._playLock=!0,d.once("resume",U),d._clearTimer(m._id))}else{var k=function(){x.currentTime=y,x.muted=m._muted||d._muted||e._muted||x.muted,x.volume=m._volume*e.volume(),x.playbackRate=m._rate;try{var Y=x.play();if(Y&&typeof Promise<"u"&&(Y instanceof Promise||typeof Y.then=="function")?(d._playLock=!0,F(),Y.then(function(){d._playLock=!1,x._unlocked=!0,_?d._loadQueue():d._emit("play",m._id)}).catch(function(){d._playLock=!1,d._emit("playerror",m._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."),m._ended=!0,m._paused=!0})):_||(d._playLock=!1,F(),d._emit("play",m._id)),x.playbackRate=m._rate,x.paused){d._emit("playerror",m._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.");return}h!=="__default"||m._loop?d._endTimers[m._id]=setTimeout(d._ended.bind(d,m),P):(d._endTimers[m._id]=function(){d._ended(m),x.removeEventListener("ended",d._endTimers[m._id],!1)},x.addEventListener("ended",d._endTimers[m._id],!1))}catch(lt){d._emit("playerror",m._id,lt)}};x.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(x.src=d._src,x.load());var gt=window&&window.ejecta||!x.readyState&&e._navigator.isCocoonJS;if(x.readyState>=3||gt)k();else{d._playLock=!0,d._state="loading";var X=function(){d._state="loaded",k(),x.removeEventListener(e._canPlayEvent,X,!1)};x.addEventListener(e._canPlayEvent,X,!1),d._clearTimer(m._id)}}return m._id},pause:function(h){var _=this;if(_._state!=="loaded"||_._playLock)return _._queue.push({event:"pause",action:function(){_.pause(h)}}),_;for(var d=_._getSoundIds(h),f=0;f<d.length;f++){_._clearTimer(d[f]);var p=_._soundById(d[f]);if(p&&!p._paused&&(p._seek=_.seek(d[f]),p._rateSeek=0,p._paused=!0,_._stopFade(d[f]),p._node))if(_._webAudio){if(!p._node.bufferSource)continue;typeof p._node.bufferSource.stop>"u"?p._node.bufferSource.noteOff(0):p._node.bufferSource.stop(0),_._cleanBuffer(p._node)}else(!isNaN(p._node.duration)||p._node.duration===1/0)&&p._node.pause();arguments[1]||_._emit("pause",p?p._id:null)}return _},stop:function(h,_){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"stop",action:function(){d.stop(h)}}),d;for(var f=d._getSoundIds(h),p=0;p<f.length;p++){d._clearTimer(f[p]);var g=d._soundById(f[p]);g&&(g._seek=g._start||0,g._rateSeek=0,g._paused=!0,g._ended=!0,d._stopFade(f[p]),g._node&&(d._webAudio?g._node.bufferSource&&(typeof g._node.bufferSource.stop>"u"?g._node.bufferSource.noteOff(0):g._node.bufferSource.stop(0),d._cleanBuffer(g._node)):(!isNaN(g._node.duration)||g._node.duration===1/0)&&(g._node.currentTime=g._start||0,g._node.pause(),g._node.duration===1/0&&d._clearSound(g._node))),_||d._emit("stop",g._id))}return d},mute:function(h,_){var d=this;if(d._state!=="loaded"||d._playLock)return d._queue.push({event:"mute",action:function(){d.mute(h,_)}}),d;if(typeof _>"u")if(typeof h=="boolean")d._muted=h;else return d._muted;for(var f=d._getSoundIds(_),p=0;p<f.length;p++){var g=d._soundById(f[p]);g&&(g._muted=h,g._interval&&d._stopFade(g._id),d._webAudio&&g._node?g._node.gain.setValueAtTime(h?0:g._volume,e.ctx.currentTime):g._node&&(g._node.muted=e._muted?!0:h),d._emit("mute",g._id))}return d},volume:function(){var h=this,_=arguments,d,f;if(_.length===0)return h._volume;if(_.length===1||_.length===2&&typeof _[1]>"u"){var p=h._getSoundIds(),g=p.indexOf(_[0]);g>=0?f=parseInt(_[0],10):d=parseFloat(_[0])}else _.length>=2&&(d=parseFloat(_[0]),f=parseInt(_[1],10));var m;if(typeof d<"u"&&d>=0&&d<=1){if(h._state!=="loaded"||h._playLock)return h._queue.push({event:"volume",action:function(){h.volume.apply(h,_)}}),h;typeof f>"u"&&(h._volume=d),f=h._getSoundIds(f);for(var O=0;O<f.length;O++)m=h._soundById(f[O]),m&&(m._volume=d,_[2]||h._stopFade(f[O]),h._webAudio&&m._node&&!m._muted?m._node.gain.setValueAtTime(d,e.ctx.currentTime):m._node&&!m._muted&&(m._node.volume=d*e.volume()),h._emit("volume",m._id))}else return m=f?h._soundById(f):h._sounds[0],m?m._volume:0;return h},fade:function(h,_,d,f){var p=this;if(p._state!=="loaded"||p._playLock)return p._queue.push({event:"fade",action:function(){p.fade(h,_,d,f)}}),p;h=Math.min(Math.max(0,parseFloat(h)),1),_=Math.min(Math.max(0,parseFloat(_)),1),d=parseFloat(d),p.volume(h,f);for(var g=p._getSoundIds(f),m=0;m<g.length;m++){var O=p._soundById(g[m]);if(O){if(f||p._stopFade(g[m]),p._webAudio&&!O._muted){var y=e.ctx.currentTime,C=y+d/1e3;O._volume=h,O._node.gain.setValueAtTime(h,y),O._node.gain.linearRampToValueAtTime(_,C)}p._startFadeInterval(O,h,_,d,g[m],typeof f>"u")}}return p},_startFadeInterval:function(h,_,d,f,p,g){var m=this,O=_,y=d-_,C=Math.abs(y/.01),P=Math.max(4,C>0?f/C:f),L=Date.now();h._fadeTo=d,h._interval=setInterval(function(){var N=(Date.now()-L)/f;L=Date.now(),O+=y*N,O=Math.round(O*100)/100,y<0?O=Math.max(d,O):O=Math.min(d,O),m._webAudio?h._volume=O:m.volume(O,h._id,!0),g&&(m._volume=O),(d<_&&O<=d||d>_&&O>=d)&&(clearInterval(h._interval),h._interval=null,h._fadeTo=null,m.volume(d,h._id),m._emit("fade",h._id))},P)},_stopFade:function(h){var _=this,d=_._soundById(h);return d&&d._interval&&(_._webAudio&&d._node.gain.cancelScheduledValues(e.ctx.currentTime),clearInterval(d._interval),d._interval=null,_.volume(d._fadeTo,h),d._fadeTo=null,_._emit("fade",h)),_},loop:function(){var h=this,_=arguments,d,f,p;if(_.length===0)return h._loop;if(_.length===1)if(typeof _[0]=="boolean")d=_[0],h._loop=d;else return p=h._soundById(parseInt(_[0],10)),p?p._loop:!1;else _.length===2&&(d=_[0],f=parseInt(_[1],10));for(var g=h._getSoundIds(f),m=0;m<g.length;m++)p=h._soundById(g[m]),p&&(p._loop=d,h._webAudio&&p._node&&p._node.bufferSource&&(p._node.bufferSource.loop=d,d&&(p._node.bufferSource.loopStart=p._start||0,p._node.bufferSource.loopEnd=p._stop,h.playing(g[m])&&(h.pause(g[m],!0),h.play(g[m],!0)))));return h},rate:function(){var h=this,_=arguments,d,f;if(_.length===0)f=h._sounds[0]._id;else if(_.length===1){var p=h._getSoundIds(),g=p.indexOf(_[0]);g>=0?f=parseInt(_[0],10):d=parseFloat(_[0])}else _.length===2&&(d=parseFloat(_[0]),f=parseInt(_[1],10));var m;if(typeof d=="number"){if(h._state!=="loaded"||h._playLock)return h._queue.push({event:"rate",action:function(){h.rate.apply(h,_)}}),h;typeof f>"u"&&(h._rate=d),f=h._getSoundIds(f);for(var O=0;O<f.length;O++)if(m=h._soundById(f[O]),m){h.playing(f[O])&&(m._rateSeek=h.seek(f[O]),m._playStart=h._webAudio?e.ctx.currentTime:m._playStart),m._rate=d,h._webAudio&&m._node&&m._node.bufferSource?m._node.bufferSource.playbackRate.setValueAtTime(d,e.ctx.currentTime):m._node&&(m._node.playbackRate=d);var y=h.seek(f[O]),C=(h._sprite[m._sprite][0]+h._sprite[m._sprite][1])/1e3-y,P=C*1e3/Math.abs(m._rate);(h._endTimers[f[O]]||!m._paused)&&(h._clearTimer(f[O]),h._endTimers[f[O]]=setTimeout(h._ended.bind(h,m),P)),h._emit("rate",m._id)}}else return m=h._soundById(f),m?m._rate:h._rate;return h},seek:function(){var h=this,_=arguments,d,f;if(_.length===0)h._sounds.length&&(f=h._sounds[0]._id);else if(_.length===1){var p=h._getSoundIds(),g=p.indexOf(_[0]);g>=0?f=parseInt(_[0],10):h._sounds.length&&(f=h._sounds[0]._id,d=parseFloat(_[0]))}else _.length===2&&(d=parseFloat(_[0]),f=parseInt(_[1],10));if(typeof f>"u")return 0;if(typeof d=="number"&&(h._state!=="loaded"||h._playLock))return h._queue.push({event:"seek",action:function(){h.seek.apply(h,_)}}),h;var m=h._soundById(f);if(m)if(typeof d=="number"&&d>=0){var O=h.playing(f);O&&h.pause(f,!0),m._seek=d,m._ended=!1,h._clearTimer(f),!h._webAudio&&m._node&&!isNaN(m._node.duration)&&(m._node.currentTime=d);var y=function(){O&&h.play(f,!0),h._emit("seek",f)};if(O&&!h._webAudio){var C=function(){h._playLock?setTimeout(C,0):y()};setTimeout(C,0)}else y()}else if(h._webAudio){var P=h.playing(f)?e.ctx.currentTime-m._playStart:0,L=m._rateSeek?m._rateSeek-m._seek:0;return m._seek+(L+P*Math.abs(m._rate))}else return m._node.currentTime;return h},playing:function(h){var _=this;if(typeof h=="number"){var d=_._soundById(h);return d?!d._paused:!1}for(var f=0;f<_._sounds.length;f++)if(!_._sounds[f]._paused)return!0;return!1},duration:function(h){var _=this,d=_._duration,f=_._soundById(h);return f&&(d=_._sprite[f._sprite][1]/1e3),d},state:function(){return this._state},unload:function(){for(var h=this,_=h._sounds,d=0;d<_.length;d++)_[d]._paused||h.stop(_[d]._id),h._webAudio||(h._clearSound(_[d]._node),_[d]._node.removeEventListener("error",_[d]._errorFn,!1),_[d]._node.removeEventListener(e._canPlayEvent,_[d]._loadFn,!1),_[d]._node.removeEventListener("ended",_[d]._endFn,!1),e._releaseHtml5Audio(_[d]._node)),delete _[d]._node,h._clearTimer(_[d]._id);var f=e._howls.indexOf(h);f>=0&&e._howls.splice(f,1);var p=!0;for(d=0;d<e._howls.length;d++)if(e._howls[d]._src===h._src||h._src.indexOf(e._howls[d]._src)>=0){p=!1;break}return n&&p&&delete n[h._src],e.noAudio=!1,h._state="unloaded",h._sounds=[],h=null,null},on:function(h,_,d,f){var p=this,g=p["_on"+h];return typeof _=="function"&&g.push(f?{id:d,fn:_,once:f}:{id:d,fn:_}),p},off:function(h,_,d){var f=this,p=f["_on"+h],g=0;if(typeof _=="number"&&(d=_,_=null),_||d)for(g=0;g<p.length;g++){var m=d===p[g].id;if(_===p[g].fn&&m||!_&&m){p.splice(g,1);break}}else if(h)f["_on"+h]=[];else{var O=Object.keys(f);for(g=0;g<O.length;g++)O[g].indexOf("_on")===0&&Array.isArray(f[O[g]])&&(f[O[g]]=[])}return f},once:function(h,_,d){var f=this;return f.on(h,_,d,1),f},_emit:function(h,_,d){for(var f=this,p=f["_on"+h],g=p.length-1;g>=0;g--)(!p[g].id||p[g].id===_||h==="load")&&(setTimeout((function(m){m.call(this,_,d)}).bind(f,p[g].fn),0),p[g].once&&f.off(h,p[g].fn,p[g].id));return f._loadQueue(h),f},_loadQueue:function(h){var _=this;if(_._queue.length>0){var d=_._queue[0];d.event===h&&(_._queue.shift(),_._loadQueue()),h||d.action()}return _},_ended:function(h){var _=this,d=h._sprite;if(!_._webAudio&&h._node&&!h._node.paused&&!h._node.ended&&h._node.currentTime<h._stop)return setTimeout(_._ended.bind(_,h),100),_;var f=!!(h._loop||_._sprite[d][2]);if(_._emit("end",h._id),!_._webAudio&&f&&_.stop(h._id,!0).play(h._id),_._webAudio&&f){_._emit("play",h._id),h._seek=h._start||0,h._rateSeek=0,h._playStart=e.ctx.currentTime;var p=(h._stop-h._start)*1e3/Math.abs(h._rate);_._endTimers[h._id]=setTimeout(_._ended.bind(_,h),p)}return _._webAudio&&!f&&(h._paused=!0,h._ended=!0,h._seek=h._start||0,h._rateSeek=0,_._clearTimer(h._id),_._cleanBuffer(h._node),e._autoSuspend()),!_._webAudio&&!f&&_.stop(h._id,!0),_},_clearTimer:function(h){var _=this;if(_._endTimers[h]){if(typeof _._endTimers[h]!="function")clearTimeout(_._endTimers[h]);else{var d=_._soundById(h);d&&d._node&&d._node.removeEventListener("ended",_._endTimers[h],!1)}delete _._endTimers[h]}return _},_soundById:function(h){for(var _=this,d=0;d<_._sounds.length;d++)if(h===_._sounds[d]._id)return _._sounds[d];return null},_inactiveSound:function(){var h=this;h._drain();for(var _=0;_<h._sounds.length;_++)if(h._sounds[_]._ended)return h._sounds[_].reset();return new r(h)},_drain:function(){var h=this,_=h._pool,d=0,f=0;if(!(h._sounds.length<_)){for(f=0;f<h._sounds.length;f++)h._sounds[f]._ended&&d++;for(f=h._sounds.length-1;f>=0;f--){if(d<=_)return;h._sounds[f]._ended&&(h._webAudio&&h._sounds[f]._node&&h._sounds[f]._node.disconnect(0),h._sounds.splice(f,1),d--)}}},_getSoundIds:function(h){var _=this;if(typeof h>"u"){for(var d=[],f=0;f<_._sounds.length;f++)d.push(_._sounds[f]._id);return d}else return[h]},_refreshBuffer:function(h){var _=this;return h._node.bufferSource=e.ctx.createBufferSource(),h._node.bufferSource.buffer=n[_._src],h._panner?h._node.bufferSource.connect(h._panner):h._node.bufferSource.connect(h._node),h._node.bufferSource.loop=h._loop,h._loop&&(h._node.bufferSource.loopStart=h._start||0,h._node.bufferSource.loopEnd=h._stop||0),h._node.bufferSource.playbackRate.setValueAtTime(h._rate,e.ctx.currentTime),_},_cleanBuffer:function(h){var _=this,d=e._navigator&&e._navigator.vendor.indexOf("Apple")>=0;if(!h.bufferSource)return _;if(e._scratchBuffer&&h.bufferSource&&(h.bufferSource.onended=null,h.bufferSource.disconnect(0),d))try{h.bufferSource.buffer=e._scratchBuffer}catch{}return h.bufferSource=null,_},_clearSound:function(h){var _=/MSIE |Trident\//.test(e._navigator&&e._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,_=h._parent;return h._muted=_._muted,h._loop=_._loop,h._volume=_._volume,h._rate=_._rate,h._seek=0,h._paused=!0,h._ended=!0,h._sprite="__default",h._id=++e._counter,_._sounds.push(h),h.create(),h},create:function(){var h=this,_=h._parent,d=e._muted||h._muted||h._parent._muted?0:h._volume;return _._webAudio?(h._node=typeof e.ctx.createGain>"u"?e.ctx.createGainNode():e.ctx.createGain(),h._node.gain.setValueAtTime(d,e.ctx.currentTime),h._node.paused=!0,h._node.connect(e.masterGain)):e.noAudio||(h._node=e._obtainHtml5Audio(),h._errorFn=h._errorListener.bind(h),h._node.addEventListener("error",h._errorFn,!1),h._loadFn=h._loadListener.bind(h),h._node.addEventListener(e._canPlayEvent,h._loadFn,!1),h._endFn=h._endListener.bind(h),h._node.addEventListener("ended",h._endFn,!1),h._node.src=_._src,h._node.preload=_._preload===!0?"auto":_._preload,h._node.volume=d*e.volume(),h._node.load()),h},reset:function(){var h=this,_=h._parent;return h._muted=_._muted,h._loop=_._loop,h._volume=_._volume,h._rate=_._rate,h._seek=0,h._rateSeek=0,h._paused=!0,h._ended=!0,h._sprite="__default",h._id=++e._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,_=h._parent;_._duration=Math.ceil(h._node.duration*10)/10,Object.keys(_._sprite).length===0&&(_._sprite={__default:[0,_._duration*1e3]}),_._state!=="loaded"&&(_._state="loaded",_._emit("load"),_._loadQueue()),h._node.removeEventListener(e._canPlayEvent,h._loadFn,!1)},_endListener:function(){var h=this,_=h._parent;_._duration===1/0&&(_._duration=Math.ceil(h._node.duration*10)/10,_._sprite.__default[1]===1/0&&(_._sprite.__default[1]=_._duration*1e3),_._ended(h)),h._node.removeEventListener("ended",h._endFn,!1)}};var n={},a=function(h){var _=h._src;if(n[_]){h._duration=n[_].duration,l(h);return}if(/^data:[^;]+;base64,/.test(_)){for(var d=atob(_.split(",")[1]),f=new Uint8Array(d.length),p=0;p<d.length;++p)f[p]=d.charCodeAt(p);u(f.buffer,h)}else{var g=new XMLHttpRequest;g.open(h._xhr.method,_,!0),g.withCredentials=h._xhr.withCredentials,g.responseType="arraybuffer",h._xhr.headers&&Object.keys(h._xhr.headers).forEach(function(m){g.setRequestHeader(m,h._xhr.headers[m])}),g.onload=function(){var m=(g.status+"")[0];if(m!=="0"&&m!=="2"&&m!=="3"){h._emit("loaderror",null,"Failed loading audio file with status: "+g.status+".");return}u(g.response,h)},g.onerror=function(){h._webAudio&&(h._html5=!0,h._webAudio=!1,h._sounds=[],delete n[_],h.load())},o(g)}},o=function(h){try{h.send()}catch{h.onerror()}},u=function(h,_){var d=function(){_._emit("loaderror",null,"Decoding audio data failed.")},f=function(p){p&&_._sounds.length>0?(n[_._src]=p,l(_,p)):d()};typeof Promise<"u"&&e.ctx.decodeAudioData.length===1?e.ctx.decodeAudioData(h).then(f).catch(d):e.ctx.decodeAudioData(h,f,d)},l=function(h,_){_&&!h._duration&&(h._duration=_.duration),Object.keys(h._sprite).length===0&&(h._sprite={__default:[0,h._duration*1e3]}),h._state!=="loaded"&&(h._state="loaded",h._emit("load"),h._loadQueue())},c=function(){if(e.usingWebAudio){try{typeof AudioContext<"u"?e.ctx=new AudioContext:typeof webkitAudioContext<"u"?e.ctx=new webkitAudioContext:e.usingWebAudio=!1}catch{e.usingWebAudio=!1}e.ctx||(e.usingWebAudio=!1);var h=/iP(hone|od|ad)/.test(e._navigator&&e._navigator.platform),_=e._navigator&&e._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),d=_?parseInt(_[1],10):null;if(h&&d&&d<9){var f=/safari/.test(e._navigator&&e._navigator.userAgent.toLowerCase());e._navigator&&!f&&(e.usingWebAudio=!1)}e.usingWebAudio&&(e.masterGain=typeof e.ctx.createGain>"u"?e.ctx.createGainNode():e.ctx.createGain(),e.masterGain.gain.setValueAtTime(e._muted?0:e._volume,e.ctx.currentTime),e.masterGain.connect(e.ctx.destination)),e._setup()}};i.Howler=e,i.Howl=s,typeof yu<"u"?(yu.HowlerGlobal=t,yu.Howler=e,yu.Howl=s,yu.Sound=r):typeof window<"u"&&(window.HowlerGlobal=t,window.Howler=e,window.Howl=s,window.Sound=r)})();/*!
* Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.
*
* howler.js v2.2.4
* howlerjs.com
*
* (c) 2013-2020, James Simpson of GoldFire Studios
* goldfirestudios.com
*
* MIT License
*/(function(){HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(e){var s=this;if(!s.ctx||!s.ctx.listener)return s;for(var r=s._howls.length-1;r>=0;r--)s._howls[r].stereo(e);return s},HowlerGlobal.prototype.pos=function(e,s,r){var n=this;if(!n.ctx||!n.ctx.listener)return n;if(s=typeof s!="number"?n._pos[1]:s,r=typeof r!="number"?n._pos[2]:r,typeof e=="number")n._pos=[e,s,r],typeof n.ctx.listener.positionX<"u"?(n.ctx.listener.positionX.setTargetAtTime(n._pos[0],Howler.ctx.currentTime,.1),n.ctx.listener.positionY.setTargetAtTime(n._pos[1],Howler.ctx.currentTime,.1),n.ctx.listener.positionZ.setTargetAtTime(n._pos[2],Howler.ctx.currentTime,.1)):n.ctx.listener.setPosition(n._pos[0],n._pos[1],n._pos[2]);else return n._pos;return n},HowlerGlobal.prototype.orientation=function(e,s,r,n,a,o){var u=this;if(!u.ctx||!u.ctx.listener)return u;var l=u._orientation;if(s=typeof s!="number"?l[1]:s,r=typeof r!="number"?l[2]:r,n=typeof n!="number"?l[3]:n,a=typeof a!="number"?l[4]:a,o=typeof o!="number"?l[5]:o,typeof e=="number")u._orientation=[e,s,r,n,a,o],typeof u.ctx.listener.forwardX<"u"?(u.ctx.listener.forwardX.setTargetAtTime(e,Howler.ctx.currentTime,.1),u.ctx.listener.forwardY.setTargetAtTime(s,Howler.ctx.currentTime,.1),u.ctx.listener.forwardZ.setTargetAtTime(r,Howler.ctx.currentTime,.1),u.ctx.listener.upX.setTargetAtTime(n,Howler.ctx.currentTime,.1),u.ctx.listener.upY.setTargetAtTime(a,Howler.ctx.currentTime,.1),u.ctx.listener.upZ.setTargetAtTime(o,Howler.ctx.currentTime,.1)):u.ctx.listener.setOrientation(e,s,r,n,a,o);else return l;return u},Howl.prototype.init=function(e){return function(s){var r=this;return r._orientation=s.orientation||[1,0,0],r._stereo=s.stereo||null,r._pos=s.pos||null,r._pannerAttr={coneInnerAngle:typeof s.coneInnerAngle<"u"?s.coneInnerAngle:360,coneOuterAngle:typeof s.coneOuterAngle<"u"?s.coneOuterAngle:360,coneOuterGain:typeof s.coneOuterGain<"u"?s.coneOuterGain:0,distanceModel:typeof s.distanceModel<"u"?s.distanceModel:"inverse",maxDistance:typeof s.maxDistance<"u"?s.maxDistance:1e4,panningModel:typeof s.panningModel<"u"?s.panningModel:"HRTF",refDistance:typeof s.refDistance<"u"?s.refDistance:1,rolloffFactor:typeof s.rolloffFactor<"u"?s.rolloffFactor:1},r._onstereo=s.onstereo?[{fn:s.onstereo}]:[],r._onpos=s.onpos?[{fn:s.onpos}]:[],r._onorientation=s.onorientation?[{fn:s.onorientation}]:[],e.call(this,s)}}(Howl.prototype.init),Howl.prototype.stereo=function(e,s){var r=this;if(!r._webAudio)return r;if(r._state!=="loaded")return r._queue.push({event:"stereo",action:function(){r.stereo(e,s)}}),r;var n=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof s>"u")if(typeof e=="number")r._stereo=e,r._pos=[e,0,0];else return r._stereo;for(var a=r._getSoundIds(s),o=0;o<a.length;o++){var u=r._soundById(a[o]);if(u)if(typeof e=="number")u._stereo=e,u._pos=[e,0,0],u._node&&(u._pannerAttr.panningModel="equalpower",(!u._panner||!u._panner.pan)&&t(u,n),n==="spatial"?typeof u._panner.positionX<"u"?(u._panner.positionX.setValueAtTime(e,Howler.ctx.currentTime),u._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),u._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):u._panner.setPosition(e,0,0):u._panner.pan.setValueAtTime(e,Howler.ctx.currentTime)),r._emit("stereo",u._id);else return u._stereo}return r},Howl.prototype.pos=function(e,s,r,n){var a=this;if(!a._webAudio)return a;if(a._state!=="loaded")return a._queue.push({event:"pos",action:function(){a.pos(e,s,r,n)}}),a;if(s=typeof s!="number"?0:s,r=typeof r!="number"?-.5:r,typeof n>"u")if(typeof e=="number")a._pos=[e,s,r];else return a._pos;for(var o=a._getSoundIds(n),u=0;u<o.length;u++){var l=a._soundById(o[u]);if(l)if(typeof e=="number")l._pos=[e,s,r],l._node&&((!l._panner||l._panner.pan)&&t(l,"spatial"),typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(e,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(s,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(r,Howler.ctx.currentTime)):l._panner.setPosition(e,s,r)),a._emit("pos",l._id);else return l._pos}return a},Howl.prototype.orientation=function(e,s,r,n){var a=this;if(!a._webAudio)return a;if(a._state!=="loaded")return a._queue.push({event:"orientation",action:function(){a.orientation(e,s,r,n)}}),a;if(s=typeof s!="number"?a._orientation[1]:s,r=typeof r!="number"?a._orientation[2]:r,typeof n>"u")if(typeof e=="number")a._orientation=[e,s,r];else return a._orientation;for(var o=a._getSoundIds(n),u=0;u<o.length;u++){var l=a._soundById(o[u]);if(l)if(typeof e=="number")l._orientation=[e,s,r],l._node&&(l._panner||(l._pos||(l._pos=a._pos||[0,0,-.5]),t(l,"spatial")),typeof l._panner.orientationX<"u"?(l._panner.orientationX.setValueAtTime(e,Howler.ctx.currentTime),l._panner.orientationY.setValueAtTime(s,Howler.ctx.currentTime),l._panner.orientationZ.setValueAtTime(r,Howler.ctx.currentTime)):l._panner.setOrientation(e,s,r)),a._emit("orientation",l._id);else return l._orientation}return a},Howl.prototype.pannerAttr=function(){var e=this,s=arguments,r,n,a;if(!e._webAudio)return e;if(s.length===0)return e._pannerAttr;if(s.length===1)if(typeof s[0]=="object")r=s[0],typeof n>"u"&&(r.pannerAttr||(r.pannerAttr={coneInnerAngle:r.coneInnerAngle,coneOuterAngle:r.coneOuterAngle,coneOuterGain:r.coneOuterGain,distanceModel:r.distanceModel,maxDistance:r.maxDistance,refDistance:r.refDistance,rolloffFactor:r.rolloffFactor,panningModel:r.panningModel}),e._pannerAttr={coneInnerAngle:typeof r.pannerAttr.coneInnerAngle<"u"?r.pannerAttr.coneInnerAngle:e._coneInnerAngle,coneOuterAngle:typeof r.pannerAttr.coneOuterAngle<"u"?r.pannerAttr.coneOuterAngle:e._coneOuterAngle,coneOuterGain:typeof r.pannerAttr.coneOuterGain<"u"?r.pannerAttr.coneOuterGain:e._coneOuterGain,distanceModel:typeof r.pannerAttr.distanceModel<"u"?r.pannerAttr.distanceModel:e._distanceModel,maxDistance:typeof r.pannerAttr.maxDistance<"u"?r.pannerAttr.maxDistance:e._maxDistance,refDistance:typeof r.pannerAttr.refDistance<"u"?r.pannerAttr.refDistance:e._refDistance,rolloffFactor:typeof r.pannerAttr.rolloffFactor<"u"?r.pannerAttr.rolloffFactor:e._rolloffFactor,panningModel:typeof r.pannerAttr.panningModel<"u"?r.pannerAttr.panningModel:e._panningModel});else return a=e._soundById(parseInt(s[0],10)),a?a._pannerAttr:e._pannerAttr;else s.length===2&&(r=s[0],n=parseInt(s[1],10));for(var o=e._getSoundIds(n),u=0;u<o.length;u++)if(a=e._soundById(o[u]),a){var l=a._pannerAttr;l={coneInnerAngle:typeof r.coneInnerAngle<"u"?r.coneInnerAngle:l.coneInnerAngle,coneOuterAngle:typeof r.coneOuterAngle<"u"?r.coneOuterAngle:l.coneOuterAngle,coneOuterGain:typeof r.coneOuterGain<"u"?r.coneOuterGain:l.coneOuterGain,distanceModel:typeof r.distanceModel<"u"?r.distanceModel:l.distanceModel,maxDistance:typeof r.maxDistance<"u"?r.maxDistance:l.maxDistance,refDistance:typeof r.refDistance<"u"?r.refDistance:l.refDistance,rolloffFactor:typeof r.rolloffFactor<"u"?r.rolloffFactor:l.rolloffFactor,panningModel:typeof r.panningModel<"u"?r.panningModel:l.panningModel};var c=a._panner;c||(a._pos||(a._pos=e._pos||[0,0,-.5]),t(a,"spatial"),c=a._panner),c.coneInnerAngle=l.coneInnerAngle,c.coneOuterAngle=l.coneOuterAngle,c.coneOuterGain=l.coneOuterGain,c.distanceModel=l.distanceModel,c.maxDistance=l.maxDistance,c.refDistance=l.refDistance,c.rolloffFactor=l.rolloffFactor,c.panningModel=l.panningModel}return e},Sound.prototype.init=function(e){return function(){var s=this,r=s._parent;s._orientation=r._orientation,s._stereo=r._stereo,s._pos=r._pos,s._pannerAttr=r._pannerAttr,e.call(this),s._stereo?r.stereo(s._stereo):s._pos&&r.pos(s._pos[0],s._pos[1],s._pos[2],s._id)}}(Sound.prototype.init),Sound.prototype.reset=function(e){return function(){var s=this,r=s._parent;return s._orientation=r._orientation,s._stereo=r._stereo,s._pos=r._pos,s._pannerAttr=r._pannerAttr,s._stereo?r.stereo(s._stereo):s._pos?r.pos(s._pos[0],s._pos[1],s._pos[2],s._id):s._panner&&(s._panner.disconnect(0),s._panner=void 0,r._refreshBuffer(s)),e.call(this)}}(Sound.prototype.reset);var t=function(e,s){s=s||"spatial",s==="spatial"?(e._panner=Howler.ctx.createPanner(),e._panner.coneInnerAngle=e._pannerAttr.coneInnerAngle,e._panner.coneOuterAngle=e._pannerAttr.coneOuterAngle,e._panner.coneOuterGain=e._pannerAttr.coneOuterGain,e._panner.distanceModel=e._pannerAttr.distanceModel,e._panner.maxDistance=e._pannerAttr.maxDistance,e._panner.refDistance=e._pannerAttr.refDistance,e._panner.rolloffFactor=e._pannerAttr.rolloffFactor,e._panner.panningModel=e._pannerAttr.panningModel,typeof e._panner.positionX<"u"?(e._panner.positionX.setValueAtTime(e._pos[0],Howler.ctx.currentTime),e._panner.positionY.setValueAtTime(e._pos[1],Howler.ctx.currentTime),e._panner.positionZ.setValueAtTime(e._pos[2],Howler.ctx.currentTime)):e._panner.setPosition(e._pos[0],e._pos[1],e._pos[2]),typeof e._panner.orientationX<"u"?(e._panner.orientationX.setValueAtTime(e._orientation[0],Howler.ctx.currentTime),e._panner.orientationY.setValueAtTime(e._orientation[1],Howler.ctx.currentTime),e._panner.orientationZ.setValueAtTime(e._orientation[2],Howler.ctx.currentTime)):e._panner.setOrientation(e._orientation[0],e._orientation[1],e._orientation[2])):(e._panner=Howler.ctx.createStereoPanner(),e._panner.pan.setValueAtTime(e._stereo,Howler.ctx.currentTime)),e._panner.connect(e._node),e._paused||e._parent.pause(e._id,!0).play(e._id,!0)}})()})(Kn);class ont{constructor(t){this._sampleUrl=t,this._isPlaying=!1,this._startPos=0,this._currentPos=0,this._playLength=0,this._sequence=[],this._cache=new Map}async play(t,e,s=0,r=-1){this.reset(),this._currentSong=new Mg(t),this._startPos=Math.trunc(s),this._playLength=r,this._currentPos=this._startPos,this._currentSongId=e,await this.preload(),this._isPlaying=!0,this.tick(),this._tickerInterval=window.setInterval(()=>this.tick(),1e3)}reset(){this._isPlaying=!1,window.clearInterval(this._tickerInterval),Kn.Howler.stop(),this._currentSongId=-1,this._currentSong=void 0,this._tickerInterval=void 0,this._startPos=0,this._playLength=0,this._sequence=[],this._currentPos=0}pause(){this._isPlaying=!1,Kn.Howler.stop()}resume(){this._isPlaying=!0}stop(){const t=this._currentSongId;this.reset(),M().dispatchEvent(new Ya(Ya.TRAX_SONG_COMPLETE,t))}setVolume(t){Kn.Howler.volume(t)}getVolume(){return Kn.Howler.volume()}async getSample(t){let e=this._cache.get(t);return e||(e=await this.loadSong(t)),Promise.resolve(e)}async preload(){if(this._sequence=[],!!this._currentSong){for(const t of this._currentSong.channels){const e=[];for(const s of t.items){const r=await this.getSample(s.id),n=Math.ceil(s.length*2/Math.ceil(r.duration()));for(let a=0;a<n;a++)for(let o=0;o<Math.ceil(r.duration());o++)e.push({sampleId:s.id,offset:o})}this._sequence.push(e)}this._playLength<=0&&(this._playLength=Math.max(...this._sequence.map(t=>t.length)))}}async preloadSamplesForSong(t){const e=new Mg(t);await Promise.all(e.getSampleIds().map(s=>this.getSample(s)))}async loadSong(t){return new Promise((e,s)=>{const r=new Kn.Howl({src:[this._sampleUrl.replace("%sample%",t.toString())],preload:!0});r.once("load",()=>{this._cache.set(t,r),e(r)}),r.once("loaderror",()=>{it.error("failed to load sample "+t),s("failed to load sample "+t)})})}tick(){this._currentPos>this._playLength-1&&this.stop(),this._isPlaying&&(this._currentSong&&this.playPosition(this._currentPos),this._currentPos++)}playPosition(t){if(!(!this._currentSong||!this._sequence)&&Kn.Howler._audioUnlocked)for(const e of this._sequence){const s=e[t];if(!s||s.sampleId===-1||s.sampleId===0)continue;const r=this._cache.get(s.sampleId);r&&(s.offset===0?r.play():r.playing()||(r.seek(s.offset),r.play()))}}}const ga=class ga{constructor(){this._timerInstance=1,this._songRequestList=[],this._requestedSongs=new Map,this._availableSongs=new Map,this._songRequestsPerPriority=[],this._songRequestCountsPerPriority=[],this._diskInventoryMissingData=[],this._songDiskInventory=new xe,this._priorityPlaying=-1,this._requestNumberPlaying=-1,this._songIdPlaying=1,this._previousNotifiedSongId=-1,this._previousNotificationTime=-1,this.onJukeboxInit=this.onJukeboxInit.bind(this),this.onJukeboxDispose=this.onJukeboxDispose.bind(this),this.onSoundMachineInit=this.onSoundMachineInit.bind(this),this.onSoundMachineDispose=this.onSoundMachineDispose.bind(this),this.onTraxSongComplete=this.onTraxSongComplete.bind(this)}init(){G().registerMessageEvent(new mR(this.onTraxSongInfoMessageEvent.bind(this))),G().registerMessageEvent(new ER(this.onSongDiskInventoryMessage.bind(this))),this._timerInstance=window.setInterval(this.onTick.bind(this),1e3),this._musicPlayer=new ont(vt().getValue("external.samples.url")),M().addEventListener(ie.JUKEBOX_INIT,this.onJukeboxInit),M().addEventListener(ie.JUKEBOX_DISPOSE,this.onJukeboxDispose),M().addEventListener(ie.SOUND_MACHINE_INIT,this.onSoundMachineInit),M().addEventListener(ie.SOUND_MACHINE_DISPOSE,this.onSoundMachineDispose),M().addEventListener(Ya.TRAX_SONG_COMPLETE,this.onTraxSongComplete)}getRoomItemPlaylist(t){return this._roomItemPlaylist}get songDiskInventory(){return this._songDiskInventory}getSongDiskInventorySize(){return this._songDiskInventory.length}getSongDiskInventoryDiskId(t){return t>=0&&t<this._songDiskInventory.length?this._songDiskInventory.getKey(t):-1}getSongDiskInventorySongId(t){return t>=0&&t<this._songDiskInventory.length?this._songDiskInventory.getWithIndex(t):-1}getSongInfo(t){const e=this.getSongDataEntry(t);return e||this.requestSongInfoWithoutSamples(t),e}getSongIdPlayingAtPriority(t){return t!==this._priorityPlaying?-1:this._songIdPlaying}stop(t){const e=t===this._priorityPlaying,s=this.getTopRequestPriority()===t;e?(this.resetSongStartRequest(t),this.stopSongAtPriority(t)):(this.resetSongStartRequest(t),s&&this.reRequestSongAtPriority(this._priorityPlaying))}addSongInfoRequest(t){this.requestSong(t,!0)}requestSongInfoWithoutSamples(t){this.requestSong(t,!1)}requestUserSongDisks(){G().connection.send(new WA)}updateVolume(t){this._musicPlayer.setVolume(t)}dispose(){this._timerInstance&&(clearInterval(this._timerInstance),this._timerInstance=void 0),M().removeEventListener(ie.JUKEBOX_INIT,this.onJukeboxInit),M().removeEventListener(ie.JUKEBOX_DISPOSE,this.onJukeboxDispose),M().removeEventListener(ie.SOUND_MACHINE_INIT,this.onSoundMachineInit),M().removeEventListener(ie.SOUND_MACHINE_DISPOSE,this.onSoundMachineDispose),M().removeEventListener(Ya.TRAX_SONG_COMPLETE,this.onTraxSongComplete)}get samplesIdsInUse(){let t,e,s=[];for(let r=0;r<this._songRequestsPerPriority.length;r++)if(this._songRequestsPerPriority[r]&&(t=this._songRequestsPerPriority[r],e=this._availableSongs.get(t.songId),e)){const n=e.songData;if(n.length>0){const a=new Mg(n);s=s.concat(a.getSampleIds())}}return s}onSongLoaded(t){const e=this.getTopRequestPriority();if(e>=0){const s=this.getSongIdRequestedAtPriority(e);t===s&&this.playSongObject(e,t)}}samplesUnloaded(t){throw new Error("Method not implemented.")}onTraxSongComplete(t){if(this.getSongIdPlayingAtPriority(this._priorityPlaying)===t.id){this.getTopRequestPriority()===this._priorityPlaying&&this.getSongRequestCountAtPriority(this._priorityPlaying)==this._requestNumberPlaying&&this.resetSongStartRequest(this._priorityPlaying);const e=this._priorityPlaying;this.playSongWithHighestPriority(),e>=Ss.PRIORITY_SONG_PLAY&&M().dispatchEvent(new Dr(Dr.NPW_USER_STOP_SONG,e,t.id,-1))}}onTraxSongInfoMessageEvent(t){const e=t.getParser();for(const s of e.songs){const r=!!this.getSongDataEntry(s.id);if(this.areSamplesRequested(s.id),!r){const n=new D0(s.id,s.length,s.name,s.creator,s.data);this._availableSongs.set(s.id,n);const a=this.getTopRequestPriority(),o=this.getSongIdRequestedAtPriority(a);for(s.id===o&&this.playSongObject(a,o),M().dispatchEvent(new Ha(Ha.SIR_TRAX_SONG_INFO_RECEIVED,s.id));this._diskInventoryMissingData.indexOf(s.id)!=-1;)this._diskInventoryMissingData.splice(this._diskInventoryMissingData.indexOf(s.id),1),this._diskInventoryMissingData.length===0&&M().dispatchEvent(new va(va.SDIR_SONG_DISK_INVENTORY_RECEIVENT_EVENT))}}}onSongDiskInventoryMessage(t){const e=t.getParser();this._songDiskInventory.reset();for(let s=0;s<e.songDiskCount;s++){const r=e.getDiskId(s),n=e.getSongId(s);this._songDiskInventory.add(r,n),this._availableSongs.get(n)||(this._diskInventoryMissingData.push(n),this.requestSongInfoWithoutSamples(n))}this._diskInventoryMissingData.length===0&&M().dispatchEvent(new va(va.SDIR_SONG_DISK_INVENTORY_RECEIVENT_EVENT))}onTick(){this._songRequestList.length!==0&&(G().connection.send(new YA(...this._songRequestList)),this._songRequestList=[])}requestSong(t,e){this._requestedSongs.get(t)===void 0&&(this._requestedSongs.set(t,e),this._songRequestList.push(t))}areSamplesRequested(t){return this._requestedSongs.get(t)?this._requestedSongs.get(t):!1}processSongEntryForPlaying(t,e=!0){return this.getSongDataEntry(t)?!0:(this.addSongInfoRequest(t),!1)}playSong(t,e,s=0,r=0,n=.5,a=.5){return!this.addSongStartRequest(e,t,s,r,n,a)||!this.processSongEntryForPlaying(t)?!1:(e>=this._priorityPlaying&&this.playSongObject(e,t),!0)}playSongObject(t,e){if(e===-1||t<0||t>=Ss.PRIORITY_COUNT)return!1;let s=!1;this.stopSongAtPriority(this._priorityPlaying)&&(s=!0);const r=this.getSongDataEntry(e);if(!r)return!1;if(s)return!0;this._musicPlayer.setVolume($r().traxVolume);let n=ga.SKIP_POSITION_SET,a=0;const o=this.getSongStartRequest(t);return o&&(n=o.startPos,a=o.playLength,o.fadeInSeconds,o.fadeOutSeconds),n>=r.length/1e3?!1:(n<=ga.SKIP_POSITION_SET&&(n=0),n=Math.trunc(n),this._priorityPlaying=t,this._requestNumberPlaying=this.getSongRequestCountAtPriority(t),this._songIdPlaying=e,this._priorityPlaying<=ga.MAXIMUM_NOTIFY_PRIORITY&&this.notifySongPlaying(r),this._musicPlayer.preloadSamplesForSong(r.songData).then(()=>this._musicPlayer.play(r.songData,r.id,n,a)),t>Ss.PRIORITY_ROOM_PLAYLIST&&M().dispatchEvent(new Dr(Dr.NPE_USER_PLAY_SONG,t,r.id,-1)),!0)}notifySongPlaying(t){const s=Date.now();t.length>=8e3&&(this._previousNotifiedSongId!=t.id||s>this._previousNotificationTime+8e3)&&(M().dispatchEvent(new X_(t.name,t.creator)),this._previousNotifiedSongId=t.id,this._previousNotificationTime=s)}addSongStartRequest(t,e,s,r,n,a){if(t<0||t>=Ss.PRIORITY_COUNT)return!1;const o=new wX(e,s,r,n,a);return this._songRequestsPerPriority[t]=o,this._songRequestCountsPerPriority[t]=this._songRequestCountsPerPriority[t]+1,!0}getSongDataEntry(t){let e;return this._availableSongs&&(e=this._availableSongs.get(t)),e}getSongStartRequest(t){return this._songRequestsPerPriority[t]}getTopRequestPriority(){return this._songRequestsPerPriority.length-1}getSongIdRequestedAtPriority(t){return t<0||t>=Ss.PRIORITY_COUNT||!this._songRequestsPerPriority[t]?-1:this._songRequestsPerPriority[t].songId}getSongRequestCountAtPriority(t){return t<0||t>=Ss.PRIORITY_COUNT?-1:this._songRequestCountsPerPriority[t]}playSongWithHighestPriority(){let t;this._priorityPlaying=-1,this._songIdPlaying=-1,this._requestNumberPlaying=-1;let s=this.getTopRequestPriority();for(;s>=0;){if(t=this.getSongIdRequestedAtPriority(s),t>=0&&this.playSongObject(s,t))return;s--}}resetSongStartRequest(t){t>=0&&t<Ss.PRIORITY_COUNT&&(this._songRequestsPerPriority[t]=void 0)}reRequestSongAtPriority(t){this._songRequestCountsPerPriority[t]=this._songRequestCountsPerPriority[t]+1}stopSongAtPriority(t){if(t===this._priorityPlaying&&this._priorityPlaying>=0){const e=this.getSongIdPlayingAtPriority(t);if(e>=0)return this.getSongDataEntry(e),this._musicPlayer.stop(),!0}return!1}onSoundMachineInit(t){this.disposeRoomPlaylist()}onSoundMachineDispose(t){this.disposeRoomPlaylist()}onJukeboxInit(t){this.disposeRoomPlaylist(),this._roomItemPlaylist=new kX,this._roomItemPlaylist.init(),G().connection.send(new HA)}onJukeboxDispose(t){this.disposeRoomPlaylist()}disposeRoomPlaylist(){this._roomItemPlaylist&&(this._roomItemPlaylist.dispose(),this._roomItemPlaylist=void 0)}};ga.SKIP_POSITION_SET=-1,ga.MAXIMUM_NOTIFY_PRIORITY=Ss.PRIORITY_ROOM_PLAYLIST;let xg=ga;class zX{constructor(){this._volumeSystem=.5,this._volumeFurni=.5,this._volumeTrax=.5,this._internalSamples=new xe,this._furniSamples=new xe,this._furnitureBeingPlayed=new xe,this._musicController=new xg}async init(){this._musicController.init(),M().addEventListener(Ds.PLAY_SAMPLE,t=>this.onEvent(t)),M().addEventListener(ht.REMOVED,t=>this.onEvent(t)),M().addEventListener(ae.DISPOSED,t=>this.onEvent(t)),M().addEventListener(nu.SETTINGS_UPDATED,t=>this.onEvent(t)),M().addEventListener(lh.PLAY_SOUND,t=>this.onEvent(t))}onEvent(t){var e;switch(t.type){case Ds.PLAY_SAMPLE:{const s=t;this.playFurniSample(s.objectId,s.sampleId,s.pitch);return}case ht.REMOVED:{const s=t;this.stopFurniSample(s.objectId);return}case ae.DISPOSED:{this._furnitureBeingPlayed.getKeys().forEach(s=>{this.stopFurniSample(s)});return}case nu.SETTINGS_UPDATED:{const s=t,r=s.volumeFurni!==this._volumeFurni,n=s.volumeTrax!==this._volumeTrax;this._volumeSystem=s.volumeSystem/100,this._volumeFurni=s.volumeFurni/100,this._volumeTrax=s.volumeTrax/100,r&&this.updateFurniSamplesVolume(this._volumeFurni),n&&((e=this._musicController)==null||e.updateVolume(this._volumeTrax));return}case lh.PLAY_SOUND:{const s=t;this.playInternalSample(s.sampleCode);return}}}playSample(t,e,s=1){t.volume=e,t.currentTime=0;try{t.play()}catch(r){it.error(r)}}playInternalSample(t){let e=this._internalSamples.getValue(t);if(!e){const s=vt().getValue("sounds.url");e=new Audio(s.replace("%sample%",t)),this._internalSamples.add(t,e)}this.playSample(e,this._volumeSystem)}playFurniSample(t,e,s){let r=this._furniSamples.getValue(e);if(!r){const n=vt().getValue("external.samples.url");r=new Audio(n.replace("%sample%",e.toString())),this._furniSamples.add(e,r)}this._furnitureBeingPlayed.hasKey(t)||this._furnitureBeingPlayed.add(t,e),r.onended=n=>this.stopFurniSample(t),r.onpause=n=>this.stopFurniSample(t),r.onerror=n=>this.stopFurniSample(t),this.playSample(r,this._volumeFurni,s)}stopInternalSample(t){const e=this._internalSamples.getValue(t);if(e)try{e.pause()}catch(s){it.error(s)}}stopFurniSample(t){const e=this._furnitureBeingPlayed.getValue(t);if(!e)return;const s=this._furniSamples.getValue(e);if(this._furnitureBeingPlayed.remove(t),!!s)try{s.pause()}catch(r){it.error(r)}}updateInternalSamplesVolume(t){this._internalSamples.getValues().forEach(e=>{e.volume=t})}updateFurniSamplesVolume(t){this._furniSamples.getValues().forEach(e=>{e.volume=t})}get traxVolume(){return this._volumeTrax}get musicController(){return this._musicController}}const unt=new zX,$r=()=>unt;window.NitroDevTools={roomEngine:iE()};class lnt extends Jx{}class hnt extends n_{}class cnt extends $t{}class _nt extends xt{}class dnt extends Kt{}class fnt extends Zh{}class gnt extends wt{}class pnt extends W{}ym.defaultOptions.hello=!0;De.defaultOptions.scaleMode=window.devicePixelRatio%1?"linear":"nearest";Wt.set(Rv);exports.AbstractRenderer=Em;exports.AcceptFriendFailerData=kL;exports.AcceptFriendMessageComposer=j5;exports.AcceptFriendResultEvent=DB;exports.AcceptFriendResultParser=zL;exports.AcceptGameInviteMessageComposer=dH;exports.AcceptQuestMessageComposer=Bj;exports.AccountSafetyLockStatusChangeMessageEvent=IR;exports.AccountSafetyLockStatusChangeParser=Sh;exports.AchievementData=Rh;exports.AchievementEvent=pk;exports.AchievementLevelUpData=H2;exports.AchievementNotificationMessageEvent=qz;exports.AchievementNotificationMessageParser=Y2;exports.AchievementParser=VN;exports.AchievementResolutionCompletedMessageEvent=i3;exports.AchievementResolutionCompletedMessageParser=u1;exports.AchievementResolutionData=od;exports.AchievementResolutionProgressMessageEvent=r3;exports.AchievementResolutionProgressMessageParser=l1;exports.AchievementResolutionsMessageEvent=n3;exports.AchievementResolutionsMessageParser=h1;exports.AchievementsEvent=mk;exports.AchievementsParser=HN;exports.AchievementsScoreEvent=Ek;exports.AchievementsScoreParser=YN;exports.ActionDefinition=Wx;exports.ActionType=Yx;exports.ActivateQuestMessageComposer=kj;exports.ActiveActionData=$_;exports.ActivePartSet=EI;exports.ActivityPointNotificationMessageEvent=$z;exports.ActivityPointNotificationParser=W2;exports.AddDataContainer=qx;exports.AddFavouriteRoomMessageComposer=HW;exports.AddJukeboxDiskComposer=K6;exports.AddLinkEventTracker=uZ;exports.AddSpamWallPostItMessageComposer=_6;exports.AdvancedMap=xe;exports.AlphaTolerance=ii;exports.Animation=Q_;exports.AnimationAction=au;exports.AnimationActionPart=HP;exports.AnimationData=Ce;exports.AnimationFrame=Vr;exports.AnimationFrameData=y0;exports.AnimationFrameDirectionalData=QK;exports.AnimationFrameSequenceData=ZK;exports.AnimationLayerData=JK;exports.AnimationManager=zP;exports.AnimationSizeData=jh;exports.AnimationStateData=C0;exports.ApplySnapshotMessageComposer=k6;exports.ApplyTonerComposer=v6;exports.ApproveAllMembershipRequestsMessageComposer=xH;exports.ApproveNameMessageComposer=s8;exports.ApproveNameMessageEvent=E4;exports.ApproveNameResultParser=IN;exports.AreaHideMessageData=bU;exports.AreaHideMessageEvent=Kd;exports.AreaHideMessageParser=DU;exports.ArrayBufferToBase64=VM;exports.AssetAlias=sb;exports.AssetAliasCollection=ib;exports.AssetManager=Lx;exports.AuthenticatedEvent=dR;exports.AuthenticatedParser=rG;exports.AuthenticationMessageComposer=uY;exports.AvailabilityStatusMessageEvent=xS;exports.AvailabilityStatusMessageParser=_b;exports.AvailabilityTimeMessageEvent=AG;exports.AvailabilityTimeMessageParser=db;exports.AvatarAction=et;exports.AvatarActionManager=jx;exports.AvatarAnimationData=YP;exports.AvatarAnimationFrame=Ju;exports.AvatarAnimationLayerData=Js;exports.AvatarAssetDownloadLibrary=q_;exports.AvatarAssetDownloadManager=Hx;exports.AvatarCanvas=WP;exports.AvatarDataContainer=GP;exports.AvatarDirectionAngle=Pr;exports.AvatarEditorFigureCategory=MT;exports.AvatarEditorInstanceId=xT;exports.AvatarEditorSideCategory=PT;exports.AvatarEffect=WN;exports.AvatarEffectActivatedComposer=YY;exports.AvatarEffectActivatedEvent=Tk;exports.AvatarEffectActivatedParser=jN;exports.AvatarEffectAddedEvent=Ik;exports.AvatarEffectAddedParser=KN;exports.AvatarEffectExpiredEvent=Sk;exports.AvatarEffectExpiredParser=XN;exports.AvatarEffectSelectedComposer=WY;exports.AvatarEffectSelectedEvent=Rk;exports.AvatarEffectSelectedParser=qN;exports.AvatarEffectsEvent=Ak;exports.AvatarEffectsParser=$N;exports.AvatarExpressionEnum=FT;exports.AvatarFigureContainer=Zu;exports.AvatarFigurePartType=ns;exports.AvatarGuideStatus=pi;exports.AvatarImage=Ih;exports.AvatarImageActionCache=Kx;exports.AvatarImageBodyPartCache=aI;exports.AvatarImageBodyPartContainer=Xx;exports.AvatarImageCache=Z_;exports.AvatarImageDirectionCache=VP;exports.AvatarImagePartContainer=Wc;exports.AvatarLogic=Gf;exports.AvatarModelGeometry=ZP;exports.AvatarRenderEffectLibraryEvent=y_;exports.AvatarRenderLibraryEvent=v_;exports.AvatarRenderManager=ed;exports.AvatarScaleType=ti;exports.AvatarSet=Dm;exports.AvatarSetType=as;exports.AvatarStructure=JP;exports.AvatarVisualization=tg;exports.AvatarVisualizationData=tE;exports.BadgeAndPointLimit=QN;exports.BadgeBaseAndLevel=jc;exports.BadgeImageManager=ba;exports.BadgeImageReadyEvent=Va;exports.BadgeInfo=MI;exports.BadgePointLimitsEvent=GS;exports.BadgePointLimitsParser=ZN;exports.BadgeReceivedEvent=Ok;exports.BadgeReceivedParser=JN;exports.BadgesEvent=yk;exports.BadgesParser=tU;exports.BannedUserData=gU;exports.BannedUsersFromRoomEvent=t4;exports.BannedUsersFromRoomParser=pU;exports.BaseHandler=ai;exports.BatchableGraphics=jI;exports.BatchableSprite=nM;exports.BigPool=ls;exports.BinaryReader=Jh;exports.BinaryWriter=BT;exports.BindGroup=Sn;exports.BitmapFontManager=yT;exports.BonusRareInfoMessageEvent=jG;exports.BonusRareInfoMessageParser=Vb;exports.BotAddedToInventoryEvent=PG;exports.BotAddedToInventoryParser=Ab;exports.BotCommandConfigurationEvent=yV;exports.BotCommandConfigurationParser=cU;exports.BotData=Lm;exports.BotErrorEvent=VS;exports.BotErrorEventParser=j2;exports.BotForceOpenContextMenuEvent=vV;exports.BotForceOpenContextMenuParser=_U;exports.BotInventoryMessageEvent=bG;exports.BotInventoryMessageParser=Ob;exports.BotPlaceComposer=eA;exports.BotReceivedMessageEvent=NG;exports.BotReceivedMessageParser=yb;exports.BotRemoveComposer=sA;exports.BotRemovedFromInventoryEvent=UG;exports.BotRemovedFromInventoryParser=vb;exports.BotSkillData=dU;exports.BotSkillListUpdateEvent=CV;exports.BotSkillListUpdateParser=fU;exports.BotSkillSaveComposer=c6;exports.Bounds=Bs;exports.BreedPetsMessageComposer=Df;exports.BreedingPetInfo=UT;exports.Buffer=Hr;exports.BufferResource=$C;exports.BufferUsage=Oe;exports.BuildersClubFurniCountMessageEvent=KG;exports.BuildersClubFurniCountMessageParser=Hb;exports.BuildersClubPlaceRoomItemMessageComposer=$4;exports.BuildersClubPlaceWallItemMessageComposer=Q4;exports.BuildersClubQueryFurniCountMessageComposer=Z4;exports.BuildersClubSubscriptionStatusMessageEvent=XG;exports.BuildersClubSubscriptionStatusMessageParser=Yb;exports.BundleDiscountRuleset=Wb;exports.BundleDiscountRulesetMessageEvent=qG;exports.BundleDiscountRulesetMessageParser=jb;exports.BuyMarketplaceOfferMessageComposer=fW;exports.BuyMarketplaceTokensMessageComposer=gW;exports.Byte=I8;exports.CLEAR=Ei;exports.Cache=de;exports.CallForHelpCategoryData=Mb;exports.CallForHelpDisabledNotifyMessageEvent=j3;exports.CallForHelpDisabledNotifyMessageParser=J1;exports.CallForHelpFromForumMessageMessageComposer=fY;exports.CallForHelpFromForumThreadMessageComposer=gY;exports.CallForHelpFromIMMessageComposer=pY;exports.CallForHelpFromPhotoMessageComposer=mY;exports.CallForHelpFromSelfieMessageComposer=EY;exports.CallForHelpMessageComposer=TY;exports.CallForHelpPendingCallsDeletedMessageEvent=K3;exports.CallForHelpPendingCallsDeletedMessageParser=tF;exports.CallForHelpPendingCallsMessageEvent=X3;exports.CallForHelpPendingCallsMessageParser=eF;exports.CallForHelpReplyMessageEvent=q3;exports.CallForHelpReplyMessageParser=sF;exports.CallForHelpResultMessageEvent=$3;exports.CallForHelpResultMessageParser=iF;exports.CallForHelpTopicData=Cb;exports.Callback=ktt;exports.CameraPublishStatusMessageEvent=wG;exports.CameraPublishStatusMessageParser=Ub;exports.CameraPurchaseOKMessageEvent=GG;exports.CameraPurchaseOKMessageParser=Db;exports.CameraSnapshotMessageEvent=BG;exports.CameraSnapshotMessageParser=Lb;exports.CameraStorageUrlMessageEvent=kG;exports.CameraStorageUrlMessageParser=Fb;exports.CampaignCalendarData=Fm;exports.CampaignCalendarDataMessageEvent=YG;exports.CampaignCalendarDataMessageParser=kb;exports.CampaignCalendarDoorOpenedMessageEvent=WG;exports.CampaignCalendarDoorOpenedMessageParser=zb;exports.CanCreateRoomEvent=yz;exports.CanCreateRoomEventEvent=vz;exports.CanCreateRoomEventParser=r2;exports.CanCreateRoomMessageComposer=WW;exports.CanCreateRoomMessageParser=Nd;exports.CancelEventMessageComposer=YW;exports.CancelMarketplaceOfferMessageComposer=pW;exports.CancelMysteryBoxWaitMessageEvent=Rz;exports.CancelMysteryBoxWaitMessageParser=t2;exports.CancelPetBreedingComposer=JY;exports.CancelQuestMessageComposer=zj;exports.CantConnectMessageParser=ud;exports.CanvasPool=Vl;exports.CanvasSource=La;exports.CanvasTextMetrics=r_;exports.CatalogGroupsComposer=i8;exports.CatalogIndexMessageParser=Kb;exports.CatalogLocalizationData=Xb;exports.CatalogPageExpirationEvent=$G;exports.CatalogPageExpirationParser=qb;exports.CatalogPageMessageEvent=QG;exports.CatalogPageMessageOfferData=nc;exports.CatalogPageMessageParser=$b;exports.CatalogPageMessageProductData=rc;exports.CatalogPageWithEarliestExpiryMessageEvent=JG;exports.CatalogPageWithEarliestExpiryMessageParser=Qb;exports.CatalogPagesListEvent=ZG;exports.CatalogPublishedMessageEvent=tB;exports.CatalogPublishedMessageParser=Zb;exports.CategoriesWithVisitorCountData=n2;exports.CategoriesWithVisitorCountEvent=Cz;exports.CategoriesWithVisitorCountParser=_2;exports.CfhChatlogData=bF;exports.CfhChatlogEvent=oz;exports.CfhChatlogMessageParser=NF;exports.CfhSanctionMessageEvent=DG;exports.CfhSanctionMessageParser=Pb;exports.CfhSanctionTypeData=xb;exports.CfhTopicsInitEvent=LG;exports.CfhTopicsInitMessageParser=bb;exports.ChangeEmailComposer=r8;exports.ChangeEmailResultEvent=T4;exports.ChangeEmailResultParser=id;exports.ChangeQueueMessageComposer=PA;exports.ChangeUserNameMessageComposer=k4;exports.ChangeUserNameResultMessageEvent=hu;exports.ChangeUserNameResultMessageParser=Eb;exports.ChatRecordData=lu;exports.ChatReviewGuideDecidesOnOfferMessageComposer=IY;exports.ChatReviewGuideDetachedMessageComposer=SY;exports.ChatReviewGuideVoteMessageComposer=RY;exports.ChatReviewSessionCreateMessageComposer=AY;exports.ChatReviewSessionDetachedMessageEvent=Q3;exports.ChatReviewSessionDetachedMessageParser=rF;exports.ChatReviewSessionOfferedToGuideMessageEvent=Z3;exports.ChatReviewSessionOfferedToGuideMessageParser=nF;exports.ChatReviewSessionResultsMessageEvent=J3;exports.ChatReviewSessionResultsMessageParser=aF;exports.ChatReviewSessionStartedMessageEvent=tk;exports.ChatReviewSessionStartedMessageParser=oF;exports.ChatReviewSessionVotingStatusMessageEvent=ek;exports.ChatReviewSessionVotingStatusMessageParser=Od;exports.ChatlineData=PF;exports.CheckUserNameMessageComposer=z4;exports.CheckUserNameResultMessageEvent=MG;exports.CheckUserNameResultMessageParser=Tb;exports.ClickFurniMessageComposer=Pf;exports.ClientDeviceCategoryEnum=a_;exports.ClientHelloMessageComposer=bR;exports.ClientPingEvent=bS;exports.ClientPingParser=ML;exports.ClientPlatformEnum=o_;exports.CloseIssueDefaultActionMessageComposer=OW;exports.CloseIssuesMessageComposer=Cf;exports.ClubGiftData=Jb;exports.ClubGiftInfoEvent=eB;exports.ClubGiftInfoParser=tN;exports.ClubGiftNotificationEvent=Qz;exports.ClubGiftNotificationParser=K2;exports.ClubGiftSelectedEvent=sB;exports.ClubGiftSelectedParser=eN;exports.ClubOfferData=IS;exports.ClubOfferExtendData=sN;exports.Color=Mt;exports.ColorChannelType=Ar;exports.ColorConverter=$l;exports.ColorData=bn;exports.Combo=ztt;exports.CommunicationManager=y8;exports.CommunityGoalData=bw;exports.CommunityGoalEarnedPrizesMessageEvent=_V;exports.CommunityGoalEarnedPrizesMessageParser=Uw;exports.CommunityGoalHallOfFameData=Lw;exports.CommunityGoalHallOfFameMessageEvent=dV;exports.CommunityGoalHallOfFameMessageParser=Fw;exports.CommunityGoalProgressMessageEvent=fV;exports.CommunityGoalProgressMessageParser=ww;exports.CommunityGoalVoteMessageComposer=dW;exports.CommunityGoalVoteMessageEvent=Zk;exports.CommunityVoteReceivedParser=AF;exports.CompetitionEntrySubmitResultEvent=OB;exports.CompetitionEntrySubmitResultMessageParser=pd;exports.CompetitionRoomsData=a2;exports.CompetitionRoomsDataMessageEvent=Mz;exports.CompetitionRoomsDataMessageParser=d2;exports.CompetitionRoomsSearchMessageComposer=jW;exports.CompetitionStatusMessageEvent=zG;exports.CompetitionStatusMessageParser=wb;exports.CompetitionVotingInfoMessageEvent=yB;exports.CompetitionVotingInfoMessageParser=xL;exports.CompetitionVotingInfoResult=md;exports.CompleteDiffieHandshakeEvent=V3;exports.CompleteDiffieHandshakeMessageComposer=lY;exports.CompleteDiffieHandshakeParser=X1;exports.CompostPlantMessageComposer=rA;exports.ConcurrentUsersGoalProgressMessageEvent=gV;exports.ConcurrentUsersGoalProgressMessageParser=Gw;exports.ConditionDefinition=Xw;exports.ConfigurationEvent=ZT;exports.ConfigurationManager=Vx;exports.ConfirmBreedingRequestEvent=Uk;exports.ConfirmBreedingRequestParser=XD;exports.ConfirmBreedingResultEvent=Dk;exports.ConfirmBreedingResultParser=qD;exports.ConfirmPetBreedingComposer=tW;exports.ConnectionErrorEvent=Zz;exports.ConnectionErrorMessageParser=X2;exports.Container=$t;exports.ContextMenuEnum=Ri;exports.ControlYoutubeDisplayPlaybackMessageComposer=C6;exports.ConvertGlobalRoomIdMessageComposer=KW;exports.ConvertedRoomIdEvent=xz;exports.ConvertedRoomIdMessageParser=f2;exports.CrackableDataType=Wl;exports.CraftComposer=B5;exports.CraftSecretComposer=k5;exports.CraftableProductsEvent=PB;exports.CraftableProductsMessageParser=DL;exports.CraftingRecipeEvent=bB;exports.CraftingRecipeIngredientParser=LL;exports.CraftingRecipeMessageParser=FL;exports.CraftingRecipesAvailableEvent=NB;exports.CraftingRecipesAvailableMessageParser=wL;exports.CraftingResultEvent=UB;exports.CraftingResultMessageParser=GL;exports.CraftingResultObjectParser=RS;exports.CreateFlatMessageComposer=XW;exports.CreateLinkEvent=g_;exports.CurrentTimingCodeMessageEvent=vB;exports.CurrentTimingCodeMessageParser=PL;exports.CustomUserNotificationMessageEvent=bV;exports.CustomUserNotificationMessageParser=LU;exports.DOMAdapter=Wt;exports.DeclineFriendMessageComposer=K5;exports.DefaultSanctionMessageComposer=yW;exports.DeleteFavouriteRoomMessageComposer=qW;exports.DeletePendingCallsForHelpMessageComposer=OY;exports.DesktopViewComposer=Y5;exports.DesktopViewEvent=Dd;exports.DesktopViewParser=BL;exports.DiceValueMessageEvent=Xd;exports.DiceValueMessageParser=FU;exports.DirectSMSClubBuyAvailableMessageEvent=iB;exports.DirectSMSClubBuyAvailableMessageParser=iN;exports.DirectionData=Lr;exports.DirectionDataContainer=BP;exports.DirectionalOffsetData=v0;exports.DisconnectMessageComposer=hY;exports.DisconnectReasonEnum=xa;exports.DisconnectReasonEvent=H3;exports.DisconnectReasonParser=q1;exports.Dispose=Vtt;exports.DoorbellMessageEvent=zS;exports.DoorbellMessageParser=g2;exports.DropBounce=Htt;exports.Ease=vx;exports.EaseOut=Ytt;exports.EaseRate=Cx;exports.EditEventMessageComposer=$W;exports.EffectAssetDownloadLibrary=J_;exports.EffectAssetDownloadManager=tb;exports.ElementPointerMessageEvent=Jz;exports.ElementPointerMessageParser=q2;exports.EmailStatusParser=PN;exports.EmailStatusResultEvent=AR;exports.EmptyDataType=jl;exports.EpicPopupMessageEvent=pV;exports.EpicPopupMessageParser=Bw;exports.EvaWireDataWrapper=S8;exports.EvaWireFormat=A8;exports.EventDispatcher=Fx;exports.EventEmitter=ks;exports.ExperienceData=EX;exports.ExpressionAddition=O0;exports.ExpressionAdditionFactory=Qf;exports.ExtendRentOrBuyoutFurniMessageComposer=d6;exports.ExtendRentOrBuyoutStripItemMessageComposer=f6;exports.ExtendedForumData=Vm;exports.ExtendedProfileChangedMessageEvent=A4;exports.ExtendedProfileChangedMessageParser=bN;exports.ExtendedSprite=sE;exports.ExtensionType=B;exports.FavoriteMembershipUpdateMessageEvent=sR;exports.FavoriteMembershipUpdateMessageParser=NU;exports.FavouriteChangedEvent=Pz;exports.FavouriteChangedMessageParser=p2;exports.FavouritesEvent=bz;exports.FavouritesMessageParser=m2;exports.FigureDataContainer=td;exports.FigurePart=jP;exports.FigurePartSet=KP;exports.FigureSetData=qP;exports.FigureSetIdsMessageEvent=Ck;exports.FigureSetIdsMessageParser=sU;exports.FigureUpdateEvent=PS;exports.FigureUpdateParser=Ib;exports.FindFriendsProcessResultEvent=LB;exports.FindFriendsProcessResultParser=VL;exports.FindNewFriendsMessageComposer=X5;exports.FireworkChargeData=rN;exports.FireworkChargeDataEvent=rB;exports.FireworkChargeDataParser=nN;exports.FlatAccessDeniedMessageEvent=Fd;exports.FlatAccessDeniedMessageParser=E2;exports.FlatControllerAddedEvent=e4;exports.FlatControllerAddedParser=EU;exports.FlatControllerData=mU;exports.FlatControllerRemovedEvent=s4;exports.FlatControllerRemovedParser=TU;exports.FlatControllersEvent=i4;exports.FlatControllersParser=IU;exports.FlatCreatedEvent=Nz;exports.FlatCreatedMessageParser=T2;exports.FloatingHeartAddition=$f;exports.FloatingIdleZAddition=Zf;exports.FloodControlEvent=hR;exports.FloodControlParser=vD;exports.FloorHeightMapEvent=uf;exports.FloorHeightMapMessageParser=Oh;exports.FollowFriendFailedEvent=FB;exports.FollowFriendFailedParser=HL;exports.FollowFriendMessageComposer=q5;exports.ForumData=uu;exports.ForumDataMessageEvent=U3;exports.ForumDataMessageParser=B1;exports.ForumsListMessageEvent=D3;exports.ForwardToACompetitionRoomMessageComposer=b5;exports.ForwardToARandomPromotedRoomMessageComposer=QW;exports.ForwardToASubmittableRoomMessageComposer=N5;exports.ForwardToRandomCompetitionRoomMessageComposer=U5;exports.ForwardToSomeRoomMessageComposer=ZW;exports.FriendCategoryData=AS;exports.FriendFurniConfirmLockMessageComposer=W5;exports.FriendFurniEngravingWidgetType=Yl;exports.FriendListFragmentEvent=wB;exports.FriendListFragmentParser=YL;exports.FriendListUpdateComposer=$5;exports.FriendListUpdateEvent=GB;exports.FriendListUpdateParser=WL;exports.FriendNotificationEvent=BB;exports.FriendNotificationParser=jL;exports.FriendParser=Ed;exports.FriendRequestData=OS;exports.FriendRequestQuestCompleteMessageComposer=Vj;exports.FriendRequestsEvent=kB;exports.FriendRequestsParser=KL;exports.FriendWidgetEngravingWidgetTypeEnum=wT;exports.FrontPageItem=sd;exports.FurniId=Ql;exports.FurniRentOrBuyoutOfferMessageEvent=NV;exports.FurniRentOrBuyoutOfferMessageParser=wU;exports.FurnitureAchievementResolutionLogic=kf;exports.FurnitureAliasesComposer=pA;exports.FurnitureAliasesEvent=qd;exports.FurnitureAliasesParser=GU;exports.FurnitureAnimatedVisualization=ge;exports.FurnitureAnimatedVisualizationData=eE;exports.FurnitureAreaHideLogic=tK;exports.FurnitureBBVisualization=M0;exports.FurnitureBadgeDisplayLogic=A0;exports.FurnitureBadgeDisplayVisualization=ig;exports.FurnitureBottleVisualization=rg;exports.FurnitureBrandedImageVisualization=fu;exports.FurnitureBuilderPlaceholderVisualization=nX;exports.FurnitureChangeStateWhenStepOnLogic=eK;exports.FurnitureClothingChangeLogic=sK;exports.FurnitureColorWheelComposer=SA;exports.FurnitureCounterClockLogic=iK;exports.FurnitureCounterClockVisualization=ng;exports.FurnitureCrackableLogic=rK;exports.FurnitureCraftingGizmoLogic=nK;exports.FurnitureCreditLogic=aK;exports.FurnitureCuboidVisualization=aX;exports.FurnitureCuckooClockLogic=oK;exports.FurnitureCustomStackHeightLogic=uK;exports.FurnitureData=xI;exports.FurnitureDataEvent=$d;exports.FurnitureDataLoader=Y8;exports.FurnitureDataParser=jr;exports.FurnitureDiceActivateComposer=RA;exports.FurnitureDiceDeactivateComposer=AA;exports.FurnitureDiceLogic=lK;exports.FurnitureDynamicThumbnailVisualization=x0;exports.FurnitureEcotronBoxLogic=hK;exports.FurnitureEditableInternalLinkLogic=cK;exports.FurnitureEditableRoomLinkLogic=_K;exports.FurnitureEffectBoxLogic=dK;exports.FurnitureExchangeComposer=m6;exports.FurnitureExternalImageLogic=fK;exports.FurnitureExternalImageVisualization=oX;exports.FurnitureFireworksLogic=gK;exports.FurnitureFireworksVisualization=P0;exports.FurnitureFloorAddEvent=Jd;exports.FurnitureFloorAddParser=JU;exports.FurnitureFloorDataParser=Gm;exports.FurnitureFloorEvent=tf;exports.FurnitureFloorHoleLogic=zf;exports.FurnitureFloorParser=tD;exports.FurnitureFloorRemoveEvent=ef;exports.FurnitureFloorRemoveParser=eD;exports.FurnitureFloorUpdateComposer=Nf;exports.FurnitureFloorUpdateEvent=sf;exports.FurnitureFloorUpdateParser=sD;exports.FurnitureFriendFurniLogic=zh;exports.FurnitureGiftWrappedFireworksVisualization=og;exports.FurnitureGiftWrappedVisualization=lX;exports.FurnitureGroupForumTerminalLogic=pK;exports.FurnitureGroupInfoComposer=mA;exports.FurnitureGuildCustomizedLogic=Vh;exports.FurnitureGuildCustomizedVisualization=ug;exports.FurnitureGuildIsometricBadgeVisualization=lg;exports.FurnitureHabboWheelLogic=mK;exports.FurnitureHabboWheelVisualization=hg;exports.FurnitureHighScoreLogic=Vf;exports.FurnitureHockeyScoreLogic=EK;exports.FurnitureHweenLovelockLogic=TK;exports.FurnitureIceStormLogic=IK;exports.FurnitureInternalLinkLogic=SK;exports.FurnitureIsometricBBVisualization=hX;exports.FurnitureJukeboxLogic=RK;exports.FurnitureListAddOrUpdateEvent=Mk;exports.FurnitureListAddOrUpdateParser=VD;exports.FurnitureListComposer=QY;exports.FurnitureListEvent=xk;exports.FurnitureListInvalidateEvent=Pk;exports.FurnitureListInvalidateParser=HD;exports.FurnitureListItemParser=yh;exports.FurnitureListParser=YD;exports.FurnitureListRemovedEvent=bk;exports.FurnitureListRemovedParser=WD;exports.FurnitureLogic=Dt;exports.FurnitureLoveLockLogic=AK;exports.FurnitureMannequinLogic=Hf;exports.FurnitureMannequinSaveLookComposer=T6;exports.FurnitureMannequinSaveNameComposer=I6;exports.FurnitureMannequinVisualization=cg;exports.FurnitureMannequinVisualizationData=b0;exports.FurnitureMonsterplantSeedLogic=OK;exports.FurnitureMultiHeightLogic=yK;exports.FurnitureMultiStateComposer=Xm;exports.FurnitureMultiStateLogic=he;exports.FurnitureMysteryBoxLogic=vK;exports.FurnitureMysteryTrophyLogic=CK;exports.FurnitureOneWayDoorComposer=OA;exports.FurnitureOneWayDoorLogic=MK;exports.FurnitureParticleSystem=uX;exports.FurnitureParticleSystemEmitter=ag;exports.FurnitureParticleSystemParticle=NI;exports.FurniturePartyBeamerVisualization=_g;exports.FurniturePetCustomizationLogic=xK;exports.FurniturePickupComposer=EA;exports.FurniturePlaceComposer=TA;exports.FurniturePlacePaintComposer=g6;exports.FurniturePlaceholderLogic=PK;exports.FurniturePlanetSystemLogic=bK;exports.FurniturePlanetSystemVisualization=cX;exports.FurniturePlanetSystemVisualizationPlanetObject=dg;exports.FurniturePostItPlaceComposer=IA;exports.FurniturePostItPlacedEvent=Nk;exports.FurniturePostItPlacedParser=jD;exports.FurniturePosterVisualization=_X;exports.FurniturePresentLogic=Yf;exports.FurniturePurchaseableClothingLogic=NK;exports.FurniturePushableLogic=Wf;exports.FurnitureQueueTileVisualization=fg;exports.FurnitureRandomStateComposer=yA;exports.FurnitureRandomStateLogic=UK;exports.FurnitureRandomTeleportLogic=DK;exports.FurnitureRentableSpaceLogic=LK;exports.FurnitureResettingAnimatedVisualization=dX;exports.FurnitureRoomBackgroundColorLogic=FK;exports.FurnitureRoomBackgroundLogic=wK;exports.FurnitureRoomBackgroundVisualization=fX;exports.FurnitureRoomBillboardLogic=GK;exports.FurnitureRoomBrandingLogic=Hh;exports.FurnitureRoomDimmerLogic=BK;exports.FurnitureScoreBoardVisualization=gg;exports.FurnitureScoreLogic=jf;exports.FurnitureSongDiskLogic=kK;exports.FurnitureSoundBlockLogic=Kf;exports.FurnitureSoundBlockVisualization=gX;exports.FurnitureSoundMachineLogic=zK;exports.FurnitureStackHeightComposer=E6;exports.FurnitureStackHeightEvent=UV;exports.FurnitureStackHeightParser=BU;exports.FurnitureStackingHeightMap=tX;exports.FurnitureStickieLogic=Xf;exports.FurnitureStickieVisualization=pX;exports.FurnitureTrophyLogic=VK;exports.FurnitureType=Nr;exports.FurnitureValRandomizerVisualization=pg;exports.FurnitureVisualization=Ai;exports.FurnitureVisualizationData=Ii;exports.FurnitureVoteCounterLogic=qf;exports.FurnitureVoteCounterVisualization=mg;exports.FurnitureVoteMajorityLogic=HK;exports.FurnitureVoteMajorityVisualization=Eg;exports.FurnitureWallAddEvent=rf;exports.FurnitureWallAddParser=iD;exports.FurnitureWallDataParser=Bm;exports.FurnitureWallEvent=nf;exports.FurnitureWallMultiStateComposer=vA;exports.FurnitureWallParser=rD;exports.FurnitureWallRemoveEvent=af;exports.FurnitureWallRemoveParser=nD;exports.FurnitureWallUpdateComposer=xA;exports.FurnitureWallUpdateEvent=of;exports.FurnitureWallUpdateParser=aD;exports.FurnitureWaterAreaVisualization=mX;exports.FurnitureWelcomeGiftLogic=YK;exports.FurnitureWindowLogic=WK;exports.FurnitureYoutubeLogic=jK;exports.FurnitureYoutubeVisualization=Tg;exports.Game2AccountGameStatusMessageEvent=$B;exports.Game2AccountGameStatusMessageParser=r1;exports.Game2CheckGameDirectoryStatusMessageComposer=hH;exports.Game2ExitGameMessageComposer=aH;exports.Game2GameChatMessageComposer=oH;exports.Game2GameDirectoryStatusMessageEvent=QB;exports.Game2GameDirectoryStatusMessageParser=Td;exports.Game2GetAccountGameStatusMessageComposer=cH;exports.Game2GetWeeklyFriendsLeaderboardComposer=RH;exports.Game2GetWeeklyLeaderboardComposer=AH;exports.Game2InArenaQueueMessageEvent=ZB;exports.Game2InArenaQueueMessageParser=n1;exports.Game2JoiningGameFailedMessageEvent=JB;exports.Game2JoiningGameFailedMessageParser=Id;exports.Game2LoadStageReadyMessageComposer=uH;exports.Game2PlayAgainMessageComposer=lH;exports.Game2RequestFullStatusUpdateMessageComposer=_H;exports.Game2StartingGameFailedMessageEvent=t3;exports.Game2StartingGameFailedMessageParser=Sd;exports.Game2StopCounterMessageEvent=e3;exports.Game2StopCounterMessageParser=a1;exports.Game2UserLeftGameMessageEvent=s3;exports.Game2UserLeftGameMessageParser=o1;exports.Game2WeeklyFriendsLeaderboardEvent=m3;exports.Game2WeeklyLeaderboardEvent=E3;exports.Game2WeeklyLeaderboardParser=oc;exports.GameAchievementData=c1;exports.GameAchievementsMessageEvent=a3;exports.GameAchievementsMessageParser=_1;exports.GameClickTargetAddition=Jf;exports.GameConfigurationData=d1;exports.GameInviteMessageEvent=o3;exports.GameInviteMessageParser=f1;exports.GameListMessageEvent=u3;exports.GameListMessageParser=g1;exports.GameRewardWinnerEntry=R1;exports.GameStatusMessageEvent=l3;exports.GameStatusMessageParser=Rd;exports.GameUnloadedMessageComposer=fH;exports.GenericErrorEnum=c_;exports.GenericErrorEvent=Ld;exports.GenericErrorHandler=M8;exports.GenericErrorParser=y1;exports.Geometry=eC;exports.GeometryBodyPart=QP;exports.GeometryItem=TI;exports.GeometryType=Rr;exports.GetAssetManager=Rt;exports.GetAvatarRenderManager=II;exports.GetBadgePointLimitsComposer=jY;exports.GetBonusRareInfoMessageComposer=J4;exports.GetBotInventoryComposer=vI;exports.GetBundleDiscountRulesetComposer=t5;exports.GetCatalogIndexComposer=e5;exports.GetCatalogPageComposer=s5;exports.GetCatalogPageExpirationComposer=i5;exports.GetCatalogPageWithEarliestExpiryComposer=r5;exports.GetCategoriesWithUserCountMessageComposer=JW;exports.GetCfhChatlogMessageComposer=vW;exports.GetCfhStatusMessageComposer=yY;exports.GetClubGiftInfo=n5;exports.GetClubOffersMessageComposer=a5;exports.GetCommunication=G;exports.GetCommunityGoalEarnedPrizesMessageComposer=Hj;exports.GetCommunityGoalHallOfFameMessageComposer=Yj;exports.GetCommunityGoalProgressMessageComposer=Wj;exports.GetConcurrentUsersGoalProgressMessageComposer=jj;exports.GetConcurrentUsersRewardMessageComposer=Kj;exports.GetConfiguration=vt;exports.GetCraftableProductsComposer=z5;exports.GetCraftingRecipeComposer=V5;exports.GetCraftingRecipesAvailableComposer=H5;exports.GetCurrentTimingCodeMessageComposer=D5;exports.GetCustomRoomFilterMessageComposer=tj;exports.GetDailyQuestMessageComposer=Xj;exports.GetDirectClubBuyAvailableComposer=o5;exports.GetEmailStatusComposer=l8;exports.GetEventDispatcher=M;exports.GetExtendedProfileByNameMessageComposer=n8;exports.GetFaqCategoryMessageComposer=vY;exports.GetFaqTextMessageComposer=CY;exports.GetForumStatsMessageComposer=QH;exports.GetForumsListMessageComposer=$H;exports.GetForumsListMessageParser=k1;exports.GetFriendRequestsComposer=Q5;exports.GetGameAchievementsMessageComposer=gH;exports.GetGameListMessageComposer=pH;exports.GetGameStatusMessageComposer=mH;exports.GetGiftMessageComposer=yf;exports.GetGiftWrappingConfigurationComposer=u5;exports.GetGrayscaleFilter=yx;exports.GetGuestRoomMessageComposer=ej;exports.GetGuestRoomResultEvent=wd;exports.GetGuestRoomResultMessageParser=I2;exports.GetGuideReportingStatusMessageComposer=MY;exports.GetHabboBasicMembershipExtendOfferComposer=l5;exports.GetHabboClubExtendOfferMessageComposer=h5;exports.GetHabboGroupBadgesMessageComposer=JA;exports.GetIgnoredUsersComposer=jA;exports.GetInterstitialMessageComposer=w4;exports.GetIsBadgeRequestFulfilledComposer=KY;exports.GetIsOfferGiftableComposer=c5;exports.GetIsUserPartOfCompetitionMessageComposer=L5;exports.GetItemDataComposer=nA;exports.GetJukeboxPlayListMessageComposer=VA;exports.GetLimitedOfferAppearingNextComposer=_5;exports.GetLocalizationManager=Bu;exports.GetMarketplaceCanMakeOfferComposer=mW;exports.GetMarketplaceConfigurationMessageComposer=EW;exports.GetMarketplaceItemStatsComposer=TW;exports.GetMarketplaceOffersMessageComposer=IW;exports.GetMarketplaceOwnOffersMessageComposer=SW;exports.GetMessagesMessageComposer=ZH;exports.GetModeratorRoomInfoMessageComposer=CW;exports.GetModeratorUserInfoMessageComposer=MW;exports.GetNextTargetedOfferComposer=d5;exports.GetNowPlayingMessageComposer=HA;exports.GetOccupiedTilesMessageComposer=P6;exports.GetOfficialRoomsMessageComposer=sj;exports.GetOfficialSongIdMessageComposer=X6;exports.GetPendingCallsForHelpMessageComposer=xY;exports.GetPetCommandsComposer=FR;exports.GetPixi=iZ;exports.GetPopularRoomTagsMessageComposer=ij;exports.GetProductOfferComposer=f5;exports.GetPromoArticlesComposer=_W;exports.GetQuestsMessageComposer=qj;exports.GetQuizQuestionsComposer=PY;exports.GetRecyclerStatusMessageComposer=e6;exports.GetRenderer=Mn;exports.GetRentOrBuyoutOfferMessageComposer=p6;exports.GetResolutionAchievementsMessageComposer=PR;exports.GetRoomAdPurchaseInfoComposer=g5;exports.GetRoomCameraWidgetManager=Drt;exports.GetRoomChatlogMessageComposer=xW;exports.GetRoomContentLoader=Hs;exports.GetRoomEngine=iE;exports.GetRoomEntryDataMessageComposer=Uf;exports.GetRoomEntryTileMessageComposer=b6;exports.GetRoomManager=MX;exports.GetRoomMessageHandler=qc;exports.GetRoomObjectLogicFactory=Og;exports.GetRoomObjectVisualizationFactory=ku;exports.GetRoomPreviewerInstance=ant;exports.GetRoomSessionManager=xr;exports.GetRoomVisitsMessageComposer=PW;exports.GetSeasonalCalendarDailyOfferComposer=p5;exports.GetSeasonalQuestsOnlyMessageComposer=$j;exports.GetSecondsUntilMessageComposer=F5;exports.GetSellablePetPalettesComposer=m5;exports.GetSessionDataManager=Ka;exports.GetSongInfoMessageComposer=YA;exports.GetSoundMachinePlayListMessageComposer=q6;exports.GetSoundManager=$r;exports.GetSoundSettingsComposer=$6;exports.GetStage=nZ;exports.GetTalentTrackLevelMessageComposer=Z6;exports.GetTargetedOfferComposer=E5;exports.GetTexturePool=wr;exports.GetThreadMessageComposer=JH;exports.GetThreadsMessageComposer=tY;exports.GetTicker=Cm;exports.GetTickerFPS=HM;exports.GetTickerTime=Nt;exports.GetUnreadForumsCountMessageComposer=eY;exports.GetUserChatlogMessageComposer=bW;exports.GetUserEventCatsMessageComposer=rj;exports.GetUserFlatCatsMessageComposer=nj;exports.GetUserGameAchievementsMessageComposer=EH;exports.GetUserSongDisksMessageComposer=WA;exports.GetUserTagsComposer=KA;exports.GetWardrobeMessageComposer=V4;exports.GetWeeklyGameRewardComposer=OH;exports.GetWeeklyGameRewardWinnersComposer=yH;exports.GetYoutubeDisplayStatusMessageComposer=M6;exports.GiftReceiverNotFoundEvent=nB;exports.GiftReceiverNotFoundParser=aN;exports.GiftWrappingConfigurationEvent=aB;exports.GiftWrappingConfigurationParser=oN;exports.GlProgram=Tt;exports.GoToBreedingNestFailureEvent=zrt;exports.GoToBreedingNestFailureParser=_d;exports.GoToFlatMessageComposer=bA;exports.GotMysteryBoxPrizeMessageEvent=Az;exports.GotMysteryBoxPrizeMessageParser=e2;exports.GpuProgram=At;exports.GpuStencilModesToPixi=Un;exports.GraphicAsset=R_;exports.GraphicAssetCollection=A_;exports.GraphicAssetPalette=Dx;exports.GraphicsContext=qr;exports.GraphicsContextSystem=XI;exports.GroupAdminGiveComposer=PH;exports.GroupAdminTakeComposer=bH;exports.GroupBadge=H8;exports.GroupBadgePart=Xo;exports.GroupBadgePartsComposer=NH;exports.GroupBadgePartsEvent=US;exports.GroupBadgePartsParser=x1;exports.GroupBuyComposer=UH;exports.GroupBuyDataComposer=DH;exports.GroupBuyDataEvent=v3;exports.GroupBuyDataParser=P1;exports.GroupConfirmMemberRemoveEvent=C3;exports.GroupConfirmMemberRemoveParser=b1;exports.GroupConfirmRemoveMemberComposer=LH;exports.GroupDataBadgePart=U1;exports.GroupDeleteComposer=FH;exports.GroupDetailsChangedMessageEvent=O4;exports.GroupDetailsChangedMessageParser=NN;exports.GroupFavoriteComposer=wH;exports.GroupFurniContextMenuInfoMessageEvent=DV;exports.GroupFurniContextMenuInfoMessageParser=kU;exports.GroupInformationComposer=GH;exports.GroupInformationEvent=M3;exports.GroupInformationManager=z8;exports.GroupInformationParser=N1;exports.GroupJoinComposer=BH;exports.GroupMemberParser=D1;exports.GroupMembersComposer=kH;exports.GroupMembersEvent=x3;exports.GroupMembersParser=L1;exports.GroupMembershipAcceptComposer=zH;exports.GroupMembershipDeclineComposer=VH;exports.GroupMembershipRequestedMessageEvent=y4;exports.GroupMembershipRequestedMessageParser=UN;exports.GroupPurchasedEvent=P3;exports.GroupPurchasedParser=F1;exports.GroupRank=RI;exports.GroupRemoveMemberComposer=HH;exports.GroupSaveBadgeComposer=YH;exports.GroupSaveColorsComposer=WH;exports.GroupSaveInformationComposer=jH;exports.GroupSavePreferencesComposer=KH;exports.GroupSettingsComposer=XH;exports.GroupSettingsEvent=b3;exports.GroupSettingsParser=w1;exports.GroupUnfavoriteComposer=qH;exports.GuestRoomSearchResultData=o2;exports.GuestRoomSearchResultEvent=Uz;exports.GuestRoomSearchResultMessageParser=S2;exports.GuideOnDutyStatusMessageEvent=sk;exports.GuideOnDutyStatusMessageParser=uF;exports.GuideReportingStatusMessageEvent=ik;exports.GuideReportingStatusMessageParser=yd;exports.GuideSessionAttachedMessageEvent=rk;exports.GuideSessionAttachedMessageParser=hF;exports.GuideSessionCreateMessageComposer=bY;exports.GuideSessionDetachedMessageEvent=nk;exports.GuideSessionDetachedMessageParser=cF;exports.GuideSessionEndedMessageEvent=LS;exports.GuideSessionEndedMessageParser=_F;exports.GuideSessionErrorMessageEvent=FS;exports.GuideSessionErrorMessageParser=vd;exports.GuideSessionFeedbackMessageComposer=NY;exports.GuideSessionGetRequesterRoomMessageComposer=UY;exports.GuideSessionGuideDecidesMessageComposer=DY;exports.GuideSessionInviteRequesterMessageComposer=LY;exports.GuideSessionInvitedToGuideRoomMessageEvent=ak;exports.GuideSessionInvitedToGuideRoomMessageParser=dF;exports.GuideSessionIsTypingMessageComposer=FY;exports.GuideSessionMessageMessageComposer=wY;exports.GuideSessionMessageMessageEvent=ok;exports.GuideSessionMessageMessageParser=fF;exports.GuideSessionOnDutyUpdateMessageComposer=GY;exports.GuideSessionPartnerIsTypingMessageEvent=uk;exports.GuideSessionPartnerIsTypingMessageParser=gF;exports.GuideSessionReportMessageComposer=BY;exports.GuideSessionRequesterCancelsMessageComposer=kY;exports.GuideSessionRequesterRoomMessageEvent=lk;exports.GuideSessionRequesterRoomMessageParser=pF;exports.GuideSessionResolvedMessageComposer=zY;exports.GuideSessionStartedMessageEvent=wS;exports.GuideSessionStartedMessageParser=mF;exports.GuideStatusBubbleAddition=KK;exports.GuideTicketCreationResultMessageEvent=hk;exports.GuideTicketCreationResultMessageParser=Cd;exports.GuideTicketResolutionMessageEvent=ck;exports.GuideTicketResolutionMessageParser=Md;exports.GuildBaseSearchMessageComposer=aj;exports.GuildEditFailedMessageEvent=v4;exports.GuildEditFailedMessageParser=rd;exports.GuildForumThread=Ru;exports.GuildForumThreadsEvent=L3;exports.GuildForumThreadsParser=z1;exports.GuildMemberMgmtFailedMessageEvent=C4;exports.GuildMemberMgmtFailedMessageParser=DN;exports.GuildMembershipsMessageEvent=M4;exports.GuildMembershipsMessageParser=LN;exports.HabboAvatarAnimations=rb;exports.HabboAvatarGeometry=nb;exports.HabboAvatarPartSets=ab;exports.HabboBroadcastMessageEvent=tV;exports.HabboBroadcastMessageParser=$2;exports.HabboClubExtendOfferMessageEvent=oB;exports.HabboClubExtendOfferMessageParser=uN;exports.HabboClubLevelEnum=PI;exports.HabboClubOffersMessageEvent=uB;exports.HabboClubOffersMessageParser=lN;exports.HabboGroupBadgesMessageEvent=OR;exports.HabboGroupBadgesMessageParser=FN;exports.HabboGroupDeactivatedMessageEvent=N3;exports.HabboGroupDeactivatedMessageParser=G1;exports.HabboGroupEntryData=SS;exports.HabboGroupJoinFailedMessageEvent=x4;exports.HabboGroupJoinFailedMessageParser=nd;exports.HabboSearchComposer=Z5;exports.HabboSearchResultData=SI;exports.HabboSearchResultEvent=zB;exports.HabboSearchResultParser=XL;exports.HabboWebTools=eu;exports.HallOfFameEntryData=Dw;exports.HarvestPetMessageComposer=aA;exports.HighScoreData=NT;exports.HighScoreDataType=Kl;exports.HotelClosedAndOpensEvent=OG;exports.HotelClosedAndOpensMessageParser=fb;exports.HotelClosesAndWillOpenAtEvent=yG;exports.HotelClosesAndWillOpenAtMessageParser=gb;exports.HotelMergeNameChangeEvent=_k;exports.HotelMergeNameChangeParser=EF;exports.HotelWillCloseInMinutesEvent=vG;exports.HotelWillCloseInMinutesMessageParser=pb;exports.HotelWillShutdownEvent=Vrt;exports.HotelWillShutdownParser=Q2;exports.IdentityAccountsEvent=Y3;exports.IdentityAccountsParser=$1;exports.IgnoreResultEvent=Km;exports.IgnoreResultParser=GN;exports.IgnoreUserComposer=XA;exports.IgnoreUserIdComposer=qA;exports.IgnoredUsersEvent=yR;exports.IgnoredUsersManager=V8;exports.IgnoredUsersParser=wN;exports.ImageData=pI;exports.ImageResult=zu;exports.InClientLinkEvent=vR;exports.InClientLinkParser=BN;exports.IncomingHeader=A;exports.InfoFeedEnableMessageEvent=eV;exports.InfoFeedEnableMessageParser=Z2;exports.InfoRetrieveMessageComposer=NR;exports.InitCameraMessageEvent=VG;exports.InitCameraMessageParser=Gb;exports.InitDiffieHandshakeEvent=W3;exports.InitDiffieHandshakeMessageComposer=cY;exports.InitDiffieHandshakeParser=Q1;exports.InstantMessageErrorEvent=VB;exports.InstantMessageErrorParser=qL;exports.InterstitialMessageEvent=SG;exports.InterstitialMessageParser=hb;exports.InterstitialShownMessageComposer=G4;exports.Interval=Su;exports.IsBadgeRequestFulfilledEvent=vk;exports.IsBadgeRequestFulfilledParser=eU;exports.IsOfferGiftableMessageEvent=lB;exports.IsOfferGiftableMessageParser=hN;exports.IsUserPartOfCompetitionMessageEvent=CB;exports.IsUserPartOfCompetitionMessageParser=bL;exports.IsometricImageFurniVisualization=Xh;exports.IssueCloseNotificationMessageEvent=dk;exports.IssueCloseNotificationMessageParser=TF;exports.IssueDeletedMessageEvent=uz;exports.IssueDeletedMessageParser=UF;exports.IssueInfoMessageEvent=lz;exports.IssueInfoMessageParser=vS;exports.IssueMessageData=vh;exports.IssuePickFailedMessageEvent=hz;exports.IssuePickFailedMessageParser=LF;exports.ItemDataStructure=eL;exports.ItemDataUpdateMessageEvent=Qd;exports.ItemDataUpdateMessageParser=zU;exports.JoinQueueMessageComposer=TH;exports.JoinedQueueMessageEvent=h3;exports.JoinedQueueMessageParser=p1;exports.JoiningQueueFailedMessageEvent=c3;exports.JoiningQueueFailedMessageParser=Ad;exports.JukeboxPlayListFullMessageEvent=fR;exports.JukeboxPlayListFullMessageParser=nG;exports.JukeboxPlaylistController=kX;exports.JukeboxSongDisksMessageEvent=gR;exports.JukeboxSongDisksMessageParser=aG;exports.JumpBy=Wtt;exports.LagWarningReportMessageComposer=t8;exports.LayerData=Vt;exports.LeaderboardEntry=Grt;exports.LeaveQueueMessageComposer=IH;exports.LeftQueueMessageEvent=_3;exports.LeftQueueMessageParser=m1;exports.LegacyDataType=Ze;exports.LegacyExternalInterface=Ut;exports.LegacyWallGeometry=du;exports.LimitedEditionSoldOutEvent=hB;exports.LimitedEditionSoldOutParser=cN;exports.LimitedOfferAppearingNextMessageEvent=cB;exports.LimitedOfferAppearingNextMessageParser=_N;exports.LoadGameMessageEvent=d3;exports.LoadGameMessageParser=E1;exports.LoadGameUrlEvent=f3;exports.LoadGameUrlParser=T1;exports.LocalizationManager=v8;exports.LoveLockFurniFinishedEvent=LV;exports.LoveLockFurniFinishedParser=VU;exports.LoveLockFurniFriendConfirmedEvent=FV;exports.LoveLockFurniFriendConfirmedParser=HU;exports.LoveLockFurniStartEvent=wV;exports.LoveLockFurniStartParser=YU;exports.MOTDNotificationEvent=sV;exports.MOTDNotificationParser=J2;exports.MaintenanceStatusMessageEvent=CG;exports.MaintenanceStatusMessageParser=mb;exports.MakeOfferMessageComposer=RW;exports.MapDataType=Cn;exports.MarkCatalogNewAdditionsPageOpenedComposer=T5;exports.MarketPlaceOffersEvent=nz;exports.MarketplaceBuyOfferResultEvent=Jk;exports.MarketplaceBuyOfferResultParser=OF;exports.MarketplaceCanMakeOfferResult=ez;exports.MarketplaceCanMakeOfferResultParser=vF;exports.MarketplaceCancelOfferResultEvent=tz;exports.MarketplaceCancelOfferResultParser=yF;exports.MarketplaceConfigurationEvent=sz;exports.MarketplaceConfigurationMessageParser=CF;exports.MarketplaceItemStatsEvent=iz;exports.MarketplaceItemStatsParser=xF;exports.MarketplaceMakeOfferResult=rz;exports.MarketplaceMakeOfferResultParser=MF;exports.MarketplaceOffer=yS;exports.MarketplaceOfferData=AI;exports.MarketplaceOffersParser=Pd;exports.MarketplaceOwnOffersEvent=az;exports.MarketplaceOwnOffersParser=bd;exports.Matrix=ot;exports.Matrix4x4=Wo;exports.MemberData=Rf;exports.MessageClassManager=lb;exports.MessageData=Au;exports.MessageErrorEvent=HB;exports.MessageErrorParser=$L;exports.MessageEvent=R;exports.MessengerInitComposer=J5;exports.MessengerInitEvent=YB;exports.MessengerInitParser=QL;exports.MiniMailNewMessageEvent=WB;exports.MiniMailNewMessageParser=ZL;exports.MiniMailUnreadCountEvent=jB;exports.MiniMailUnreadCountParser=JL;exports.ModAlertMessageComposer=NW;exports.ModBanMessageComposer=rr;exports.ModKickMessageComposer=DW;exports.ModMessageMessageComposer=LW;exports.ModMuteMessageComposer=FW;exports.ModRoomData=zF;exports.ModToolPreferencesComposer=wW;exports.ModToolSanctionComposer=GW;exports.ModTradingLockMessageComposer=BW;exports.ModerateMessageMessageComposer=sY;exports.ModerateRoomMessageComposer=UW;exports.ModerateThreadMessageComposer=iY;exports.ModerationCautionParser=FF;exports.ModeratorActionMessageComposer=Mf;exports.ModeratorActionResultMessageEvent=cz;exports.ModeratorActionResultMessageParser=wF;exports.ModeratorCautionEvent=_z;exports.ModeratorInitData=GF;exports.ModeratorInitMessageEvent=dz;exports.ModeratorInitMessageParser=BF;exports.ModeratorMessageEvent=fz;exports.ModeratorMessageParser=kF;exports.ModeratorRoomInfoEvent=gz;exports.ModeratorRoomInfoMessageParser=HF;exports.ModeratorToolPreferencesEvent=pz;exports.ModeratorToolPreferencesMessageParser=YF;exports.ModeratorUserInfoData=WF;exports.ModeratorUserInfoEvent=mz;exports.ModeratorUserInfoMessageParser=jF;exports.MoodlightSettingsComposer=dA;exports.MoodlightSettingsSaveComposer=fA;exports.MoodlightTogggleStateComposer=gA;exports.Motion=Za;exports.Motions=QT;exports.MouseEventType=J;exports.MoveBy=jtt;exports.MoveTo=Mx;exports.MovingObjectLogic=zr;exports.MusicController=xg;exports.MusicPriorities=Ss;exports.MuteAllInRoomEvent=r4;exports.MuteAllInRoomParser=SU;exports.MutedBubbleAddition=XK;exports.MyFavouriteRoomsSearchMessageComposer=oj;exports.MyFrequentRoomHistorySearchMessageComposer=uj;exports.MyFriendsRoomsSearchMessageComposer=lj;exports.MyGuildBasesSearchMessageComposer=hj;exports.MyRecommendedRoomsMessageComposer=cj;exports.MyRoomHistorySearchMessageComposer=_j;exports.MyRoomRightsSearchMessageComposer=dj;exports.MyRoomsSearchMessageComposer=fj;exports.MysteryBoxKeysEvent=kS;exports.MysteryBoxKeysParser=s2;exports.MysteryBoxKeysUpdateEvent=b_;exports.MysteryBoxWaitingCanceledMessageComposer=VW;exports.NavigatorCategoryDataParser=R2;exports.NavigatorCategoryListModeComposer=gj;exports.NavigatorCollapsedEvent=Dz;exports.NavigatorCollapsedParser=A2;exports.NavigatorDeleteSavedSearchComposer=pj;exports.NavigatorEventCategoryDataParser=O2;exports.NavigatorHomeRoomEvent=Lz;exports.NavigatorHomeRoomParser=y2;exports.NavigatorInitComposer=mj;exports.NavigatorLiftedDataParser=v2;exports.NavigatorLiftedEvent=Fz;exports.NavigatorLiftedParser=C2;exports.NavigatorMetadataEvent=wz;exports.NavigatorMetadataParser=M2;exports.NavigatorOpenRoomCreatorEvent=Gz;exports.NavigatorOpenRoomCreatorParser=x2;exports.NavigatorSavedSearch=CS;exports.NavigatorSearchCloseComposer=Ej;exports.NavigatorSearchComposer=Tj;exports.NavigatorSearchEvent=kz;exports.NavigatorSearchOpenComposer=Ij;exports.NavigatorSearchParser=b2;exports.NavigatorSearchResultList=u2;exports.NavigatorSearchResultSet=l2;exports.NavigatorSearchSaveComposer=Sj;exports.NavigatorSearchesEvent=Bz;exports.NavigatorSearchesParser=P2;exports.NavigatorSettingsEvent=zz;exports.NavigatorSettingsParser=N2;exports.NavigatorSettingsSaveComposer=Rj;exports.NavigatorTopLevelContext=h2;exports.NestBreedingSuccessEvent=Lk;exports.NestBreedingSuccessParser=$D;exports.NewConsoleMessageEvent=KB;exports.NewConsoleMessageParser=t1;exports.NewFriendRequestEvent=NS;exports.NewFriendRequestParser=e1;exports.NewUserExperienceGetGiftsComposer=wj;exports.NewUserExperienceGetGiftsSelection=Yrt;exports.NewUserExperienceGift=uw;exports.NewUserExperienceGiftOfferMessageEvent=lw;exports.NewUserExperienceGiftOfferMessageParser=_w;exports.NewUserExperienceGiftOptions=hw;exports.NewUserExperienceNotCompleteEvent=cw;exports.NewUserExperienceNotCompleteParser=dw;exports.NewUserExperienceScriptProceedComposer=LR;exports.NitroAdjustmentFilter=lnt;exports.NitroAlphaFilter=hnt;exports.NitroBundle=T_;exports.NitroCommunicationDemoEvent=tI;exports.NitroContainer=cnt;exports.NitroEvent=Xt;exports.NitroEventType=Qe;exports.NitroFilter=_nt;exports.NitroLogger=it;exports.NitroMessages=T8;exports.NitroRectangle=dnt;exports.NitroRenderTexture=fnt;exports.NitroSettingsEvent=nu;exports.NitroSoundEvent=lh;exports.NitroSprite=gnt;exports.NitroTexture=pnt;exports.NitroToolbarAnimateIconEvent=hh;exports.NitroToolbarEvent=O_;exports.NitroVersion=oh;exports.NoOwnedRoomsAlertMessageEvent=MB;exports.NoOwnedRoomsAlertMessageParser=NL;exports.NoSuchFlatEvent=n4;exports.NoSuchFlatParser=RU;exports.Node3D=mS;exports.NodeData=wm;exports.NoobnessLevelEnum=Yo;exports.NoobnessLevelMessageEvent=DS;exports.NoobnessLevelMessageParser=Z1;exports.NotEnoughBalanceMessageEvent=_B;exports.NotEnoughBalanceMessageParser=dN;exports.NotificationDialogMessageEvent=iV;exports.NotificationDialogMessageParser=tw;exports.NotifyPlayedSongEvent=X_;exports.NowPlayingEvent=Dr;exports.NowPlayingMessageEvent=pR;exports.NowPlayingMessageParser=oG;exports.NumberBank=qT;exports.NumberBubbleAddition=qK;exports.NumberDataType=wa;exports.ObjectAdUpdateMessage=Wi;exports.ObjectAvatarCarryObjectUpdateMessage=a0;exports.ObjectAvatarChatUpdateMessage=$m;exports.ObjectAvatarDanceUpdateMessage=o0;exports.ObjectAvatarEffectUpdateMessage=u0;exports.ObjectAvatarExperienceUpdateMessage=l0;exports.ObjectAvatarExpressionUpdateMessage=h0;exports.ObjectAvatarFigureUpdateMessage=wh;exports.ObjectAvatarFlatControlUpdateMessage=c0;exports.ObjectAvatarGestureUpdateMessage=_0;exports.ObjectAvatarGuideStatusUpdateMessage=$8;exports.ObjectAvatarMutedUpdateMessage=d0;exports.ObjectAvatarOwnMessage=f0;exports.ObjectAvatarPetGestureUpdateMessage=g0;exports.ObjectAvatarPlayerValueUpdateMessage=p0;exports.ObjectAvatarPlayingGameUpdateMessage=m0;exports.ObjectAvatarPostureUpdateMessage=Qm;exports.ObjectAvatarSelectedMessage=Gh;exports.ObjectAvatarSignUpdateMessage=E0;exports.ObjectAvatarSleepUpdateMessage=Zm;exports.ObjectAvatarTypingUpdateMessage=T0;exports.ObjectAvatarUpdateMessage=Bh;exports.ObjectAvatarUseObjectUpdateMessage=I0;exports.ObjectData=UU;exports.ObjectDataBase=Wr;exports.ObjectDataFactory=br;exports.ObjectDataFlags=h_;exports.ObjectDataKey=Si;exports.ObjectDataUpdateMessage=Ht;exports.ObjectGroupBadgeUpdateMessage=Pn;exports.ObjectHeightUpdateMessage=S0;exports.ObjectItemDataUpdateMessage=Jm;exports.ObjectModelDataUpdateMessage=R0;exports.ObjectMouseData=DX;exports.ObjectMoveUpdateMessage=kr;exports.ObjectRolling=ji;exports.ObjectRoomColorUpdateMessage=cu;exports.ObjectRoomFloorHoleUpdateMessage=Is;exports.ObjectRoomMapUpdateMessage=kh;exports.ObjectRoomMaskUpdateMessage=qe;exports.ObjectRoomPlanePropertyUpdateMessage=Zi;exports.ObjectRoomPlaneVisibilityUpdateMessage=Ji;exports.ObjectRoomUpdateMessage=Ue;exports.ObjectSelectedMessage=_u;exports.ObjectStateUpdateMessage=Re;exports.ObjectTileCursorUpdateMessage=qn;exports.ObjectVisibilityUpdateMessage=tr;exports.ObjectsDataUpdateEvent=Wd;exports.ObjectsDataUpdateParser=cD;exports.ObjectsRollingEvent=jd;exports.ObjectsRollingParser=_D;exports.OfferRewardDeliveredMessageEvent=rV;exports.OfferRewardDeliveredMessageParser=ew;exports.OfficialRoomEntryData=Ud;exports.OfficialSongIdMessageEvent=_4;exports.OfficialSongIdMessageParser=uG;exports.OneWayDoorStatusMessageEvent=Zd;exports.OneWayDoorStatusMessageParser=WU;exports.OpenCampaignCalendarDoorAsStaffComposer=X4;exports.OpenCampaignCalendarDoorComposer=q4;exports.OpenMessageComposer=z6;exports.OpenMysteryTrophyMessageComposer=S6;exports.OpenPetPackageMessageComposer=CA;exports.OpenPetPackageRequestedMessageEvent=YS;exports.OpenPetPackageRequestedMessageParser=pw;exports.OpenPetPackageResultMessageEvent=WS;exports.OpenPetPackageResultMessageParser=mw;exports.OpenPresentComposer=MA;exports.OpenQuestTrackerMessageComposer=Qj;exports.OpenWelcomeGiftComposer=R6;exports.OutfitData=Sb;exports.OutgoingHeader=S;exports.Palette=mI;exports.PaletteMapFilter=I_;exports.PartColor=XP;exports.PartDefinition=Yc;exports.PartSetsData=$P;exports.PatternMatchData=DF;exports.PeerUsersClassificationMessageComposer=e0;exports.PendingGuideTicketData=lF;exports.PerformanceLogMessageComposer=e8;exports.PerkAllowancesMessageEvent=lV;exports.PerkAllowancesMessageParser=gw;exports.PerkData=fw;exports.PerkEnum=OI;exports.PerksUpdatedEvent=sI;exports.PetAddedToInventoryEvent=Fk;exports.PetAddedToInventoryParser=QD;exports.PetBreedingMessageEvent=hV;exports.PetBreedingMessageParser=dd;exports.PetBreedingResultData=DT;exports.PetBreedingResultEvent=rR;exports.PetBreedingResultParser=TD;exports.PetColorResult=Fh;exports.PetCustomPart=uS;exports.PetData=ac;exports.PetExperienceEvent=nR;exports.PetExperienceParser=ID;exports.PetFigureData=Xl;exports.PetFigureDataParser=zm;exports.PetFigureUpdateEvent=Ch;exports.PetFigureUpdateParser=SD;exports.PetInfoEvent=aR;exports.PetInfoParser=RD;exports.PetInventoryEvent=wk;exports.PetInventoryParser=ZD;exports.PetLevelNotificationEvent=nV;exports.PetLevelNotificationParser=sw;exports.PetLevelUpdateMessageEvent=jS;exports.PetLevelUpdateMessageParser=Ew;exports.PetLogic=Q8;exports.PetMessageComposer=iA;exports.PetMountComposer=xf;exports.PetMoveComposer=bf;exports.PetPackageHandler=x8;exports.PetPlaceComposer=oA;exports.PetPlacingErrorEvent=HS;exports.PetPlacingErrorEventParser=iw;exports.PetReceivedMessageEvent=Gk;exports.PetReceivedMessageParser=JD;exports.PetRemoveComposer=uA;exports.PetRemovedFromInventory=Bk;exports.PetRemovedFromInventoryParser=tL;exports.PetRespectComposer=wR;exports.PetRespectNoficationEvent=CR;exports.PetRespectNotificationParser=cL;exports.PetScratchFailedMessageEvent=KS;exports.PetScratchFailedMessageParser=Tw;exports.PetSelectedMessageComposer=G6;exports.PetSizeData=mn;exports.PetStatusUpdateEvent=oR;exports.PetStatusUpdateParser=AD;exports.PetSupplementComposer=Gj;exports.PetSupplementTypeEnum=Ko;exports.PetSupplementedNotificationEvent=MR;exports.PetSupplementedNotificationParser=_L;exports.PetTrainingMessageParser=Iw;exports.PetTrainingPanelMessageEvent=cV;exports.PetType=tu;exports.PetVisualization=Ig;exports.PetVisualizationData=N0;exports.PhoneCollectionStateMessageEvent=A3;exports.PhoneCollectionStateParser=v1;exports.PhotoCompetitionMessageComposer=Y4;exports.PickIssuesMessageComposer=kW;exports.PlaceHolderAvatarImage=eb;exports.PlaneBitmapData=Jrt;exports.PlaneDrawingData=Zrt;exports.PlaneMask=SX;exports.PlaneMaskBitmap=Rg;exports.PlaneMaskFilter=S_;exports.PlaneMaskManager=RX;exports.PlaneMaskVisualization=In;exports.PlayListEntry=Ym;exports.PlayListMessageEvent=d4;exports.PlayListMessageParser=lG;exports.PlayListSongAddedMessageEvent=f4;exports.PlayListSongAddedMessageParser=hG;exports.PlayListStatusEvent=Mr;exports.Point=st;exports.PointMath=Gtt;exports.PollAnswerComposer=HR;exports.PollChoice=Sw;exports.PollContentsEvent=XS;exports.PollContentsParser=Aw;exports.PollErrorEvent=qS;exports.PollErrorParser=Ow;exports.PollHandler=P8;exports.PollOfferEvent=$S;exports.PollOfferParser=yw;exports.PollQuestion=Rw;exports.PollRejectComposer=YR;exports.PollStartComposer=WR;exports.PongMessageComposer=UR;exports.PopularRoomTagsData=D2;exports.PopularRoomTagsResultEvent=yI;exports.PopularRoomTagsResultMessageParser=L2;exports.PopularRoomsSearchMessageComposer=Aj;exports.PopularTagData=U2;exports.PostMessageMessageComposer=rY;exports.PostMessageMessageEvent=F3;exports.PostMessageMessageParser=V1;exports.PostQuizAnswersComposer=VY;exports.PostThreadMessageEvent=w3;exports.PostThreadMessageParser=H1;exports.PrepareRenderer=rZ;exports.PresentOpenedMessageEvent=BS;exports.PresentOpenedMessageParser=KD;exports.PrizeData=Nw;exports.ProductData=W8;exports.ProductDataLoader=j8;exports.ProductOffer=ow;exports.ProductOfferEvent=dB;exports.ProductOfferMessageParser=fN;exports.PromoArticleData=xd;exports.PromoArticlesMessageEvent=Qk;exports.PromoArticlesMessageParser=RF;exports.PublishPhotoMessageComposer=W4;exports.PurchaseBasicMembershipExtensionComposer=I5;exports.PurchaseErrorMessageEvent=fB;exports.PurchaseErrorMessageParser=gN;exports.PurchaseFromCatalogAsGiftComposer=S5;exports.PurchaseFromCatalogComposer=R5;exports.PurchaseNotAllowedMessageEvent=gB;exports.PurchaseNotAllowedMessageParser=pN;exports.PurchaseOKMessageEvent=pB;exports.PurchaseOKMessageOfferData=mN;exports.PurchaseOKMessageParser=EN;exports.PurchasePhotoMessageComposer=j4;exports.PurchaseRoomAdMessageComposer=A5;exports.PurchaseTargetedOfferComposer=O5;exports.PurchaseVipMembershipExtensionComposer=y5;exports.QuestCancelledMessageEvent=mV;exports.QuestCancelledMessageParser=kw;exports.QuestCompletedMessageEvent=EV;exports.QuestCompletedMessageParser=zw;exports.QuestDailyMessageEvent=TV;exports.QuestDailyMessageParser=Vw;exports.QuestMessageData=Dn;exports.QuestMessageEvent=IV;exports.QuestMessageParser=Hw;exports.QuestionAnsweredEvent=QS;exports.QuestionAnsweredParser=vw;exports.QuestionEvent=ZS;exports.QuestionFinishedEvent=JS;exports.QuestionFinishedParser=Cw;exports.QuestionParser=Mw;exports.QuestsMessageEvent=SV;exports.QuestsMessageParser=Yw;exports.Queue=Ktt;exports.QuizDataMessageEvent=fk;exports.QuizDataMessageParser=IF;exports.QuizResultsMessageEvent=gk;exports.QuizResultsMessageParser=SF;exports.Randomizer=Sg;exports.RarityCategoryData=kM;exports.RateFlatMessageComposer=Oj;exports.Rectangle=Kt;exports.RecycleItemsEntry=Wrt;exports.RecycleItemsMessageComposer=s6;exports.RecyclerFinishedMessageEvent=Gd;exports.RecyclerFinishedMessageParser=jw;exports.RecyclerStatusMessageEvent=Bd;exports.RecyclerStatusMessageParser=Kw;exports.RedeemCommunityGoalPrizeMessageComposer=Zj;exports.RedeemItemClothingComposer=U6;exports.RedeemMarketplaceOfferCreditsMessageComposer=AW;exports.RedeemVoucherMessageComposer=v5;exports.RejectQuestMessageComposer=Jj;exports.RelationshipStatusEnum=u_;exports.RelationshipStatusInfo=SN;exports.RelationshipStatusInfoEvent=I4;exports.RelationshipStatusInfoMessageParser=RN;exports.ReleaseIssuesMessageComposer=zW;exports.RemainingMuteEvent=cR;exports.RemainingMuteParser=CD;exports.RemoveAllRightsMessageComposer=i6;exports.RemoveFriendComposer=tH;exports.RemoveJukeboxDiskComposer=Q6;exports.RemoveLinkEventTracker=lZ;exports.RemoveOwnRoomRightsRoomMessageComposer=yj;exports.RemovePetSaddleComposer=GR;exports.RemoveWallItemComposer=lA;exports.RenderMode=bT;exports.RenderRoomMessageComposer=Lh;exports.RenderRoomThumbnailMessageComposer=Af;exports.RenderTargetSystem=qC;exports.RendererType=ir;exports.RentableSpaceCancelRentMessageComposer=A6;exports.RentableSpaceRentFailedMessageEvent=GV;exports.RentableSpaceRentFailedMessageParser=jU;exports.RentableSpaceRentMessageComposer=O6;exports.RentableSpaceRentOkMessageEvent=BV;exports.RentableSpaceRentOkMessageParser=KU;exports.RentableSpaceStatusMessageComposer=y6;exports.RentableSpaceStatusMessageEvent=kV;exports.RentableSpaceStatusMessageParser=cd;exports.RequestABadgeComposer=XY;exports.RequestAchievementsMessageComposer=B4;exports.RequestBadgesComposer=qY;exports.RequestBotCommandConfigurationComposer=a6;exports.RequestCameraConfigurationComposer=K4;exports.RequestFriendComposer=eH;exports.RequestFurniInventoryWhenNotInRoomComposer=ZY;exports.RequestPetInfoComposer=BR;exports.RequestPetsComposer=CI;exports.RequestSpamWallPostItMessageEvent=zV;exports.RequestSpamWallPostItMessageParser=XU;exports.ResetPhoneNumberStateMessageComposer=vH;exports.ResetResolutionAchievementMessageComposer=SH;exports.ResizeTo=Xtt;exports.RespectReceivedEvent=xR;exports.RespectReceivedParser=dL;exports.RestoreClientMessageEvent=aV;exports.RestoreClientMessageParser=rw;exports.RoomAdErrorEvent=RG;exports.RoomAdErrorMessageParser=cb;exports.RoomAdEventTabAdClickedComposer=vj;exports.RoomAdEventTabViewedComposer=Cj;exports.RoomAdPurchaseInfoEvent=mB;exports.RoomAdPurchaseInfoEventParser=TL;exports.RoomAdPurchaseInitiatedComposer=C5;exports.RoomAdSearchMessageComposer=Mj;exports.RoomAmbassadorAlertComposer=qR;exports.RoomAreaSelectionManager=qo;exports.RoomBackgroundColorEvent=C_;exports.RoomBanUserComposer=$R;exports.RoomBannedUsersComposer=o6;exports.RoomCamera=eg;exports.RoomCameraWidgetEffect=ob;exports.RoomCameraWidgetManager=ub;exports.RoomCameraWidgetManagerEvent=ch;exports.RoomCameraWidgetSelectedEffect=Lrt;exports.RoomChatHandler=b8;exports.RoomChatSettings=ou;exports.RoomChatSettingsEvent=MV;exports.RoomChatSettingsParser=MU;exports.RoomChatlogEvent=Ez;exports.RoomChatlogMessageParser=KF;exports.RoomCompetitionInitMessageComposer=w5;exports.RoomContentLoadedEvent=Ts;exports.RoomContentLoader=Ff;exports.RoomControllerLevel=$i;exports.RoomData=eX;exports.RoomDataHandler=N8;exports.RoomDataParser=Wa;exports.RoomDeleteComposer=r6;exports.RoomDimmerPresetsEvent=iR;exports.RoomDimmerPresetsHandler=U8;exports.RoomDimmerPresetsMessageData=qU;exports.RoomDimmerPresetsMessageParser=$U;exports.RoomDoorbellAcceptedEvent=kd;exports.RoomDoorbellAcceptedParser=nU;exports.RoomDoorbellAccessComposer=KR;exports.RoomDragEvent=M_;exports.RoomEngine=qh;exports.RoomEngineAreaHideStateEvent=x_;exports.RoomEngineDimmerStateEvent=P_;exports.RoomEngineEvent=ae;exports.RoomEngineObjectEvent=ht;exports.RoomEngineObjectPlacedEvent=wx;exports.RoomEngineObjectPlacedOnUserEvent=Gx;exports.RoomEngineObjectPlaySoundEvent=Ra;exports.RoomEngineRoomAdEvent=Aa;exports.RoomEngineSamplePlaybackEvent=Ds;exports.RoomEngineTriggerWidgetEvent=Z;exports.RoomEngineUseProductEvent=_h;exports.RoomEnterComposer=XR;exports.RoomEnterEffect=Ti;exports.RoomEnterErrorEvent=AV;exports.RoomEnterEvent=Yd;exports.RoomEnterParser=lU;exports.RoomEntryData=fL;exports.RoomEntryInfoMessageEvent=xV;exports.RoomEntryInfoMessageParser=xU;exports.RoomEntryTileMessageEvent=lf;exports.RoomEntryTileMessageParser=dD;exports.RoomEventCancelEvent=Vz;exports.RoomEventCancelMessageParser=F2;exports.RoomEventData=c2;exports.RoomEventEvent=Hz;exports.RoomEventMessageParser=w2;exports.RoomFilterSettingsMessageEvent=Yz;exports.RoomFilterSettingsMessageParser=G2;exports.RoomFloorHole=bI;exports.RoomForwardEvent=OV;exports.RoomFowardParser=hU;exports.RoomFurnitureData=Kc;exports.RoomGeometry=Gs;exports.RoomGiveRightsComposer=QR;exports.RoomHeightMapEvent=hf;exports.RoomHeightMapParser=Br;exports.RoomHeightMapUpdateEvent=cf;exports.RoomHeightMapUpdateParser=fD;exports.RoomId=uh;exports.RoomInstance=yX;exports.RoomInstanceData=iX;exports.RoomInviteErrorEvent=XB;exports.RoomInviteErrorParser=s1;exports.RoomInviteEvent=qB;exports.RoomInviteParser=i1;exports.RoomKickUserComposer=ZR;exports.RoomLogic=Z8;exports.RoomManager=CX;exports.RoomMapData=i0;exports.RoomMapMaskData=X8;exports.RoomMessageHandler=xX;exports.RoomMessageNotificationMessageEvent=VV;exports.RoomMessageNotificationMessageParser=QU;exports.RoomModerationData=VF;exports.RoomModerationSettings=Ah;exports.RoomMuteComposer=V6;exports.RoomMuteUserComposer=JR;exports.RoomNetworkOpenConnectionMessageComposer=B6;exports.RoomObject=wf;exports.RoomObjectBadgeAssetEvent=ri;exports.RoomObjectBadgeImageAssetListener=rX;exports.RoomObjectCache=vg;exports.RoomObjectCacheItem=UX;exports.RoomObjectCategory=D;exports.RoomObjectDataRequestEvent=ws;exports.RoomObjectDimmerStateUpdateEvent=yn;exports.RoomObjectEvent=zs;exports.RoomObjectEventHandler=PX;exports.RoomObjectFloorHoleEvent=Xe;exports.RoomObjectFurnitureActionEvent=z;exports.RoomObjectHSLColorEnableEvent=Xi;exports.RoomObjectHSLColorEnabledEvent=dh;exports.RoomObjectLocationCacheItem=bX;exports.RoomObjectLogicBase=uc;exports.RoomObjectLogicFactory=OX;exports.RoomObjectLogicType=tt;exports.RoomObjectManager=vX;exports.RoomObjectModel=r0;exports.RoomObjectMouseEvent=at;exports.RoomObjectMoveEvent=$e;exports.RoomObjectOperationType=yt;exports.RoomObjectPlacementSource=l_;exports.RoomObjectPlaySoundIdEvent=Qi;exports.RoomObjectRoomAdEvent=te;exports.RoomObjectSamplePlaybackEvent=Ee;exports.RoomObjectSortableSpriteCacheItem=NX;exports.RoomObjectSoundMachineEvent=ie;exports.RoomObjectSprite=Yh;exports.RoomObjectSpriteData=zM;exports.RoomObjectSpriteType=Rs;exports.RoomObjectSpriteVisualization=Xa;exports.RoomObjectStateChangedEvent=St;exports.RoomObjectTileMouseEvent=ui;exports.RoomObjectType=qi;exports.RoomObjectUpdateMessage=ye;exports.RoomObjectUserType=jt;exports.RoomObjectVariable=I;exports.RoomObjectVisualizationFactory=yg;exports.RoomObjectVisualizationType=j;exports.RoomObjectWallMouseEvent=Xn;exports.RoomObjectWidgetRequestEvent=b;exports.RoomOccupiedTilesMessageEvent=KV;exports.RoomOccupiedTilesMessageParser=gD;exports.RoomPaintEvent=_f;exports.RoomPaintParser=pD;exports.RoomPermissionsHandler=D8;exports.RoomPetData=F8;exports.RoomPlane=Yt;exports.RoomPlaneBitmapMask=TX;exports.RoomPlaneBitmapMaskData=xn;exports.RoomPlaneBitmapMaskParser=n0;exports.RoomPlaneData=oe;exports.RoomPlaneMaskData=q8;exports.RoomPlaneParser=Ae;exports.RoomPlaneRectangleMask=IX;exports.RoomPollDataParser=Pw;exports.RoomPollResultEvent=tR;exports.RoomPollResultParser=xw;exports.RoomPresentHandler=L8;exports.RoomPreviewer=$h;exports.RoomReadyMessageEvent=ja;exports.RoomReadyMessageParser=mD;exports.RoomRenderer=FX;exports.RoomRightsClearEvent=zd;exports.RoomRightsClearParser=aU;exports.RoomRightsEvent=Vd;exports.RoomRightsOwnerEvent=Hd;exports.RoomRightsOwnerParser=oU;exports.RoomRightsParser=uU;exports.RoomRotatingEffect=sg;exports.RoomScoreEvent=PV;exports.RoomScoreParser=PU;exports.RoomSession=C8;exports.RoomSessionChatEvent=Jt;exports.RoomSessionConfirmPetBreedingEvent=N_;exports.RoomSessionConfirmPetBreedingResultEvent=U_;exports.RoomSessionDanceEvent=D_;exports.RoomSessionDimmerPresetsEvent=fh;exports.RoomSessionDimmerPresetsEventPresetItem=zx;exports.RoomSessionDoorbellEvent=Ur;exports.RoomSessionErrorMessageEvent=ke;exports.RoomSessionEvent=ft;exports.RoomSessionFavoriteGroupUpdateEvent=L_;exports.RoomSessionFriendRequestEvent=F_;exports.RoomSessionHandler=Pa;exports.RoomSessionManager=k8;exports.RoomSessionNestBreedingSuccessEvent=w_;exports.RoomSessionPetBreedingEvent=G_;exports.RoomSessionPetBreedingResultEvent=B_;exports.RoomSessionPetCommandsUpdateEvent=iI;exports.RoomSessionPetFigureUpdateEvent=k_;exports.RoomSessionPetInfoUpdateEvent=z_;exports.RoomSessionPetLevelUpdateEvent=V_;exports.RoomSessionPetPackageEvent=Oa;exports.RoomSessionPetStatusUpdateEvent=H_;exports.RoomSessionPollEvent=vr;exports.RoomSessionPresentEvent=gh;exports.RoomSessionPropertyUpdateEvent=ph;exports.RoomSessionQueueEvent=rI;exports.RoomSessionSpectatorModeEvent=mh;exports.RoomSessionUserBadgesEvent=Y_;exports.RoomSessionUserDataUpdateEvent=W_;exports.RoomSessionUserFigureUpdateEvent=j_;exports.RoomSessionUserTagsEvent=nI;exports.RoomSessionVoteEvent=ya;exports.RoomSessionWordQuizEvent=Cr;exports.RoomSettingsComposer=u6;exports.RoomSettingsData=ld;exports.RoomSettingsDataEvent=a4;exports.RoomSettingsDataParser=AU;exports.RoomSettingsErrorEvent=o4;exports.RoomSettingsErrorParser=OU;exports.RoomSettingsSaveErrorEvent=l4;exports.RoomSettingsSaveErrorParser=hd;exports.RoomSettingsSavedEvent=u4;exports.RoomSettingsSavedParser=yU;exports.RoomSettingsUpdatedEvent=Wz;exports.RoomSettingsUpdatedParser=B2;exports.RoomShakingEffect=Kh;exports.RoomSpriteCanvas=LX;exports.RoomSpriteMouseEvent=Bx;exports.RoomTakeRightsComposer=tA;exports.RoomTextSearchMessageComposer=bj;exports.RoomThumbnailUpdateResultEvent=jz;exports.RoomThumbnailUpdateResultMessageParser=k2;exports.RoomToObjectEvent=kx;exports.RoomToObjectOwnAvatarMoveEvent=za;exports.RoomTradingLevelEnum=__;exports.RoomUnbanUserComposer=n6;exports.RoomUnitActionComposer=FA;exports.RoomUnitChatComposer=qm;exports.RoomUnitChatEvent=Wm;exports.RoomUnitChatParser=km;exports.RoomUnitChatShoutComposer=NA;exports.RoomUnitChatShoutEvent=Mh;exports.RoomUnitChatStyleComposer=D6;exports.RoomUnitChatWhisperComposer=UA;exports.RoomUnitChatWhisperEvent=xh;exports.RoomUnitDanceComposer=wA;exports.RoomUnitDanceEvent=Ph;exports.RoomUnitDanceParser=xD;exports.RoomUnitDropHandItemComposer=L6;exports.RoomUnitEffectEvent=gf;exports.RoomUnitEffectParser=PD;exports.RoomUnitEvent=bh;exports.RoomUnitExpressionEvent=pf;exports.RoomUnitExpressionParser=bD;exports.RoomUnitGiveHandItemComposer=F6;exports.RoomUnitGiveHandItemPetComposer=w6;exports.RoomUnitHandItemEvent=mf;exports.RoomUnitHandItemParser=ND;exports.RoomUnitHandItemReceivedEvent=_R;exports.RoomUnitHandItemReceivedParser=UD;exports.RoomUnitIdleEvent=Ef;exports.RoomUnitIdleParser=DD;exports.RoomUnitInfoEvent=Nh;exports.RoomUnitInfoParser=LD;exports.RoomUnitLookComposer=GA;exports.RoomUnitNumberEvent=Tf;exports.RoomUnitNumberParser=FD;exports.RoomUnitParser=wD;exports.RoomUnitPostureComposer=BA;exports.RoomUnitRemoveEvent=Uh;exports.RoomUnitRemoveParser=GD;exports.RoomUnitSignComposer=kA;exports.RoomUnitStatusAction=BD;exports.RoomUnitStatusEvent=If;exports.RoomUnitStatusMessage=kD;exports.RoomUnitStatusParser=zD;exports.RoomUnitTypingEvent=ff;exports.RoomUnitTypingParser=MD;exports.RoomUnitTypingStartComposer=DA;exports.RoomUnitTypingStopComposer=LA;exports.RoomUnitWalkComposer=zA;exports.RoomUserData=w8;exports.RoomUsersClassificationMessageComposer=s0;exports.RoomUsersHandler=G8;exports.RoomUsersWithRightsComposer=l6;exports.RoomVariableEnum=Be;exports.RoomVisitData=XF;exports.RoomVisitsData=qF;exports.RoomVisitsEvent=Tz;exports.RoomVisitsMessageParser=$F;exports.RoomVisualization=Ag;exports.RoomVisualizationData=U0;exports.RoomVisualizationSettingsEvent=df;exports.RoomVisualizationSettingsParser=ED;exports.RoomWallData=gi;exports.RoomWidgetEnum=ql;exports.RoomWidgetEnumItemExtradataParameter=hs;exports.RoomWidgetFurniInfoUsagePolicyEnum=GT;exports.RoomZoomEvent=eI;exports.RoomsWhereMyFriendsAreSearchMessageComposer=xj;exports.RoomsWithHighestScoreSearchMessageComposer=Pj;exports.SSOTicketMessageComposer=DR;exports.STENCIL_MODES=He;exports.SanctionStatusEvent=FG;exports.SanctionStatusMessageParser=Nb;exports.SaveRoomSettingsComposer=h6;exports.SaveWardrobeOutfitMessageComposer=H4;exports.SaveableRoomSettingsData=jrt;exports.ScrGetKickbackInfoMessageComposer=_8;exports.ScrKickbackData=gL;exports.ScrSendKickbackInfoMessageEvent=U4;exports.ScrSendKickbackInfoMessageParser=pL;exports.SearchFaqsMessageComposer=HY;exports.SeasonalCalendarDailyOfferMessageEvent=EB;exports.SeasonalCalendarDailyOfferMessageParser=IL;exports.SeasonalQuestsMessageEvent=RV;exports.SeasonalQuestsParser=Ww;exports.SecondsUntilMessageEvent=xB;exports.SecondsUntilMessageParser=UL;exports.SecurityLevel=d_;exports.SelectClubGiftComposer=M5;exports.SelectedRoomObjectData=Xc;exports.SelectionArrowLogic=J8;exports.SellablePetPaletteData=SL;exports.SellablePetPalettesMessageEvent=TB;exports.SellablePetPalettesParser=RL;exports.SendMessageComposer=sH;exports.SendRoomInviteComposer=iH;exports.SessionDataManager=K8;exports.SessionDataPreferencesEvent=K_;exports.SetActivatedBadgesComposer=$Y;exports.SetClothingChangeDataMessageComposer=hA;exports.SetItemDataMessageComposer=cA;exports.SetObjectDataMessageComposer=_A;exports.SetPhoneNumberVerificationStatusMessageComposer=vf;exports.SetRelationshipStatusComposer=rH;exports.SetRoomSessionTagsMessageComposer=Nj;exports.SetTargetedOfferStateComposer=x5;exports.SetType=Hc;exports.SetYoutubeDisplayPlaylistMessageComposer=x6;exports.Shader=$a;exports.SharedRenderPipes=TM;exports.SharedSystems=EM;exports.ShopTargetedOfferViewedComposer=P5;exports.Short=R8;exports.ShowEnforceRoomCategoryDialogEvent=h4;exports.ShowEnforceRoomCategoryDialogParser=vU;exports.ShowMysteryBoxWaitMessageEvent=Oz;exports.ShowMysteryBoxWaitMessageParser=i2;exports.SimpleAlertMessageEvent=oV;exports.SimpleAlertMessageParser=nw;exports.SizeData=Wh;exports.SocketConnection=O8;exports.SocketConnectionEvent=JT;exports.SongDataEntry=D0;exports.SongDiskInventoryReceivedEvent=va;exports.SongInfoEntry=cG;exports.SongInfoReceivedEvent=Ha;exports.SongStartRequestData=wX;exports.SortableSprite=Cg;exports.SoundManager=zX;exports.SoundManagerEvent=Ya;exports.SpriteDataContainer=kP;exports.StartCampaignMessageComposer=t6;exports.StartRoomPollEvent=eR;exports.State=Qh;exports.StringDataType=Ga;exports.SubmitRoomToCompetitionMessageComposer=Of;exports.SystemChatStyleEnum=gn;exports.TalentLevelUpEvent=g4;exports.TalentLevelUpMessageParser=gG;exports.TalentTrackComposer=J6;exports.TalentTrackLevel=pG;exports.TalentTrackLevelMessageEvent=p4;exports.TalentTrackLevelMessageParser=mG;exports.TalentTrackMessageEvent=m4;exports.TalentTrackParser=TG;exports.TalentTrackRewardPerk=fG;exports.TalentTrackRewardProduct=MS;exports.TalentTrackTask=EG;exports.TargetedOfferData=AL;exports.TargetedOfferEvent=IB;exports.TargetedOfferNotFoundEvent=SB;exports.TargetedOfferNotFoundParser=OL;exports.TargetedOfferParser=yL;exports.TextStyle=vn;exports.Texture=W;exports.TexturePool=os;exports.TexturePool$1=f_;exports.TextureSource=De;exports.TextureStyle=iv;exports.TextureUtils=ue;exports.ThreadMessagesMessageEvent=G3;exports.ThreadMessagesMessageParser=Y1;exports.ThumbnailStatusMessageEvent=HG;exports.ThumbnailStatusMessageParser=Bb;exports.Ticker=Ls;exports.TileCursorLogic=Bf;exports.TileCursorVisualization=AX;exports.TileObjectMap=sX;exports.ToInt32=lS;exports.TogglePetBreedingComposer=kR;exports.TogglePetRidingComposer=zR;exports.ToggleStaffPickMessageComposer=Uj;exports.ToolbarIconEnum=Hl;exports.TouchEventType=LT;exports.TradingAcceptComposer=eW;exports.TradingAcceptEvent=kk;exports.TradingAcceptParser=sL;exports.TradingCancelComposer=sW;exports.TradingCloseComposer=iW;exports.TradingCloseEvent=zk;exports.TradingCloseParser=fd;exports.TradingCompletedEvent=Vk;exports.TradingCompletedParser=iL;exports.TradingConfirmationComposer=rW;exports.TradingConfirmationEvent=Hk;exports.TradingConfirmationParser=rL;exports.TradingListAddItemComposer=nW;exports.TradingListAddItemsComposer=aW;exports.TradingListItemEvent=Yk;exports.TradingListItemParser=nL;exports.TradingListItemRemoveComposer=oW;exports.TradingNoSuchItemEvent=Wk;exports.TradingNoSuchItemParser=aL;exports.TradingNotOpenEvent=jk;exports.TradingNotOpenParser=oL;exports.TradingOpenComposer=uW;exports.TradingOpenEvent=Kk;exports.TradingOpenFailedEvent=Xk;exports.TradingOpenFailedParser=gd;exports.TradingOpenParser=uL;exports.TradingOtherNotAllowedEvent=qk;exports.TradingOtherNotAllowedParser=lL;exports.TradingUnacceptComposer=lW;exports.TradingYouAreNotAllowedEvent=$k;exports.TradingYouAreNotAllowedParser=hL;exports.TraxChannel=GX;exports.TraxChannelItem=BX;exports.TraxData=Mg;exports.TraxSongInfoMessageEvent=mR;exports.TraxSongInfoMessageParser=_G;exports.TriggerDefinition=qw;exports.Triggerable=Hm;exports.TryPhoneNumberMessageComposer=CH;exports.TryPhoneNumberResultMessageEvent=O3;exports.TryPhoneNumberResultParser=C1;exports.TryVerificationCodeResultMessageEvent=y3;exports.TryVerificationCodeResultParser=M1;exports.TypingBubbleAddition=$K;exports.UPDATE_PRIORITY=Ll;exports.UboSystem=HC;exports.UnblockGroupMemberMessageComposer=m8;exports.UniformGroup=Yr;exports.UnignoreUserComposer=$A;exports.UniqueIDMessageComposer=_Y;exports.UnloadGameMessageEvent=g3;exports.UnloadGameMessageParser=I1;exports.UnreadForumsCountMessageEvent=B3;exports.UnreadForumsCountMessageParser=W1;exports.UnseenItemsEvent=uV;exports.UnseenItemsParser=aw;exports.UnseenResetCategoryComposer=hW;exports.UnseenResetItemsComposer=cW;exports.UpdateActionMessageComposer=H6;exports.UpdateConditionMessageComposer=Y6;exports.UpdateFloorPropertiesMessageComposer=N6;exports.UpdateForumReadMarkerEntry=Hrt;exports.UpdateForumReadMarkerMessageComposer=nY;exports.UpdateForumSettingsMessageComposer=aY;exports.UpdateHomeRoomMessageComposer=Dj;exports.UpdateMessageMessageEvent=k3;exports.UpdateMessageMessageParser=j1;exports.UpdateRoomCategoryAndTradeSettingsComposer=j6;exports.UpdateRoomFilterMessageComposer=Lj;exports.UpdateRoomThumbnailMessageComposer=Fj;exports.UpdateThreadMessageComposer=oY;exports.UpdateThreadMessageEvent=z3;exports.UpdateThreadMessageParser=K1;exports.UpdateTriggerMessageComposer=W6;exports.UsePetProductComposer=VR;exports.UserBannedMessageEvent=Iz;exports.UserBannedMessageParser=QF;exports.UserChatlogData=ZF;exports.UserChatlogEvent=Sz;exports.UserChatlogMessageParser=JF;exports.UserClassificationMessageEvent=F4;exports.UserClassificationMessageParser=IG;exports.UserCreditsEvent=P4;exports.UserCreditsMessageParser=wrt;exports.UserCreditsParser=kN;exports.UserCurrencyComposer=h8;exports.UserCurrencyEvent=b4;exports.UserCurrencyParser=zN;exports.UserCurrentBadgesComposer=QA;exports.UserCurrentBadgesEvent=SR;exports.UserCurrentBadgesParser=AN;exports.UserDataManager=Lf;exports.UserEventCatsEvent=Kz;exports.UserEventCatsMessageParser=z2;exports.UserFigureComposer=a8;exports.UserFigureParser=Frt;exports.UserFlatCatsEvent=Xz;exports.UserFlatCatsMessageParser=V2;exports.UserGameAchievementsMessageEvent=p3;exports.UserGameAchievementsMessageParser=S1;exports.UserInfoDataParser=ON;exports.UserInfoEvent=Dh;exports.UserInfoParser=yN;exports.UserMessageData=Ma;exports.UserMottoComposer=ZA;exports.UserNameChangeMessageEvent=jm;exports.UserNameChangeMessageParser=vN;exports.UserNameUpdateEvent=Eh;exports.UserPermissionsEvent=TR;exports.UserPermissionsParser=TN;exports.UserProfileComposer=o8;exports.UserProfileEvent=S4;exports.UserProfileParser=CN;exports.UserRelationshipsComposer=u8;exports.UserRespectComposer=t0;exports.UserSettingsCameraFollowComposer=d8;exports.UserSettingsEvent=R4;exports.UserSettingsOldChatComposer=f8;exports.UserSettingsParser=MN;exports.UserSettingsRoomInvitesComposer=g8;exports.UserSettingsSoundComposer=p8;exports.UserSongDisksInventoryMessageEvent=ER;exports.UserSongDisksInventoryMessageParser=dG;exports.UserSubscriptionComposer=c8;exports.UserSubscriptionEvent=N4;exports.UserSubscriptionParser=ad;exports.UserTagsMessageEvent=RR;exports.UserTagsParser=xN;exports.UserUnbannedFromRoomEvent=c4;exports.UserUnbannedFromRoomParser=CU;exports.UserWardrobePageEvent=D4;exports.UserWardrobePageParser=mL;exports.Vector3d=v;exports.VerifyCodeMessageComposer=MH;exports.VersionCheckMessageComposer=dY;exports.ViewContainer=fm;exports.ViewableBuffer=mT;exports.VisitUserComposer=nH;exports.VoteDataType=Jo;exports.VoteForRoomMessageComposer=G5;exports.VotePollCounterMessageComposer=jR;exports.VoucherRedeemErrorMessageEvent=RB;exports.VoucherRedeemErrorMessageParser=vL;exports.VoucherRedeemOkMessageEvent=AB;exports.VoucherRedeemOkMessageParser=CL;exports.Wait=qtt;exports.WardrobeMessageEvent=xG;exports.WardrobeMessageParser=Rb;exports.WebSocketEventEnum=Ea;exports.WeeklyCompetitiveFriendsLeaderboardEvent=T3;exports.WeeklyCompetitiveLeaderboardEvent=I3;exports.WeeklyGameRewardEvent=S3;exports.WeeklyGameRewardParser=A1;exports.WeeklyGameRewardWinnersEvent=R3;exports.WeeklyGameRewardWinnersParser=O1;exports.WelcomeGiftChangeEmailComposer=E8;exports.WelcomeGiftChangeEmailResultEvent=L4;exports.WelcomeGiftChangeEmailResultParser=EL;exports.WelcomeGiftStatusEvent=HV;exports.WelcomeGiftStatusParser=ZU;exports.WiredActionDefinition=$w;exports.WiredFilter=$T;exports.WiredFurniActionEvent=XV;exports.WiredFurniActionParser=Qw;exports.WiredFurniConditionEvent=qV;exports.WiredFurniConditionParser=Zw;exports.WiredFurniTriggerEvent=$V;exports.WiredFurniTriggerParser=Jw;exports.WiredOpenEvent=QV;exports.WiredOpenParser=tG;exports.WiredRewardResultMessageEvent=Sf;exports.WiredRewardResultMessageParser=eG;exports.WiredSaveSuccessEvent=ZV;exports.WiredSaveSuccessParser=sG;exports.WiredValidationErrorEvent=JV;exports.WiredValidationErrorParser=iG;exports.WordQuizHandler=B8;exports.YouArePlayingGameEvent=uR;exports.YouArePlayingGameParser=OD;exports.YouAreSpectatorMessageEvent=lR;exports.YouAreSpectatorMessageParser=yD;exports.YoutubeControlVideoMessageEvent=YV;exports.YoutubeControlVideoMessageParser=oD;exports.YoutubeDisplayPlaylist=uD;exports.YoutubeDisplayPlaylistsEvent=WV;exports.YoutubeDisplayPlaylistsMessageParser=lD;exports.YoutubeDisplayVideoMessageEvent=jV;exports.YoutubeDisplayVideoMessageParser=hD;exports._Str_16135=Brt;exports._Str_17532=krt;exports._Str_8728=iU;exports._Str_9021=rU;exports.boundsPool=Da;exports.color32BitToUniform=cM;exports.colorBit=HI;exports.colorBitGl=nC;exports.compileHighShaderGlProgram=rC;exports.compileHighShaderGpuProgram=Sm;exports.createUboSyncFunction=YC;exports.deprecation=ct;exports.ensureAttributes=VC;exports.extensions=fe;exports.fontStringFromTextStyle=i_;exports.generateTextStyleKey=pC;exports.generateTextureBatchBit=YI;exports.generateTextureBatchBitGl=aC;exports.getAdjustedBlendModeBlend=TT;exports.getAttributeInfoFromFormat=t_;exports.getBatchSamplersUniformGroup=uC;exports.getBitmapTextLayout=SC;exports.getCanvasFillStyle=OT;exports.getMaxTexturesPerBatch=Im;exports.localUniformBit=Ku;exports.localUniformBitGl=hQ;exports.nextPow2=Dl;exports.removeItems=cv;exports.roundPixelsBit=Rm;exports.roundPixelsBitGl=oC;exports.textureBitGl=_Q;exports.uboSyncFunctionsSTD40=WC;exports.uniformParsers=Lu;exports.updateQuadBounds=ov;exports.v8_0_0=Te;exports.warn=le;