quake2ts 0.0.180 → 0.0.182

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/package.json +1 -1
  2. package/packages/client/dist/browser/index.global.js +1 -1
  3. package/packages/client/dist/browser/index.global.js.map +1 -1
  4. package/packages/client/dist/cjs/index.cjs.map +1 -1
  5. package/packages/client/dist/esm/index.js.map +1 -1
  6. package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
  7. package/packages/engine/dist/browser/index.global.js +1 -1
  8. package/packages/engine/dist/browser/index.global.js.map +1 -1
  9. package/packages/engine/dist/cjs/index.cjs.map +1 -1
  10. package/packages/engine/dist/esm/index.js.map +1 -1
  11. package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
  12. package/packages/game/dist/browser/index.global.js +2 -2
  13. package/packages/game/dist/browser/index.global.js.map +1 -1
  14. package/packages/game/dist/cjs/index.cjs +33 -3
  15. package/packages/game/dist/cjs/index.cjs.map +1 -1
  16. package/packages/game/dist/esm/index.js +33 -3
  17. package/packages/game/dist/esm/index.js.map +1 -1
  18. package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
  19. package/packages/game/dist/types/ai/movement.d.ts.map +1 -1
  20. package/packages/game/dist/types/entities/entity.d.ts +1 -1
  21. package/packages/game/dist/types/entities/entity.d.ts.map +1 -1
  22. package/packages/game/dist/types/entities/monsters/infantry.d.ts.map +1 -1
  23. package/packages/server/dist/index.cjs +281 -57
  24. package/packages/server/dist/index.d.cts +33 -10
  25. package/packages/server/dist/index.d.ts +33 -10
  26. package/packages/server/dist/index.js +270 -46
  27. package/packages/shared/dist/browser/index.global.js +1 -1
  28. package/packages/shared/dist/browser/index.global.js.map +1 -1
  29. package/packages/shared/dist/cjs/index.cjs +17 -0
  30. package/packages/shared/dist/cjs/index.cjs.map +1 -1
  31. package/packages/shared/dist/esm/index.js +12 -0
  32. package/packages/shared/dist/esm/index.js.map +1 -1
  33. package/packages/shared/dist/tsconfig.tsbuildinfo +1 -1
  34. package/packages/shared/dist/types/protocol/constants.d.ts +6 -0
  35. package/packages/shared/dist/types/protocol/constants.d.ts.map +1 -0
  36. package/packages/shared/dist/types/protocol/index.d.ts +1 -0
  37. package/packages/shared/dist/types/protocol/index.d.ts.map +1 -1
  38. package/packages/tools/dist/tsconfig.tsbuildinfo +1 -1
@@ -1,4 +1,4 @@
1
- "use strict";var Quake2Engine=(()=>{var vl=Object.create;var li=Object.defineProperty;var Sl=Object.getOwnPropertyDescriptor;var Ml=Object.getOwnPropertyNames;var _l=Object.getPrototypeOf,Al=Object.prototype.hasOwnProperty;var wl=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),qo=(t,e)=>{for(var r in e)li(t,r,{get:e[r],enumerable:!0})},ya=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ml(e))!Al.call(t,i)&&i!==r&&li(t,i,{get:()=>e[i],enumerable:!(n=Sl(e,i))||n.enumerable});return t};var Ll=(t,e,r)=>(r=t!=null?vl(_l(t)):{},ya(e||!t||!t.__esModule?li(r,"default",{value:t,enumerable:!0}):r,t)),El=t=>ya(li({},"__esModule",{value:!0}),t);var Ja=wl((ph,Qa)=>{"use strict";Qa.exports=Worker});var Kf={};qo(Kf,{ATTN_IDLE:()=>Pc,ATTN_LOOP_NONE:()=>Ec,ATTN_NONE:()=>so,ATTN_NORM:()=>Ic,ATTN_STATIC:()=>Cc,AssetDependencyError:()=>Zt,AssetDependencyTracker:()=>qn,AssetManager:()=>io,AudioApi:()=>dr,AudioContextController:()=>co,AudioRegistry:()=>Fr,AudioRegistryError:()=>Xn,AudioSystem:()=>yo,BSP_SURFACE_FRAGMENT_SOURCE:()=>Gs,BSP_SURFACE_VERTEX_SOURCE:()=>Vs,BSP_VERTEX_LAYOUT:()=>ks,BspLoader:()=>fr,BspParseError:()=>q,BspSurfacePipeline:()=>vo,Camera:()=>wo,Command:()=>Wr,CommandRegistry:()=>or,ConfigStringRegistry:()=>lr,Cvar:()=>Yr,CvarRegistry:()=>ar,DemoPlaybackController:()=>ii,DemoReader:()=>tr,EngineHost:()=>cr,EngineRuntime:()=>qr,FixedTimestepLoop:()=>Dt,Framebuffer:()=>xo,IndexBuffer:()=>fe,LruCache:()=>pt,MAX_SOUND_CHANNELS:()=>Bs,MD2_FRAGMENT_SHADER:()=>js,MD2_VERTEX_SHADER:()=>$s,MD3_FRAGMENT_SHADER:()=>oa,MD3_VERTEX_SHADER:()=>ia,Md2Loader:()=>mr,Md2MeshBuffers:()=>Mo,Md2ParseError:()=>le,Md2Pipeline:()=>_o,Md3Loader:()=>hr,Md3ModelMesh:()=>Lo,Md3ParseError:()=>Te,Md3Pipeline:()=>Eo,Md3SurfaceMesh:()=>Qn,MusicSystem:()=>go,NetworkMessageParser:()=>nr,PARTICLE_FRAGMENT_SHADER:()=>aa,PARTICLE_VERTEX_SHADER:()=>sa,PakArchive:()=>ur,PakIndexStore:()=>no,PakIngestionError:()=>ht,PakParseError:()=>Re,PakValidationError:()=>Ot,PakValidator:()=>gi,ParticleRenderer:()=>Po,ParticleSystem:()=>Io,PlaybackState:()=>Yo,RERELEASE_KNOWN_PAKS:()=>ss,SKYBOX_FRAGMENT_SHADER:()=>Ys,SKYBOX_VERTEX_SHADER:()=>Ks,SOUND_FULLVOLUME:()=>Br,SOUND_LOOP_ATTENUATE:()=>zc,ShaderProgram:()=>ve,SkyboxPipeline:()=>So,SoundChannel:()=>oo,SoundPrecache:()=>fo,SoundRegistry:()=>uo,SpriteLoader:()=>pr,SpriteParseError:()=>yt,Texture2D:()=>Dr,TextureCache:()=>yr,TextureCubeMap:()=>Or,TgaParseError:()=>et,U_ANGLE1:()=>No,U_ANGLE2:()=>To,U_ANGLE3:()=>Fo,U_EFFECTS16:()=>ri,U_EFFECTS8:()=>Zn,U_EVENT:()=>Do,U_FRAME16:()=>Uo,U_FRAME8:()=>Bo,U_MODEL:()=>ko,U_MODEL2:()=>Ho,U_MODEL3:()=>Vo,U_MODEL4:()=>Go,U_OLDORIGIN:()=>Wo,U_ORIGIN1:()=>zo,U_ORIGIN2:()=>Ro,U_ORIGIN3:()=>Oo,U_REMOVE:()=>ca,U_RENDERFX16:()=>ti,U_RENDERFX8:()=>Jn,U_SKIN16:()=>ni,U_SKIN8:()=>ei,U_SOLID:()=>Ko,U_SOUND:()=>Xo,VertexArray:()=>we,VertexBuffer:()=>Se,VirtualFileSystem:()=>yi,advanceAnimation:()=>Ka,applySurfaceState:()=>Wc,attenuationToDistanceMultiplier:()=>er,boxIntersectsFrustum:()=>jn,buildBspGeometry:()=>Oc,buildMd2Geometry:()=>Qs,buildMd2VertexData:()=>Js,buildMd3SurfaceGeometry:()=>ra,buildMd3VertexData:()=>na,calculateMaxAudibleDistance:()=>ao,calculatePakChecksum:()=>Fa,computeFrameBlend:()=>Ya,computeSkyScroll:()=>Yc,createAnimationState:()=>qa,createAudioGraph:()=>lo,createBspSurfaces:()=>Dc,createEmptyEntityState:()=>rr,createEmptyProtocolPlayerState:()=>Co,createEngine:()=>Xf,createEngineRuntime:()=>Ra,createFaceLightmap:()=>bi,createInitialChannels:()=>mo,createProgramFromSources:()=>Bc,createWebGLContext:()=>Tc,decodeOgg:()=>ro,deriveSurfaceRenderState:()=>Xs,extractFrustumPlanes:()=>Nc,filesToPakSources:()=>as,findLeafForPoint:()=>Hs,gatherVisibleFaces:()=>Vc,groupMd2Animations:()=>Va,ingestPakFiles:()=>Ba,ingestPaks:()=>xi,interpolateMd3Tag:()=>ul,interpolateVec3:()=>$a,parseBsp:()=>cs,parseMd2:()=>ls,parseMd3:()=>ds,parsePcx:()=>Jr,parseSprite:()=>us,parseTga:()=>fs,parseWal:()=>Si,parseWalTexture:()=>Ai,parseWav:()=>wi,pcxToRgba:()=>Mi,pickChannel:()=>ho,preparePcxTexture:()=>_i,removeViewTranslation:()=>Kc,resolveLightStyles:()=>Ws,spatializeOrigin:()=>po,spawnBlood:()=>hl,spawnBulletImpact:()=>fl,spawnExplosion:()=>ml,spawnMuzzleFlash:()=>yl,spawnTeleportFlash:()=>pl,spawnTrail:()=>gl,walToRgba:()=>ms,wireDropTarget:()=>Da,wireFileInput:()=>Oa});var Il=()=>typeof performance<"u"?performance.now():Date.now(),Pl=t=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>t()):setTimeout(t,25)},Dt=class{constructor(e,r={}){this.callbacks=e;this.accumulatorMs=0;this.frame=0;this.running=!1;this.tick=()=>{if(!this.running)return;let e=this.options.now(),r=this.lastTimeMs===void 0?0:e-this.lastTimeMs;this.lastTimeMs=e,this.advance(r,e),this.running&&this.options.schedule(this.tick)};let n=r.fixedDeltaMs??25,i=r.maxSubSteps??5;this.options={fixedDeltaMs:n,maxSubSteps:i,maxDeltaMs:r.maxDeltaMs??n*i,startTimeMs:r.startTimeMs,now:r.now??Il,schedule:r.schedule??Pl}}start(){this.running||(this.running=!0,this.lastTimeMs=this.options.startTimeMs??this.options.now(),this.options.schedule(this.tick))}stop(){this.running=!1}pump(e){let r=(this.lastTimeMs??0)+e;this.lastTimeMs=r,this.advance(e,r)}isRunning(){return this.running}get frameNumber(){return this.frame}advance(e,r){let n=Math.min(Math.max(e,0),this.options.maxDeltaMs);this.accumulatorMs=Math.min(this.accumulatorMs+n,this.options.fixedDeltaMs*this.options.maxSubSteps);let i=0;for(;this.accumulatorMs>=this.options.fixedDeltaMs&&i<this.options.maxSubSteps;)this.frame+=1,this.callbacks.simulate({frame:this.frame,deltaMs:this.options.fixedDeltaMs,nowMs:r}),this.accumulatorMs-=this.options.fixedDeltaMs,i+=1;let o=this.options.fixedDeltaMs===0?0:this.accumulatorMs/this.options.fixedDeltaMs;this.callbacks.render?.({alpha:o,nowMs:r,accumulatorMs:this.accumulatorMs,frame:this.frame})}};var Wr=class{constructor(e,r,n){this.name=e,this.callback=r,this.description=n}execute(e){this.callback(e)}},or=class{constructor(){this.commands=new Map}register(e,r,n){let i=new Wr(e,r,n);return this.commands.set(e,i),i}get(e){return this.commands.get(e)}execute(e){let r=this.tokenize(e);if(r.length===0)return!1;let n=r[0],i=r.slice(1),o=this.get(n);return o?(o.execute(i),!0):!1}tokenize(e){return e.trim().split(/\s+/)}list(){return[...this.commands.values()].sort((e,r)=>e.name.localeCompare(r.name))}};var Cl=Object.defineProperty,ga=(t,e)=>{for(var r in e)Cl(t,r,{get:e[r],enumerable:!0})},xa={x:0,y:0,z:0};var jf=Math.PI/180;function ba(t,e){return{x:t.x-e.x,y:t.y-e.y,z:t.z-e.z}}function zl(t,e){return{x:t.x*e,y:t.y*e,z:t.z*e}}function jo(t,e){return t.x*e.x+t.y*e.y+t.z*e.z}function Rl(t){return jo(t,t)}function Qo(t){return Math.sqrt(Rl(t))}function He(t){let e=Qo(t);return e===0?t:zl(t,1/e)}var Tl=Math.PI/180,Qf=180/Math.PI,sr=Tl;var Fl=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];function Bl(){return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function va(t,e){let r=e.x,n=e.y,i=e.z;return{x:t[0]*r+t[4]*n+t[8]*i+t[12],y:t[1]*r+t[5]*n+t[9]*i+t[13],z:t[2]*r+t[6]*n+t[10]*i+t[14]}}function Sa(t,e){let r=Bl();return r[0]=e[0].x,r[1]=e[0].y,r[2]=e[0].z,r[4]=e[1].x,r[5]=e[1].y,r[6]=e[1].z,r[8]=e[2].x,r[9]=e[2].y,r[10]=e[2].z,r[12]=t.x,r[13]=t.y,r[14]=t.z,r}var Ke=1,mt=2;var Jo=8,Zo=16,Dl=32;var Ol=16384;var di=65536,Ma=1<<17,Nl=1<<18,kl=1<<19,Ul=1<<20,Hl=1<<21,Vl=1<<22,Gl=1<<23,Jf=1<<24,ui=1<<25,Wl=1<<26,Zf=1<<27,em=1<<28,tm=1<<29,fi=1<<30,rm=1<<31;var Kr=0;var _a=4,Aa=8,wa=16,La=32,Ea=64;var nm=1<<25,im=1<<28,om=1<<29,sm=1<<30,am=1<<31;var cm=Ke|mt,lm=Ke|di|mt|ui|fi,dm=Ke|di|mt,um=Ke|Ma|mt|ui|fi,fm=Dl|Jo|Zo,mm=Ke|Zo|Jo,Xl=Ke|ui|fi|mt|Wl,hm=Nl|kl|Ul|Hl|Vl|Gl,pm=Ke|Jo|Zo|ui|fi,ym=Ke|di|mt,gm=Ke|mt,xm=Ke|di|mt|Ma,bm=Xl|Ol;var vm=Number.MAX_SAFE_INTEGER-1;var mi=(t=>(t[t.None=0]="None",t[t.Archive=1]="Archive",t[t.UserInfo=2]="UserInfo",t[t.ServerInfo=4]="ServerInfo",t[t.Latch=8]="Latch",t[t.Cheat=16]="Cheat",t))(mi||{});var hi=256;var es=256,ts=8192,pi=2048,rs=512,ns=256,is=hi*2,os=256,$o=32,Xr=96;var Y=(t=>(t[t.Name=0]="Name",t[t.CdTrack=1]="CdTrack",t[t.Sky=2]="Sky",t[t.SkyAxis=3]="SkyAxis",t[t.SkyRotate=4]="SkyRotate",t[t.StatusBar=5]="StatusBar",t[t.AirAccel=59]="AirAccel",t[t.MaxClients=60]="MaxClients",t[t.MapChecksum=61]="MapChecksum",t[t.Models=62]="Models",t[t.Sounds=62+ts]="Sounds",t[t.Images=t.Sounds+pi]="Images",t[t.Lights=t.Images+rs]="Lights",t[t.ShadowLights=t.Lights+es]="ShadowLights",t[t.Items=t.ShadowLights+os]="Items",t[t.PlayerSkins=t.Items+ns]="PlayerSkins",t[t.General=t.PlayerSkins+hi]="General",t[t.WheelWeapons=t.General+is]="WheelWeapons",t[t.WheelAmmo=t.WheelWeapons+$o]="WheelAmmo",t[t.WheelPowerups=t.WheelAmmo+$o]="WheelPowerups",t[t.CdLoopCount=t.WheelPowerups+$o]="CdLoopCount",t[t.GameStyle=t.CdLoopCount+1]="GameStyle",t[t.MaxConfigStrings=t.GameStyle+1]="MaxConfigStrings",t))(Y||{}),Ia=Y.MaxConfigStrings;function Pa(t){return t>=5&&t<59?Xr*(59-t):t>=Y.General&&t<Y.WheelWeapons?Xr*(Y.MaxConfigStrings-t):Xr}var Kl={};ga(Kl,{addReplayFrame:()=>jl,createReplaySession:()=>$l,deserializeReplay:()=>ql,serializeReplay:()=>Yl});function Yl(t){return JSON.stringify(t,null,2)}function ql(t){let e=JSON.parse(t);if(!e.metadata||!Array.isArray(e.frames))throw new Error("Invalid replay format: missing metadata or frames");return e}function $l(t,e){return{metadata:{map:t,date:new Date().toISOString(),version:"1.0",seed:e},frames:[]}}function jl(t,e,r,n){t.frames.push({serverFrame:r,cmd:e,timestamp:Date.now()-n})}var H=(t=>(t[t.bad=0]="bad",t[t.muzzleflash=1]="muzzleflash",t[t.muzzleflash2=2]="muzzleflash2",t[t.temp_entity=3]="temp_entity",t[t.layout=4]="layout",t[t.inventory=5]="inventory",t[t.nop=6]="nop",t[t.disconnect=7]="disconnect",t[t.reconnect=8]="reconnect",t[t.sound=9]="sound",t[t.print=10]="print",t[t.stufftext=11]="stufftext",t[t.serverdata=12]="serverdata",t[t.configstring=13]="configstring",t[t.spawnbaseline=14]="spawnbaseline",t[t.centerprint=15]="centerprint",t[t.download=16]="download",t[t.playerinfo=17]="playerinfo",t[t.packetentities=18]="packetentities",t[t.deltapacketentities=19]="deltapacketentities",t[t.frame=20]="frame",t))(H||{});var I=(t=>(t[t.GUNSHOT=0]="GUNSHOT",t[t.BLOOD=1]="BLOOD",t[t.BLASTER=2]="BLASTER",t[t.RAILTRAIL=3]="RAILTRAIL",t[t.SHOTGUN=4]="SHOTGUN",t[t.EXPLOSION1=5]="EXPLOSION1",t[t.EXPLOSION2=6]="EXPLOSION2",t[t.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",t[t.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",t[t.SPARKS=9]="SPARKS",t[t.SPLASH=10]="SPLASH",t[t.BUBBLETRAIL=11]="BUBBLETRAIL",t[t.SCREEN_SPARKS=12]="SCREEN_SPARKS",t[t.SHIELD_SPARKS=13]="SHIELD_SPARKS",t[t.BULLET_SPARKS=14]="BULLET_SPARKS",t[t.LASER_SPARKS=15]="LASER_SPARKS",t[t.PARASITE_ATTACK=16]="PARASITE_ATTACK",t[t.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",t[t.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",t[t.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",t[t.BFG_EXPLOSION=20]="BFG_EXPLOSION",t[t.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",t[t.BOSSTPORT=22]="BOSSTPORT",t[t.BFG_LASER=23]="BFG_LASER",t[t.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",t[t.WELDING_SPARKS=25]="WELDING_SPARKS",t[t.GREENBLOOD=26]="GREENBLOOD",t[t.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",t[t.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",t[t.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",t[t.BLASTER2=30]="BLASTER2",t[t.RAILTRAIL2=31]="RAILTRAIL2",t[t.FLAME=32]="FLAME",t[t.LIGHTNING=33]="LIGHTNING",t[t.DEBUGTRAIL=34]="DEBUGTRAIL",t[t.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",t[t.FLASHLIGHT=36]="FLASHLIGHT",t[t.FORCEWALL=37]="FORCEWALL",t[t.HEATBEAM=38]="HEATBEAM",t[t.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",t[t.STEAM=40]="STEAM",t[t.BUBBLETRAIL2=41]="BUBBLETRAIL2",t[t.MOREBLOOD=42]="MOREBLOOD",t[t.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",t[t.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",t[t.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",t[t.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",t[t.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",t[t.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",t[t.DBALL_GOAL=49]="DBALL_GOAL",t[t.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",t[t.NUKEBLAST=51]="NUKEBLAST",t[t.WIDOWSPLASH=52]="WIDOWSPLASH",t[t.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",t[t.EXPLOSION1_NP=54]="EXPLOSION1_NP",t[t.FLECHETTE=55]="FLECHETTE",t[t.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",t[t.BFG_ZAP=57]="BFG_ZAP",t[t.BERSERK_SLAM=58]="BERSERK_SLAM",t[t.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",t[t.POWER_SPLASH=60]="POWER_SPLASH",t[t.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",t[t.EXPLOSION1_NL=62]="EXPLOSION1_NL",t[t.EXPLOSION2_NL=63]="EXPLOSION2_NL",t))(I||{}),Ql={};ga(Ql,{U_ANGLE1:()=>id,U_ANGLE2:()=>od,U_ANGLE3:()=>sd,U_EFFECTS:()=>ld,U_EVENT:()=>fd,U_FRAME:()=>ad,U_MODEL:()=>Zl,U_MODEL2:()=>hd,U_MODEL3:()=>pd,U_MODEL4:()=>yd,U_MOREBITS:()=>md,U_NUMBER:()=>Jl,U_ORIGIN1:()=>td,U_ORIGIN2:()=>rd,U_ORIGIN3:()=>nd,U_REMOVE:()=>gd,U_RENDERFX:()=>dd,U_SKIN:()=>cd,U_SOLID:()=>ud,U_SOUND:()=>ed});var Jl=1,Zl=2,ed=4,td=8,rd=16,nd=32,id=64,od=128,sd=256,ad=512,cd=1024,ld=2048,dd=4096,ud=8192,fd=16384,md=32768,hd=1,pd=2,yd=4,gd=32768;var Ca=class{constructor(t){t instanceof Uint8Array?this.view=new DataView(t.buffer,t.byteOffset,t.byteLength):this.view=new DataView(t),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(t){if(t<0||t>this.length)throw new Error(`Seek out of bounds: ${t} (length: ${this.length})`);this.offset=t}hasMore(){return this.offset<this.length}readChar(){let t=this.view.getInt8(this.offset);return this.offset+=1,t}readByte(){let t=this.view.getUint8(this.offset);return this.offset+=1,t}readShort(){let t=this.view.getInt16(this.offset,!0);return this.offset+=2,t}readLong(){let t=this.view.getInt32(this.offset,!0);return this.offset+=4,t}readFloat(){let t=this.view.getFloat32(this.offset,!0);return this.offset+=4,t}readString(){let t="";for(;this.offset<this.length;){let e=this.readChar();if(e===-1||e===0)break;t+=String.fromCharCode(e)}return t}readStringLine(){let t="";for(;this.offset<this.length;){let e=this.readChar();if(e===-1||e===0||e===10)break;t+=String.fromCharCode(e)}return t}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(t){if(this.offset+t>this.length)throw new Error(`Read out of bounds: ${this.offset+t} (length: ${this.length})`);let e=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,t);return this.offset+=t,new Uint8Array(e)}readPos(t){t.x=this.readCoord(),t.y=this.readCoord(),t.z=this.readCoord()}readDir(t){let e=this.readByte();if(e>=162){t.x=0,t.y=0,t.z=0;return}let r=Fl[e];t.x=r[0],t.y=r[1],t.z=r[2]}};var Yr=class{constructor({name:e,defaultValue:r,description:n,flags:i=mi.None,onChange:o}){this.modifiedCount=0;this.name=e,this.defaultValue=r,this.description=n,this.flags=i,this._value=r,this.onChange=o}get string(){return this._value}get number(){return Number(this._value)}get integer(){return Math.trunc(this.number)}get boolean(){return!!this.integer}set(e){if(this.flags&mi.Latch){if(e===this._value){this.latched=void 0;return}if(this.latched===e)return;this.latched!==e&&(this.latched=e);return}this.apply(e)}reset(){this.latched=void 0,this.apply(this.defaultValue)}applyLatched(){if(this.latched===void 0)return!1;let e=this.latched;return this.latched=void 0,e===this._value?!1:(this.apply(e),!0)}apply(e){if(this._value===e)return;let r=this._value;this._value=e,this.modifiedCount+=1,this.onChange?.(this,r)}},ar=class{constructor(){this.cvars=new Map}register(e){let r=this.cvars.get(e.name);if(r)return r;let n=new Yr(e);return this.cvars.set(e.name,n),n}get(e){return this.cvars.get(e)}setValue(e,r){let n=this.get(e);if(!n)throw new Error(`Unknown cvar: ${e}`);return n.set(r),n}resetAll(){for(let e of this.cvars.values())e.reset()}applyLatched(){let e=!1;for(let r of this.cvars.values())e=r.applyLatched()||e;return e}list(){return[...this.cvars.values()].sort((e,r)=>e.name.localeCompare(r.name))}};var cr=class{constructor(e,r,n={}){this.game=e;this.client=r;this.started=!1;this.commands=new or;this.cvars=new ar;this.stepSimulation=e=>{this.previousFrame=this.latestFrame,this.latestFrame=this.game.frame(e,this.latestCommand)};this.renderClient=e=>{this.client&&(this.latestCommand=this.client.render({...e,previous:this.previousFrame,latest:this.latestFrame}))};let i=n.loop?.now?.()??Date.now();this.startTimeMs=n.startTimeMs??n.loop?.startTimeMs??i,this.loop=new Dt({simulate:this.stepSimulation,render:this.renderClient},{...n.loop,startTimeMs:this.startTimeMs})}start(){if(!this.started){try{this.latestFrame=this.game.init(this.startTimeMs)??this.latestFrame,this.client?.init(this.latestFrame)}catch(e){throw this.game.shutdown(),this.client?.shutdown(),e}this.started=!0,this.loop.start()}}stop(){this.started&&(this.loop.stop(),this.client?.shutdown(),this.game.shutdown(),this.previousFrame=void 0,this.latestFrame=void 0,this.started=!1)}pump(e){this.loop.pump(e)}getLatestFrame(){return this.latestFrame}isRunning(){return this.loop.isRunning()}};function xd(t){if(t<0||t>=Y.MaxConfigStrings)throw new RangeError(`Configstring index ${t} is out of range (0-${Y.MaxConfigStrings-1})`)}function za(t,e){let r=Pa(t);if(e.length>r)throw new RangeError(`Configstring ${t} exceeds maximum length (${e.length} > ${r}); limit is ${Xr} chars per slot`)}var lr=class{constructor(){this.values=new Map;this.modelCursor=Y.Models;this.soundCursor=Y.Sounds;this.imageCursor=Y.Images;this.lightCursor=Y.Lights;this.shadowLightCursor=Y.ShadowLights;this.itemCursor=Y.Items;this.playerSkinCursor=Y.PlayerSkins;this.generalCursor=Y.General}set(e,r){return xd(e),za(e,r),this.values.set(e,r),e}get(e){return this.values.get(e)}getName(e){return this.get(e)}getAll(){let e=new Array(Ia).fill("");for(let[r,n]of this.values.entries())e[r]=n;return e}modelIndex(e){return this.register(e,Y.Models,ts,"modelCursor")}soundIndex(e){return this.register(e,Y.Sounds,pi,"soundCursor")}findSoundIndex(e){for(let r=Y.Sounds;r<Y.Sounds+pi;r+=1)if(this.values.get(r)===e)return r}imageIndex(e){return this.register(e,Y.Images,rs,"imageCursor")}lightIndex(e){return this.register(e,Y.Lights,es,"lightCursor")}shadowLightIndex(e){return this.register(e,Y.ShadowLights,os,"shadowLightCursor")}itemIndex(e){return this.register(e,Y.Items,ns,"itemCursor")}playerSkinIndex(e){return this.register(e,Y.PlayerSkins,hi,"playerSkinCursor")}generalIndex(e){return this.register(e,Y.General,is,"generalCursor")}register(e,r,n,i){for(let a=r;a<r+n;a+=1)if(this.values.get(a)===e)return a;let o=this[i],s=r+n;if(o>=s)throw new RangeError(`Out of configstring slots for range starting at ${r}`);return za(o,e),this.values.set(o,e),this[i]=o+1,o}};var dr=class{constructor(e){this.registry=e.registry,this.system=e.system,this.music=e.music,this.client=e.client}soundindex(e){return this.registry.registerName(e)}sound(e,r,n,i,o,s){this.system.play({entity:e,channel:r,soundIndex:n,volume:i,attenuation:o,timeOffsetMs:s}),this.triggerSubtitle(n)}positioned_sound(e,r,n,i){this.system.positionedSound(e,r,n,i),this.triggerSubtitle(r)}loop_sound(e,r,n,i,o){this.system.play({entity:e,channel:r,soundIndex:n,volume:i,attenuation:o,looping:!0}),this.triggerSubtitle(n)}stop_entity_sounds(e){this.system.stopEntitySounds(e)}set_listener(e){this.system.setListener(e)}play_music(e,r=!0){return this.music?this.music.play(e,{loop:r}):Promise.resolve()}pause_music(){this.music?.pause()}resume_music(){return this.music?.resume()??Promise.resolve()}stop_music(){this.music?.stop()}set_music_volume(e){this.music?.setVolume(e)}play_ambient(e,r,n){this.system.ambientSound(e,r,n),this.triggerSubtitle(r)}play_channel(e){this.system.play({...e}),this.triggerSubtitle(e.soundIndex)}triggerSubtitle(e){if(!this.client)return;let r=this.registry.getName(e);if(!r)return;let n=r.match(/\[(.*?)\]/);n&&this.client.showSubtitle(n[1],r)}};var qr=class{constructor(e,r){this.engine=e;this.host=r;this.started=!1}start(){this.started||(this.engine.init(),this.host.start(),this.started=!0)}stop(){this.started&&(this.host.stop(),this.engine.shutdown(),this.started=!1)}pump(e){this.host.pump(e)}getLatestFrame(){return this.host.getLatestFrame()}isRunning(){return this.started&&this.host.isRunning()}};function Ra(t,e,r,n,i){let o=new dr({...n,client:r}),s=new cr(e,r,i);return{runtime:new qr(t,s),audio:o}}var bd="PACK";function vd(t,e,r){let n=[];for(let i=0;i<r;i+=1){let o=t.getUint8(e+i);if(o===0)break;n.push(o)}return String.fromCharCode(...n)}function ie(t){return t.replace(/\\/g,"/").replace(/^\/+/,"").toLowerCase()}function Sd(){let t=new Uint32Array(256);for(let e=0;e<256;e+=1){let r=e;for(let n=0;n<8;n+=1)r=(r&1)!==0?3988292384^r>>>1:r>>>1;t[e]=r>>>0}return t}var Md=Sd();function Ta(t){let e=4294967295;for(let r=0;r<t.length;r+=1){let n=t[r];e=Md[(e^n)&255]^e>>>8}return(e^4294967295)>>>0}var Re=class extends Error{},ur=class t{constructor(e,r,n,i){this.name=e;this.buffer=r;this.entries=new Map(n.map(o=>[o.name,o])),this.checksum=i,this.size=r.byteLength}static fromArrayBuffer(e,r){let n=new DataView(r);if(r.byteLength<12)throw new Re("PAK buffer too small to contain header");let i=String.fromCharCode(n.getUint8(0),n.getUint8(1),n.getUint8(2),n.getUint8(3));if(i!==bd)throw new Re(`Invalid PAK header magic: ${i}`);let o=n.getInt32(4,!0),s=n.getInt32(8,!0);if(o<12)throw new Re(`Invalid directory offset: ${o}`);if(s<=0||s%64!==0)throw new Re(`Invalid directory length: ${s}`);if(o+s>r.byteLength)throw new Re("Directory exceeds buffer length");let c=s/64,l=[],d=new Map;for(let u=0;u<c;u+=1){let f=o+u*64,m=vd(n,f,56),h=ie(m),y=n.getInt32(f+56,!0),p=n.getInt32(f+60,!0);if(y<0||p<0||y+p>r.byteLength)throw new Re(`Invalid entry bounds for ${m||"<unnamed>"} (offset=${y}, length=${p})`);if(!h)throw new Re(`Entry ${u} has an empty name`);let g={name:h,offset:y,length:p};d.set(h,g)}return l.push(...d.values()),new t(e,r,l,Ta(new Uint8Array(r)))}getEntry(e){return this.entries.get(ie(e))}listEntries(){return Array.from(this.entries.values())}readFile(e){let r=this.getEntry(e);if(!r)throw new Re(`File not found in PAK: ${e}`);return new Uint8Array(this.buffer,r.offset,r.length)}validate(){return{checksum:this.checksum,entries:this.listEntries()}}};function Fa(t){return Ta(new Uint8Array(t))}var yi=class{constructor(e=[]){this.mounts=[];this.files=new Map;e.forEach(r=>this.mountPak(r))}mountPak(e){this.mounts.push(e);for(let r of e.listEntries()){let n=ie(r.name);this.files.set(n,{archive:e,entry:r})}}get mountedPaks(){return[...this.mounts]}hasFile(e){return this.files.has(ie(e))}stat(e){let r=this.files.get(ie(e));if(r)return{path:r.entry.name,size:r.entry.length,sourcePak:r.archive.name}}async readFile(e){let r=this.files.get(ie(e));if(!r)throw new Error(`File not found in VFS: ${e}`);return r.archive.readFile(e)}list(e=""){let r=ie(e).replace(/\/+$|^\//g,""),n=[],i=new Set,o=r?`${r}/`:"";for(let s of this.files.values()){if(r&&!s.entry.name.startsWith(o))continue;let a=r?s.entry.name.slice(o.length):s.entry.name,c=a.indexOf("/");c===-1?n.push({path:s.entry.name,size:s.entry.length,sourcePak:s.archive.name}):i.add(a.slice(0,c))}return n.sort((s,a)=>s.path.localeCompare(a.path)),{files:n,directories:[...i].sort()}}findByExtension(e){let r=e.startsWith(".")?e.toLowerCase():`.${e.toLowerCase()}`,n=[];for(let i of this.files.values())i.entry.name.toLowerCase().endsWith(r)&&n.push({path:i.entry.name,size:i.entry.length,sourcePak:i.archive.name});return n.sort((i,o)=>i.path.localeCompare(o.path))}};var ss=Object.freeze([{name:"pak0.pak",checksum:2378051181,description:"Base game assets"},{name:"pak0.pak@baseq2",checksum:2378051181,description:"Base game assets (baseq2)"},{name:"pak0.pak@rogue",checksum:3373211245,description:"Ground Zero (rogue) mission pack"},{name:"pak0.pak@xatrix",checksum:1358269824,description:"The Reckoning (xatrix) mission pack"}]),Ot=class extends Error{constructor(r){super(r.status==="unknown"?`Unknown PAK not allowed: ${r.name}`:`PAK checksum mismatch for ${r.name}`);this.result=r;this.name="PakValidationError"}},gi=class{constructor(e=ss){this.known=new Map;e.forEach(r=>this.known.set(this.normalizePakName(r.name),r))}validateArchive(e,r){let n=this.normalizePakName(r??("name"in e?e.name:"unknown")),i=e.checksum,o="size"in e?e.size:void 0,s=this.known.get(n);return s?s.checksum!==i?{name:n,checksum:i,expectedChecksum:s.checksum,status:"mismatch",size:o,description:s.description}:{name:n,checksum:i,expectedChecksum:s.checksum,status:"valid",size:o,description:s.description}:{name:n,checksum:i,status:"unknown",size:o}}assertValid(e,r){let n=this.validateArchive(e,r);if(n.status==="mismatch")throw new Ot(n);return n}normalizePakName(e){let r=ie(e),n=r.split("/"),i=n.pop()??r,o=n.pop();return o?`${i}@${o}`:i}};var ht=class extends Error{constructor(r,n){super(`Failed to ingest PAK: ${r}`);this.file=r;this.name="PakIngestionError",n instanceof Error&&n.stack&&(this.stack=n.stack),this.cause=n}};async function _d(t,e){if(typeof t.arrayBuffer=="function"){let r=await t.arrayBuffer();return e?.({file:"blob",loadedBytes:r.byteLength,totalBytes:r.byteLength,state:"reading"}),r}if(typeof FileReader<"u")return new Promise((r,n)=>{let i=new FileReader;i.onerror=()=>n(i.error??new Error("Unknown FileReader error")),i.onprogress=o=>{e?.({file:"blob",loadedBytes:o.loaded,totalBytes:o.total||t.size,state:"reading"})},i.onload=()=>{let o=i.result;o instanceof ArrayBuffer?r(o):n(new Error("Unexpected FileReader result"))},i.readAsArrayBuffer(t)});if(typeof Response<"u"){let r=await new Response(t).arrayBuffer();return e?.({file:"blob",loadedBytes:r.byteLength,totalBytes:r.byteLength,state:"reading"}),r}if(typeof t.stream=="function"){let r=t.stream().getReader(),n=[],i=0;for(;;){let{done:a,value:c}=await r.read();if(a)break;if(!c)continue;let l=c;n.push(l),i+=l.byteLength,e?.({file:"blob",loadedBytes:i,totalBytes:t.size,state:"reading"})}let o=new Uint8Array(i),s=0;for(let a of n)o.set(a,s),s+=a.byteLength;return o.buffer}throw new ht("blob",new Error("Unsupported Blob type"))}async function Ad(t,e){if(t.data instanceof ArrayBuffer)return e?.({file:t.name,loadedBytes:t.data.byteLength,totalBytes:t.data.byteLength,state:"reading"}),t.data;if(t.data instanceof Blob){let n=t.data.size;return _d(t.data,i=>e?.({...i,file:t.name,totalBytes:n}))}let r=t.data.buffer.slice(t.data.byteOffset,t.data.byteOffset+t.data.byteLength);return e?.({file:t.name,loadedBytes:r.byteLength,totalBytes:r.byteLength,state:"reading"}),r}async function xi(t,e,r){let n=typeof r=="function"?{onProgress:r}:r??{},i=n.persistIndexes??!!n.pakIndexStore,o=n.enforceValidation??!!n.validator,s=n.allowUnknownPaks??!0,a=n.stopOnError??!1,c=[];for(let l of e)try{let d=await Ad(l,n.onProgress),u=ur.fromArrayBuffer(l.name,d),f=n.validator?.validateArchive(u);if(f){n.onValidationResult?.(f);let m=f.status==="mismatch",h=f.status==="unknown";if(m&&o||h&&!s){let y=new Ot(f);if(n.onError?.(l.name,y),a)throw new ht(l.name,y);c.push({archive:u,mounted:!1,validation:f});continue}}if(t.mountPak(u),i&&n.pakIndexStore)try{await n.pakIndexStore.persist(u)}catch(m){if(n.onError?.(l.name,m),a)throw new ht(l.name,m)}n.onProgress?.({file:l.name,loadedBytes:d.byteLength,totalBytes:d.byteLength,state:"parsed"}),c.push({archive:u,mounted:!0,validation:f})}catch(d){if(n.onProgress?.({file:l.name,loadedBytes:0,totalBytes:0,state:"error"}),n.onError?.(l.name,d),a)throw new ht(l.name,d)}return c}var pt=class{constructor(e){this.capacity=e;this.map=new Map;if(e<=0)throw new RangeError("LRU cache capacity must be greater than zero")}get size(){return this.map.size}has(e){return this.map.has(e)}get(e){let r=this.map.get(e);if(r!==void 0)return this.map.delete(e),this.map.set(e,r),r}set(e,r){if(this.map.has(e)&&this.map.delete(e),this.map.set(e,r),this.map.size>this.capacity){let n=this.map.keys().next();n.done||this.map.delete(n.value)}}delete(e){return this.map.delete(e)}clear(){this.map.clear()}entries(){return Array.from(this.map.entries()).reverse().map(([e,r])=>({key:e,value:r}))}};function wd(t){return Array.isArray(t)?t:Array.from(t)}function as(t){return wd(t).map(e=>({name:e.name,data:e}))}async function Ba(t,e,r){let n=as(e);return xi(t,n,r??{})}function Da(t,e){let r=i=>{i.preventDefault(),i.dataTransfer?.dropEffect&&(i.dataTransfer.dropEffect="copy")},n=i=>{i.preventDefault();let o=i.dataTransfer?.files;o&&o.length>0&&e(Array.from(o))};return t.addEventListener("dragover",r),t.addEventListener("drop",n),()=>{t.removeEventListener("dragover",r),t.removeEventListener("drop",n)}}function Oa(t,e){let r=n=>{let i=n.target;!i||!i.files||i.files.length===0||(e(i.files),i.value="")};return t.addEventListener("change",r),()=>t.removeEventListener("change",r)}var Ld="IBSP",Ed=38,ka=19,Id=8+ka*8;var q=class extends Error{},fr=class{constructor(e){this.vfs=e}async load(e){let r=await this.vfs.readFile(e),n=new Uint8Array(r.byteLength);return n.set(r),cs(n.buffer)}};function cs(t){if(t.byteLength<Id)throw new q("BSP too small to contain header");let e=new DataView(t),r=String.fromCharCode(e.getUint8(0),e.getUint8(1),e.getUint8(2),e.getUint8(3));if(r!==Ld)throw new q(`Invalid BSP magic ${r}`);let n=e.getInt32(4,!0);if(n!==Ed)throw new q(`Unsupported BSP version ${n}`);let i=new Map;for(let A=0;A<ka;A+=1){let w=e.getInt32(8+A*8,!0),E=e.getInt32(12+A*8,!0);if(w<0||E<0||w+E>t.byteLength)throw new q(`Invalid lump bounds for index ${A}`);i.set(A,{offset:w,length:E})}let o={version:n,lumps:i},s=Cd(t,i.get(0)),a=Rd(t,i.get(1)),c=Td(t,i.get(2)),l=Fd(t,i.get(4)),d=Bd(t,i.get(5)),u=Dd(t,i.get(6)),f=new Uint8Array(t,i.get(7).offset,i.get(7).length),m=Xd(u,i.get(7)),h=Od(t,i.get(8)),y=Nd(t,i.get(11)),p=kd(t,i.get(12)),g=Ud(t,i.get(13)),S=Hd(t,i.get(14)),x=Vd(t,i.get(15)),v=Gd(t,i.get(9),i.get(10),h),b=Wd(t,i.get(3));return{header:o,entities:s,planes:a,vertices:c,nodes:l,texInfo:d,faces:u,lightMaps:f,lightMapInfo:m,leafs:h,leafLists:v,edges:y,surfEdges:p,models:g,brushes:S,brushSides:x,visibility:b,pickEntity(A){let w=null,E=1/0;for(let L of s.entities){let B=L.properties.model;if(!B||!B.startsWith("*"))continue;let O=parseInt(B.substring(1),10);if(isNaN(O)||O<0||O>=g.length)continue;let U=g[O],C=Pd(A.origin,A.direction,U.mins,U.maxs);C!==null&&C<E&&(E=C,w={entity:L,model:U,distance:C})}return w}}}function Pd(t,e,r,n){let i=0,o=1/0;for(let s=0;s<3;s++)if(Math.abs(e[s])<1e-8){if(t[s]<r[s]||t[s]>n[s])return null}else{let a=1/e[s],c=(r[s]-t[s])*a,l=(n[s]-t[s])*a;if(c>l){let d=c;c=l,l=d}if(i=Math.max(i,c),o=Math.min(o,l),i>o)return null}return i}function Cd(t,e){let r=new TextDecoder().decode(new Uint8Array(t,e.offset,e.length)),n=zd(r),i=n.find(o=>o.classname==="worldspawn");return{raw:r,entities:n,worldspawn:i,getUniqueClassnames(){let o=new Set;for(let s of n)s.classname&&o.add(s.classname);return Array.from(o).sort()}}}function zd(t){let e=[],r=/\{([^}]*)\}/gms,n;for(;(n=r.exec(t))!==null;){let i=n[1],o={},s=/"([^\"]*)"\s+"([^\"]*)"/g,a;for(;(a=s.exec(i))!==null;)o[a[1]]=a[2];e.push({classname:o.classname,properties:o})}return e}function Rd(t,e){let r=new DataView(t,e.offset,e.length),n=e.length/20;if(n%1!==0)throw new q("Plane lump has invalid length");let i=[];for(let o=0;o<n;o+=1){let s=[r.getFloat32(o*20,!0),r.getFloat32(o*20+4,!0),r.getFloat32(o*20+8,!0)],a=r.getFloat32(o*20+12,!0),c=r.getInt32(o*20+16,!0);i.push({normal:s,dist:a,type:c})}return i}function Td(t,e){let r=new DataView(t,e.offset,e.length),n=e.length/12;if(n%1!==0)throw new q("Vertex lump has invalid length");let i=[];for(let o=0;o<n;o+=1)i.push([r.getFloat32(o*12,!0),r.getFloat32(o*12+4,!0),r.getFloat32(o*12+8,!0)]);return i}function Fd(t,e){let r=new DataView(t,e.offset,e.length),n=28,i=e.length/n;if(i%1!==0)throw new q("Node lump has invalid length");let o=[];for(let s=0;s<i;s+=1){let a=s*n,c=r.getInt32(a,!0),l=[r.getInt32(a+4,!0),r.getInt32(a+8,!0)],d=[r.getInt16(a+12,!0),r.getInt16(a+14,!0),r.getInt16(a+16,!0)],u=[r.getInt16(a+18,!0),r.getInt16(a+20,!0),r.getInt16(a+22,!0)],f=r.getUint16(a+24,!0),m=r.getUint16(a+26,!0);o.push({planeIndex:c,children:l,mins:d,maxs:u,firstFace:f,numFaces:m})}return o}function Bd(t,e){let r=new DataView(t,e.offset,e.length),n=76,i=e.length/n;if(i%1!==0)throw new q("TexInfo lump has invalid length");let o=[];for(let s=0;s<i;s+=1){let a=s*n,c=[r.getFloat32(a,!0),r.getFloat32(a+4,!0),r.getFloat32(a+8,!0)],l=r.getFloat32(a+12,!0),d=[r.getFloat32(a+16,!0),r.getFloat32(a+20,!0),r.getFloat32(a+24,!0)],u=r.getFloat32(a+28,!0),f=r.getInt32(a+32,!0),m=r.getInt32(a+36,!0),h=new Uint8Array(t,e.offset+a+40,32),y=new TextDecoder("utf-8").decode(h).replace(/\0.*$/,""),p=r.getInt32(a+72,!0);o.push({s:c,sOffset:l,t:d,tOffset:u,flags:f,value:m,texture:y,nextTexInfo:p})}return o}function Dd(t,e){let r=new DataView(t,e.offset,e.length),n=20,i=e.length/n;if(i%1!==0)throw new q("Face lump has invalid length");let o=[];for(let s=0;s<i;s+=1){let a=s*n,c=r.getUint16(a,!0),l=r.getInt16(a+2,!0),d=r.getInt32(a+4,!0),u=r.getInt16(a+8,!0),f=r.getInt16(a+10,!0),m=[r.getUint8(a+12),r.getUint8(a+13),r.getUint8(a+14),r.getUint8(a+15)],h=r.getInt32(a+16,!0);o.push({planeIndex:c,side:l,firstEdge:d,numEdges:u,texInfo:f,styles:m,lightOffset:h})}return o}function Od(t,e){let r=new DataView(t,e.offset,e.length),n=28,i=e.length/n;if(i%1!==0)throw new q("Leaf lump has invalid length");let o=[];for(let s=0;s<i;s+=1){let a=s*n,c=r.getInt32(a,!0),l=r.getInt16(a+4,!0),d=r.getInt16(a+6,!0),u=[r.getInt16(a+8,!0),r.getInt16(a+10,!0),r.getInt16(a+12,!0)],f=[r.getInt16(a+14,!0),r.getInt16(a+16,!0),r.getInt16(a+18,!0)],m=r.getUint16(a+20,!0),h=r.getUint16(a+22,!0),y=r.getUint16(a+24,!0),p=r.getUint16(a+26,!0);o.push({contents:c,cluster:l,area:d,mins:u,maxs:f,firstLeafFace:m,numLeafFaces:h,firstLeafBrush:y,numLeafBrushes:p})}return o}function Nd(t,e){let r=new DataView(t,e.offset,e.length),n=4,i=e.length/n;if(i%1!==0)throw new q("Edge lump has invalid length");let o=[];for(let s=0;s<i;s+=1){let a=s*n;o.push({vertices:[r.getUint16(a,!0),r.getUint16(a+2,!0)]})}return o}function kd(t,e){let r=e.length/4;if(r%1!==0)throw new q("SurfEdge lump has invalid length");let n=new DataView(t,e.offset,e.length),i=new Int32Array(r);for(let o=0;o<r;o+=1)i[o]=n.getInt32(o*4,!0);return i}function Ud(t,e){let r=new DataView(t,e.offset,e.length),n=48;if(e.length%n!==0)throw new q("Model lump has invalid length");let i=e.length/n,o=[];for(let s=0;s<i;s+=1){let a=s*n,c=[r.getFloat32(a,!0),r.getFloat32(a+4,!0),r.getFloat32(a+8,!0)],l=[r.getFloat32(a+12,!0),r.getFloat32(a+16,!0),r.getFloat32(a+20,!0)],d=[r.getFloat32(a+24,!0),r.getFloat32(a+28,!0),r.getFloat32(a+32,!0)],u=r.getInt32(a+36,!0),f=r.getInt32(a+40,!0),m=r.getInt32(a+44,!0);o.push({mins:c,maxs:l,origin:d,headNode:u,firstFace:f,numFaces:m})}return o}function Hd(t,e){let r=new DataView(t,e.offset,e.length),n=12,i=e.length/n;if(i%1!==0)throw new q("Brush lump has invalid length");let o=[];for(let s=0;s<i;s+=1){let a=s*n;o.push({firstSide:r.getInt32(a,!0),numSides:r.getInt32(a+4,!0),contents:r.getInt32(a+8,!0)})}return o}function Vd(t,e){let r=new DataView(t,e.offset,e.length),n=4,i=e.length/n;if(i%1!==0)throw new q("Brush side lump has invalid length");let o=[];for(let s=0;s<i;s+=1){let a=s*n;o.push({planeIndex:r.getUint16(a,!0),texInfo:r.getInt16(a+2,!0)})}return o}function Gd(t,e,r,n){let i=[],o=[],s=e.length/2,a=r.length/2,c=new DataView(t,e.offset,e.length),l=new DataView(t,r.offset,r.length);for(let d of n){if(d.firstLeafFace+d.numLeafFaces>s)throw new q("Leaf faces reference data past lump bounds");if(d.firstLeafBrush+d.numLeafBrushes>a)throw new q("Leaf brushes reference data past lump bounds");let u=[];for(let m=0;m<d.numLeafFaces;m+=1)u.push(c.getUint16((d.firstLeafFace+m)*2,!0));let f=[];for(let m=0;m<d.numLeafBrushes;m+=1)f.push(l.getUint16((d.firstLeafBrush+m)*2,!0));i.push(u),o.push(f)}return{leafFaces:i,leafBrushes:o}}function Wd(t,e){if(e.length===0)return;if(e.length<4)throw new q("Visibility lump too small");let r=new DataView(t,e.offset,e.length),n=r.getInt32(0,!0),i=4+n*8;if(n<0||i>e.length)throw new q("Visibility lump truncated");let o=4,s=[];for(let a=0;a<n;a+=1){let c=r.getInt32(o,!0),l=r.getInt32(o+4,!0);o+=8;let d=e.offset+c,u=e.offset+l,f=e.offset+e.length;if(c<0||l<0||d>=f||u>=f)throw new q("Visibility offsets out of range");s.push({pvs:Na(t,d,n,e),phs:Na(t,u,n,e)})}return{numClusters:n,clusters:s}}function Na(t,e,r,n){let i=Math.ceil(r/8),o=new Uint8Array(i),s=new Uint8Array(t),a=e,c=0,l=n.offset+n.length;for(;c<i;){if(a>=l)throw new q("Visibility data truncated");let d=s[a++];if(d!==0){o[c++]=d;continue}if(a>=l)throw new q("Visibility run exceeds lump bounds");let u=s[a++];for(let f=0;f<u&&c<i;f+=1)o[c++]=0}return o}function Xd(t,e){return t.map(r=>{if(!(r.lightOffset<0))return{offset:r.lightOffset,length:Math.max(0,e.length-r.lightOffset)}})}function bi(t,e,r){if(t.lightOffset<0||t.lightOffset>=e.byteLength)return;let n=e.byteLength-t.lightOffset,i=Math.min(r?.length??n,n);if(!(i<=0))return e.subarray(t.lightOffset,t.lightOffset+i)}var Kd=844121161,Yd=8,Ua=68,qd=[{x:-.525731,y:0,z:.850651},{x:-.442863,y:.238856,z:.864188},{x:-.295242,y:0,z:.955423},{x:-.309017,y:.5,z:.809017},{x:-.16246,y:.262866,z:.951056},{x:0,y:0,z:1},{x:0,y:.850651,z:.525731},{x:-.147621,y:.716567,z:.681718},{x:.147621,y:.716567,z:.681718},{x:0,y:.525731,z:.850651},{x:.309017,y:.5,z:.809017},{x:.525731,y:0,z:.850651},{x:.295242,y:0,z:.955423},{x:.442863,y:.238856,z:.864188},{x:.16246,y:.262866,z:.951056},{x:-.681718,y:.147621,z:.716567},{x:-.809017,y:.309017,z:.5},{x:-.587785,y:.425325,z:.688191},{x:-.850651,y:.525731,z:0},{x:-.864188,y:.442863,z:.238856},{x:-.716567,y:.681718,z:.147621},{x:-.688191,y:.587785,z:.425325},{x:-.5,y:.809017,z:.309017},{x:-.238856,y:.864188,z:.442863},{x:-.425325,y:.688191,z:.587785},{x:-.716567,y:.681718,z:-.147621},{x:-.5,y:.809017,z:-.309017},{x:-.525731,y:.850651,z:0},{x:0,y:.850651,z:-.525731},{x:-.238856,y:.864188,z:-.442863},{x:0,y:.955423,z:-.295242},{x:-.262866,y:.951056,z:-.16246},{x:0,y:1,z:0},{x:0,y:.955423,z:.295242},{x:-.262866,y:.951056,z:.16246},{x:.238856,y:.864188,z:.442863},{x:.262866,y:.951056,z:.16246},{x:.5,y:.809017,z:.309017},{x:.238856,y:.864188,z:-.442863},{x:.262866,y:.951056,z:-.16246},{x:.5,y:.809017,z:-.309017},{x:.850651,y:.525731,z:0},{x:.716567,y:.681718,z:.147621},{x:.716567,y:.681718,z:-.147621},{x:.525731,y:.850651,z:0},{x:.425325,y:.688191,z:.587785},{x:.864188,y:.442863,z:.238856},{x:.688191,y:.587785,z:.425325},{x:.809017,y:.309017,z:.5},{x:.681718,y:.147621,z:.716567},{x:.587785,y:.425325,z:.688191},{x:.955423,y:.295242,z:0},{x:1,y:0,z:0},{x:.951056,y:.16246,z:.262866},{x:.850651,y:-.525731,z:0},{x:.955423,y:-.295242,z:0},{x:.864188,y:-.442863,z:.238856},{x:.951056,y:-.16246,z:.262866},{x:.809017,y:-.309017,z:.5},{x:.681718,y:-.147621,z:.716567},{x:.850651,y:0,z:.525731},{x:.864188,y:.442863,z:-.238856},{x:.809017,y:.309017,z:-.5},{x:.951056,y:.16246,z:-.262866},{x:.525731,y:0,z:-.850651},{x:.681718,y:.147621,z:-.716567},{x:.681718,y:-.147621,z:-.716567},{x:.850651,y:0,z:-.525731},{x:.809017,y:-.309017,z:-.5},{x:.864188,y:-.442863,z:-.238856},{x:.951056,y:-.16246,z:-.262866},{x:.147621,y:.716567,z:-.681718},{x:.309017,y:.5,z:-.809017},{x:.425325,y:.688191,z:-.587785},{x:.442863,y:.238856,z:-.864188},{x:.587785,y:.425325,z:-.688191},{x:.688191,y:.587785,z:-.425325},{x:-.147621,y:.716567,z:-.681718},{x:-.309017,y:.5,z:-.809017},{x:0,y:.525731,z:-.850651},{x:-.525731,y:0,z:-.850651},{x:-.442863,y:.238856,z:-.864188},{x:-.295242,y:0,z:-.955423},{x:-.16246,y:.262866,z:-.951056},{x:0,y:0,z:-1},{x:.295242,y:0,z:-.955423},{x:.16246,y:.262866,z:-.951056},{x:-.442863,y:-.238856,z:-.864188},{x:-.309017,y:-.5,z:-.809017},{x:-.16246,y:-.262866,z:-.951056},{x:0,y:-.850651,z:-.525731},{x:-.147621,y:-.716567,z:-.681718},{x:.147621,y:-.716567,z:-.681718},{x:0,y:-.525731,z:-.850651},{x:.309017,y:-.5,z:-.809017},{x:.442863,y:-.238856,z:-.864188},{x:.16246,y:-.262866,z:-.951056},{x:.238856,y:-.864188,z:-.442863},{x:.5,y:-.809017,z:-.309017},{x:.425325,y:-.688191,z:-.587785},{x:.716567,y:-.681718,z:-.147621},{x:.688191,y:-.587785,z:-.425325},{x:.587785,y:-.425325,z:-.688191},{x:0,y:-.955423,z:-.295242},{x:0,y:-1,z:0},{x:.262866,y:-.951056,z:-.16246},{x:0,y:-.850651,z:.525731},{x:0,y:-.955423,z:.295242},{x:.238856,y:-.864188,z:.442863},{x:.262866,y:-.951056,z:.16246},{x:.5,y:-.809017,z:.309017},{x:.716567,y:-.681718,z:.147621},{x:.525731,y:-.850651,z:0},{x:-.238856,y:-.864188,z:-.442863},{x:-.5,y:-.809017,z:-.309017},{x:-.262866,y:-.951056,z:-.16246},{x:-.850651,y:-.525731,z:0},{x:-.716567,y:-.681718,z:-.147621},{x:-.716567,y:-.681718,z:.147621},{x:-.525731,y:-.850651,z:0},{x:-.5,y:-.809017,z:.309017},{x:-.238856,y:-.864188,z:.442863},{x:-.262866,y:-.951056,z:.16246},{x:-.864188,y:-.442863,z:.238856},{x:-.809017,y:-.309017,z:.5},{x:-.688191,y:-.587785,z:.425325},{x:-.681718,y:-.147621,z:.716567},{x:-.442863,y:-.238856,z:.864188},{x:-.587785,y:-.425325,z:.688191},{x:-.309017,y:-.5,z:.809017},{x:-.147621,y:-.716567,z:.681718},{x:-.425325,y:-.688191,z:.587785},{x:-.16246,y:-.262866,z:.951056},{x:.442863,y:-.238856,z:.864188},{x:.16246,y:-.262866,z:.951056},{x:.309017,y:-.5,z:.809017},{x:.147621,y:-.716567,z:.681718},{x:0,y:-.525731,z:.850651},{x:.425325,y:-.688191,z:.587785},{x:.587785,y:-.425325,z:.688191},{x:.688191,y:-.587785,z:.425325},{x:-.955423,y:.295242,z:0},{x:-.951056,y:.16246,z:.262866},{x:-1,y:0,z:0},{x:-.850651,y:0,z:.525731},{x:-.955423,y:-.295242,z:0},{x:-.951056,y:-.16246,z:.262866},{x:-.864188,y:.442863,z:-.238856},{x:-.951056,y:.16246,z:-.262866},{x:-.809017,y:.309017,z:-.5},{x:-.864188,y:-.442863,z:-.238856},{x:-.951056,y:-.16246,z:-.262866},{x:-.809017,y:-.309017,z:-.5},{x:-.681718,y:.147621,z:-.716567},{x:-.681718,y:-.147621,z:-.716567},{x:-.850651,y:0,z:-.525731},{x:-.688191,y:.587785,z:-.425325},{x:-.587785,y:.425325,z:-.688191},{x:-.425325,y:.688191,z:-.587785},{x:-.425325,y:-.688191,z:-.587785},{x:-.587785,y:-.425325,z:-.688191},{x:-.688191,y:-.587785,z:-.425325}],le=class extends Error{},mr=class{constructor(e){this.vfs=e;this.cache=new Map}async load(e){if(this.cache.has(e))return this.cache.get(e);let r=await this.vfs.readFile(e),n=new Uint8Array(r.byteLength);n.set(r);let i=ls(n.buffer);return this.cache.set(e,i),i}get(e){return this.cache.get(e)}};function Ha(t,e,r){let n=[];for(let i=0;i<r;i+=1){let o=t.getUint8(e+i);if(o===0)break;n.push(o)}return String.fromCharCode(...n)}function $r(t,e,r,n){if(r!==0&&(e<Ua||e+r>t.byteLength))throw new le(`${n} section is out of bounds`)}function $d(t){if(t.byteLength<Ua)throw new le("MD2 buffer too small to contain header");let e=new DataView(t),r=e.getInt32(0,!0),n=e.getInt32(4,!0);if(r!==Kd)throw new le(`Invalid MD2 ident: ${r}`);if(n!==Yd)throw new le(`Unsupported MD2 version: ${n}`);let i={ident:r,version:n,skinWidth:e.getInt32(8,!0),skinHeight:e.getInt32(12,!0),frameSize:e.getInt32(16,!0),numSkins:e.getInt32(20,!0),numVertices:e.getInt32(24,!0),numTexCoords:e.getInt32(28,!0),numTriangles:e.getInt32(32,!0),numGlCommands:e.getInt32(36,!0),numFrames:e.getInt32(40,!0),offsetSkins:e.getInt32(44,!0),offsetTexCoords:e.getInt32(48,!0),offsetTriangles:e.getInt32(52,!0),offsetFrames:e.getInt32(56,!0),offsetGlCommands:e.getInt32(60,!0),offsetEnd:e.getInt32(64,!0),magic:r},o=40+i.numVertices*4;if(i.frameSize!==o)throw new le(`Unexpected frame size ${i.frameSize}, expected ${o}`);if(i.offsetEnd>t.byteLength)throw new le("MD2 offset_end exceeds buffer length");return i}function jd(t,e){let r=e.numSkins*64;$r(t,e.offsetSkins,r,"skins");let n=new DataView(t,e.offsetSkins,r),i=[];for(let o=0;o<e.numSkins;o+=1)i.push({name:Ha(n,o*64,64)});return i}function Qd(t,e){let r=e.numTexCoords*4;$r(t,e.offsetTexCoords,r,"texcoords");let n=new DataView(t,e.offsetTexCoords,r),i=[];for(let o=0;o<e.numTexCoords;o+=1){let s=o*4;i.push({s:n.getInt16(s,!0),t:n.getInt16(s+2,!0)})}return i}function Jd(t,e){let r=e.numTriangles*12;$r(t,e.offsetTriangles,r,"triangles");let n=new DataView(t,e.offsetTriangles,r),i=[];for(let o=0;o<e.numTriangles;o+=1){let s=o*12,a=[n.getUint16(s,!0),n.getUint16(s+2,!0),n.getUint16(s+4,!0)],c=[n.getUint16(s+6,!0),n.getUint16(s+8,!0),n.getUint16(s+10,!0)];if(a.some(l=>l>=e.numVertices)||c.some(l=>l>=e.numTexCoords))throw new le("Triangle references out of range vertex or texcoord");i.push({vertexIndices:a,texCoordIndices:c})}return i}function Zd(t,e){let r=e.numFrames*e.frameSize;$r(t,e.offsetFrames,r,"frames");let n=[];for(let i=0;i<e.numFrames;i+=1){let o=e.offsetFrames+i*e.frameSize,s=new DataView(t,o,e.frameSize),a={x:s.getFloat32(0,!0),y:s.getFloat32(4,!0),z:s.getFloat32(8,!0)},c={x:s.getFloat32(12,!0),y:s.getFloat32(16,!0),z:s.getFloat32(20,!0)},l=Ha(s,24,16),d=[],u=1/0,f=1/0,m=1/0,h=-1/0,y=-1/0,p=-1/0;for(let g=0;g<e.numVertices;g+=1){let S=40+g*4,x=s.getUint8(S)*a.x+c.x,v=s.getUint8(S+1)*a.y+c.y,b=s.getUint8(S+2)*a.z+c.z;x<u&&(u=x),v<f&&(f=v),b<m&&(m=b),x>h&&(h=x),v>y&&(y=v),b>p&&(p=b);let _={x,y:v,z:b},A=s.getUint8(S+3),w=qd[A];if(!w)throw new le(`Invalid normal index ${A} in frame ${l}`);d.push({position:_,normalIndex:A,normal:w})}n.push({name:l,vertices:d,minBounds:{x:u,y:f,z:m},maxBounds:{x:h,y,z:p}})}return n}function e0(t,e){let r=e.numGlCommands*4;if($r(t,e.offsetGlCommands,r,"gl commands"),r===0)return[];let n=new DataView(t,e.offsetGlCommands,r),i=[],o=0;for(;;){if(o+4>r)throw new le("GL command list ended unexpectedly");let s=n.getInt32(o,!0);if(o+=4,s===0)break;let a=Math.abs(s),c=[],l=a*12;if(o+l>r)throw new le("GL command vertex block exceeds buffer");for(let d=0;d<a;d+=1){let u=n.getFloat32(o,!0),f=n.getFloat32(o+4,!0),m=n.getInt32(o+8,!0);if(o+=12,m<0||m>=e.numVertices)throw new le("GL command references invalid vertex index");c.push({s:u,t:f,vertexIndex:m})}i.push({mode:s>0?"strip":"fan",vertices:c})}if(o!==r)throw new le("GL command list did not consume expected data");return i}function ls(t){let e=$d(t),r=jd(t,e),n=Qd(t,e),i=Jd(t,e),o=Zd(t,e),s=e0(t,e);return{header:e,skins:r,texCoords:n,triangles:i,frames:o,glCommands:s}}function Va(t){let e=[],r=0;for(;r<t.length;){let n=t[r].name,i=n.replace(/\d+$/,"")||n,o=r;for(;o+1<t.length&&(t[o+1].name.replace(/\d+$/,"")||t[o+1].name)===i;)o+=1;e.push({name:i,firstFrame:r,lastFrame:o}),r=o+1}return e}var Ga=860898377,t0=15,Te=class extends Error{constructor(e){super(e),this.name="Md3ParseError"}};function jr(t,e,r){let n=new Uint8Array(t.buffer,t.byteOffset+e,r);return new TextDecoder("utf-8").decode(n).replace(/\0.*$/,"").trim()}function r0(t){let e=(t>>8&255)*(2*Math.PI/255),r=(t&255)*(2*Math.PI/255),n=Math.sin(r);return{x:Math.cos(e)*n,y:Math.sin(e)*n,z:Math.cos(r)}}function vi(t,e,r,n){if(e<0||e+r>n)throw new Te(`${t} exceeds buffer bounds`)}function n0(t){let e=t.getInt32(0,!0);if(e!==Ga)throw new Te(`Invalid MD3 ident: ${e}`);let r=t.getInt32(4,!0);if(r!==t0)throw new Te(`Unsupported MD3 version: ${r}`);let n=jr(t,8,64),i=t.getInt32(72,!0),o=t.getInt32(76,!0),s=t.getInt32(80,!0),a=t.getInt32(84,!0),c=t.getInt32(88,!0),l=t.getInt32(92,!0),d=t.getInt32(96,!0),u=t.getInt32(100,!0),f=t.getInt32(104,!0);if(o<=0||a<0||s<0)throw new Te("Invalid MD3 counts");return{ident:e,version:r,name:n,flags:i,numFrames:o,numTags:s,numSurfaces:a,numSkins:c,ofsFrames:l,ofsTags:d,ofsSurfaces:u,ofsEnd:f,magic:e}}function i0(t,e){let r=[];vi("Frames",e.ofsFrames,e.numFrames*56,t.byteLength);for(let i=0;i<e.numFrames;i+=1){let o=e.ofsFrames+i*56;r.push({minBounds:{x:t.getFloat32(o,!0),y:t.getFloat32(o+4,!0),z:t.getFloat32(o+8,!0)},maxBounds:{x:t.getFloat32(o+12,!0),y:t.getFloat32(o+16,!0),z:t.getFloat32(o+20,!0)},localOrigin:{x:t.getFloat32(o+24,!0),y:t.getFloat32(o+28,!0),z:t.getFloat32(o+32,!0)},radius:t.getFloat32(o+36,!0),name:jr(t,o+40,16)})}return r}function o0(t,e){let r=[],i=e.numFrames*e.numTags*112;vi("Tags",e.ofsTags,i,t.byteLength);for(let o=0;o<e.numFrames;o+=1){let s=[];for(let a=0;a<e.numTags;a+=1){let c=e.ofsTags+(o*e.numTags+a)*112,l=c+64,d=l+12;s.push({name:jr(t,c,64),origin:{x:t.getFloat32(l,!0),y:t.getFloat32(l+4,!0),z:t.getFloat32(l+8,!0)},axis:[{x:t.getFloat32(d,!0),y:t.getFloat32(d+4,!0),z:t.getFloat32(d+8,!0)},{x:t.getFloat32(d+12,!0),y:t.getFloat32(d+16,!0),z:t.getFloat32(d+20,!0)},{x:t.getFloat32(d+24,!0),y:t.getFloat32(d+28,!0),z:t.getFloat32(d+32,!0)}]})}r.push(s)}return r}function s0(t,e){let r=t.getInt32(e,!0);if(r!==Ga)throw new Te(`Invalid surface ident at ${e}: ${r}`);let n=jr(t,e+4,64),i=t.getInt32(e+68,!0),o=t.getInt32(e+72,!0),s=t.getInt32(e+76,!0),a=t.getInt32(e+80,!0),c=t.getInt32(e+84,!0),l=t.getInt32(e+88,!0),d=t.getInt32(e+92,!0),u=t.getInt32(e+96,!0),f=t.getInt32(e+100,!0),m=t.getInt32(e+104,!0);if(o<=0||a<=0||c<=0)throw new Te(`Invalid surface counts for ${n}`);let h=m;vi(`Surface ${n}`,e,h,t.byteLength);let y=[],p=e+l;for(let A=0;A<c;A+=1){let w=p+A*12;y.push({indices:[t.getInt32(w,!0),t.getInt32(w+4,!0),t.getInt32(w+8,!0)]})}let g=[],S=e+d;for(let A=0;A<s;A+=1){let w=S+A*68;g.push({name:jr(t,w,64),shaderIndex:t.getInt32(w+64,!0)})}let x=[],v=e+u;for(let A=0;A<a;A+=1){let w=v+A*8;x.push({s:t.getFloat32(w,!0),t:t.getFloat32(w+4,!0)})}let b=[],_=e+f;for(let A=0;A<o;A+=1){let w=[];for(let E=0;E<a;E+=1){let L=_+(A*a+E)*8,B=t.getInt16(L,!0)/64,O=t.getInt16(L+2,!0)/64,U=t.getInt16(L+4,!0)/64,C=t.getUint16(L+6,!0);w.push({position:{x:B,y:O,z:U},latLng:C,normal:r0(C)})}b.push(w)}return{surface:{name:n,flags:i,numFrames:o,shaders:g,triangles:y,texCoords:x,vertices:b},nextOffset:e+m}}function ds(t){if(t.byteLength<108)throw new Te("MD3 buffer too small for header");let e=new DataView(t),r=n0(e);vi("MD3 end",r.ofsEnd,0,t.byteLength);let n=i0(e,r),i=o0(e,r),o=[],s=r.ofsSurfaces;for(let a=0;a<r.numSurfaces;a+=1){let{surface:c,nextOffset:l}=s0(e,s);o.push(c),s=l}if(s!==r.ofsEnd)throw new Te("Surface parsing did not reach ofsEnd");return{header:r,frames:n,tags:i,surfaces:o}}var hr=class{constructor(e){this.vfs=e;this.cache=new Map}async load(e){if(this.cache.has(e))return this.cache.get(e);let r=await this.vfs.readFile(e),n=ds(r.slice().buffer);return this.cache.set(e,n),n}get(e){return this.cache.get(e)}};var a0=844317769,c0=2,Wa=64,Xa=12,yt=class extends Error{};function l0(t,e,r){let n=[];for(let i=0;i<r;i+=1){let o=t.getUint8(e+i);if(o===0)break;n.push(o)}return String.fromCharCode(...n)}function us(t){if(t.byteLength<Xa)throw new yt("Sprite buffer too small to contain header");let e=new DataView(t),r=e.getInt32(0,!0),n=e.getInt32(4,!0),i=e.getInt32(8,!0);if(r!==a0)throw new yt(`Invalid Sprite ident: ${r}`);if(n!==c0)throw new yt(`Unsupported Sprite version: ${n}`);let o=[],s=16+Wa,a=Xa;for(let c=0;c<i;c+=1){if(a+s>t.byteLength)throw new yt("Sprite frame data exceeds buffer length");let l=e.getInt32(a,!0),d=e.getInt32(a+4,!0),u=e.getInt32(a+8,!0),f=e.getInt32(a+12,!0),m=l0(e,a+16,Wa);o.push({width:l,height:d,originX:u,originY:f,name:m}),a+=s}return{ident:r,version:n,numFrames:i,frames:o}}var pr=class{constructor(e){this.vfs=e}async load(e){let r=await this.vfs.readFile(e),n=new Uint8Array(r.byteLength);return n.set(r),us(n.buffer)}};function Ka(t,e){let r=(t.sequence.end-t.sequence.start+1)/t.sequence.fps,n=t.sequence.loop!==!1,i=t.time+e;return n?i=(i%r+r)%r:i>r&&(i=r),{...t,time:Math.max(0,Math.min(i,r))}}function Ya(t){let e=t.sequence.end-t.sequence.start+1,r=1/t.sequence.fps,n=t.sequence.loop!==!1,i=t.time/r;if(!n&&i>=e)return{frame0:t.sequence.end,frame1:t.sequence.end,lerp:0};let o=n?i%e:Math.min(i,e-1),s=Math.floor(o),a=t.sequence.start+s,c=s+1>=e?n?t.sequence.start:t.sequence.end:a+1,l=!n&&s>=e-1?0:o-s;return{frame0:a,frame1:c,lerp:l}}function qa(t){return{sequence:t,time:0}}function $a(t,e,r){return{x:t.x+(e.x-t.x)*r,y:t.y+(e.y-t.y)*r,z:t.z+(e.z-t.z)*r}}var Qr=class extends Error{constructor(e){super(e),this.name="WalParseError"}};function Si(t){if(t.byteLength<100)throw new Qr("WAL buffer too small");let e=new DataView(t),r=new Uint8Array(t,0,32),n=new TextDecoder("utf-8").decode(r).replace(/\0.*$/,"").trim(),i=e.getInt32(32,!0),o=e.getInt32(36,!0),s=[e.getInt32(40,!0),e.getInt32(44,!0),e.getInt32(48,!0),e.getInt32(52,!0)],a=new Uint8Array(t,56,32),c=new TextDecoder("utf-8").decode(a).replace(/\0.*$/,"").trim(),l=e.getInt32(88,!0),d=e.getInt32(92,!0),u=e.getInt32(96,!0);if(i<=0||o<=0)throw new Qr("Invalid WAL dimensions");let f=[],m=i,h=o;for(let y=0;y<s.length;y+=1){let p=s[y],g=Math.max(1,m*h|0);if(p<=0||p+g>t.byteLength)throw new Qr(`Invalid WAL mip offset for level ${y}`);let S=new Uint8Array(t,p,g);f.push({level:y,width:m,height:h,data:S}),m=Math.max(1,m>>1),h=Math.max(1,h>>1)}return{name:n,width:i,height:o,mipmaps:f,animName:c,flags:l,contents:d,value:u}}var Nt=class extends Error{constructor(e){super(e),this.name="PcxParseError"}};function Jr(t){if(t.byteLength<128)throw new Nt("PCX buffer too small for header");let e=new DataView(t),r=e.getUint8(0),n=e.getUint8(2),i=e.getUint8(3),o=e.getUint16(4,!0),s=e.getUint16(6,!0),a=e.getUint16(8,!0),c=e.getUint16(10,!0);if(r!==10||n!==1)throw new Nt("Unsupported PCX encoding");if(i!==8)throw new Nt("Only 8bpp PCX files are supported");let l=a-o+1,d=c-s+1,u=e.getUint16(66,!0),f=t.byteLength-769;if(f<128||new DataView(t,f,1).getUint8(0)!==12)throw new Nt("Missing PCX palette");let m=new Uint8Array(t,f+1,768),h=new Uint8Array(t,128,f-128),y=new Uint8Array(l*d),p=0,g=0;for(let S=0;S<d;S+=1){let x=0;for(;x<u&&p<h.length;){let v=1,b=h[p++];if((b&192)===192){if(v=b&63,p>=h.length)throw new Nt("Unexpected end of PCX RLE data");b=h[p++]}for(let _=0;_<v&&x<u;_+=1)x<l&&(y[g++]=b),x+=1}}return{width:l,height:d,bitsPerPixel:i,pixels:y,palette:m}}function Mi(t){let e=new Uint8Array(t.width*t.height*4);for(let r=0;r<t.pixels.length;r+=1){let n=t.pixels[r],i=n*3,o=r*4;e[o]=t.palette[i],e[o+1]=t.palette[i+1],e[o+2]=t.palette[i+2],e[o+3]=n===255?0:255}return e}var et=class extends Error{constructor(e){super(e),this.name="TgaParseError"}};function fs(t){let e=new DataView(t);if(t.byteLength<18)throw new et("Buffer too small for TGA header");let r=e.getUint8(0),n=e.getUint8(1),i=e.getUint8(2),o=e.getUint16(12,!0),s=e.getUint16(14,!0),a=e.getUint8(16),c=e.getUint8(17);if(i!==2&&i!==10&&i!==3&&i!==11)throw new et(`Unsupported TGA image type: ${i} (only RGB/Grayscale supported)`);if(a!==24&&a!==32&&a!==8)throw new et(`Unsupported pixel depth: ${a} (only 8, 24, 32 bpp supported)`);let l=i>=9,d=i===3||i===11,u=a/8,f=18+r;if(n===1){let x=e.getUint16(5,!0),v=e.getUint8(7);f+=x*(v/8)}let m=o*s,h=new Uint8Array(m*4),y=(c&32)!==0,p=0,g=new Uint8Array(t),S=x=>{if(d){let v=g[f++];h[x]=v,h[x+1]=v,h[x+2]=v,h[x+3]=255}else{let v=g[f++],b=g[f++],_=g[f++],A=a===32?g[f++]:255;h[x]=_,h[x+1]=b,h[x+2]=v,h[x+3]=A}};if(l){let x=0;for(;x<m;){if(f>=t.byteLength)throw new et("Unexpected end of TGA RLE data");let v=g[f++],b=(v&127)+1,_=(v&128)!==0;if(x+b>m)throw new et("TGA RLE packet exceeds image bounds");if(_){let A=d?g[f]:g[f+2],w=d?g[f]:g[f+1],E=g[f],L=d?255:a===32?g[f+3]:255;f+=u;for(let B=0;B<b;B++){let O=(x+B)*4;h[O]=A,h[O+1]=w,h[O+2]=E,h[O+3]=L}}else for(let A=0;A<b;A++)S((x+A)*4);x+=b}}else for(let x=0;x<m;x++){if(f>=t.byteLength)throw new et("Unexpected end of TGA data");S(x*4)}if(!y){let x=o*4,v=new Uint8Array(x);for(let b=0;b<s/2;b++){let _=b*x,A=(s-1-b)*x;v.set(h.subarray(_,_+x)),h.set(h.subarray(A,A+x),_),h.set(v,A)}}return{width:o,height:s,bitsPerPixel:32,pixels:h}}var yr=class{constructor(e={}){this.cache=new pt(e.capacity??128)}get size(){return this.cache.size}get(e){return this.cache.get(e.toLowerCase())}set(e,r){this.cache.set(e.toLowerCase(),r)}clear(){this.cache.clear()}};function ms(t,e){let r=[];for(let n of t.mipmaps){let i=new Uint8Array(n.width*n.height*4);for(let o=0;o<n.data.length;o+=1){let s=n.data[o],a=s*3,c=o*4;i[c]=e[a],i[c+1]=e[a+1],i[c+2]=e[a+2],i[c+3]=s===255?0:255}r.push({level:n.level,width:n.width,height:n.height,rgba:i})}return{width:t.width,height:t.height,levels:r,source:"wal"}}function _i(t){let e=Mi(t),r={level:0,width:t.width,height:t.height,rgba:e};return{width:t.width,height:t.height,levels:[r],source:"pcx"}}function ja(t){let e={level:0,width:t.width,height:t.height,rgba:t.pixels};return{width:t.width,height:t.height,levels:[e],source:"tga"}}function Ai(t,e){return ms(Si(t),e)}var kt=class extends Error{constructor(e){super(e),this.name="WavParseError"}};function hs(t,e,r){return new TextDecoder("ascii").decode(new Uint8Array(t.buffer,t.byteOffset+e,r))}function wi(t){if(t.byteLength<44)throw new kt("WAV buffer too small");let e=new DataView(t);if(hs(e,0,4)!=="RIFF"||hs(e,8,4)!=="WAVE")throw new kt("Invalid WAV header");let r=12,n=-1,i=-1,o=0,s=0;for(;r+8<=t.byteLength;){let h=hs(e,r,4),y=e.getUint32(r+4,!0),p=r+8;h==="fmt "?(n=p,o=y):h==="data"&&(i=p,s=y),r=p+y}if(n===-1||i===-1)throw new kt("Missing fmt or data chunk");let a=e.getUint16(n,!0),c=e.getUint16(n+2,!0),l=e.getUint32(n+4,!0),d=e.getUint16(n+14,!0);if(a!==1)throw new kt("Only PCM WAV is supported");let u=d/8,f=s/(u*c),m=new Float32Array(f*c);for(let h=0;h<f;h+=1)for(let y=0;y<c;y+=1){let p=h*c+y,g=i+p*u,S=0;if(d===8)S=e.getUint8(g),m[p]=(S-128)/128;else if(d===16)S=e.getInt16(g,!0),m[p]=S/32768;else if(d===24){let x=e.getUint8(g),v=e.getUint8(g+1),b=e.getInt8(g+2);S=x|v<<8|b<<16,m[p]=S/8388608}else throw new kt(`Unsupported bitsPerSample: ${d}`)}return{sampleRate:l,channels:c,bitsPerSample:d,samples:m}}var d0=(t,e=4294967295,r=79764919)=>{let n=new Int32Array(256),i,o,s,a=e;for(i=0;i<256;i++){for(s=i<<24,o=8;o>0;--o)s=2147483648&s?s<<1^r:s<<1;n[i]=s}for(i=0;i<t.length;i++)a=a<<8^n[255&(a>>24^t[i])];return a};var ps=(t,e=d0)=>{let r=p=>new Uint8Array(p.length/2).map(((g,S)=>parseInt(p.substring(2*S,2*(S+1)),16))),n=p=>r(p)[0],i=new Map;[,8364,,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,,381,,,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,,382,376].forEach(((p,g)=>i.set(p,g)));let o=new Uint8Array(t.length),s,a,c,l=!1,d=0,u=42,f=t.length>13&&t.substring(0,9)==="dynEncode",m=0;f&&(m=11,a=n(t.substring(9,m)),a<=1&&(m+=2,u=n(t.substring(11,m))),a===1&&(m+=8,c=(p=>new DataView(r(p).buffer).getInt32(0,!0))(t.substring(13,m))));let h=256-u;for(let p=m;p<t.length;p++)if(s=t.charCodeAt(p),s!==61||l){if(s===92&&p<t.length-5&&f){let g=t.charCodeAt(p+1);g!==117&&g!==85||(s=parseInt(t.substring(p+2,p+6),16),p+=5)}if(s>255){let g=i.get(s);g&&(s=g+127)}l&&(l=!1,s-=64),o[d++]=s<u&&s>0?s+h:s-u}else l=!0;let y=o.subarray(0,d);if(f&&a===1){let p=e(y);if(p!==c){let g="Decode failed crc32 validation";throw console.error("`simple-yenc`\n",g+`
1
+ "use strict";var Quake2Engine=(()=>{var vl=Object.create;var li=Object.defineProperty;var Sl=Object.getOwnPropertyDescriptor;var Ml=Object.getOwnPropertyNames;var _l=Object.getPrototypeOf,Al=Object.prototype.hasOwnProperty;var wl=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),qo=(t,e)=>{for(var r in e)li(t,r,{get:e[r],enumerable:!0})},ya=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ml(e))!Al.call(t,i)&&i!==r&&li(t,i,{get:()=>e[i],enumerable:!(n=Sl(e,i))||n.enumerable});return t};var Ll=(t,e,r)=>(r=t!=null?vl(_l(t)):{},ya(e||!t||!t.__esModule?li(r,"default",{value:t,enumerable:!0}):r,t)),El=t=>ya(li({},"__esModule",{value:!0}),t);var Ja=wl((ph,Qa)=>{"use strict";Qa.exports=Worker});var Kf={};qo(Kf,{ATTN_IDLE:()=>Pc,ATTN_LOOP_NONE:()=>Ec,ATTN_NONE:()=>so,ATTN_NORM:()=>Ic,ATTN_STATIC:()=>Cc,AssetDependencyError:()=>Zt,AssetDependencyTracker:()=>qn,AssetManager:()=>io,AudioApi:()=>dr,AudioContextController:()=>co,AudioRegistry:()=>Fr,AudioRegistryError:()=>Xn,AudioSystem:()=>yo,BSP_SURFACE_FRAGMENT_SOURCE:()=>Gs,BSP_SURFACE_VERTEX_SOURCE:()=>Vs,BSP_VERTEX_LAYOUT:()=>ks,BspLoader:()=>fr,BspParseError:()=>q,BspSurfacePipeline:()=>vo,Camera:()=>wo,Command:()=>Wr,CommandRegistry:()=>or,ConfigStringRegistry:()=>lr,Cvar:()=>Yr,CvarRegistry:()=>ar,DemoPlaybackController:()=>ii,DemoReader:()=>tr,EngineHost:()=>cr,EngineRuntime:()=>qr,FixedTimestepLoop:()=>Dt,Framebuffer:()=>xo,IndexBuffer:()=>fe,LruCache:()=>pt,MAX_SOUND_CHANNELS:()=>Bs,MD2_FRAGMENT_SHADER:()=>js,MD2_VERTEX_SHADER:()=>$s,MD3_FRAGMENT_SHADER:()=>oa,MD3_VERTEX_SHADER:()=>ia,Md2Loader:()=>mr,Md2MeshBuffers:()=>Mo,Md2ParseError:()=>le,Md2Pipeline:()=>_o,Md3Loader:()=>hr,Md3ModelMesh:()=>Lo,Md3ParseError:()=>Te,Md3Pipeline:()=>Eo,Md3SurfaceMesh:()=>Qn,MusicSystem:()=>go,NetworkMessageParser:()=>nr,PARTICLE_FRAGMENT_SHADER:()=>aa,PARTICLE_VERTEX_SHADER:()=>sa,PakArchive:()=>ur,PakIndexStore:()=>no,PakIngestionError:()=>ht,PakParseError:()=>Re,PakValidationError:()=>Ot,PakValidator:()=>gi,ParticleRenderer:()=>Po,ParticleSystem:()=>Io,PlaybackState:()=>Yo,RERELEASE_KNOWN_PAKS:()=>ss,SKYBOX_FRAGMENT_SHADER:()=>Ys,SKYBOX_VERTEX_SHADER:()=>Ks,SOUND_FULLVOLUME:()=>Br,SOUND_LOOP_ATTENUATE:()=>zc,ShaderProgram:()=>ve,SkyboxPipeline:()=>So,SoundChannel:()=>oo,SoundPrecache:()=>fo,SoundRegistry:()=>uo,SpriteLoader:()=>pr,SpriteParseError:()=>yt,Texture2D:()=>Dr,TextureCache:()=>yr,TextureCubeMap:()=>Or,TgaParseError:()=>et,U_ANGLE1:()=>No,U_ANGLE2:()=>To,U_ANGLE3:()=>Fo,U_EFFECTS16:()=>ri,U_EFFECTS8:()=>Zn,U_EVENT:()=>Do,U_FRAME16:()=>Uo,U_FRAME8:()=>Bo,U_MODEL:()=>ko,U_MODEL2:()=>Ho,U_MODEL3:()=>Vo,U_MODEL4:()=>Go,U_OLDORIGIN:()=>Wo,U_ORIGIN1:()=>zo,U_ORIGIN2:()=>Ro,U_ORIGIN3:()=>Oo,U_REMOVE:()=>ca,U_RENDERFX16:()=>ti,U_RENDERFX8:()=>Jn,U_SKIN16:()=>ni,U_SKIN8:()=>ei,U_SOLID:()=>Ko,U_SOUND:()=>Xo,VertexArray:()=>we,VertexBuffer:()=>Se,VirtualFileSystem:()=>yi,advanceAnimation:()=>Ka,applySurfaceState:()=>Wc,attenuationToDistanceMultiplier:()=>er,boxIntersectsFrustum:()=>jn,buildBspGeometry:()=>Oc,buildMd2Geometry:()=>Qs,buildMd2VertexData:()=>Js,buildMd3SurfaceGeometry:()=>ra,buildMd3VertexData:()=>na,calculateMaxAudibleDistance:()=>ao,calculatePakChecksum:()=>Fa,computeFrameBlend:()=>Ya,computeSkyScroll:()=>Yc,createAnimationState:()=>qa,createAudioGraph:()=>lo,createBspSurfaces:()=>Dc,createEmptyEntityState:()=>rr,createEmptyProtocolPlayerState:()=>Co,createEngine:()=>Xf,createEngineRuntime:()=>Ra,createFaceLightmap:()=>bi,createInitialChannels:()=>mo,createProgramFromSources:()=>Bc,createWebGLContext:()=>Tc,decodeOgg:()=>ro,deriveSurfaceRenderState:()=>Xs,extractFrustumPlanes:()=>Nc,filesToPakSources:()=>as,findLeafForPoint:()=>Hs,gatherVisibleFaces:()=>Vc,groupMd2Animations:()=>Va,ingestPakFiles:()=>Ba,ingestPaks:()=>xi,interpolateMd3Tag:()=>ul,interpolateVec3:()=>$a,parseBsp:()=>cs,parseMd2:()=>ls,parseMd3:()=>ds,parsePcx:()=>Jr,parseSprite:()=>us,parseTga:()=>fs,parseWal:()=>Si,parseWalTexture:()=>Ai,parseWav:()=>wi,pcxToRgba:()=>Mi,pickChannel:()=>ho,preparePcxTexture:()=>_i,removeViewTranslation:()=>Kc,resolveLightStyles:()=>Ws,spatializeOrigin:()=>po,spawnBlood:()=>hl,spawnBulletImpact:()=>fl,spawnExplosion:()=>ml,spawnMuzzleFlash:()=>yl,spawnTeleportFlash:()=>pl,spawnTrail:()=>gl,walToRgba:()=>ms,wireDropTarget:()=>Da,wireFileInput:()=>Oa});var Il=()=>typeof performance<"u"?performance.now():Date.now(),Pl=t=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>t()):setTimeout(t,25)},Dt=class{constructor(e,r={}){this.callbacks=e;this.accumulatorMs=0;this.frame=0;this.running=!1;this.tick=()=>{if(!this.running)return;let e=this.options.now(),r=this.lastTimeMs===void 0?0:e-this.lastTimeMs;this.lastTimeMs=e,this.advance(r,e),this.running&&this.options.schedule(this.tick)};let n=r.fixedDeltaMs??25,i=r.maxSubSteps??5;this.options={fixedDeltaMs:n,maxSubSteps:i,maxDeltaMs:r.maxDeltaMs??n*i,startTimeMs:r.startTimeMs,now:r.now??Il,schedule:r.schedule??Pl}}start(){this.running||(this.running=!0,this.lastTimeMs=this.options.startTimeMs??this.options.now(),this.options.schedule(this.tick))}stop(){this.running=!1}pump(e){let r=(this.lastTimeMs??0)+e;this.lastTimeMs=r,this.advance(e,r)}isRunning(){return this.running}get frameNumber(){return this.frame}advance(e,r){let n=Math.min(Math.max(e,0),this.options.maxDeltaMs);this.accumulatorMs=Math.min(this.accumulatorMs+n,this.options.fixedDeltaMs*this.options.maxSubSteps);let i=0;for(;this.accumulatorMs>=this.options.fixedDeltaMs&&i<this.options.maxSubSteps;)this.frame+=1,this.callbacks.simulate({frame:this.frame,deltaMs:this.options.fixedDeltaMs,nowMs:r}),this.accumulatorMs-=this.options.fixedDeltaMs,i+=1;let o=this.options.fixedDeltaMs===0?0:this.accumulatorMs/this.options.fixedDeltaMs;this.callbacks.render?.({alpha:o,nowMs:r,accumulatorMs:this.accumulatorMs,frame:this.frame})}};var Wr=class{constructor(e,r,n){this.name=e,this.callback=r,this.description=n}execute(e){this.callback(e)}},or=class{constructor(){this.commands=new Map}register(e,r,n){let i=new Wr(e,r,n);return this.commands.set(e,i),i}get(e){return this.commands.get(e)}execute(e){let r=this.tokenize(e);if(r.length===0)return!1;let n=r[0],i=r.slice(1),o=this.get(n);return o?(o.execute(i),!0):!1}tokenize(e){return e.trim().split(/\s+/)}list(){return[...this.commands.values()].sort((e,r)=>e.name.localeCompare(r.name))}};var Cl=Object.defineProperty,ga=(t,e)=>{for(var r in e)Cl(t,r,{get:e[r],enumerable:!0})},xa={x:0,y:0,z:0};var jf=Math.PI/180;function ba(t,e){return{x:t.x-e.x,y:t.y-e.y,z:t.z-e.z}}function zl(t,e){return{x:t.x*e,y:t.y*e,z:t.z*e}}function jo(t,e){return t.x*e.x+t.y*e.y+t.z*e.z}function Rl(t){return jo(t,t)}function Qo(t){return Math.sqrt(Rl(t))}function He(t){let e=Qo(t);return e===0?t:zl(t,1/e)}var Tl=Math.PI/180,Qf=180/Math.PI,sr=Tl;var Fl=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];function Bl(){return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function va(t,e){let r=e.x,n=e.y,i=e.z;return{x:t[0]*r+t[4]*n+t[8]*i+t[12],y:t[1]*r+t[5]*n+t[9]*i+t[13],z:t[2]*r+t[6]*n+t[10]*i+t[14]}}function Sa(t,e){let r=Bl();return r[0]=e[0].x,r[1]=e[0].y,r[2]=e[0].z,r[4]=e[1].x,r[5]=e[1].y,r[6]=e[1].z,r[8]=e[2].x,r[9]=e[2].y,r[10]=e[2].z,r[12]=t.x,r[13]=t.y,r[14]=t.z,r}var Ke=1,mt=2;var Jo=8,Zo=16,Dl=32;var Ol=16384;var di=65536,Ma=1<<17,Nl=1<<18,kl=1<<19,Ul=1<<20,Hl=1<<21,Vl=1<<22,Gl=1<<23,Jf=1<<24,ui=1<<25,Wl=1<<26,Zf=1<<27,em=1<<28,tm=1<<29,fi=1<<30,rm=1<<31;var Kr=0;var _a=4,Aa=8,wa=16,La=32,Ea=64;var nm=1<<25,im=1<<28,om=1<<29,sm=1<<30,am=1<<31;var cm=Ke|mt,lm=Ke|di|mt|ui|fi,dm=Ke|di|mt,um=Ke|Ma|mt|ui|fi,fm=Dl|Jo|Zo,mm=Ke|Zo|Jo,Xl=Ke|ui|fi|mt|Wl,hm=Nl|kl|Ul|Hl|Vl|Gl,pm=Ke|Jo|Zo|ui|fi,ym=Ke|di|mt,gm=Ke|mt,xm=Ke|di|mt|Ma,bm=Xl|Ol;var vm=Number.MAX_SAFE_INTEGER-1;var mi=(t=>(t[t.None=0]="None",t[t.Archive=1]="Archive",t[t.UserInfo=2]="UserInfo",t[t.ServerInfo=4]="ServerInfo",t[t.Latch=8]="Latch",t[t.Cheat=16]="Cheat",t))(mi||{});var hi=256;var es=256,ts=8192,pi=2048,rs=512,ns=256,is=hi*2,os=256,$o=32,Xr=96;var Y=(t=>(t[t.Name=0]="Name",t[t.CdTrack=1]="CdTrack",t[t.Sky=2]="Sky",t[t.SkyAxis=3]="SkyAxis",t[t.SkyRotate=4]="SkyRotate",t[t.StatusBar=5]="StatusBar",t[t.AirAccel=59]="AirAccel",t[t.MaxClients=60]="MaxClients",t[t.MapChecksum=61]="MapChecksum",t[t.Models=62]="Models",t[t.Sounds=62+ts]="Sounds",t[t.Images=t.Sounds+pi]="Images",t[t.Lights=t.Images+rs]="Lights",t[t.ShadowLights=t.Lights+es]="ShadowLights",t[t.Items=t.ShadowLights+os]="Items",t[t.PlayerSkins=t.Items+ns]="PlayerSkins",t[t.General=t.PlayerSkins+hi]="General",t[t.WheelWeapons=t.General+is]="WheelWeapons",t[t.WheelAmmo=t.WheelWeapons+$o]="WheelAmmo",t[t.WheelPowerups=t.WheelAmmo+$o]="WheelPowerups",t[t.CdLoopCount=t.WheelPowerups+$o]="CdLoopCount",t[t.GameStyle=t.CdLoopCount+1]="GameStyle",t[t.MaxConfigStrings=t.GameStyle+1]="MaxConfigStrings",t))(Y||{}),Ia=Y.MaxConfigStrings;function Pa(t){return t>=5&&t<59?Xr*(59-t):t>=Y.General&&t<Y.WheelWeapons?Xr*(Y.MaxConfigStrings-t):Xr}var Kl={};ga(Kl,{addReplayFrame:()=>jl,createReplaySession:()=>$l,deserializeReplay:()=>ql,serializeReplay:()=>Yl});function Yl(t){return JSON.stringify(t,null,2)}function ql(t){let e=JSON.parse(t);if(!e.metadata||!Array.isArray(e.frames))throw new Error("Invalid replay format: missing metadata or frames");return e}function $l(t,e){return{metadata:{map:t,date:new Date().toISOString(),version:"1.0",seed:e},frames:[]}}function jl(t,e,r,n){t.frames.push({serverFrame:r,cmd:e,timestamp:Date.now()-n})}var H=(t=>(t[t.bad=0]="bad",t[t.muzzleflash=1]="muzzleflash",t[t.muzzleflash2=2]="muzzleflash2",t[t.temp_entity=3]="temp_entity",t[t.layout=4]="layout",t[t.inventory=5]="inventory",t[t.nop=6]="nop",t[t.disconnect=7]="disconnect",t[t.reconnect=8]="reconnect",t[t.sound=9]="sound",t[t.print=10]="print",t[t.stufftext=11]="stufftext",t[t.serverdata=12]="serverdata",t[t.configstring=13]="configstring",t[t.spawnbaseline=14]="spawnbaseline",t[t.centerprint=15]="centerprint",t[t.download=16]="download",t[t.playerinfo=17]="playerinfo",t[t.packetentities=18]="packetentities",t[t.deltapacketentities=19]="deltapacketentities",t[t.frame=20]="frame",t))(H||{});var I=(t=>(t[t.GUNSHOT=0]="GUNSHOT",t[t.BLOOD=1]="BLOOD",t[t.BLASTER=2]="BLASTER",t[t.RAILTRAIL=3]="RAILTRAIL",t[t.SHOTGUN=4]="SHOTGUN",t[t.EXPLOSION1=5]="EXPLOSION1",t[t.EXPLOSION2=6]="EXPLOSION2",t[t.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",t[t.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",t[t.SPARKS=9]="SPARKS",t[t.SPLASH=10]="SPLASH",t[t.BUBBLETRAIL=11]="BUBBLETRAIL",t[t.SCREEN_SPARKS=12]="SCREEN_SPARKS",t[t.SHIELD_SPARKS=13]="SHIELD_SPARKS",t[t.BULLET_SPARKS=14]="BULLET_SPARKS",t[t.LASER_SPARKS=15]="LASER_SPARKS",t[t.PARASITE_ATTACK=16]="PARASITE_ATTACK",t[t.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",t[t.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",t[t.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",t[t.BFG_EXPLOSION=20]="BFG_EXPLOSION",t[t.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",t[t.BOSSTPORT=22]="BOSSTPORT",t[t.BFG_LASER=23]="BFG_LASER",t[t.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",t[t.WELDING_SPARKS=25]="WELDING_SPARKS",t[t.GREENBLOOD=26]="GREENBLOOD",t[t.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",t[t.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",t[t.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",t[t.BLASTER2=30]="BLASTER2",t[t.RAILTRAIL2=31]="RAILTRAIL2",t[t.FLAME=32]="FLAME",t[t.LIGHTNING=33]="LIGHTNING",t[t.DEBUGTRAIL=34]="DEBUGTRAIL",t[t.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",t[t.FLASHLIGHT=36]="FLASHLIGHT",t[t.FORCEWALL=37]="FORCEWALL",t[t.HEATBEAM=38]="HEATBEAM",t[t.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",t[t.STEAM=40]="STEAM",t[t.BUBBLETRAIL2=41]="BUBBLETRAIL2",t[t.MOREBLOOD=42]="MOREBLOOD",t[t.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",t[t.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",t[t.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",t[t.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",t[t.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",t[t.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",t[t.DBALL_GOAL=49]="DBALL_GOAL",t[t.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",t[t.NUKEBLAST=51]="NUKEBLAST",t[t.WIDOWSPLASH=52]="WIDOWSPLASH",t[t.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",t[t.EXPLOSION1_NP=54]="EXPLOSION1_NP",t[t.FLECHETTE=55]="FLECHETTE",t[t.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",t[t.BFG_ZAP=57]="BFG_ZAP",t[t.BERSERK_SLAM=58]="BERSERK_SLAM",t[t.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",t[t.POWER_SPLASH=60]="POWER_SPLASH",t[t.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",t[t.EXPLOSION1_NL=62]="EXPLOSION1_NL",t[t.EXPLOSION2_NL=63]="EXPLOSION2_NL",t))(I||{});var Ql={};ga(Ql,{U_ANGLE1:()=>id,U_ANGLE2:()=>od,U_ANGLE3:()=>sd,U_EFFECTS:()=>ld,U_EVENT:()=>fd,U_FRAME:()=>ad,U_MODEL:()=>Zl,U_MODEL2:()=>hd,U_MODEL3:()=>pd,U_MODEL4:()=>yd,U_MOREBITS:()=>md,U_NUMBER:()=>Jl,U_ORIGIN1:()=>td,U_ORIGIN2:()=>rd,U_ORIGIN3:()=>nd,U_REMOVE:()=>gd,U_RENDERFX:()=>dd,U_SKIN:()=>cd,U_SOLID:()=>ud,U_SOUND:()=>ed});var Jl=1,Zl=2,ed=4,td=8,rd=16,nd=32,id=64,od=128,sd=256,ad=512,cd=1024,ld=2048,dd=4096,ud=8192,fd=16384,md=32768,hd=1,pd=2,yd=4,gd=32768;var Ca=class{constructor(t){t instanceof Uint8Array?this.view=new DataView(t.buffer,t.byteOffset,t.byteLength):this.view=new DataView(t),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(t){if(t<0||t>this.length)throw new Error(`Seek out of bounds: ${t} (length: ${this.length})`);this.offset=t}hasMore(){return this.offset<this.length}readChar(){let t=this.view.getInt8(this.offset);return this.offset+=1,t}readByte(){let t=this.view.getUint8(this.offset);return this.offset+=1,t}readShort(){let t=this.view.getInt16(this.offset,!0);return this.offset+=2,t}readLong(){let t=this.view.getInt32(this.offset,!0);return this.offset+=4,t}readFloat(){let t=this.view.getFloat32(this.offset,!0);return this.offset+=4,t}readString(){let t="";for(;this.offset<this.length;){let e=this.readChar();if(e===-1||e===0)break;t+=String.fromCharCode(e)}return t}readStringLine(){let t="";for(;this.offset<this.length;){let e=this.readChar();if(e===-1||e===0||e===10)break;t+=String.fromCharCode(e)}return t}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(t){if(this.offset+t>this.length)throw new Error(`Read out of bounds: ${this.offset+t} (length: ${this.length})`);let e=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,t);return this.offset+=t,new Uint8Array(e)}readPos(t){t.x=this.readCoord(),t.y=this.readCoord(),t.z=this.readCoord()}readDir(t){let e=this.readByte();if(e>=162){t.x=0,t.y=0,t.z=0;return}let r=Fl[e];t.x=r[0],t.y=r[1],t.z=r[2]}};var Yr=class{constructor({name:e,defaultValue:r,description:n,flags:i=mi.None,onChange:o}){this.modifiedCount=0;this.name=e,this.defaultValue=r,this.description=n,this.flags=i,this._value=r,this.onChange=o}get string(){return this._value}get number(){return Number(this._value)}get integer(){return Math.trunc(this.number)}get boolean(){return!!this.integer}set(e){if(this.flags&mi.Latch){if(e===this._value){this.latched=void 0;return}if(this.latched===e)return;this.latched!==e&&(this.latched=e);return}this.apply(e)}reset(){this.latched=void 0,this.apply(this.defaultValue)}applyLatched(){if(this.latched===void 0)return!1;let e=this.latched;return this.latched=void 0,e===this._value?!1:(this.apply(e),!0)}apply(e){if(this._value===e)return;let r=this._value;this._value=e,this.modifiedCount+=1,this.onChange?.(this,r)}},ar=class{constructor(){this.cvars=new Map}register(e){let r=this.cvars.get(e.name);if(r)return r;let n=new Yr(e);return this.cvars.set(e.name,n),n}get(e){return this.cvars.get(e)}setValue(e,r){let n=this.get(e);if(!n)throw new Error(`Unknown cvar: ${e}`);return n.set(r),n}resetAll(){for(let e of this.cvars.values())e.reset()}applyLatched(){let e=!1;for(let r of this.cvars.values())e=r.applyLatched()||e;return e}list(){return[...this.cvars.values()].sort((e,r)=>e.name.localeCompare(r.name))}};var cr=class{constructor(e,r,n={}){this.game=e;this.client=r;this.started=!1;this.commands=new or;this.cvars=new ar;this.stepSimulation=e=>{this.previousFrame=this.latestFrame,this.latestFrame=this.game.frame(e,this.latestCommand)};this.renderClient=e=>{this.client&&(this.latestCommand=this.client.render({...e,previous:this.previousFrame,latest:this.latestFrame}))};let i=n.loop?.now?.()??Date.now();this.startTimeMs=n.startTimeMs??n.loop?.startTimeMs??i,this.loop=new Dt({simulate:this.stepSimulation,render:this.renderClient},{...n.loop,startTimeMs:this.startTimeMs})}start(){if(!this.started){try{this.latestFrame=this.game.init(this.startTimeMs)??this.latestFrame,this.client?.init(this.latestFrame)}catch(e){throw this.game.shutdown(),this.client?.shutdown(),e}this.started=!0,this.loop.start()}}stop(){this.started&&(this.loop.stop(),this.client?.shutdown(),this.game.shutdown(),this.previousFrame=void 0,this.latestFrame=void 0,this.started=!1)}pump(e){this.loop.pump(e)}getLatestFrame(){return this.latestFrame}isRunning(){return this.loop.isRunning()}};function xd(t){if(t<0||t>=Y.MaxConfigStrings)throw new RangeError(`Configstring index ${t} is out of range (0-${Y.MaxConfigStrings-1})`)}function za(t,e){let r=Pa(t);if(e.length>r)throw new RangeError(`Configstring ${t} exceeds maximum length (${e.length} > ${r}); limit is ${Xr} chars per slot`)}var lr=class{constructor(){this.values=new Map;this.modelCursor=Y.Models;this.soundCursor=Y.Sounds;this.imageCursor=Y.Images;this.lightCursor=Y.Lights;this.shadowLightCursor=Y.ShadowLights;this.itemCursor=Y.Items;this.playerSkinCursor=Y.PlayerSkins;this.generalCursor=Y.General}set(e,r){return xd(e),za(e,r),this.values.set(e,r),e}get(e){return this.values.get(e)}getName(e){return this.get(e)}getAll(){let e=new Array(Ia).fill("");for(let[r,n]of this.values.entries())e[r]=n;return e}modelIndex(e){return this.register(e,Y.Models,ts,"modelCursor")}soundIndex(e){return this.register(e,Y.Sounds,pi,"soundCursor")}findSoundIndex(e){for(let r=Y.Sounds;r<Y.Sounds+pi;r+=1)if(this.values.get(r)===e)return r}imageIndex(e){return this.register(e,Y.Images,rs,"imageCursor")}lightIndex(e){return this.register(e,Y.Lights,es,"lightCursor")}shadowLightIndex(e){return this.register(e,Y.ShadowLights,os,"shadowLightCursor")}itemIndex(e){return this.register(e,Y.Items,ns,"itemCursor")}playerSkinIndex(e){return this.register(e,Y.PlayerSkins,hi,"playerSkinCursor")}generalIndex(e){return this.register(e,Y.General,is,"generalCursor")}register(e,r,n,i){for(let a=r;a<r+n;a+=1)if(this.values.get(a)===e)return a;let o=this[i],s=r+n;if(o>=s)throw new RangeError(`Out of configstring slots for range starting at ${r}`);return za(o,e),this.values.set(o,e),this[i]=o+1,o}};var dr=class{constructor(e){this.registry=e.registry,this.system=e.system,this.music=e.music,this.client=e.client}soundindex(e){return this.registry.registerName(e)}sound(e,r,n,i,o,s){this.system.play({entity:e,channel:r,soundIndex:n,volume:i,attenuation:o,timeOffsetMs:s}),this.triggerSubtitle(n)}positioned_sound(e,r,n,i){this.system.positionedSound(e,r,n,i),this.triggerSubtitle(r)}loop_sound(e,r,n,i,o){this.system.play({entity:e,channel:r,soundIndex:n,volume:i,attenuation:o,looping:!0}),this.triggerSubtitle(n)}stop_entity_sounds(e){this.system.stopEntitySounds(e)}set_listener(e){this.system.setListener(e)}play_music(e,r=!0){return this.music?this.music.play(e,{loop:r}):Promise.resolve()}pause_music(){this.music?.pause()}resume_music(){return this.music?.resume()??Promise.resolve()}stop_music(){this.music?.stop()}set_music_volume(e){this.music?.setVolume(e)}play_ambient(e,r,n){this.system.ambientSound(e,r,n),this.triggerSubtitle(r)}play_channel(e){this.system.play({...e}),this.triggerSubtitle(e.soundIndex)}triggerSubtitle(e){if(!this.client)return;let r=this.registry.getName(e);if(!r)return;let n=r.match(/\[(.*?)\]/);n&&this.client.showSubtitle(n[1],r)}};var qr=class{constructor(e,r){this.engine=e;this.host=r;this.started=!1}start(){this.started||(this.engine.init(),this.host.start(),this.started=!0)}stop(){this.started&&(this.host.stop(),this.engine.shutdown(),this.started=!1)}pump(e){this.host.pump(e)}getLatestFrame(){return this.host.getLatestFrame()}isRunning(){return this.started&&this.host.isRunning()}};function Ra(t,e,r,n,i){let o=new dr({...n,client:r}),s=new cr(e,r,i);return{runtime:new qr(t,s),audio:o}}var bd="PACK";function vd(t,e,r){let n=[];for(let i=0;i<r;i+=1){let o=t.getUint8(e+i);if(o===0)break;n.push(o)}return String.fromCharCode(...n)}function ie(t){return t.replace(/\\/g,"/").replace(/^\/+/,"").toLowerCase()}function Sd(){let t=new Uint32Array(256);for(let e=0;e<256;e+=1){let r=e;for(let n=0;n<8;n+=1)r=(r&1)!==0?3988292384^r>>>1:r>>>1;t[e]=r>>>0}return t}var Md=Sd();function Ta(t){let e=4294967295;for(let r=0;r<t.length;r+=1){let n=t[r];e=Md[(e^n)&255]^e>>>8}return(e^4294967295)>>>0}var Re=class extends Error{},ur=class t{constructor(e,r,n,i){this.name=e;this.buffer=r;this.entries=new Map(n.map(o=>[o.name,o])),this.checksum=i,this.size=r.byteLength}static fromArrayBuffer(e,r){let n=new DataView(r);if(r.byteLength<12)throw new Re("PAK buffer too small to contain header");let i=String.fromCharCode(n.getUint8(0),n.getUint8(1),n.getUint8(2),n.getUint8(3));if(i!==bd)throw new Re(`Invalid PAK header magic: ${i}`);let o=n.getInt32(4,!0),s=n.getInt32(8,!0);if(o<12)throw new Re(`Invalid directory offset: ${o}`);if(s<=0||s%64!==0)throw new Re(`Invalid directory length: ${s}`);if(o+s>r.byteLength)throw new Re("Directory exceeds buffer length");let c=s/64,l=[],d=new Map;for(let u=0;u<c;u+=1){let f=o+u*64,m=vd(n,f,56),h=ie(m),y=n.getInt32(f+56,!0),p=n.getInt32(f+60,!0);if(y<0||p<0||y+p>r.byteLength)throw new Re(`Invalid entry bounds for ${m||"<unnamed>"} (offset=${y}, length=${p})`);if(!h)throw new Re(`Entry ${u} has an empty name`);let g={name:h,offset:y,length:p};d.set(h,g)}return l.push(...d.values()),new t(e,r,l,Ta(new Uint8Array(r)))}getEntry(e){return this.entries.get(ie(e))}listEntries(){return Array.from(this.entries.values())}readFile(e){let r=this.getEntry(e);if(!r)throw new Re(`File not found in PAK: ${e}`);return new Uint8Array(this.buffer,r.offset,r.length)}validate(){return{checksum:this.checksum,entries:this.listEntries()}}};function Fa(t){return Ta(new Uint8Array(t))}var yi=class{constructor(e=[]){this.mounts=[];this.files=new Map;e.forEach(r=>this.mountPak(r))}mountPak(e){this.mounts.push(e);for(let r of e.listEntries()){let n=ie(r.name);this.files.set(n,{archive:e,entry:r})}}get mountedPaks(){return[...this.mounts]}hasFile(e){return this.files.has(ie(e))}stat(e){let r=this.files.get(ie(e));if(r)return{path:r.entry.name,size:r.entry.length,sourcePak:r.archive.name}}async readFile(e){let r=this.files.get(ie(e));if(!r)throw new Error(`File not found in VFS: ${e}`);return r.archive.readFile(e)}list(e=""){let r=ie(e).replace(/\/+$|^\//g,""),n=[],i=new Set,o=r?`${r}/`:"";for(let s of this.files.values()){if(r&&!s.entry.name.startsWith(o))continue;let a=r?s.entry.name.slice(o.length):s.entry.name,c=a.indexOf("/");c===-1?n.push({path:s.entry.name,size:s.entry.length,sourcePak:s.archive.name}):i.add(a.slice(0,c))}return n.sort((s,a)=>s.path.localeCompare(a.path)),{files:n,directories:[...i].sort()}}findByExtension(e){let r=e.startsWith(".")?e.toLowerCase():`.${e.toLowerCase()}`,n=[];for(let i of this.files.values())i.entry.name.toLowerCase().endsWith(r)&&n.push({path:i.entry.name,size:i.entry.length,sourcePak:i.archive.name});return n.sort((i,o)=>i.path.localeCompare(o.path))}};var ss=Object.freeze([{name:"pak0.pak",checksum:2378051181,description:"Base game assets"},{name:"pak0.pak@baseq2",checksum:2378051181,description:"Base game assets (baseq2)"},{name:"pak0.pak@rogue",checksum:3373211245,description:"Ground Zero (rogue) mission pack"},{name:"pak0.pak@xatrix",checksum:1358269824,description:"The Reckoning (xatrix) mission pack"}]),Ot=class extends Error{constructor(r){super(r.status==="unknown"?`Unknown PAK not allowed: ${r.name}`:`PAK checksum mismatch for ${r.name}`);this.result=r;this.name="PakValidationError"}},gi=class{constructor(e=ss){this.known=new Map;e.forEach(r=>this.known.set(this.normalizePakName(r.name),r))}validateArchive(e,r){let n=this.normalizePakName(r??("name"in e?e.name:"unknown")),i=e.checksum,o="size"in e?e.size:void 0,s=this.known.get(n);return s?s.checksum!==i?{name:n,checksum:i,expectedChecksum:s.checksum,status:"mismatch",size:o,description:s.description}:{name:n,checksum:i,expectedChecksum:s.checksum,status:"valid",size:o,description:s.description}:{name:n,checksum:i,status:"unknown",size:o}}assertValid(e,r){let n=this.validateArchive(e,r);if(n.status==="mismatch")throw new Ot(n);return n}normalizePakName(e){let r=ie(e),n=r.split("/"),i=n.pop()??r,o=n.pop();return o?`${i}@${o}`:i}};var ht=class extends Error{constructor(r,n){super(`Failed to ingest PAK: ${r}`);this.file=r;this.name="PakIngestionError",n instanceof Error&&n.stack&&(this.stack=n.stack),this.cause=n}};async function _d(t,e){if(typeof t.arrayBuffer=="function"){let r=await t.arrayBuffer();return e?.({file:"blob",loadedBytes:r.byteLength,totalBytes:r.byteLength,state:"reading"}),r}if(typeof FileReader<"u")return new Promise((r,n)=>{let i=new FileReader;i.onerror=()=>n(i.error??new Error("Unknown FileReader error")),i.onprogress=o=>{e?.({file:"blob",loadedBytes:o.loaded,totalBytes:o.total||t.size,state:"reading"})},i.onload=()=>{let o=i.result;o instanceof ArrayBuffer?r(o):n(new Error("Unexpected FileReader result"))},i.readAsArrayBuffer(t)});if(typeof Response<"u"){let r=await new Response(t).arrayBuffer();return e?.({file:"blob",loadedBytes:r.byteLength,totalBytes:r.byteLength,state:"reading"}),r}if(typeof t.stream=="function"){let r=t.stream().getReader(),n=[],i=0;for(;;){let{done:a,value:c}=await r.read();if(a)break;if(!c)continue;let l=c;n.push(l),i+=l.byteLength,e?.({file:"blob",loadedBytes:i,totalBytes:t.size,state:"reading"})}let o=new Uint8Array(i),s=0;for(let a of n)o.set(a,s),s+=a.byteLength;return o.buffer}throw new ht("blob",new Error("Unsupported Blob type"))}async function Ad(t,e){if(t.data instanceof ArrayBuffer)return e?.({file:t.name,loadedBytes:t.data.byteLength,totalBytes:t.data.byteLength,state:"reading"}),t.data;if(t.data instanceof Blob){let n=t.data.size;return _d(t.data,i=>e?.({...i,file:t.name,totalBytes:n}))}let r=t.data.buffer.slice(t.data.byteOffset,t.data.byteOffset+t.data.byteLength);return e?.({file:t.name,loadedBytes:r.byteLength,totalBytes:r.byteLength,state:"reading"}),r}async function xi(t,e,r){let n=typeof r=="function"?{onProgress:r}:r??{},i=n.persistIndexes??!!n.pakIndexStore,o=n.enforceValidation??!!n.validator,s=n.allowUnknownPaks??!0,a=n.stopOnError??!1,c=[];for(let l of e)try{let d=await Ad(l,n.onProgress),u=ur.fromArrayBuffer(l.name,d),f=n.validator?.validateArchive(u);if(f){n.onValidationResult?.(f);let m=f.status==="mismatch",h=f.status==="unknown";if(m&&o||h&&!s){let y=new Ot(f);if(n.onError?.(l.name,y),a)throw new ht(l.name,y);c.push({archive:u,mounted:!1,validation:f});continue}}if(t.mountPak(u),i&&n.pakIndexStore)try{await n.pakIndexStore.persist(u)}catch(m){if(n.onError?.(l.name,m),a)throw new ht(l.name,m)}n.onProgress?.({file:l.name,loadedBytes:d.byteLength,totalBytes:d.byteLength,state:"parsed"}),c.push({archive:u,mounted:!0,validation:f})}catch(d){if(n.onProgress?.({file:l.name,loadedBytes:0,totalBytes:0,state:"error"}),n.onError?.(l.name,d),a)throw new ht(l.name,d)}return c}var pt=class{constructor(e){this.capacity=e;this.map=new Map;if(e<=0)throw new RangeError("LRU cache capacity must be greater than zero")}get size(){return this.map.size}has(e){return this.map.has(e)}get(e){let r=this.map.get(e);if(r!==void 0)return this.map.delete(e),this.map.set(e,r),r}set(e,r){if(this.map.has(e)&&this.map.delete(e),this.map.set(e,r),this.map.size>this.capacity){let n=this.map.keys().next();n.done||this.map.delete(n.value)}}delete(e){return this.map.delete(e)}clear(){this.map.clear()}entries(){return Array.from(this.map.entries()).reverse().map(([e,r])=>({key:e,value:r}))}};function wd(t){return Array.isArray(t)?t:Array.from(t)}function as(t){return wd(t).map(e=>({name:e.name,data:e}))}async function Ba(t,e,r){let n=as(e);return xi(t,n,r??{})}function Da(t,e){let r=i=>{i.preventDefault(),i.dataTransfer?.dropEffect&&(i.dataTransfer.dropEffect="copy")},n=i=>{i.preventDefault();let o=i.dataTransfer?.files;o&&o.length>0&&e(Array.from(o))};return t.addEventListener("dragover",r),t.addEventListener("drop",n),()=>{t.removeEventListener("dragover",r),t.removeEventListener("drop",n)}}function Oa(t,e){let r=n=>{let i=n.target;!i||!i.files||i.files.length===0||(e(i.files),i.value="")};return t.addEventListener("change",r),()=>t.removeEventListener("change",r)}var Ld="IBSP",Ed=38,ka=19,Id=8+ka*8;var q=class extends Error{},fr=class{constructor(e){this.vfs=e}async load(e){let r=await this.vfs.readFile(e),n=new Uint8Array(r.byteLength);return n.set(r),cs(n.buffer)}};function cs(t){if(t.byteLength<Id)throw new q("BSP too small to contain header");let e=new DataView(t),r=String.fromCharCode(e.getUint8(0),e.getUint8(1),e.getUint8(2),e.getUint8(3));if(r!==Ld)throw new q(`Invalid BSP magic ${r}`);let n=e.getInt32(4,!0);if(n!==Ed)throw new q(`Unsupported BSP version ${n}`);let i=new Map;for(let A=0;A<ka;A+=1){let w=e.getInt32(8+A*8,!0),E=e.getInt32(12+A*8,!0);if(w<0||E<0||w+E>t.byteLength)throw new q(`Invalid lump bounds for index ${A}`);i.set(A,{offset:w,length:E})}let o={version:n,lumps:i},s=Cd(t,i.get(0)),a=Rd(t,i.get(1)),c=Td(t,i.get(2)),l=Fd(t,i.get(4)),d=Bd(t,i.get(5)),u=Dd(t,i.get(6)),f=new Uint8Array(t,i.get(7).offset,i.get(7).length),m=Xd(u,i.get(7)),h=Od(t,i.get(8)),y=Nd(t,i.get(11)),p=kd(t,i.get(12)),g=Ud(t,i.get(13)),S=Hd(t,i.get(14)),x=Vd(t,i.get(15)),v=Gd(t,i.get(9),i.get(10),h),b=Wd(t,i.get(3));return{header:o,entities:s,planes:a,vertices:c,nodes:l,texInfo:d,faces:u,lightMaps:f,lightMapInfo:m,leafs:h,leafLists:v,edges:y,surfEdges:p,models:g,brushes:S,brushSides:x,visibility:b,pickEntity(A){let w=null,E=1/0;for(let L of s.entities){let B=L.properties.model;if(!B||!B.startsWith("*"))continue;let O=parseInt(B.substring(1),10);if(isNaN(O)||O<0||O>=g.length)continue;let U=g[O],C=Pd(A.origin,A.direction,U.mins,U.maxs);C!==null&&C<E&&(E=C,w={entity:L,model:U,distance:C})}return w}}}function Pd(t,e,r,n){let i=0,o=1/0;for(let s=0;s<3;s++)if(Math.abs(e[s])<1e-8){if(t[s]<r[s]||t[s]>n[s])return null}else{let a=1/e[s],c=(r[s]-t[s])*a,l=(n[s]-t[s])*a;if(c>l){let d=c;c=l,l=d}if(i=Math.max(i,c),o=Math.min(o,l),i>o)return null}return i}function Cd(t,e){let r=new TextDecoder().decode(new Uint8Array(t,e.offset,e.length)),n=zd(r),i=n.find(o=>o.classname==="worldspawn");return{raw:r,entities:n,worldspawn:i,getUniqueClassnames(){let o=new Set;for(let s of n)s.classname&&o.add(s.classname);return Array.from(o).sort()}}}function zd(t){let e=[],r=/\{([^}]*)\}/gms,n;for(;(n=r.exec(t))!==null;){let i=n[1],o={},s=/"([^\"]*)"\s+"([^\"]*)"/g,a;for(;(a=s.exec(i))!==null;)o[a[1]]=a[2];e.push({classname:o.classname,properties:o})}return e}function Rd(t,e){let r=new DataView(t,e.offset,e.length),n=e.length/20;if(n%1!==0)throw new q("Plane lump has invalid length");let i=[];for(let o=0;o<n;o+=1){let s=[r.getFloat32(o*20,!0),r.getFloat32(o*20+4,!0),r.getFloat32(o*20+8,!0)],a=r.getFloat32(o*20+12,!0),c=r.getInt32(o*20+16,!0);i.push({normal:s,dist:a,type:c})}return i}function Td(t,e){let r=new DataView(t,e.offset,e.length),n=e.length/12;if(n%1!==0)throw new q("Vertex lump has invalid length");let i=[];for(let o=0;o<n;o+=1)i.push([r.getFloat32(o*12,!0),r.getFloat32(o*12+4,!0),r.getFloat32(o*12+8,!0)]);return i}function Fd(t,e){let r=new DataView(t,e.offset,e.length),n=28,i=e.length/n;if(i%1!==0)throw new q("Node lump has invalid length");let o=[];for(let s=0;s<i;s+=1){let a=s*n,c=r.getInt32(a,!0),l=[r.getInt32(a+4,!0),r.getInt32(a+8,!0)],d=[r.getInt16(a+12,!0),r.getInt16(a+14,!0),r.getInt16(a+16,!0)],u=[r.getInt16(a+18,!0),r.getInt16(a+20,!0),r.getInt16(a+22,!0)],f=r.getUint16(a+24,!0),m=r.getUint16(a+26,!0);o.push({planeIndex:c,children:l,mins:d,maxs:u,firstFace:f,numFaces:m})}return o}function Bd(t,e){let r=new DataView(t,e.offset,e.length),n=76,i=e.length/n;if(i%1!==0)throw new q("TexInfo lump has invalid length");let o=[];for(let s=0;s<i;s+=1){let a=s*n,c=[r.getFloat32(a,!0),r.getFloat32(a+4,!0),r.getFloat32(a+8,!0)],l=r.getFloat32(a+12,!0),d=[r.getFloat32(a+16,!0),r.getFloat32(a+20,!0),r.getFloat32(a+24,!0)],u=r.getFloat32(a+28,!0),f=r.getInt32(a+32,!0),m=r.getInt32(a+36,!0),h=new Uint8Array(t,e.offset+a+40,32),y=new TextDecoder("utf-8").decode(h).replace(/\0.*$/,""),p=r.getInt32(a+72,!0);o.push({s:c,sOffset:l,t:d,tOffset:u,flags:f,value:m,texture:y,nextTexInfo:p})}return o}function Dd(t,e){let r=new DataView(t,e.offset,e.length),n=20,i=e.length/n;if(i%1!==0)throw new q("Face lump has invalid length");let o=[];for(let s=0;s<i;s+=1){let a=s*n,c=r.getUint16(a,!0),l=r.getInt16(a+2,!0),d=r.getInt32(a+4,!0),u=r.getInt16(a+8,!0),f=r.getInt16(a+10,!0),m=[r.getUint8(a+12),r.getUint8(a+13),r.getUint8(a+14),r.getUint8(a+15)],h=r.getInt32(a+16,!0);o.push({planeIndex:c,side:l,firstEdge:d,numEdges:u,texInfo:f,styles:m,lightOffset:h})}return o}function Od(t,e){let r=new DataView(t,e.offset,e.length),n=28,i=e.length/n;if(i%1!==0)throw new q("Leaf lump has invalid length");let o=[];for(let s=0;s<i;s+=1){let a=s*n,c=r.getInt32(a,!0),l=r.getInt16(a+4,!0),d=r.getInt16(a+6,!0),u=[r.getInt16(a+8,!0),r.getInt16(a+10,!0),r.getInt16(a+12,!0)],f=[r.getInt16(a+14,!0),r.getInt16(a+16,!0),r.getInt16(a+18,!0)],m=r.getUint16(a+20,!0),h=r.getUint16(a+22,!0),y=r.getUint16(a+24,!0),p=r.getUint16(a+26,!0);o.push({contents:c,cluster:l,area:d,mins:u,maxs:f,firstLeafFace:m,numLeafFaces:h,firstLeafBrush:y,numLeafBrushes:p})}return o}function Nd(t,e){let r=new DataView(t,e.offset,e.length),n=4,i=e.length/n;if(i%1!==0)throw new q("Edge lump has invalid length");let o=[];for(let s=0;s<i;s+=1){let a=s*n;o.push({vertices:[r.getUint16(a,!0),r.getUint16(a+2,!0)]})}return o}function kd(t,e){let r=e.length/4;if(r%1!==0)throw new q("SurfEdge lump has invalid length");let n=new DataView(t,e.offset,e.length),i=new Int32Array(r);for(let o=0;o<r;o+=1)i[o]=n.getInt32(o*4,!0);return i}function Ud(t,e){let r=new DataView(t,e.offset,e.length),n=48;if(e.length%n!==0)throw new q("Model lump has invalid length");let i=e.length/n,o=[];for(let s=0;s<i;s+=1){let a=s*n,c=[r.getFloat32(a,!0),r.getFloat32(a+4,!0),r.getFloat32(a+8,!0)],l=[r.getFloat32(a+12,!0),r.getFloat32(a+16,!0),r.getFloat32(a+20,!0)],d=[r.getFloat32(a+24,!0),r.getFloat32(a+28,!0),r.getFloat32(a+32,!0)],u=r.getInt32(a+36,!0),f=r.getInt32(a+40,!0),m=r.getInt32(a+44,!0);o.push({mins:c,maxs:l,origin:d,headNode:u,firstFace:f,numFaces:m})}return o}function Hd(t,e){let r=new DataView(t,e.offset,e.length),n=12,i=e.length/n;if(i%1!==0)throw new q("Brush lump has invalid length");let o=[];for(let s=0;s<i;s+=1){let a=s*n;o.push({firstSide:r.getInt32(a,!0),numSides:r.getInt32(a+4,!0),contents:r.getInt32(a+8,!0)})}return o}function Vd(t,e){let r=new DataView(t,e.offset,e.length),n=4,i=e.length/n;if(i%1!==0)throw new q("Brush side lump has invalid length");let o=[];for(let s=0;s<i;s+=1){let a=s*n;o.push({planeIndex:r.getUint16(a,!0),texInfo:r.getInt16(a+2,!0)})}return o}function Gd(t,e,r,n){let i=[],o=[],s=e.length/2,a=r.length/2,c=new DataView(t,e.offset,e.length),l=new DataView(t,r.offset,r.length);for(let d of n){if(d.firstLeafFace+d.numLeafFaces>s)throw new q("Leaf faces reference data past lump bounds");if(d.firstLeafBrush+d.numLeafBrushes>a)throw new q("Leaf brushes reference data past lump bounds");let u=[];for(let m=0;m<d.numLeafFaces;m+=1)u.push(c.getUint16((d.firstLeafFace+m)*2,!0));let f=[];for(let m=0;m<d.numLeafBrushes;m+=1)f.push(l.getUint16((d.firstLeafBrush+m)*2,!0));i.push(u),o.push(f)}return{leafFaces:i,leafBrushes:o}}function Wd(t,e){if(e.length===0)return;if(e.length<4)throw new q("Visibility lump too small");let r=new DataView(t,e.offset,e.length),n=r.getInt32(0,!0),i=4+n*8;if(n<0||i>e.length)throw new q("Visibility lump truncated");let o=4,s=[];for(let a=0;a<n;a+=1){let c=r.getInt32(o,!0),l=r.getInt32(o+4,!0);o+=8;let d=e.offset+c,u=e.offset+l,f=e.offset+e.length;if(c<0||l<0||d>=f||u>=f)throw new q("Visibility offsets out of range");s.push({pvs:Na(t,d,n,e),phs:Na(t,u,n,e)})}return{numClusters:n,clusters:s}}function Na(t,e,r,n){let i=Math.ceil(r/8),o=new Uint8Array(i),s=new Uint8Array(t),a=e,c=0,l=n.offset+n.length;for(;c<i;){if(a>=l)throw new q("Visibility data truncated");let d=s[a++];if(d!==0){o[c++]=d;continue}if(a>=l)throw new q("Visibility run exceeds lump bounds");let u=s[a++];for(let f=0;f<u&&c<i;f+=1)o[c++]=0}return o}function Xd(t,e){return t.map(r=>{if(!(r.lightOffset<0))return{offset:r.lightOffset,length:Math.max(0,e.length-r.lightOffset)}})}function bi(t,e,r){if(t.lightOffset<0||t.lightOffset>=e.byteLength)return;let n=e.byteLength-t.lightOffset,i=Math.min(r?.length??n,n);if(!(i<=0))return e.subarray(t.lightOffset,t.lightOffset+i)}var Kd=844121161,Yd=8,Ua=68,qd=[{x:-.525731,y:0,z:.850651},{x:-.442863,y:.238856,z:.864188},{x:-.295242,y:0,z:.955423},{x:-.309017,y:.5,z:.809017},{x:-.16246,y:.262866,z:.951056},{x:0,y:0,z:1},{x:0,y:.850651,z:.525731},{x:-.147621,y:.716567,z:.681718},{x:.147621,y:.716567,z:.681718},{x:0,y:.525731,z:.850651},{x:.309017,y:.5,z:.809017},{x:.525731,y:0,z:.850651},{x:.295242,y:0,z:.955423},{x:.442863,y:.238856,z:.864188},{x:.16246,y:.262866,z:.951056},{x:-.681718,y:.147621,z:.716567},{x:-.809017,y:.309017,z:.5},{x:-.587785,y:.425325,z:.688191},{x:-.850651,y:.525731,z:0},{x:-.864188,y:.442863,z:.238856},{x:-.716567,y:.681718,z:.147621},{x:-.688191,y:.587785,z:.425325},{x:-.5,y:.809017,z:.309017},{x:-.238856,y:.864188,z:.442863},{x:-.425325,y:.688191,z:.587785},{x:-.716567,y:.681718,z:-.147621},{x:-.5,y:.809017,z:-.309017},{x:-.525731,y:.850651,z:0},{x:0,y:.850651,z:-.525731},{x:-.238856,y:.864188,z:-.442863},{x:0,y:.955423,z:-.295242},{x:-.262866,y:.951056,z:-.16246},{x:0,y:1,z:0},{x:0,y:.955423,z:.295242},{x:-.262866,y:.951056,z:.16246},{x:.238856,y:.864188,z:.442863},{x:.262866,y:.951056,z:.16246},{x:.5,y:.809017,z:.309017},{x:.238856,y:.864188,z:-.442863},{x:.262866,y:.951056,z:-.16246},{x:.5,y:.809017,z:-.309017},{x:.850651,y:.525731,z:0},{x:.716567,y:.681718,z:.147621},{x:.716567,y:.681718,z:-.147621},{x:.525731,y:.850651,z:0},{x:.425325,y:.688191,z:.587785},{x:.864188,y:.442863,z:.238856},{x:.688191,y:.587785,z:.425325},{x:.809017,y:.309017,z:.5},{x:.681718,y:.147621,z:.716567},{x:.587785,y:.425325,z:.688191},{x:.955423,y:.295242,z:0},{x:1,y:0,z:0},{x:.951056,y:.16246,z:.262866},{x:.850651,y:-.525731,z:0},{x:.955423,y:-.295242,z:0},{x:.864188,y:-.442863,z:.238856},{x:.951056,y:-.16246,z:.262866},{x:.809017,y:-.309017,z:.5},{x:.681718,y:-.147621,z:.716567},{x:.850651,y:0,z:.525731},{x:.864188,y:.442863,z:-.238856},{x:.809017,y:.309017,z:-.5},{x:.951056,y:.16246,z:-.262866},{x:.525731,y:0,z:-.850651},{x:.681718,y:.147621,z:-.716567},{x:.681718,y:-.147621,z:-.716567},{x:.850651,y:0,z:-.525731},{x:.809017,y:-.309017,z:-.5},{x:.864188,y:-.442863,z:-.238856},{x:.951056,y:-.16246,z:-.262866},{x:.147621,y:.716567,z:-.681718},{x:.309017,y:.5,z:-.809017},{x:.425325,y:.688191,z:-.587785},{x:.442863,y:.238856,z:-.864188},{x:.587785,y:.425325,z:-.688191},{x:.688191,y:.587785,z:-.425325},{x:-.147621,y:.716567,z:-.681718},{x:-.309017,y:.5,z:-.809017},{x:0,y:.525731,z:-.850651},{x:-.525731,y:0,z:-.850651},{x:-.442863,y:.238856,z:-.864188},{x:-.295242,y:0,z:-.955423},{x:-.16246,y:.262866,z:-.951056},{x:0,y:0,z:-1},{x:.295242,y:0,z:-.955423},{x:.16246,y:.262866,z:-.951056},{x:-.442863,y:-.238856,z:-.864188},{x:-.309017,y:-.5,z:-.809017},{x:-.16246,y:-.262866,z:-.951056},{x:0,y:-.850651,z:-.525731},{x:-.147621,y:-.716567,z:-.681718},{x:.147621,y:-.716567,z:-.681718},{x:0,y:-.525731,z:-.850651},{x:.309017,y:-.5,z:-.809017},{x:.442863,y:-.238856,z:-.864188},{x:.16246,y:-.262866,z:-.951056},{x:.238856,y:-.864188,z:-.442863},{x:.5,y:-.809017,z:-.309017},{x:.425325,y:-.688191,z:-.587785},{x:.716567,y:-.681718,z:-.147621},{x:.688191,y:-.587785,z:-.425325},{x:.587785,y:-.425325,z:-.688191},{x:0,y:-.955423,z:-.295242},{x:0,y:-1,z:0},{x:.262866,y:-.951056,z:-.16246},{x:0,y:-.850651,z:.525731},{x:0,y:-.955423,z:.295242},{x:.238856,y:-.864188,z:.442863},{x:.262866,y:-.951056,z:.16246},{x:.5,y:-.809017,z:.309017},{x:.716567,y:-.681718,z:.147621},{x:.525731,y:-.850651,z:0},{x:-.238856,y:-.864188,z:-.442863},{x:-.5,y:-.809017,z:-.309017},{x:-.262866,y:-.951056,z:-.16246},{x:-.850651,y:-.525731,z:0},{x:-.716567,y:-.681718,z:-.147621},{x:-.716567,y:-.681718,z:.147621},{x:-.525731,y:-.850651,z:0},{x:-.5,y:-.809017,z:.309017},{x:-.238856,y:-.864188,z:.442863},{x:-.262866,y:-.951056,z:.16246},{x:-.864188,y:-.442863,z:.238856},{x:-.809017,y:-.309017,z:.5},{x:-.688191,y:-.587785,z:.425325},{x:-.681718,y:-.147621,z:.716567},{x:-.442863,y:-.238856,z:.864188},{x:-.587785,y:-.425325,z:.688191},{x:-.309017,y:-.5,z:.809017},{x:-.147621,y:-.716567,z:.681718},{x:-.425325,y:-.688191,z:.587785},{x:-.16246,y:-.262866,z:.951056},{x:.442863,y:-.238856,z:.864188},{x:.16246,y:-.262866,z:.951056},{x:.309017,y:-.5,z:.809017},{x:.147621,y:-.716567,z:.681718},{x:0,y:-.525731,z:.850651},{x:.425325,y:-.688191,z:.587785},{x:.587785,y:-.425325,z:.688191},{x:.688191,y:-.587785,z:.425325},{x:-.955423,y:.295242,z:0},{x:-.951056,y:.16246,z:.262866},{x:-1,y:0,z:0},{x:-.850651,y:0,z:.525731},{x:-.955423,y:-.295242,z:0},{x:-.951056,y:-.16246,z:.262866},{x:-.864188,y:.442863,z:-.238856},{x:-.951056,y:.16246,z:-.262866},{x:-.809017,y:.309017,z:-.5},{x:-.864188,y:-.442863,z:-.238856},{x:-.951056,y:-.16246,z:-.262866},{x:-.809017,y:-.309017,z:-.5},{x:-.681718,y:.147621,z:-.716567},{x:-.681718,y:-.147621,z:-.716567},{x:-.850651,y:0,z:-.525731},{x:-.688191,y:.587785,z:-.425325},{x:-.587785,y:.425325,z:-.688191},{x:-.425325,y:.688191,z:-.587785},{x:-.425325,y:-.688191,z:-.587785},{x:-.587785,y:-.425325,z:-.688191},{x:-.688191,y:-.587785,z:-.425325}],le=class extends Error{},mr=class{constructor(e){this.vfs=e;this.cache=new Map}async load(e){if(this.cache.has(e))return this.cache.get(e);let r=await this.vfs.readFile(e),n=new Uint8Array(r.byteLength);n.set(r);let i=ls(n.buffer);return this.cache.set(e,i),i}get(e){return this.cache.get(e)}};function Ha(t,e,r){let n=[];for(let i=0;i<r;i+=1){let o=t.getUint8(e+i);if(o===0)break;n.push(o)}return String.fromCharCode(...n)}function $r(t,e,r,n){if(r!==0&&(e<Ua||e+r>t.byteLength))throw new le(`${n} section is out of bounds`)}function $d(t){if(t.byteLength<Ua)throw new le("MD2 buffer too small to contain header");let e=new DataView(t),r=e.getInt32(0,!0),n=e.getInt32(4,!0);if(r!==Kd)throw new le(`Invalid MD2 ident: ${r}`);if(n!==Yd)throw new le(`Unsupported MD2 version: ${n}`);let i={ident:r,version:n,skinWidth:e.getInt32(8,!0),skinHeight:e.getInt32(12,!0),frameSize:e.getInt32(16,!0),numSkins:e.getInt32(20,!0),numVertices:e.getInt32(24,!0),numTexCoords:e.getInt32(28,!0),numTriangles:e.getInt32(32,!0),numGlCommands:e.getInt32(36,!0),numFrames:e.getInt32(40,!0),offsetSkins:e.getInt32(44,!0),offsetTexCoords:e.getInt32(48,!0),offsetTriangles:e.getInt32(52,!0),offsetFrames:e.getInt32(56,!0),offsetGlCommands:e.getInt32(60,!0),offsetEnd:e.getInt32(64,!0),magic:r},o=40+i.numVertices*4;if(i.frameSize!==o)throw new le(`Unexpected frame size ${i.frameSize}, expected ${o}`);if(i.offsetEnd>t.byteLength)throw new le("MD2 offset_end exceeds buffer length");return i}function jd(t,e){let r=e.numSkins*64;$r(t,e.offsetSkins,r,"skins");let n=new DataView(t,e.offsetSkins,r),i=[];for(let o=0;o<e.numSkins;o+=1)i.push({name:Ha(n,o*64,64)});return i}function Qd(t,e){let r=e.numTexCoords*4;$r(t,e.offsetTexCoords,r,"texcoords");let n=new DataView(t,e.offsetTexCoords,r),i=[];for(let o=0;o<e.numTexCoords;o+=1){let s=o*4;i.push({s:n.getInt16(s,!0),t:n.getInt16(s+2,!0)})}return i}function Jd(t,e){let r=e.numTriangles*12;$r(t,e.offsetTriangles,r,"triangles");let n=new DataView(t,e.offsetTriangles,r),i=[];for(let o=0;o<e.numTriangles;o+=1){let s=o*12,a=[n.getUint16(s,!0),n.getUint16(s+2,!0),n.getUint16(s+4,!0)],c=[n.getUint16(s+6,!0),n.getUint16(s+8,!0),n.getUint16(s+10,!0)];if(a.some(l=>l>=e.numVertices)||c.some(l=>l>=e.numTexCoords))throw new le("Triangle references out of range vertex or texcoord");i.push({vertexIndices:a,texCoordIndices:c})}return i}function Zd(t,e){let r=e.numFrames*e.frameSize;$r(t,e.offsetFrames,r,"frames");let n=[];for(let i=0;i<e.numFrames;i+=1){let o=e.offsetFrames+i*e.frameSize,s=new DataView(t,o,e.frameSize),a={x:s.getFloat32(0,!0),y:s.getFloat32(4,!0),z:s.getFloat32(8,!0)},c={x:s.getFloat32(12,!0),y:s.getFloat32(16,!0),z:s.getFloat32(20,!0)},l=Ha(s,24,16),d=[],u=1/0,f=1/0,m=1/0,h=-1/0,y=-1/0,p=-1/0;for(let g=0;g<e.numVertices;g+=1){let S=40+g*4,x=s.getUint8(S)*a.x+c.x,v=s.getUint8(S+1)*a.y+c.y,b=s.getUint8(S+2)*a.z+c.z;x<u&&(u=x),v<f&&(f=v),b<m&&(m=b),x>h&&(h=x),v>y&&(y=v),b>p&&(p=b);let _={x,y:v,z:b},A=s.getUint8(S+3),w=qd[A];if(!w)throw new le(`Invalid normal index ${A} in frame ${l}`);d.push({position:_,normalIndex:A,normal:w})}n.push({name:l,vertices:d,minBounds:{x:u,y:f,z:m},maxBounds:{x:h,y,z:p}})}return n}function e0(t,e){let r=e.numGlCommands*4;if($r(t,e.offsetGlCommands,r,"gl commands"),r===0)return[];let n=new DataView(t,e.offsetGlCommands,r),i=[],o=0;for(;;){if(o+4>r)throw new le("GL command list ended unexpectedly");let s=n.getInt32(o,!0);if(o+=4,s===0)break;let a=Math.abs(s),c=[],l=a*12;if(o+l>r)throw new le("GL command vertex block exceeds buffer");for(let d=0;d<a;d+=1){let u=n.getFloat32(o,!0),f=n.getFloat32(o+4,!0),m=n.getInt32(o+8,!0);if(o+=12,m<0||m>=e.numVertices)throw new le("GL command references invalid vertex index");c.push({s:u,t:f,vertexIndex:m})}i.push({mode:s>0?"strip":"fan",vertices:c})}if(o!==r)throw new le("GL command list did not consume expected data");return i}function ls(t){let e=$d(t),r=jd(t,e),n=Qd(t,e),i=Jd(t,e),o=Zd(t,e),s=e0(t,e);return{header:e,skins:r,texCoords:n,triangles:i,frames:o,glCommands:s}}function Va(t){let e=[],r=0;for(;r<t.length;){let n=t[r].name,i=n.replace(/\d+$/,"")||n,o=r;for(;o+1<t.length&&(t[o+1].name.replace(/\d+$/,"")||t[o+1].name)===i;)o+=1;e.push({name:i,firstFrame:r,lastFrame:o}),r=o+1}return e}var Ga=860898377,t0=15,Te=class extends Error{constructor(e){super(e),this.name="Md3ParseError"}};function jr(t,e,r){let n=new Uint8Array(t.buffer,t.byteOffset+e,r);return new TextDecoder("utf-8").decode(n).replace(/\0.*$/,"").trim()}function r0(t){let e=(t>>8&255)*(2*Math.PI/255),r=(t&255)*(2*Math.PI/255),n=Math.sin(r);return{x:Math.cos(e)*n,y:Math.sin(e)*n,z:Math.cos(r)}}function vi(t,e,r,n){if(e<0||e+r>n)throw new Te(`${t} exceeds buffer bounds`)}function n0(t){let e=t.getInt32(0,!0);if(e!==Ga)throw new Te(`Invalid MD3 ident: ${e}`);let r=t.getInt32(4,!0);if(r!==t0)throw new Te(`Unsupported MD3 version: ${r}`);let n=jr(t,8,64),i=t.getInt32(72,!0),o=t.getInt32(76,!0),s=t.getInt32(80,!0),a=t.getInt32(84,!0),c=t.getInt32(88,!0),l=t.getInt32(92,!0),d=t.getInt32(96,!0),u=t.getInt32(100,!0),f=t.getInt32(104,!0);if(o<=0||a<0||s<0)throw new Te("Invalid MD3 counts");return{ident:e,version:r,name:n,flags:i,numFrames:o,numTags:s,numSurfaces:a,numSkins:c,ofsFrames:l,ofsTags:d,ofsSurfaces:u,ofsEnd:f,magic:e}}function i0(t,e){let r=[];vi("Frames",e.ofsFrames,e.numFrames*56,t.byteLength);for(let i=0;i<e.numFrames;i+=1){let o=e.ofsFrames+i*56;r.push({minBounds:{x:t.getFloat32(o,!0),y:t.getFloat32(o+4,!0),z:t.getFloat32(o+8,!0)},maxBounds:{x:t.getFloat32(o+12,!0),y:t.getFloat32(o+16,!0),z:t.getFloat32(o+20,!0)},localOrigin:{x:t.getFloat32(o+24,!0),y:t.getFloat32(o+28,!0),z:t.getFloat32(o+32,!0)},radius:t.getFloat32(o+36,!0),name:jr(t,o+40,16)})}return r}function o0(t,e){let r=[],i=e.numFrames*e.numTags*112;vi("Tags",e.ofsTags,i,t.byteLength);for(let o=0;o<e.numFrames;o+=1){let s=[];for(let a=0;a<e.numTags;a+=1){let c=e.ofsTags+(o*e.numTags+a)*112,l=c+64,d=l+12;s.push({name:jr(t,c,64),origin:{x:t.getFloat32(l,!0),y:t.getFloat32(l+4,!0),z:t.getFloat32(l+8,!0)},axis:[{x:t.getFloat32(d,!0),y:t.getFloat32(d+4,!0),z:t.getFloat32(d+8,!0)},{x:t.getFloat32(d+12,!0),y:t.getFloat32(d+16,!0),z:t.getFloat32(d+20,!0)},{x:t.getFloat32(d+24,!0),y:t.getFloat32(d+28,!0),z:t.getFloat32(d+32,!0)}]})}r.push(s)}return r}function s0(t,e){let r=t.getInt32(e,!0);if(r!==Ga)throw new Te(`Invalid surface ident at ${e}: ${r}`);let n=jr(t,e+4,64),i=t.getInt32(e+68,!0),o=t.getInt32(e+72,!0),s=t.getInt32(e+76,!0),a=t.getInt32(e+80,!0),c=t.getInt32(e+84,!0),l=t.getInt32(e+88,!0),d=t.getInt32(e+92,!0),u=t.getInt32(e+96,!0),f=t.getInt32(e+100,!0),m=t.getInt32(e+104,!0);if(o<=0||a<=0||c<=0)throw new Te(`Invalid surface counts for ${n}`);let h=m;vi(`Surface ${n}`,e,h,t.byteLength);let y=[],p=e+l;for(let A=0;A<c;A+=1){let w=p+A*12;y.push({indices:[t.getInt32(w,!0),t.getInt32(w+4,!0),t.getInt32(w+8,!0)]})}let g=[],S=e+d;for(let A=0;A<s;A+=1){let w=S+A*68;g.push({name:jr(t,w,64),shaderIndex:t.getInt32(w+64,!0)})}let x=[],v=e+u;for(let A=0;A<a;A+=1){let w=v+A*8;x.push({s:t.getFloat32(w,!0),t:t.getFloat32(w+4,!0)})}let b=[],_=e+f;for(let A=0;A<o;A+=1){let w=[];for(let E=0;E<a;E+=1){let L=_+(A*a+E)*8,B=t.getInt16(L,!0)/64,O=t.getInt16(L+2,!0)/64,U=t.getInt16(L+4,!0)/64,C=t.getUint16(L+6,!0);w.push({position:{x:B,y:O,z:U},latLng:C,normal:r0(C)})}b.push(w)}return{surface:{name:n,flags:i,numFrames:o,shaders:g,triangles:y,texCoords:x,vertices:b},nextOffset:e+m}}function ds(t){if(t.byteLength<108)throw new Te("MD3 buffer too small for header");let e=new DataView(t),r=n0(e);vi("MD3 end",r.ofsEnd,0,t.byteLength);let n=i0(e,r),i=o0(e,r),o=[],s=r.ofsSurfaces;for(let a=0;a<r.numSurfaces;a+=1){let{surface:c,nextOffset:l}=s0(e,s);o.push(c),s=l}if(s!==r.ofsEnd)throw new Te("Surface parsing did not reach ofsEnd");return{header:r,frames:n,tags:i,surfaces:o}}var hr=class{constructor(e){this.vfs=e;this.cache=new Map}async load(e){if(this.cache.has(e))return this.cache.get(e);let r=await this.vfs.readFile(e),n=ds(r.slice().buffer);return this.cache.set(e,n),n}get(e){return this.cache.get(e)}};var a0=844317769,c0=2,Wa=64,Xa=12,yt=class extends Error{};function l0(t,e,r){let n=[];for(let i=0;i<r;i+=1){let o=t.getUint8(e+i);if(o===0)break;n.push(o)}return String.fromCharCode(...n)}function us(t){if(t.byteLength<Xa)throw new yt("Sprite buffer too small to contain header");let e=new DataView(t),r=e.getInt32(0,!0),n=e.getInt32(4,!0),i=e.getInt32(8,!0);if(r!==a0)throw new yt(`Invalid Sprite ident: ${r}`);if(n!==c0)throw new yt(`Unsupported Sprite version: ${n}`);let o=[],s=16+Wa,a=Xa;for(let c=0;c<i;c+=1){if(a+s>t.byteLength)throw new yt("Sprite frame data exceeds buffer length");let l=e.getInt32(a,!0),d=e.getInt32(a+4,!0),u=e.getInt32(a+8,!0),f=e.getInt32(a+12,!0),m=l0(e,a+16,Wa);o.push({width:l,height:d,originX:u,originY:f,name:m}),a+=s}return{ident:r,version:n,numFrames:i,frames:o}}var pr=class{constructor(e){this.vfs=e}async load(e){let r=await this.vfs.readFile(e),n=new Uint8Array(r.byteLength);return n.set(r),us(n.buffer)}};function Ka(t,e){let r=(t.sequence.end-t.sequence.start+1)/t.sequence.fps,n=t.sequence.loop!==!1,i=t.time+e;return n?i=(i%r+r)%r:i>r&&(i=r),{...t,time:Math.max(0,Math.min(i,r))}}function Ya(t){let e=t.sequence.end-t.sequence.start+1,r=1/t.sequence.fps,n=t.sequence.loop!==!1,i=t.time/r;if(!n&&i>=e)return{frame0:t.sequence.end,frame1:t.sequence.end,lerp:0};let o=n?i%e:Math.min(i,e-1),s=Math.floor(o),a=t.sequence.start+s,c=s+1>=e?n?t.sequence.start:t.sequence.end:a+1,l=!n&&s>=e-1?0:o-s;return{frame0:a,frame1:c,lerp:l}}function qa(t){return{sequence:t,time:0}}function $a(t,e,r){return{x:t.x+(e.x-t.x)*r,y:t.y+(e.y-t.y)*r,z:t.z+(e.z-t.z)*r}}var Qr=class extends Error{constructor(e){super(e),this.name="WalParseError"}};function Si(t){if(t.byteLength<100)throw new Qr("WAL buffer too small");let e=new DataView(t),r=new Uint8Array(t,0,32),n=new TextDecoder("utf-8").decode(r).replace(/\0.*$/,"").trim(),i=e.getInt32(32,!0),o=e.getInt32(36,!0),s=[e.getInt32(40,!0),e.getInt32(44,!0),e.getInt32(48,!0),e.getInt32(52,!0)],a=new Uint8Array(t,56,32),c=new TextDecoder("utf-8").decode(a).replace(/\0.*$/,"").trim(),l=e.getInt32(88,!0),d=e.getInt32(92,!0),u=e.getInt32(96,!0);if(i<=0||o<=0)throw new Qr("Invalid WAL dimensions");let f=[],m=i,h=o;for(let y=0;y<s.length;y+=1){let p=s[y],g=Math.max(1,m*h|0);if(p<=0||p+g>t.byteLength)throw new Qr(`Invalid WAL mip offset for level ${y}`);let S=new Uint8Array(t,p,g);f.push({level:y,width:m,height:h,data:S}),m=Math.max(1,m>>1),h=Math.max(1,h>>1)}return{name:n,width:i,height:o,mipmaps:f,animName:c,flags:l,contents:d,value:u}}var Nt=class extends Error{constructor(e){super(e),this.name="PcxParseError"}};function Jr(t){if(t.byteLength<128)throw new Nt("PCX buffer too small for header");let e=new DataView(t),r=e.getUint8(0),n=e.getUint8(2),i=e.getUint8(3),o=e.getUint16(4,!0),s=e.getUint16(6,!0),a=e.getUint16(8,!0),c=e.getUint16(10,!0);if(r!==10||n!==1)throw new Nt("Unsupported PCX encoding");if(i!==8)throw new Nt("Only 8bpp PCX files are supported");let l=a-o+1,d=c-s+1,u=e.getUint16(66,!0),f=t.byteLength-769;if(f<128||new DataView(t,f,1).getUint8(0)!==12)throw new Nt("Missing PCX palette");let m=new Uint8Array(t,f+1,768),h=new Uint8Array(t,128,f-128),y=new Uint8Array(l*d),p=0,g=0;for(let S=0;S<d;S+=1){let x=0;for(;x<u&&p<h.length;){let v=1,b=h[p++];if((b&192)===192){if(v=b&63,p>=h.length)throw new Nt("Unexpected end of PCX RLE data");b=h[p++]}for(let _=0;_<v&&x<u;_+=1)x<l&&(y[g++]=b),x+=1}}return{width:l,height:d,bitsPerPixel:i,pixels:y,palette:m}}function Mi(t){let e=new Uint8Array(t.width*t.height*4);for(let r=0;r<t.pixels.length;r+=1){let n=t.pixels[r],i=n*3,o=r*4;e[o]=t.palette[i],e[o+1]=t.palette[i+1],e[o+2]=t.palette[i+2],e[o+3]=n===255?0:255}return e}var et=class extends Error{constructor(e){super(e),this.name="TgaParseError"}};function fs(t){let e=new DataView(t);if(t.byteLength<18)throw new et("Buffer too small for TGA header");let r=e.getUint8(0),n=e.getUint8(1),i=e.getUint8(2),o=e.getUint16(12,!0),s=e.getUint16(14,!0),a=e.getUint8(16),c=e.getUint8(17);if(i!==2&&i!==10&&i!==3&&i!==11)throw new et(`Unsupported TGA image type: ${i} (only RGB/Grayscale supported)`);if(a!==24&&a!==32&&a!==8)throw new et(`Unsupported pixel depth: ${a} (only 8, 24, 32 bpp supported)`);let l=i>=9,d=i===3||i===11,u=a/8,f=18+r;if(n===1){let x=e.getUint16(5,!0),v=e.getUint8(7);f+=x*(v/8)}let m=o*s,h=new Uint8Array(m*4),y=(c&32)!==0,p=0,g=new Uint8Array(t),S=x=>{if(d){let v=g[f++];h[x]=v,h[x+1]=v,h[x+2]=v,h[x+3]=255}else{let v=g[f++],b=g[f++],_=g[f++],A=a===32?g[f++]:255;h[x]=_,h[x+1]=b,h[x+2]=v,h[x+3]=A}};if(l){let x=0;for(;x<m;){if(f>=t.byteLength)throw new et("Unexpected end of TGA RLE data");let v=g[f++],b=(v&127)+1,_=(v&128)!==0;if(x+b>m)throw new et("TGA RLE packet exceeds image bounds");if(_){let A=d?g[f]:g[f+2],w=d?g[f]:g[f+1],E=g[f],L=d?255:a===32?g[f+3]:255;f+=u;for(let B=0;B<b;B++){let O=(x+B)*4;h[O]=A,h[O+1]=w,h[O+2]=E,h[O+3]=L}}else for(let A=0;A<b;A++)S((x+A)*4);x+=b}}else for(let x=0;x<m;x++){if(f>=t.byteLength)throw new et("Unexpected end of TGA data");S(x*4)}if(!y){let x=o*4,v=new Uint8Array(x);for(let b=0;b<s/2;b++){let _=b*x,A=(s-1-b)*x;v.set(h.subarray(_,_+x)),h.set(h.subarray(A,A+x),_),h.set(v,A)}}return{width:o,height:s,bitsPerPixel:32,pixels:h}}var yr=class{constructor(e={}){this.cache=new pt(e.capacity??128)}get size(){return this.cache.size}get(e){return this.cache.get(e.toLowerCase())}set(e,r){this.cache.set(e.toLowerCase(),r)}clear(){this.cache.clear()}};function ms(t,e){let r=[];for(let n of t.mipmaps){let i=new Uint8Array(n.width*n.height*4);for(let o=0;o<n.data.length;o+=1){let s=n.data[o],a=s*3,c=o*4;i[c]=e[a],i[c+1]=e[a+1],i[c+2]=e[a+2],i[c+3]=s===255?0:255}r.push({level:n.level,width:n.width,height:n.height,rgba:i})}return{width:t.width,height:t.height,levels:r,source:"wal"}}function _i(t){let e=Mi(t),r={level:0,width:t.width,height:t.height,rgba:e};return{width:t.width,height:t.height,levels:[r],source:"pcx"}}function ja(t){let e={level:0,width:t.width,height:t.height,rgba:t.pixels};return{width:t.width,height:t.height,levels:[e],source:"tga"}}function Ai(t,e){return ms(Si(t),e)}var kt=class extends Error{constructor(e){super(e),this.name="WavParseError"}};function hs(t,e,r){return new TextDecoder("ascii").decode(new Uint8Array(t.buffer,t.byteOffset+e,r))}function wi(t){if(t.byteLength<44)throw new kt("WAV buffer too small");let e=new DataView(t);if(hs(e,0,4)!=="RIFF"||hs(e,8,4)!=="WAVE")throw new kt("Invalid WAV header");let r=12,n=-1,i=-1,o=0,s=0;for(;r+8<=t.byteLength;){let h=hs(e,r,4),y=e.getUint32(r+4,!0),p=r+8;h==="fmt "?(n=p,o=y):h==="data"&&(i=p,s=y),r=p+y}if(n===-1||i===-1)throw new kt("Missing fmt or data chunk");let a=e.getUint16(n,!0),c=e.getUint16(n+2,!0),l=e.getUint32(n+4,!0),d=e.getUint16(n+14,!0);if(a!==1)throw new kt("Only PCM WAV is supported");let u=d/8,f=s/(u*c),m=new Float32Array(f*c);for(let h=0;h<f;h+=1)for(let y=0;y<c;y+=1){let p=h*c+y,g=i+p*u,S=0;if(d===8)S=e.getUint8(g),m[p]=(S-128)/128;else if(d===16)S=e.getInt16(g,!0),m[p]=S/32768;else if(d===24){let x=e.getUint8(g),v=e.getUint8(g+1),b=e.getInt8(g+2);S=x|v<<8|b<<16,m[p]=S/8388608}else throw new kt(`Unsupported bitsPerSample: ${d}`)}return{sampleRate:l,channels:c,bitsPerSample:d,samples:m}}var d0=(t,e=4294967295,r=79764919)=>{let n=new Int32Array(256),i,o,s,a=e;for(i=0;i<256;i++){for(s=i<<24,o=8;o>0;--o)s=2147483648&s?s<<1^r:s<<1;n[i]=s}for(i=0;i<t.length;i++)a=a<<8^n[255&(a>>24^t[i])];return a};var ps=(t,e=d0)=>{let r=p=>new Uint8Array(p.length/2).map(((g,S)=>parseInt(p.substring(2*S,2*(S+1)),16))),n=p=>r(p)[0],i=new Map;[,8364,,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,,381,,,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,,382,376].forEach(((p,g)=>i.set(p,g)));let o=new Uint8Array(t.length),s,a,c,l=!1,d=0,u=42,f=t.length>13&&t.substring(0,9)==="dynEncode",m=0;f&&(m=11,a=n(t.substring(9,m)),a<=1&&(m+=2,u=n(t.substring(11,m))),a===1&&(m+=8,c=(p=>new DataView(r(p).buffer).getInt32(0,!0))(t.substring(13,m))));let h=256-u;for(let p=m;p<t.length;p++)if(s=t.charCodeAt(p),s!==61||l){if(s===92&&p<t.length-5&&f){let g=t.charCodeAt(p+1);g!==117&&g!==85||(s=parseInt(t.substring(p+2,p+6),16),p+=5)}if(s>255){let g=i.get(s);g&&(s=g+127)}l&&(l=!1,s-=64),o[d++]=s<u&&s>0?s+h:s-u}else l=!0;let y=o.subarray(0,d);if(f&&a===1){let p=e(y);if(p!==c){let g="Decode failed crc32 validation";throw console.error("`simple-yenc`\n",g+`
2
2
  `,"Expected: "+c+"; Got: "+p+`
3
3
  `,"Visit https://github.com/eshaz/simple-yenc for more information"),Error(g)}}return y};function Z(){let t=Uint8Array,e=Float32Array;Z.modules||Object.defineProperties(Z,{modules:{value:new WeakMap},setModule:{value(r,n){Z.modules.set(r,Promise.resolve(n))}},getModule:{value(r,n){let i=Z.modules.get(r);return i||(n?i=WebAssembly.compile(ps(n)):(n=r.wasm,i=Z.inflateDynEncodeString(n).then(o=>WebAssembly.compile(o))),Z.modules.set(r,i)),i}},concatFloat32:{value(r,n){let i=new e(n),o=0,s=0;for(;o<r.length;)i.set(r[o],s),s+=r[o++].length;return i}},getDecodedAudio:{value:(r,n,i,o,s)=>({errors:r,channelData:n,samplesDecoded:i,sampleRate:o,bitDepth:s})},getDecodedAudioMultiChannel:{value(r,n,i,o,s,a){let c=[],l,d;for(l=0;l<i;l++){let u=[];for(d=0;d<n.length;)u.push(n[d++][l]||[]);c.push(Z.concatFloat32(u,o))}return Z.getDecodedAudio(r,c,o,s,a)}},inflateDynEncodeString:{value(r){return r=ps(r),new Promise(n=>{let i=String.raw`dynEncode012804c7886d(‰›•)((()>+ˆ*§§)§ˆ,§§§§)§ˆ+§§§)§+.-()(*)-+)(ˆ.7*§)i¸¸,3§(i¸¸,3/G+.••—š¡*(,˜ŽŽ(,3‡‡‰˜‡Š‰›+)2å:-œ),§H(P*DI*H(P*@I++hH)H*r,hH(H(P*<J,i)’^*<H,H(P*4’U((I-H(H*i0’J,^*DH+H-H*œšI+H,I*4)33H(H*H)“^*DH(H+H)^*@H+i§H)œi§›™3æ*).§K(iH“I/+§H,iHn,§H+i(H+i(rCJ0I,H*I-+hH,,hH(H-V)(i)œ’J.H.W)(i)’c)(H,i)“I,H-i*’I-4)33i(I.*hH(V)(H+n5(H(i*’I-i(I,i)I.+hH,i*’J+iHn,hi(I-i*I,+hH,H/’H-c)(H,iFn,hi(I,+hH,H0n5-H*V)(J(,hH/H(i)œ’J(H(V)(J(i)’c)(H)H(i)œ’H,c)(3H*i*’I*H,i)’I,4(3(-H(H,’W)(H-’I-H,i*’I,4)3(3(3H,H-’I1H+I,H.i)œH1V)(“J.i(v5(33H.-H(H,’i(c)(H,i*’I,4)333–)-§i*I*+§H*iHn,hiž73H,H(i)8(H+šJ+H)P*(H*’V)(J-“r,§H)P*,H.i)œ’H+H,“i)œ’V)(-H*i*’I*H+i)œI+H-H.’I.H,H-’i)œI,4)333Ã+)-§iø7i(^*(iü7I,*h+hH+iDn,h*hilI+i)I,+hH+,hH+iô7’H,c)(i)H+i´8’W)(œH,’I,H+i*’I+4)-+hH(H)8*J-i(p5.*h*h*hH-i')u,hH(P*(J+,hH(P*0J,H(P*,n50H+H,’H-b((3H(P*0i)’I.4)3H-i¨*n5*H-iÅ*s,hiž73H-i)œJ+V)&+I,H(H+V)æ,8(I.H(H*8*J-i(p51H-i)œJ+i¸7’V)(H(H+iø7’V)(8(’J/H(P*0J+s,hi73H+H,H.’J,’I.H(P*(m5(H.H(P*,s5.+hH,m5*H(P*(J.H+’H.H+H/“’U((b((H(H(P*0i)’J+^*0H,i)“I,4(3(3H(H.^*03H-i¨*o5)33i(73(3(3-H,H+i)žc)(H,i*’I,H+i)’I+4)33i)I-3H-3!2)0§K(i2“J,L(H,H(^*(H,H*^*4H,i(^*0H,i(^*DH,j(_*<H,H)P*(^*,H,H+P*(^*8*h*h+hH,i)8(I3i§I**h*h*h*h*h*h*hH,i*8(6+(),03H,j(_*@i*I-H,P*<J.i,’J(H,P*8J/s50H,H.i+’J0^*<i¦I*H.H,P*4J1’J.U(*H.U((J2›i')o5/H.U()I.H,H(^*<H0H1’U((H.i0œJ.i§›i0ži')™o5/H/H.H2šJ*H(’J.q50H,P*0J/H*’I-H,P*(J0,hH,P*,H-q,hi)I-423+hH*m5+H/H0’H(H1’U((b((H/i)’I/H(i)’I(H*i)“I*4(3(3H,H.^*<H,H-^*04*3iØ1U((5+i(I(i¨7i1^*(i$6iè1^*(i°7iè6^*(i¬7iÈ6^*(+hH(iÈ*n,hiÈ*I(+hH(i¨,n,hi¨,I(+hH(iØ,n,hiØ,I(+hH(iè,o,hH,i-’H(’i0c)(H(i*’I(4)33iè1i1H,i-’iÈ*8)Bi(I(+hH(ido,hH,i-’H(’i-c)(H(i*’I(4)33iÈ6iè6H,i-’iF8)BiØ1i)b((41-H,i-’H(’i/c)(H(i*’I(4)3(3(-H,i-’H(’i1c)(H(i*’I(4)3(3(-H,i-’H(’i0c)(H(i*’I(4)3(3(3H,H/^*0H,H(^*<3i(I*4*3H,H,i¸)’^*TH,H,iø-’^*PH,H,iX’^*LH,H,i(’^*HH,i-8(I(H,i-8(I-i¥I*H,i,8(I.H(iErH-iErš5)H(i©*’I1H-i)’I0i(i;H.i,’J(i(H(i(rCJ(“J*H*i;sCI*i¨1I-H(I/+hH/,hH,i-’H-V)(i)œ’H,i+8(c)(H/i)“I/H-i*’I-H*i)’I*4)-H(i)œi¨1’I/+hH(H*o,hH,i-’H/V)(i)œ’i(c)(H/i*’I/H(i)’I(4)33i¤I*H,iø-’H,i¸)’H,i-’i;8)5+H0H1’I2i(I-+hH-H2p,hH,H,iP’8*J*i(p5-H*i7u,hH,i-’H-i)œ’H*c)(H-i)’I-4*3i(I/i+I.i+I(*h*h*hH*i8“6*(*)3H-m,hi£I*403H-i)œH,’W)-I/i*I(4)3i3I.i/I(3H2H,H(8(H.’J(H-’J.p,hi¢I*4.3H,i-’H-i)œ’I*+hH(,hH*H/c)(H*i*’I*H(i)“I(4)-H.I-4+3(3(33H,W)1m,hiŸI*4,3H,iø-’H,i¸)’H,i-’H18)J(,hi¡I*H(i(p5,H1H,V)ú-H,V)ø-’o5,3H,i(’H,iX’H,i-’H1i)œ’H08)J(,hi I*H(i(p5,H0H,V)šH,V)˜’o5,3H,H,iP’H,iH’8+I*4+3(3(3H,i$6i¬78+I*3H*H3šm5(3i)I-H*i(r5)3H)H,P*0^*(H+H,P*<^*(H*I-3H,i2’L(H-33Á)+(i¨03b+(,(-(.(/(0(1(2(3(5(7(9(;(?(C(G(K(S([(c(k({(‹(›(«(Ë(ë( (*)(iø03O)()()()(*(*(*(*(+(+(+(+(,(,(,(,(-(-(-(-(i¨13M8(9(:(((0(/(1(.(2(-(3(,(4(+(5(*(6()(7(T7œ‰šœ‡Ž‰œš›*S7•œ‰Š”U”—Љ”›S0›‘–U œ`;Z.getModule(Z,i).then(o=>WebAssembly.instantiate(o,{})).then(({exports:o})=>{let s=new Map(Object.entries(o)),a=s.get("puff"),c=s.get("memory").buffer,l=new t(c),d=new DataView(c),u=s.get("__heap_base"),f=r.length,m=u;u+=4,d.setInt32(m,f,!0);let h=u;u+=f,l.set(r,h);let y=u;u+=4,d.setInt32(y,l.byteLength-u,!0),a(u,y,h,m),n(l.slice(u,u+d.getInt32(y,!0)))})})}}}),Object.defineProperty(this,"wasm",{enumerable:!0,get:()=>this._wasm}),this.getOutputChannels=(r,n,i)=>{let o=[],s=0;for(;s<n;)o.push(r.slice(s*i,s++*i+i));return o},this.allocateTypedArray=(r,n,i=!0)=>{let o=this._wasm.malloc(n.BYTES_PER_ELEMENT*r);return i&&this._pointers.add(o),{ptr:o,len:r,buf:new n(this._wasm.HEAP,o,r)}},this.free=()=>{this._pointers.forEach(r=>{this._wasm.free(r)}),this._pointers.clear()},this.codeToString=r=>{let n=[],i=new Uint8Array(this._wasm.HEAP);for(let o=i[r];o!==0;o=i[++r])n.push(o);return String.fromCharCode.apply(null,n)},this.addError=(r,n,i,o,s,a)=>{r.push({message:n,frameLength:i,frameNumber:o,inputBytes:s,outputSamples:a})},this.instantiate=(r,n)=>(n&&Z.setModule(r,n),this._wasm=new r(Z).instantiate(),this._pointers=new Set,this._wasm.ready.then(()=>this))}var Za=Ll(Ja(),1);var u0=()=>globalThis.Worker||Za.default,gr=class extends u0(){constructor(e,r,n,i){Z.modules||new Z;let o=Z.modules.get(n);if(!o){let s="text/javascript",a,c=`'use strict';(${((l,d,u)=>{let f,m,h=new Promise(y=>{m=y});self.onmessage=({data:{id:y,command:p,data:g}})=>{let S=h,x={id:y},v;p==="init"?(Object.defineProperties(l,{WASMAudioDecoderCommon:{value:d},EmscriptenWASM:{value:u},module:{value:g.module},isWebWorker:{value:!0}}),f=new l(g.options),m()):p==="free"?f.free():p==="ready"?S=S.then(()=>f.ready):p==="reset"?S=S.then(()=>f.reset()):(Object.assign(x,f[p](Array.isArray(g)?g.map(b=>new Uint8Array(b)):new Uint8Array(g))),v=x.channelData?x.channelData.map(b=>b.buffer):[]),S.then(()=>self.postMessage(x,v))}}).toString()})(${n}, ${Z}, ${i})`;try{a=typeof process.versions.node<"u"}catch{}o=a?`data:${s};base64,${Buffer.from(c).toString("base64")}`:URL.createObjectURL(new Blob([c],{type:s})),Z.modules.set(n,o)}super(o,{name:r}),this._id=Number.MIN_SAFE_INTEGER,this._enqueuedOperations=new Map,this.onmessage=({data:s})=>{let{id:a,...c}=s;this._enqueuedOperations.get(a)(c),this._enqueuedOperations.delete(a)},new i(Z).getModule().then(s=>{this.postToDecoder("init",{module:s,options:e})})}async postToDecoder(e,r){return new Promise(n=>{this.postMessage({command:e,id:this._id,data:r}),this._enqueuedOperations.set(this._id++,n)})}get ready(){return this.postToDecoder("ready")}async free(){await this.postToDecoder("free").finally(()=>{this.terminate()})}async reset(){await this.postToDecoder("reset")}};var Li=(t,e)=>{Object.defineProperty(t,"name",{value:e})};var ee=Symbol,ec=", ",T=(()=>{let t="front",e="side",r="rear",n="left",i="center",o="right";return["",t+" ",e+" ",r+" "].map(s=>[[n,o],[n,o,i],[n,i,o],[i,n,o],[i]].flatMap(a=>a.map(c=>s+c).join(ec)))})(),Ye="LFE",gt="monophonic (mono)",xt="stereo",Zr="surround",te=(t,...e)=>`${[gt,xt,`linear ${Zr}`,"quadraphonic",`5.0 ${Zr}`,`5.1 ${Zr}`,`6.1 ${Zr}`,`7.1 ${Zr}`][t-1]} (${e.join(ec)})`,en=[gt,te(2,T[0][0]),te(3,T[0][2]),te(4,T[1][0],T[3][0]),te(5,T[1][2],T[3][0]),te(6,T[1][2],T[3][0],Ye),te(7,T[1][2],T[2][0],T[3][4],Ye),te(8,T[1][2],T[2][0],T[3][0],Ye)],tc=192e3,rc=176400,Ei=96e3,Ii=88200,nc=64e3,bt=48e3,xr=44100,br=32e3,vr=24e3,Sr=22050,Mr=16e3,Pi=12e3,Ci=11025,_r=8e3,ic=7350,Ve="absoluteGranulePosition",N="bandwidth",me="bitDepth",he="bitrate",tn=he+"Maximum",rn=he+"Minimum",nn=he+"Nominal",qe="buffer",on=qe+"Fullness",Q="codec",pe=Q+"Frames",sn="coupledStreamCount",Ar="crc",an=Ar+"16",cn=Ar+"32",$="data",R="description",$e="duration",wr="emphasis",ln="hasOpusPadding",Le="header",vt="isContinuedPacket",dn="isCopyrighted",St="isFirstPage",un="isHome",Ee="isLastPage",tt="isOriginal",rt="isPrivate",fn="isVbr",_e="layer",M="length",D="mode",nt=D+"Extension",zi="mpeg",it=zi+"Version",mn="numberAACFrames",hn="outputGain",Ut="preSkip",pn="profile",Ri=ee(),ot="protection",ys="rawData",Fe="segments",k="subarray",Mt="version",Ht="vorbis",yn=Ht+"Comments",Lr=Ht+"Setup",Ti="block",gn=Ti+"ingStrategy",Fi=ee(),st=Ti+"Size",_t=Ti+"size0",At=Ti+"size1",xn=ee(),Bi="channel",at=Bi+"MappingFamily",bn=Bi+"MappingTable",ye=Bi+"Mode",vn=ee(),z=Bi+"s",oc="copyright",Sn=oc+"Id",Mn=oc+"IdStart",ct="frame",lt=ct+"Count",Ae=ct+"Length",Di="Number",dt=ct+Di,je=ct+"Padding",F=ct+"Size",sc="Rate",_n="inputSample"+sc,gs="page",Vt=gs+"Checksum",Er=ee(),wt=gs+"SegmentTable",oe=gs+"Sequence"+Di,xs="sample",An=xs+Di,V=xs+sc,Qe=ee(),G=xs+"s",Oi="stream",wn=Oi+"Count",Ln=Oi+"Info",Je=Oi+"Serial"+Di,bs=Oi+"StructureVersion",vs="total",Gt=vs+"BytesOut",Wt=vs+"Duration",Xt=vs+"Samples",W=ee(),Be=ee(),En=ee(),Lt=ee(),Ge=ee(),Ni=ee(),Ss=ee(),Et=ee(),X=ee(),De=ee(),Oe=ee(),Ze=ee(),It=ee(),ki=ee(),We=ee(),Xe=ee(),Ne=ee(),Ui=ee(),ge=Uint8Array,Pt=DataView,K="reserved",xe="bad",Ir="free",In="none",Hi="16bit CRC";var Ms=(t,e,r)=>{for(let n=0;n<t[M];n++){let i=e(n);for(let o=8;o>0;o--)i=r(i);t[n]=i}return t},m0=Ms(new ge(256),t=>t,t=>t&128?7^t<<1:t<<1),re=[Ms(new Uint16Array(256),t=>t<<8,t=>t<<1^(t&32768?32773:0))],ne=[Ms(new Uint32Array(256),t=>t,t=>t>>>1^(t&1)*3988292384)];for(let t=0;t<15;t++){re.push(new Uint16Array(256)),ne.push(new Uint32Array(256));for(let e=0;e<=255;e++)re[t+1][e]=re[0][re[t][e]>>>8]^re[t][e]<<8,ne[t+1][e]=ne[t][e]>>>8^ne[0][ne[t][e]&255]}var cc=t=>{let e=0,r=t[M];for(let n=0;n!==r;n++)e=m0[e^t[n]];return e},lc=t=>{let e=t[M],r=e-16,n=0,i=0;for(;i<=r;)n^=t[i++]<<8|t[i++],n=re[15][n>>8]^re[14][n&255]^re[13][t[i++]]^re[12][t[i++]]^re[11][t[i++]]^re[10][t[i++]]^re[9][t[i++]]^re[8][t[i++]]^re[7][t[i++]]^re[6][t[i++]]^re[5][t[i++]]^re[4][t[i++]]^re[3][t[i++]]^re[2][t[i++]]^re[1][t[i++]]^re[0][t[i++]];for(;i!==e;)n=(n&255)<<8^re[0][n>>8^t[i++]];return n},dc=t=>{let e=t[M],r=e-16,n=0,i=0;for(;i<=r;)n=ne[15][(t[i++]^n)&255]^ne[14][(t[i++]^n>>>8)&255]^ne[13][(t[i++]^n>>>16)&255]^ne[12][t[i++]^n>>>24]^ne[11][t[i++]]^ne[10][t[i++]]^ne[9][t[i++]]^ne[8][t[i++]]^ne[7][t[i++]]^ne[6][t[i++]]^ne[5][t[i++]]^ne[4][t[i++]]^ne[3][t[i++]]^ne[2][t[i++]]^ne[1][t[i++]]^ne[0][t[i++]];for(;i!==e;)n=ne[0][(n^t[i++])&255]^n>>>8;return n^-1},Cn=(...t)=>{let e=new ge(t.reduce((r,n)=>r+n[M],0));return t.reduce((r,n)=>(e.set(n,r),r+n[M]),0),e},Ie=t=>String.fromCharCode(...t),ac=[0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15],Pn=t=>ac[t&15]<<4|ac[t>>4],Vi=class{constructor(e){this._data=e,this._pos=e[M]*8}set position(e){this._pos=e}get position(){return this._pos}read(e){let r=Math.floor(this._pos/8),n=this._pos%8;return this._pos-=e,(Pn(this._data[r-1])<<8)+Pn(this._data[r])>>7-n&255}},uc=(t,e)=>{try{return t.getBigInt64(e,!0)}catch{let r=t.getUint8(e+7)&128?-1:1,n=t.getUint32(e,!0),i=t.getUint32(e+4,!0);return r===-1&&(n=~n+1,i=~i+1),i>1048575&&console.warn("This platform does not support BigInt"),r*(n+i*2**32)}};var zn=class{constructor(e,r){this._onCodecHeader=e,this._onCodecUpdate=r,this[We]()}[Xe](){this._isEnabled=!0}[We](){this._headerCache=new Map,this._codecUpdateData=new WeakMap,this._codecHeaderSent=!1,this._codecShouldUpdate=!1,this._bitrate=null,this._isEnabled=!1}[ki](e,r){if(this._onCodecUpdate){this._bitrate!==e&&(this._bitrate=e,this._codecShouldUpdate=!0);let n=this._codecUpdateData.get(this._headerCache.get(this._currentHeader));this._codecShouldUpdate&&n&&this._onCodecUpdate({bitrate:e,...n},r),this._codecShouldUpdate=!1}}[X](e){let r=this._headerCache.get(e);return r&&this._updateCurrentHeader(e),r}[De](e,r,n){this._isEnabled&&(this._codecHeaderSent||(this._onCodecHeader({...r}),this._codecHeaderSent=!0),this._updateCurrentHeader(e),this._headerCache.set(e,r),this._codecUpdateData.set(r,n))}_updateCurrentHeader(e){this._onCodecUpdate&&e!==this._currentHeader&&(this._codecShouldUpdate=!0,this._currentHeader=e)}};var ce=new WeakMap,de=new WeakMap;var be=class{constructor(e,r){this._codecParser=e,this._headerCache=r}*[Ss](){let e;do{if(e=yield*this.Frame[Oe](this._codecParser,this._headerCache,0),e)return e;this._codecParser[Be](1)}while(!0)}*[Et](e){let r=yield*this[Ss](),n=de.get(r)[M];if(e||this._codecParser._flushing||(yield*this.Header[X](this._codecParser,this._headerCache,n)))return this._headerCache[Xe](),this._codecParser[Be](n),this._codecParser[Lt](r),r;this._codecParser[Ge](`Missing ${ct} at ${n} bytes from current position.`,`Dropping current ${ct} and trying again.`),this._headerCache[We](),this._codecParser[Be](1)}};var Kt=class{constructor(e,r){de.set(this,{[Le]:e}),this[$]=r}};var Pe=class extends Kt{static*[Oe](e,r,n,i,o){let s=yield*e[X](n,i,o);if(s){let a=ce.get(s)[Ae],c=ce.get(s)[G],l=(yield*n[W](a,o))[k](0,a);return new r(s,l,c)}else return null}constructor(e,r,n){super(e,r),this[Le]=e,this[G]=n,this[$e]=n/e[V]*1e3,this[dt]=null,this[Gt]=null,this[Xt]=null,this[Wt]=null,de.get(this)[M]=r[M]}};var _s="unsynchronizationFlag",As="extendedHeaderFlag",ws="experimentalFlag",Ls="footerPresent",Rn=class t{static*getID3v2Header(e,r,n){let o={},s=yield*e[W](3,n);if(s[0]!==73||s[1]!==68||s[2]!==51||(s=yield*e[W](10,n),o[Mt]=`id3v2.${s[3]}.${s[4]}`,s[5]&15)||(o[_s]=!!(s[5]&128),o[As]=!!(s[5]&64),o[ws]=!!(s[5]&32),o[Ls]=!!(s[5]&16),s[6]&128||s[7]&128||s[8]&128||s[9]&128))return null;let a=s[6]<<21|s[7]<<14|s[8]<<7|s[9];return o[M]=10+a,new t(o)}constructor(e){this[Mt]=e[Mt],this[_s]=e[_s],this[As]=e[As],this[ws]=e[ws],this[Ls]=e[Ls],this[M]=e[M]}};var Ce=class{constructor(e){ce.set(this,e),this[me]=e[me],this[he]=null,this[z]=e[z],this[ye]=e[ye],this[V]=e[V]}};var yc={0:[Ir,Ir,Ir,Ir,Ir],16:[32,32,32,32,8],240:[xe,xe,xe,xe,xe]},Gi=(t,e,r)=>8*((t+r)%e+e)*(1<<(t+r)/e)-8*e*(e/8|0);for(let t=2;t<15;t++)yc[t<<4]=[t*32,Gi(t,4,0),Gi(t,4,-1),Gi(t,8,4),Gi(t,8,0)];var h0=0,p0=1,y0=2,g0=3,fc=4,Wi="bands ",Xi=" to 31",mc={0:Wi+4+Xi,16:Wi+8+Xi,32:Wi+12+Xi,48:Wi+16+Xi},Yt="bitrateIndex",Tn="v2",ji="v1",Ki="Intensity stereo ",Yi=", MS stereo ",qi="on",$i="off",x0={0:Ki+$i+Yi+$i,16:Ki+qi+Yi+$i,32:Ki+$i+Yi+qi,48:Ki+qi+Yi+qi},Es={0:{[R]:K},2:{[R]:"Layer III",[je]:1,[nt]:x0,[ji]:{[Yt]:y0,[G]:1152},[Tn]:{[Yt]:fc,[G]:576}},4:{[R]:"Layer II",[je]:1,[nt]:mc,[G]:1152,[ji]:{[Yt]:p0},[Tn]:{[Yt]:fc}},6:{[R]:"Layer I",[je]:4,[nt]:mc,[G]:384,[ji]:{[Yt]:h0},[Tn]:{[Yt]:g0}}},Is="MPEG Version ",hc="ISO/IEC ",b0={0:{[R]:`${Is}2.5 (later extension of MPEG 2)`,[_e]:Tn,[V]:{0:Ci,4:Pi,8:_r,12:K}},8:{[R]:K},16:{[R]:`${Is}2 (${hc}13818-3)`,[_e]:Tn,[V]:{0:Sr,4:vr,8:Mr,12:K}},24:{[R]:`${Is}1 (${hc}11172-3)`,[_e]:ji,[V]:{0:xr,4:bt,8:br,12:K}},length:M},v0={0:Hi,1:In},S0={0:In,1:"50/15 ms",2:K,3:"CCIT J.17"},pc={0:{[z]:2,[R]:xt},64:{[z]:2,[R]:"joint "+xt},128:{[z]:2,[R]:"dual channel"},192:{[z]:1,[R]:gt}},qt=class t extends Ce{static*[X](e,r,n){let i={},o=yield*Rn.getID3v2Header(e,r,n);o&&(yield*e[W](o[M],n),e[Be](o[M]));let s=yield*e[W](4,n),a=Ie(s[k](0,4)),c=r[X](a);if(c)return new t(c);if(s[0]!==255||s[1]<224)return null;let l=b0[s[1]&24];if(l[R]===K)return null;let d=s[1]&6;if(Es[d][R]===K)return null;let u={...Es[d],...Es[d][l[_e]]};if(i[it]=l[R],i[_e]=u[R],i[G]=u[G],i[ot]=v0[s[1]&1],i[M]=4,i[he]=yc[s[2]&240][u[Yt]],i[he]===xe||(i[V]=l[V][s[2]&12],i[V]===K)||(i[je]=s[2]&2&&u[je],i[rt]=!!(s[2]&1),i[Ae]=Math.floor(125*i[he]*i[G]/i[V]+i[je]),!i[Ae]))return null;let f=s[3]&192;if(i[ye]=pc[f][R],i[z]=pc[f][z],i[nt]=u[nt][s[3]&48],i[dn]=!!(s[3]&8),i[tt]=!!(s[3]&4),i[wr]=S0[s[3]&3],i[wr]===K)return null;i[me]=16;{let{length:m,frameLength:h,samples:y,...p}=i;r[De](a,i,p)}return new t(i)}constructor(e){super(e),this[he]=e[he],this[wr]=e[wr],this[je]=e[je],this[dn]=e[dn],this[tt]=e[tt],this[rt]=e[rt],this[_e]=e[_e],this[nt]=e[nt],this[it]=e[it],this[ot]=e[ot]}};var Fn=class t extends Pe{static*[Oe](e,r,n){return yield*super[Oe](qt,t,e,r,n)}constructor(e,r,n){super(e,r,n)}};var Bn=class extends be{constructor(e,r,n){super(e,r),this.Frame=Fn,this.Header=qt,n(this[Q])}get[Q](){return zi}*[Ze](){return yield*this[Et]()}};var M0={0:"MPEG-4",8:"MPEG-2"},_0={0:"valid",2:xe,4:xe,6:xe},A0={0:Hi,1:In},w0={0:"AAC Main",64:"AAC LC (Low Complexity)",128:"AAC SSR (Scalable Sample Rate)",192:"AAC LTP (Long Term Prediction)"},L0={0:Ei,4:Ii,8:nc,12:bt,16:xr,20:br,24:vr,28:Sr,32:Mr,36:Pi,40:Ci,44:_r,48:ic,52:K,56:K,60:"frequency is written explicitly"},gc={0:{[z]:0,[R]:"Defined in AOT Specific Config"},64:{[z]:1,[R]:gt},128:{[z]:2,[R]:te(2,T[0][0])},192:{[z]:3,[R]:te(3,T[1][3])},256:{[z]:4,[R]:te(4,T[1][3],T[3][4])},320:{[z]:5,[R]:te(5,T[1][3],T[3][0])},384:{[z]:6,[R]:te(6,T[1][3],T[3][0],Ye)},448:{[z]:8,[R]:te(8,T[1][3],T[2][0],T[3][0],Ye)}},$t=class t extends Ce{static*[X](e,r,n){let i={},o=yield*e[W](7,n),s=Ie([o[0],o[1],o[2],o[3]&252|o[6]&3]),a=r[X](s);if(a)Object.assign(i,a);else{if(o[0]!==255||o[1]<240||(i[it]=M0[o[1]&8],i[_e]=_0[o[1]&6],i[_e]===xe))return null;let l=o[1]&1;i[ot]=A0[l],i[M]=l?7:9,i[Ri]=o[2]&192,i[Qe]=o[2]&60;let d=o[2]&2;if(i[pn]=w0[i[Ri]],i[V]=L0[i[Qe]],i[V]===K)return null;i[rt]=!!d,i[vn]=(o[2]<<8|o[3])&448,i[ye]=gc[i[vn]][R],i[z]=gc[i[vn]][z],i[tt]=!!(o[3]&32),i[un]=!!(o[3]&8),i[Sn]=!!(o[3]&8),i[Mn]=!!(o[3]&4),i[me]=16,i[G]=1024,i[mn]=o[6]&3;{let{length:u,channelModeBits:f,profileBits:m,sampleRateBits:h,frameLength:y,samples:p,numberAACFrames:g,...S}=i;r[De](s,i,S)}}if(i[Ae]=(o[3]<<11|o[4]<<3|o[5]>>5)&8191,!i[Ae])return null;let c=(o[5]<<6|o[6]>>2)&2047;return i[on]=c===2047?"VBR":c,new t(i)}constructor(e){super(e),this[Sn]=e[Sn],this[Mn]=e[Mn],this[on]=e[on],this[un]=e[un],this[tt]=e[tt],this[rt]=e[rt],this[_e]=e[_e],this[M]=e[M],this[it]=e[it],this[mn]=e[mn],this[pn]=e[pn],this[ot]=e[ot]}get audioSpecificConfig(){let e=ce.get(this),r=e[Ri]+64<<5|e[Qe]<<5|e[vn]>>3,n=new ge(2);return new Pt(n[qe]).setUint16(0,r,!1),n}};var Dn=class t extends Pe{static*[Oe](e,r,n){return yield*super[Oe]($t,t,e,r,n)}constructor(e,r,n){super(e,r,n)}};var On=class extends be{constructor(e,r,n){super(e,r),this.Frame=Dn,this.Header=$t,n(this[Q])}get[Q](){return"aac"}*[Ze](){return yield*this[Et]()}};var Ct=class t extends Pe{static _getFrameFooterCrc16(e){return(e[e[M]-2]<<8)+e[e[M]-1]}static[Ui](e){let r=t._getFrameFooterCrc16(e),n=lc(e[k](0,-2));return r===n}constructor(e,r,n){r[Ln]=n,r[an]=t._getFrameFooterCrc16(e),super(r,e,ce.get(r)[G])}};var xc="get from STREAMINFO metadata block",E0={0:"Fixed",1:"Variable"},bc={0:K,16:192};for(let t=2;t<16;t++)bc[t<<4]=t<6?576*2**(t-2):2**t;var I0={0:xc,1:Ii,2:rc,3:tc,4:_r,5:Mr,6:Sr,7:vr,8:br,9:xr,10:bt,11:Ei,15:xe},P0={0:{[z]:1,[R]:gt},16:{[z]:2,[R]:te(2,T[0][0])},32:{[z]:3,[R]:te(3,T[0][1])},48:{[z]:4,[R]:te(4,T[1][0],T[3][0])},64:{[z]:5,[R]:te(5,T[1][1],T[3][0])},80:{[z]:6,[R]:te(6,T[1][1],Ye,T[3][0])},96:{[z]:7,[R]:te(7,T[1][1],Ye,T[3][4],T[2][0])},112:{[z]:8,[R]:te(8,T[1][1],Ye,T[3][0],T[2][0])},128:{[z]:2,[R]:`${xt} (left, diff)`},144:{[z]:2,[R]:`${xt} (diff, right)`},160:{[z]:2,[R]:`${xt} (avg, diff)`},176:K,192:K,208:K,224:K,240:K},C0={0:xc,2:8,4:12,6:K,8:16,10:20,12:24,14:K},zt=class t extends Ce{static _decodeUTF8Int(e){if(e[0]>254)return null;if(e[0]<128)return{value:e[0],length:1};let r=1;for(let s=64;s&e[0];s>>=1)r++;let n=r-1,i=0,o=0;for(;n>0;o+=6,n--){if((e[n]&192)!==128)return null;i|=(e[n]&63)<<o}return i|=(e[n]&127>>r)<<o,{value:i,length:r}}static[Ne](e,r){let n={[W]:function*(){return e}};return t[X](n,r,0).next().value}static*[X](e,r,n){let i=yield*e[W](6,n);if(i[0]!==255||!(i[1]===248||i[1]===249))return null;let o={},s=Ie(i[k](0,4)),a=r[X](s);if(a)Object.assign(o,a);else{if(o[Fi]=i[1]&1,o[gn]=E0[o[Fi]],o[xn]=i[2]&240,o[Qe]=i[2]&15,o[st]=bc[o[xn]],o[st]===K||(o[V]=I0[o[Qe]],o[V]===xe)||i[3]&1)return null;let l=P0[i[3]&240];if(l===K||(o[z]=l[z],o[ye]=l[R],o[me]=C0[i[3]&14],o[me]===K))return null}o[M]=5,i=yield*e[W](o[M]+8,n);let c=t._decodeUTF8Int(i[k](4));if(!c||(o[Fi]?o[An]=c.value:o[dt]=c.value,o[M]+=c[M],o[xn]===96?(i[M]<o[M]&&(i=yield*e[W](o[M],n)),o[st]=i[o[M]-1]+1,o[M]+=1):o[xn]===112&&(i[M]<o[M]&&(i=yield*e[W](o[M],n)),o[st]=(i[o[M]-1]<<8)+i[o[M]]+1,o[M]+=2),o[G]=o[st],o[Qe]===12?(i[M]<o[M]&&(i=yield*e[W](o[M],n)),o[V]=i[o[M]-1]*1e3,o[M]+=1):o[Qe]===13?(i[M]<o[M]&&(i=yield*e[W](o[M],n)),o[V]=(i[o[M]-1]<<8)+i[o[M]],o[M]+=2):o[Qe]===14&&(i[M]<o[M]&&(i=yield*e[W](o[M],n)),o[V]=((i[o[M]-1]<<8)+i[o[M]])*10,o[M]+=2),i[M]<o[M]&&(i=yield*e[W](o[M],n)),o[Ar]=i[o[M]-1],o[Ar]!==cc(i[k](0,o[M]-1))))return null;if(!a){let{blockingStrategyBits:l,frameNumber:d,sampleNumber:u,samples:f,sampleRateBits:m,blockSizeBits:h,crc:y,length:p,...g}=o;r[De](s,o,g)}return new t(o)}constructor(e){super(e),this[an]=null,this[gn]=e[gn],this[st]=e[st],this[dt]=e[dt],this[An]=e[An],this[Ln]=null}};var z0=2,R0=512*1024,jt=class extends be{constructor(e,r,n){super(e,r),this.Frame=Ct,this.Header=zt,n(this[Q])}get[Q](){return"flac"}*_getNextFrameSyncOffset(e){let r=yield*this._codecParser[W](2,0),n=r[M]-2;for(;e<n;){if(r[e]===255){let o=r[e+1];if(o===248||o===249)break;o!==255&&e++}e++}return e}*[Ze](){do{let e=yield*zt[X](this._codecParser,this._headerCache,0);if(e){let r=ce.get(e)[M]+z0;for(;r<=R0;){if(this._codecParser._flushing||(yield*zt[X](this._codecParser,this._headerCache,r))){let n=yield*this._codecParser[W](r);if(this._codecParser._flushing||(n=n[k](0,r)),Ct[Ui](n)){let i=new Ct(n,e);return this._headerCache[Xe](),this._codecParser[Be](r),this._codecParser[Lt](i),i}}r=yield*this._getNextFrameSyncOffset(r+1)}this._codecParser[Ge](`Unable to sync FLAC frame after searching ${r} bytes.`),this._codecParser[Be](r)}else this._codecParser[Be](yield*this._getNextFrameSyncOffset(1))}while(!0)}[It](e){return e[oe]===0?(this._headerCache[Xe](),this._streamInfo=e[$][k](13)):e[oe]===1||(e[pe]=de.get(e)[Fe].map(r=>{let n=zt[Ne](r,this._headerCache);if(n)return new Ct(r,n,this._streamInfo);this._codecParser[Ge]("Failed to parse Ogg FLAC frame","Skipping invalid FLAC frame")}).filter(r=>!!r)),e}};var Qt=class t{static*[X](e,r,n){let i={},o=yield*e[W](28,n);if(o[0]!==79||o[1]!==103||o[2]!==103||o[3]!==83||(i[bs]=o[4],o[5]&248))return null;i[Ee]=!!(o[5]&4),i[St]=!!(o[5]&2),i[vt]=!!(o[5]&1);let a=new Pt(ge.from(o[k](0,28))[qe]);i[Ve]=uc(a,6),i[Je]=a.getInt32(14,!0),i[oe]=a.getInt32(18,!0),i[Vt]=a.getInt32(22,!0);let c=o[26];i[M]=c+27,o=yield*e[W](i[M],n),i[Ae]=0,i[wt]=[],i[Er]=ge.from(o[k](27,i[M]));for(let l=0,d=0;l<c;l++){let u=i[Er][l];i[Ae]+=u,d+=u,(u!==255||l===c-1)&&(i[wt].push(d),d=0)}return new t(i)}constructor(e){ce.set(this,e),this[Ve]=e[Ve],this[vt]=e[vt],this[St]=e[St],this[Ee]=e[Ee],this[wt]=e[wt],this[oe]=e[oe],this[Vt]=e[Vt],this[Je]=e[Je]}};var Nn=class t extends Kt{static*[Oe](e,r,n){let i=yield*Qt[X](e,r,n);if(i){let o=ce.get(i)[Ae],s=ce.get(i)[M],a=s+o,c=(yield*e[W](a,0))[k](0,a),l=c[k](s,a);return new t(i,l,c)}else return null}constructor(e,r,n){super(e,r),de.get(this)[M]=n[M],this[pe]=[],this[ys]=n,this[Ve]=e[Ve],this[cn]=e[Vt],this[$e]=0,this[vt]=e[vt],this[St]=e[St],this[Ee]=e[Ee],this[oe]=e[oe],this[G]=0,this[Je]=e[Je]}};var Pr=class extends Pe{constructor(e,r,n){super(r,e,n)}};var vc={0:en.slice(0,2),1:en},ke="SILK-only",ue="CELT-only",Qi="Hybrid",Rt="narrowband",Ji="medium-band",Tt="wideband",Cr="super-wideband",zr="fullband",T0={0:{[D]:ke,[N]:Rt,[F]:10},8:{[D]:ke,[N]:Rt,[F]:20},16:{[D]:ke,[N]:Rt,[F]:40},24:{[D]:ke,[N]:Rt,[F]:60},32:{[D]:ke,[N]:Ji,[F]:10},40:{[D]:ke,[N]:Ji,[F]:20},48:{[D]:ke,[N]:Ji,[F]:40},56:{[D]:ke,[N]:Ji,[F]:60},64:{[D]:ke,[N]:Tt,[F]:10},72:{[D]:ke,[N]:Tt,[F]:20},80:{[D]:ke,[N]:Tt,[F]:40},88:{[D]:ke,[N]:Tt,[F]:60},96:{[D]:Qi,[N]:Cr,[F]:10},104:{[D]:Qi,[N]:Cr,[F]:20},112:{[D]:Qi,[N]:zr,[F]:10},120:{[D]:Qi,[N]:zr,[F]:20},128:{[D]:ue,[N]:Rt,[F]:2.5},136:{[D]:ue,[N]:Rt,[F]:5},144:{[D]:ue,[N]:Rt,[F]:10},152:{[D]:ue,[N]:Rt,[F]:20},160:{[D]:ue,[N]:Tt,[F]:2.5},168:{[D]:ue,[N]:Tt,[F]:5},176:{[D]:ue,[N]:Tt,[F]:10},184:{[D]:ue,[N]:Tt,[F]:20},192:{[D]:ue,[N]:Cr,[F]:2.5},200:{[D]:ue,[N]:Cr,[F]:5},208:{[D]:ue,[N]:Cr,[F]:10},216:{[D]:ue,[N]:Cr,[F]:20},224:{[D]:ue,[N]:zr,[F]:2.5},232:{[D]:ue,[N]:zr,[F]:5},240:{[D]:ue,[N]:zr,[F]:10},248:{[D]:ue,[N]:zr,[F]:20}},Rr=class t extends Ce{static[Ne](e,r,n){let i={};if(i[z]=e[9],i[at]=e[18],i[M]=i[at]!==0?21+i[z]:19,e[M]<i[M])throw new Error("Out of data while inside an Ogg Page");let o=r[0]&3,s=o===3?2:1,a=Ie(e[k](0,i[M]))+Ie(r[k](0,s)),c=n[X](a);if(c)return new t(c);if(a.substr(0,8)!=="OpusHead"||e[8]!==1)return null;i[$]=ge.from(e[k](0,i[M]));let l=new Pt(i[$][qe]);if(i[me]=16,i[Ut]=l.getUint16(10,!0),i[_n]=l.getUint32(12,!0),i[V]=bt,i[hn]=l.getInt16(16,!0),i[at]in vc&&(i[ye]=vc[i[at]][i[z]-1],!i[ye]))return null;i[at]!==0&&(i[wn]=e[19],i[sn]=e[20],i[bn]=[...e[k](21,i[z]+21)]);let d=T0[248&r[0]];switch(i[D]=d[D],i[N]=d[N],i[F]=d[F],o){case 0:i[lt]=1;break;case 1:case 2:i[lt]=2;break;case 3:i[fn]=!!(128&r[1]),i[ln]=!!(64&r[1]),i[lt]=63&r[1];break;default:return null}{let{length:u,data:f,channelMappingFamily:m,...h}=i;n[De](a,i,h)}return new t(i)}constructor(e){super(e),this[$]=e[$],this[N]=e[N],this[at]=e[at],this[bn]=e[bn],this[sn]=e[sn],this[lt]=e[lt],this[F]=e[F],this[ln]=e[ln],this[_n]=e[_n],this[fn]=e[fn],this[D]=e[D],this[hn]=e[hn],this[Ut]=e[Ut],this[wn]=e[wn]}};var kn=class extends be{constructor(e,r,n){super(e,r),this.Frame=Pr,this.Header=Rr,n(this[Q]),this._identificationHeader=null,this._preSkipRemaining=null}get[Q](){return"opus"}[It](e){return e[oe]===0?(this._headerCache[Xe](),this._identificationHeader=e[$]):e[oe]===1||(e[pe]=de.get(e)[Fe].map(r=>{let n=Rr[Ne](this._identificationHeader,r,this._headerCache);if(n){this._preSkipRemaining===null&&(this._preSkipRemaining=n[Ut]);let i=n[F]*n[lt]/1e3*n[V];return this._preSkipRemaining>0&&(this._preSkipRemaining-=i,i=this._preSkipRemaining<0?-this._preSkipRemaining:0),new Pr(r,n,i)}this._codecParser[Ni]("Failed to parse Ogg Opus Header","Not a valid Ogg Opus file")})),e}};var Tr=class extends Pe{constructor(e,r,n){super(r,e,n)}};var Ps={};for(let t=0;t<8;t++)Ps[t+6]=2**(6+t);var Un=class t extends Ce{static[Ne](e,r,n,i){if(e[M]<30)throw new Error("Out of data while inside an Ogg Page");let o=Ie(e[k](0,30)),s=r[X](o);if(s)return new t(s);let a={[M]:30};if(o.substr(0,7)!=="vorbis")return null;a[$]=ge.from(e[k](0,30));let c=new Pt(a[$][qe]);if(a[Mt]=c.getUint32(7,!0),a[Mt]!==0||(a[z]=e[11],a[ye]=en[a[z]-1]||"application defined",a[V]=c.getUint32(12,!0),a[tn]=c.getInt32(16,!0),a[nn]=c.getInt32(20,!0),a[rn]=c.getInt32(24,!0),a[At]=Ps[(e[28]&240)>>4],a[_t]=Ps[e[28]&15],a[_t]>a[At])||e[29]!==1)return null;a[me]=32,a[Lr]=i,a[yn]=n;{let{length:l,data:d,version:u,vorbisSetup:f,vorbisComments:m,...h}=a;r[De](o,a,h)}return new t(a)}constructor(e){super(e),this[tn]=e[tn],this[rn]=e[rn],this[nn]=e[nn],this[_t]=e[_t],this[At]=e[At],this[$]=e[$],this[yn]=e[yn],this[Lr]=e[Lr]}};var Hn=class extends be{constructor(e,r,n){super(e,r),this.Frame=Tr,n(this[Q]),this._identificationHeader=null,this._setupComplete=!1,this._prevBlockSize=null}get[Q](){return Ht}[It](e){e[pe]=[];for(let r of de.get(e)[Fe])if(r[0]===1)this._headerCache[Xe](),this._identificationHeader=e[$],this._setupComplete=!1;else if(r[0]===3)this._vorbisComments=r;else if(r[0]===5)this._vorbisSetup=r,this._mode=this._parseSetupHeader(r),this._setupComplete=!0;else if(this._setupComplete){let n=Un[Ne](this._identificationHeader,this._headerCache,this._vorbisComments,this._vorbisSetup);n?e[pe].push(new Tr(r,n,this._getSamples(r,n))):this._codecParser[logError]("Failed to parse Ogg Vorbis Header","Not a valid Ogg Vorbis file")}return e}_getSamples(e,r){let i=this._mode.blockFlags[e[0]>>1&this._mode.mask]?r[At]:r[_t],o=this._prevBlockSize===null?0:(this._prevBlockSize+i)/4;return this._prevBlockSize=i,o}_parseSetupHeader(e){let r=new Vi(e),n={count:0,blockFlags:[]};for(;(r.read(1)&1)!==1;);let i;for(;n.count<64&&r.position>0;){Pn(r.read(8));let o=0;for(;r.read(8)===0&&o++<3;);if(o===4)i=r.read(7),n.blockFlags.unshift(i&1),r.position+=6,n.count++;else{((Pn(i)&126)>>1)+1!==n.count&&this._codecParser[Ge]("vorbis derived mode count did not match actual mode count");break}}return n.mask=(1<<Math.log2(n.count))-1,n}};var Cs=class{constructor(e,r,n){this._codecParser=e,this._headerCache=r,this._onCodec=n,this._continuedPacket=new ge,this._codec=null,this._isSupported=null,this._previousAbsoluteGranulePosition=null}get[Q](){return this._codec||""}_updateCodec(e,r){this._codec!==e&&(this._headerCache[We](),this._parser=new r(this._codecParser,this._headerCache,this._onCodec),this._codec=e)}_checkCodecSupport({data:e}){let r=Ie(e[k](0,8));switch(r){case"fishead\0":return!1;case"OpusHead":return this._updateCodec("opus",kn),!0;case(/^\x7fFLAC/.test(r)&&r):return this._updateCodec("flac",jt),!0;case(/^\x01vorbis/.test(r)&&r):return this._updateCodec(Ht,Hn),!0;default:return!1}}_checkPageSequenceNumber(e){e[oe]!==this._pageSequenceNumber+1&&this._pageSequenceNumber>1&&e[oe]>1&&this._codecParser[Ge]("Unexpected gap in Ogg Page Sequence Number.",`Expected: ${this._pageSequenceNumber+1}, Got: ${e[oe]}`),this._pageSequenceNumber=e[oe]}_parsePage(e){this._isSupported===null&&(this._pageSequenceNumber=e[oe],this._isSupported=this._checkCodecSupport(e)),this._checkPageSequenceNumber(e);let r=de.get(e),n=ce.get(r[Le]),i=0;if(r[Fe]=n[wt].map(o=>e[$][k](i,i+=o)),this._continuedPacket[M]&&(r[Fe][0]=Cn(this._continuedPacket,r[Fe][0]),this._continuedPacket=new ge),n[Er][n[Er][M]-1]===255&&(this._continuedPacket=Cn(this._continuedPacket,r[Fe].pop())),this._previousAbsoluteGranulePosition!==null&&(e[G]=Number(e[Ve]-this._previousAbsoluteGranulePosition)),this._previousAbsoluteGranulePosition=e[Ve],this._isSupported){let o=this._parser[It](e);return this._codecParser[Lt](o),o}else return e}},Vn=class extends be{constructor(e,r,n){super(e,r),this._onCodec=n,this.Frame=Nn,this.Header=Qt,this._streams=new Map,this._currentSerialNumber=null}get[Q](){let e=this._streams.get(this._currentSerialNumber);return e?e.codec:""}*[Ze](){let e=yield*this[Et](!0);this._currentSerialNumber=e[Je];let r=this._streams.get(this._currentSerialNumber);return r||(r=new Cs(this._codecParser,this._headerCache,this._onCodec),this._streams.set(this._currentSerialNumber,r)),e[Ee]&&this._streams.delete(this._currentSerialNumber),r._parsePage(e)}};var zs=()=>{},Gn=class{constructor(e,{onCodec:r,onCodecHeader:n,onCodecUpdate:i,enableLogging:o=!1,enableFrameCRC32:s=!0}={}){this._inputMimeType=e,this._onCodec=r||zs,this._onCodecHeader=n||zs,this._onCodecUpdate=i,this._enableLogging=o,this._crc32=s?dc:zs,this[We]()}get[Q](){return this._parser?this._parser[Q]:""}[We](){this._headerCache=new zn(this._onCodecHeader,this._onCodecUpdate),this._generator=this._getGenerator(),this._generator.next()}*flush(){this._flushing=!0;for(let e=this._generator.next();e.value;e=this._generator.next())yield e.value;this._flushing=!1,this[We]()}*parseChunk(e){for(let r=this._generator.next(e);r.value;r=this._generator.next())yield r.value}parseAll(e){return[...this.parseChunk(e),...this.flush()]}*_getGenerator(){if(this._inputMimeType.match(/aac/))this._parser=new On(this,this._headerCache,this._onCodec);else if(this._inputMimeType.match(/mpeg/))this._parser=new Bn(this,this._headerCache,this._onCodec);else if(this._inputMimeType.match(/flac/))this._parser=new jt(this,this._headerCache,this._onCodec);else if(this._inputMimeType.match(/ogg/))this._parser=new Vn(this,this._headerCache,this._onCodec);else throw new Error(`Unsupported Codec ${mimeType}`);for(this._frameNumber=0,this._currentReadPosition=0,this._totalBytesIn=0,this._totalBytesOut=0,this._totalSamples=0,this._sampleRate=void 0,this._rawData=new Uint8Array(0);;){let e=yield*this._parser[Ze]();e&&(yield e)}}*[W](e=0,r=0){let n;for(;this._rawData[M]<=e+r;){if(n=yield,this._flushing)return this._rawData[k](r);n&&(this._totalBytesIn+=n[M],this._rawData=Cn(this._rawData,n))}return this._rawData[k](r)}[Be](e){this._currentReadPosition+=e,this._rawData=this._rawData[k](e)}[En](e){this._sampleRate=e[Le][V],e[Le][he]=e[$e]>0?Math.round(e[$][M]/e[$e])*8:0,e[dt]=this._frameNumber++,e[Gt]=this._totalBytesOut,e[Xt]=this._totalSamples,e[Wt]=this._totalSamples/this._sampleRate*1e3,e[cn]=this._crc32(e[$]),this._headerCache[ki](e[Le][he],e[Wt]),this._totalBytesOut+=e[$][M],this._totalSamples+=e[G]}[Lt](e){if(e[pe]){if(e[Ee]){let r=e[G];e[pe].forEach(n=>{let i=n[G];r<i&&(n[G]=r>0?r:0,n[$e]=n[G]/n[Le][V]*1e3),r-=i,this[En](n)})}else e[G]=0,e[pe].forEach(r=>{e[G]+=r[G],this[En](r)});e[$e]=e[G]/this._sampleRate*1e3||0,e[Xt]=this._totalSamples,e[Wt]=this._totalSamples/this._sampleRate*1e3||0,e[Gt]=this._totalBytesOut}else this[En](e)}_log(e,r){if(this._enableLogging){let n=[`${Q}: ${this[Q]}`,`inputMimeType: ${this._inputMimeType}`,`readPosition: ${this._currentReadPosition}`,`totalBytesIn: ${this._totalBytesIn}`,`${Gt}: ${this._totalBytesOut}`],i=Math.max(...n.map(o=>o[M]));r.push(`--stats--${"-".repeat(i-9)}`,...n,"-".repeat(i)),e("codec-parser",r.reduce((o,s)=>o+`
4
4
  `+s,""))}}[Ge](...e){this._log(console.warn,e)}[Ni](...e){this._log(console.error,e)}};var Sc=Gn;var Zi=pe;var eo=$;var Mc=Le;var _c=Ee;var Ac=Lr;var wc=Xt;function ut(t){var e=e;function r(){}e={};function n(P){throw P}var i,o,s,a,c,l,d,u,f,m,h;function y(){var P=h.buffer;i=new Int8Array(P),o=new Int16Array(P),a=new Uint8Array(P),c=new Uint16Array(P),s=new Int32Array(P),l=new Uint32Array(P),d=new Float32Array(P),u=new Float64Array(P),f=new BigInt64Array(P),m=new BigUint64Array(P)}for(var p=P=>{for(var ze,Gr,ir=0,si=0,ai=P.length,ci=new Uint8Array((ai*3>>2)-(P[ai-2]=="=")-(P[ai-1]=="="));ir<ai;ir+=4,si+=3)ze=J[P.charCodeAt(ir+1)],Gr=J[P.charCodeAt(ir+2)],ci[si]=J[P.charCodeAt(ir)]<<2|ze>>4,ci[si+1]=ze<<4|Gr>>2,ci[si+2]=Gr<<6|J[P.charCodeAt(ir+3)];return ci},g=()=>n(""),S=()=>{},x={},v=P=>P(),b=()=>performance.now(),_=(P,ze)=>{if(x[P]&&(clearTimeout(x[P].id),delete x[P]),!ze)return 0;var Gr=setTimeout(()=>{delete x[P],v(()=>pa(P,b()))},ze);return x[P]={id:Gr,timeout_ms:ze},0},A=Math.atan,w=Math.cos,E=Math.exp,L=Math.log,B=Math.pow,O=Math.sin,U=P=>{var ze=a.length;return P>>>=0,!1},C=P=>{throw`exit(${P})`},J=new Uint8Array(123),Me=25;Me>=0;--Me)J[48+Me]=52+Me,J[65+Me]=Me,J[97+Me]=26+Me;J[43]=62,J[47]=63;var Bt={e:g,d:S,f:_,b:A,a:w,i:E,h:L,g:B,c:O,k:U,j:C};function oi(P){Vr=P.n,la=P.o,da=P.p,ua=P.q,fa=P.r,ma=P.s,ha=P.t,pa=P.v}var Vr,la,da,ua,fa,ma,ha,pa;function xl(P){P.m()}ut.wasm||Object.defineProperty(ut,"wasm",{get:()=>String.raw`dynEncode012091253f87dì%nä= 4&¿nÝØä‘ÂLÚªã9ÚØ[äº\ ¼¡³R=}L]ŸÈÿ2 ÿù¶J1jj¡é,zäV|i¸Qk¹‡=