quake2ts 0.0.292 → 0.0.294
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/client/dist/browser/index.global.js +13 -13
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs +31 -11
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js +31 -11
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/browser/index.global.js +7 -7
- package/packages/engine/dist/browser/index.global.js.map +1 -1
- package/packages/engine/dist/cjs/index.cjs +31 -11
- package/packages/engine/dist/cjs/index.cjs.map +1 -1
- package/packages/engine/dist/esm/index.js +31 -11
- package/packages/engine/dist/esm/index.js.map +1 -1
- package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/types/demo/playback.d.ts +5 -0
- package/packages/engine/dist/types/demo/playback.d.ts.map +1 -1
- package/packages/game/dist/browser/index.global.js +4 -4
- package/packages/game/dist/browser/index.global.js.map +1 -1
- package/packages/game/dist/cjs/index.cjs +113 -28
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +113 -28
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/entities/gibs.d.ts +2 -0
- package/packages/game/dist/types/entities/gibs.d.ts.map +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Quake2Client=(()=>{var Es=Object.defineProperty;var fg=Object.getOwnPropertyDescriptor;var _g=Object.getOwnPropertyNames;var gg=Object.prototype.hasOwnProperty;var ks=(e,t)=>{for(var n in t)Es(e,n,{get:t[n],enumerable:!0})},vg=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of _g(t))!gg.call(e,r)&&r!==n&&Es(e,r,{get:()=>t[r],enumerable:!(i=fg(t,r))||i.enumerable});return e};var pg=e=>vg(Es({},"__esModule",{value:!0}),e);var OI={};ks(OI,{ClientConfigStrings:()=>ui,ClientMode:()=>lg,ClientPrediction:()=>ca,InputAction:()=>ws,InputBindings:()=>wn,InputCommandBuffer:()=>As,InputController:()=>li,ViewEffects:()=>oa,createClient:()=>zI,createDefaultBindings:()=>ug,interpolatePredictionState:()=>un,normalizeCommand:()=>Ar,normalizeInputCode:()=>Zu});var de=1e-6,Ye=typeof Float32Array<"u"?Float32Array:Array,bs=Math.random;function Er(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var CI=Math.PI/180,PI=180/Math.PI;var me={};ks(me,{add:()=>iv,adjoint:()=>xg,clone:()=>wg,copy:()=>Ag,create:()=>yg,decompose:()=>Vg,determinant:()=>Tg,equals:()=>ov,exactEquals:()=>sv,frob:()=>nv,fromQuat:()=>$g,fromQuat2:()=>Bg,fromRotation:()=>Pg,fromRotationTranslation:()=>tl,fromRotationTranslationScale:()=>Wg,fromRotationTranslationScaleOrigin:()=>Kg,fromScaling:()=>Cg,fromTranslation:()=>Ig,fromValues:()=>Sg,fromXRotation:()=>Dg,fromYRotation:()=>Fg,fromZRotation:()=>Ug,frustum:()=>Xg,getRotation:()=>Hg,getScaling:()=>nl,getTranslation:()=>Gg,identity:()=>Qu,invert:()=>bg,lookAt:()=>Qg,mul:()=>cv,multiply:()=>el,multiplyScalar:()=>rv,multiplyScalarAndAdd:()=>av,ortho:()=>jg,orthoNO:()=>rl,orthoZO:()=>Jg,perspective:()=>Yg,perspectiveFromFieldOfView:()=>Zg,perspectiveNO:()=>il,perspectiveZO:()=>qg,rotate:()=>Lg,rotateX:()=>Ng,rotateY:()=>zg,rotateZ:()=>Og,scale:()=>Rg,set:()=>Eg,str:()=>tv,sub:()=>uv,subtract:()=>al,targetTo:()=>ev,translate:()=>Mg,transpose:()=>kg});function yg(){var e=new Ye(16);return Ye!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function wg(e){var t=new Ye(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Ag(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Sg(e,t,n,i,r,a,s,o,u,c,l,m,d,f,g,p){var v=new Ye(16);return v[0]=e,v[1]=t,v[2]=n,v[3]=i,v[4]=r,v[5]=a,v[6]=s,v[7]=o,v[8]=u,v[9]=c,v[10]=l,v[11]=m,v[12]=d,v[13]=f,v[14]=g,v[15]=p,v}function Eg(e,t,n,i,r,a,s,o,u,c,l,m,d,f,g,p,v){return e[0]=t,e[1]=n,e[2]=i,e[3]=r,e[4]=a,e[5]=s,e[6]=o,e[7]=u,e[8]=c,e[9]=l,e[10]=m,e[11]=d,e[12]=f,e[13]=g,e[14]=p,e[15]=v,e}function Qu(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function kg(e,t){if(e===t){var n=t[1],i=t[2],r=t[3],a=t[6],s=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[6]=t[9],e[7]=t[13],e[8]=i,e[9]=a,e[11]=t[14],e[12]=r,e[13]=s,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function bg(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],u=t[6],c=t[7],l=t[8],m=t[9],d=t[10],f=t[11],g=t[12],p=t[13],v=t[14],w=t[15],L=n*o-i*s,E=n*u-r*s,y=n*c-a*s,k=i*u-r*o,x=i*c-a*o,T=r*c-a*u,O=l*p-m*g,b=l*v-d*g,S=l*w-f*g,N=m*v-d*p,j=m*w-f*p,ce=d*w-f*v,Q=L*ce-E*j+y*N+k*S-x*b+T*O;return Q?(Q=1/Q,e[0]=(o*ce-u*j+c*N)*Q,e[1]=(r*j-i*ce-a*N)*Q,e[2]=(p*T-v*x+w*k)*Q,e[3]=(d*x-m*T-f*k)*Q,e[4]=(u*S-s*ce-c*b)*Q,e[5]=(n*ce-r*S+a*b)*Q,e[6]=(v*y-g*T-w*E)*Q,e[7]=(l*T-d*y+f*E)*Q,e[8]=(s*j-o*S+c*O)*Q,e[9]=(i*S-n*j-a*O)*Q,e[10]=(g*x-p*y+w*L)*Q,e[11]=(m*y-l*x-f*L)*Q,e[12]=(o*b-s*N-u*O)*Q,e[13]=(n*N-i*b+r*O)*Q,e[14]=(p*E-g*k-v*L)*Q,e[15]=(l*k-m*E+d*L)*Q,e):null}function xg(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],u=t[6],c=t[7],l=t[8],m=t[9],d=t[10],f=t[11],g=t[12],p=t[13],v=t[14],w=t[15],L=n*o-i*s,E=n*u-r*s,y=n*c-a*s,k=i*u-r*o,x=i*c-a*o,T=r*c-a*u,O=l*p-m*g,b=l*v-d*g,S=l*w-f*g,N=m*v-d*p,j=m*w-f*p,ce=d*w-f*v;return e[0]=o*ce-u*j+c*N,e[1]=r*j-i*ce-a*N,e[2]=p*T-v*x+w*k,e[3]=d*x-m*T-f*k,e[4]=u*S-s*ce-c*b,e[5]=n*ce-r*S+a*b,e[6]=v*y-g*T-w*E,e[7]=l*T-d*y+f*E,e[8]=s*j-o*S+c*O,e[9]=i*S-n*j-a*O,e[10]=g*x-p*y+w*L,e[11]=m*y-l*x-f*L,e[12]=o*b-s*N-u*O,e[13]=n*N-i*b+r*O,e[14]=p*E-g*k-v*L,e[15]=l*k-m*E+d*L,e}function Tg(e){var t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],u=e[7],c=e[8],l=e[9],m=e[10],d=e[11],f=e[12],g=e[13],p=e[14],v=e[15],w=t*s-n*a,L=t*o-i*a,E=n*o-i*s,y=c*g-l*f,k=c*p-m*f,x=l*p-m*g,T=t*x-n*k+i*y,O=a*x-s*k+o*y,b=c*E-l*L+m*w,S=f*E-g*L+p*w;return u*T-r*O+v*b-d*S}function el(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=t[4],u=t[5],c=t[6],l=t[7],m=t[8],d=t[9],f=t[10],g=t[11],p=t[12],v=t[13],w=t[14],L=t[15],E=n[0],y=n[1],k=n[2],x=n[3];return e[0]=E*i+y*o+k*m+x*p,e[1]=E*r+y*u+k*d+x*v,e[2]=E*a+y*c+k*f+x*w,e[3]=E*s+y*l+k*g+x*L,E=n[4],y=n[5],k=n[6],x=n[7],e[4]=E*i+y*o+k*m+x*p,e[5]=E*r+y*u+k*d+x*v,e[6]=E*a+y*c+k*f+x*w,e[7]=E*s+y*l+k*g+x*L,E=n[8],y=n[9],k=n[10],x=n[11],e[8]=E*i+y*o+k*m+x*p,e[9]=E*r+y*u+k*d+x*v,e[10]=E*a+y*c+k*f+x*w,e[11]=E*s+y*l+k*g+x*L,E=n[12],y=n[13],k=n[14],x=n[15],e[12]=E*i+y*o+k*m+x*p,e[13]=E*r+y*u+k*d+x*v,e[14]=E*a+y*c+k*f+x*w,e[15]=E*s+y*l+k*g+x*L,e}function Mg(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,u,c,l,m,d,f,g,p,v,w;return t===e?(e[12]=t[0]*i+t[4]*r+t[8]*a+t[12],e[13]=t[1]*i+t[5]*r+t[9]*a+t[13],e[14]=t[2]*i+t[6]*r+t[10]*a+t[14],e[15]=t[3]*i+t[7]*r+t[11]*a+t[15]):(s=t[0],o=t[1],u=t[2],c=t[3],l=t[4],m=t[5],d=t[6],f=t[7],g=t[8],p=t[9],v=t[10],w=t[11],e[0]=s,e[1]=o,e[2]=u,e[3]=c,e[4]=l,e[5]=m,e[6]=d,e[7]=f,e[8]=g,e[9]=p,e[10]=v,e[11]=w,e[12]=s*i+l*r+g*a+t[12],e[13]=o*i+m*r+p*a+t[13],e[14]=u*i+d*r+v*a+t[14],e[15]=c*i+f*r+w*a+t[15]),e}function Rg(e,t,n){var i=n[0],r=n[1],a=n[2];return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Lg(e,t,n,i){var r=i[0],a=i[1],s=i[2],o=Math.sqrt(r*r+a*a+s*s),u,c,l,m,d,f,g,p,v,w,L,E,y,k,x,T,O,b,S,N,j,ce,Q,M;return o<de?null:(o=1/o,r*=o,a*=o,s*=o,u=Math.sin(n),c=Math.cos(n),l=1-c,m=t[0],d=t[1],f=t[2],g=t[3],p=t[4],v=t[5],w=t[6],L=t[7],E=t[8],y=t[9],k=t[10],x=t[11],T=r*r*l+c,O=a*r*l+s*u,b=s*r*l-a*u,S=r*a*l-s*u,N=a*a*l+c,j=s*a*l+r*u,ce=r*s*l+a*u,Q=a*s*l-r*u,M=s*s*l+c,e[0]=m*T+p*O+E*b,e[1]=d*T+v*O+y*b,e[2]=f*T+w*O+k*b,e[3]=g*T+L*O+x*b,e[4]=m*S+p*N+E*j,e[5]=d*S+v*N+y*j,e[6]=f*S+w*N+k*j,e[7]=g*S+L*N+x*j,e[8]=m*ce+p*Q+E*M,e[9]=d*ce+v*Q+y*M,e[10]=f*ce+w*Q+k*M,e[11]=g*ce+L*Q+x*M,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Ng(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[4],s=t[5],o=t[6],u=t[7],c=t[8],l=t[9],m=t[10],d=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*r+c*i,e[5]=s*r+l*i,e[6]=o*r+m*i,e[7]=u*r+d*i,e[8]=c*r-a*i,e[9]=l*r-s*i,e[10]=m*r-o*i,e[11]=d*r-u*i,e}function zg(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],u=t[3],c=t[8],l=t[9],m=t[10],d=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r-c*i,e[1]=s*r-l*i,e[2]=o*r-m*i,e[3]=u*r-d*i,e[8]=a*i+c*r,e[9]=s*i+l*r,e[10]=o*i+m*r,e[11]=u*i+d*r,e}function Og(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],u=t[3],c=t[4],l=t[5],m=t[6],d=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r+c*i,e[1]=s*r+l*i,e[2]=o*r+m*i,e[3]=u*r+d*i,e[4]=c*r-a*i,e[5]=l*r-s*i,e[6]=m*r-o*i,e[7]=d*r-u*i,e}function Ig(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function Cg(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Pg(e,t,n){var i=n[0],r=n[1],a=n[2],s=Math.sqrt(i*i+r*r+a*a),o,u,c;return s<de?null:(s=1/s,i*=s,r*=s,a*=s,o=Math.sin(t),u=Math.cos(t),c=1-u,e[0]=i*i*c+u,e[1]=r*i*c+a*o,e[2]=a*i*c-r*o,e[3]=0,e[4]=i*r*c-a*o,e[5]=r*r*c+u,e[6]=a*r*c+i*o,e[7]=0,e[8]=i*a*c+r*o,e[9]=r*a*c-i*o,e[10]=a*a*c+u,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function Dg(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Fg(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=0,e[2]=-n,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=n,e[9]=0,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Ug(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=i,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function tl(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=i+i,u=r+r,c=a+a,l=i*o,m=i*u,d=i*c,f=r*u,g=r*c,p=a*c,v=s*o,w=s*u,L=s*c;return e[0]=1-(f+p),e[1]=m+L,e[2]=d-w,e[3]=0,e[4]=m-L,e[5]=1-(l+p),e[6]=g+v,e[7]=0,e[8]=d+w,e[9]=g-v,e[10]=1-(l+f),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Bg(e,t){var n=new Ye(3),i=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],u=t[5],c=t[6],l=t[7],m=i*i+r*r+a*a+s*s;return m>0?(n[0]=(o*s+l*i+u*a-c*r)*2/m,n[1]=(u*s+l*r+c*i-o*a)*2/m,n[2]=(c*s+l*a+o*r-u*i)*2/m):(n[0]=(o*s+l*i+u*a-c*r)*2,n[1]=(u*s+l*r+c*i-o*a)*2,n[2]=(c*s+l*a+o*r-u*i)*2),tl(e,t,n),e}function Gg(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function nl(e,t){var n=t[0],i=t[1],r=t[2],a=t[4],s=t[5],o=t[6],u=t[8],c=t[9],l=t[10];return e[0]=Math.sqrt(n*n+i*i+r*r),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(u*u+c*c+l*l),e}function Hg(e,t){var n=new Ye(3);nl(n,t);var i=1/n[0],r=1/n[1],a=1/n[2],s=t[0]*i,o=t[1]*r,u=t[2]*a,c=t[4]*i,l=t[5]*r,m=t[6]*a,d=t[8]*i,f=t[9]*r,g=t[10]*a,p=s+l+g,v=0;return p>0?(v=Math.sqrt(p+1)*2,e[3]=.25*v,e[0]=(m-f)/v,e[1]=(d-u)/v,e[2]=(o-c)/v):s>l&&s>g?(v=Math.sqrt(1+s-l-g)*2,e[3]=(m-f)/v,e[0]=.25*v,e[1]=(o+c)/v,e[2]=(d+u)/v):l>g?(v=Math.sqrt(1+l-s-g)*2,e[3]=(d-u)/v,e[0]=(o+c)/v,e[1]=.25*v,e[2]=(m+f)/v):(v=Math.sqrt(1+g-s-l)*2,e[3]=(o-c)/v,e[0]=(d+u)/v,e[1]=(m+f)/v,e[2]=.25*v),e}function Vg(e,t,n,i){t[0]=i[12],t[1]=i[13],t[2]=i[14];var r=i[0],a=i[1],s=i[2],o=i[4],u=i[5],c=i[6],l=i[8],m=i[9],d=i[10];n[0]=Math.sqrt(r*r+a*a+s*s),n[1]=Math.sqrt(o*o+u*u+c*c),n[2]=Math.sqrt(l*l+m*m+d*d);var f=1/n[0],g=1/n[1],p=1/n[2],v=r*f,w=a*g,L=s*p,E=o*f,y=u*g,k=c*p,x=l*f,T=m*g,O=d*p,b=v+y+O,S=0;return b>0?(S=Math.sqrt(b+1)*2,e[3]=.25*S,e[0]=(k-T)/S,e[1]=(x-L)/S,e[2]=(w-E)/S):v>y&&v>O?(S=Math.sqrt(1+v-y-O)*2,e[3]=(k-T)/S,e[0]=.25*S,e[1]=(w+E)/S,e[2]=(x+L)/S):y>O?(S=Math.sqrt(1+y-v-O)*2,e[3]=(x-L)/S,e[0]=(w+E)/S,e[1]=.25*S,e[2]=(k+T)/S):(S=Math.sqrt(1+O-v-y)*2,e[3]=(w-E)/S,e[0]=(x+L)/S,e[1]=(k+T)/S,e[2]=.25*S),e}function Wg(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=t[3],u=r+r,c=a+a,l=s+s,m=r*u,d=r*c,f=r*l,g=a*c,p=a*l,v=s*l,w=o*u,L=o*c,E=o*l,y=i[0],k=i[1],x=i[2];return e[0]=(1-(g+v))*y,e[1]=(d+E)*y,e[2]=(f-L)*y,e[3]=0,e[4]=(d-E)*k,e[5]=(1-(m+v))*k,e[6]=(p+w)*k,e[7]=0,e[8]=(f+L)*x,e[9]=(p-w)*x,e[10]=(1-(m+g))*x,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Kg(e,t,n,i,r){var a=t[0],s=t[1],o=t[2],u=t[3],c=a+a,l=s+s,m=o+o,d=a*c,f=a*l,g=a*m,p=s*l,v=s*m,w=o*m,L=u*c,E=u*l,y=u*m,k=i[0],x=i[1],T=i[2],O=r[0],b=r[1],S=r[2],N=(1-(p+w))*k,j=(f+y)*k,ce=(g-E)*k,Q=(f-y)*x,M=(1-(d+w))*x,H=(v+L)*x,ee=(g+E)*T,yt=(v-L)*T,xe=(1-(d+p))*T;return e[0]=N,e[1]=j,e[2]=ce,e[3]=0,e[4]=Q,e[5]=M,e[6]=H,e[7]=0,e[8]=ee,e[9]=yt,e[10]=xe,e[11]=0,e[12]=n[0]+O-(N*O+Q*b+ee*S),e[13]=n[1]+b-(j*O+M*b+yt*S),e[14]=n[2]+S-(ce*O+H*b+xe*S),e[15]=1,e}function $g(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=n+n,o=i+i,u=r+r,c=n*s,l=i*s,m=i*o,d=r*s,f=r*o,g=r*u,p=a*s,v=a*o,w=a*u;return e[0]=1-m-g,e[1]=l+w,e[2]=d-v,e[3]=0,e[4]=l-w,e[5]=1-c-g,e[6]=f+p,e[7]=0,e[8]=d+v,e[9]=f-p,e[10]=1-c-m,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Xg(e,t,n,i,r,a,s){var o=1/(n-t),u=1/(r-i),c=1/(a-s);return e[0]=a*2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*u,e[6]=0,e[7]=0,e[8]=(n+t)*o,e[9]=(r+i)*u,e[10]=(s+a)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*c,e[15]=0,e}function il(e,t,n,i,r){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(i-r);e[10]=(r+i)*s,e[14]=2*r*i*s}else e[10]=-1,e[14]=-2*i;return e}var Yg=il;function qg(e,t,n,i,r){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(i-r);e[10]=r*s,e[14]=r*i*s}else e[10]=-1,e[14]=-i;return e}function Zg(e,t,n,i){var r=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),o=Math.tan(t.rightDegrees*Math.PI/180),u=2/(s+o),c=2/(r+a);return e[0]=u,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=-((s-o)*u*.5),e[9]=(r-a)*c*.5,e[10]=i/(n-i),e[11]=-1,e[12]=0,e[13]=0,e[14]=i*n/(n-i),e[15]=0,e}function rl(e,t,n,i,r,a,s){var o=1/(t-n),u=1/(i-r),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*u,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+n)*o,e[13]=(r+i)*u,e[14]=(s+a)*c,e[15]=1,e}var jg=rl;function Jg(e,t,n,i,r,a,s){var o=1/(t-n),u=1/(i-r),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*u,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=c,e[11]=0,e[12]=(t+n)*o,e[13]=(r+i)*u,e[14]=a*c,e[15]=1,e}function Qg(e,t,n,i){var r,a,s,o,u,c,l,m,d,f,g=t[0],p=t[1],v=t[2],w=i[0],L=i[1],E=i[2],y=n[0],k=n[1],x=n[2];return Math.abs(g-y)<de&&Math.abs(p-k)<de&&Math.abs(v-x)<de?Qu(e):(l=g-y,m=p-k,d=v-x,f=1/Math.sqrt(l*l+m*m+d*d),l*=f,m*=f,d*=f,r=L*d-E*m,a=E*l-w*d,s=w*m-L*l,f=Math.sqrt(r*r+a*a+s*s),f?(f=1/f,r*=f,a*=f,s*=f):(r=0,a=0,s=0),o=m*s-d*a,u=d*r-l*s,c=l*a-m*r,f=Math.sqrt(o*o+u*u+c*c),f?(f=1/f,o*=f,u*=f,c*=f):(o=0,u=0,c=0),e[0]=r,e[1]=o,e[2]=l,e[3]=0,e[4]=a,e[5]=u,e[6]=m,e[7]=0,e[8]=s,e[9]=c,e[10]=d,e[11]=0,e[12]=-(r*g+a*p+s*v),e[13]=-(o*g+u*p+c*v),e[14]=-(l*g+m*p+d*v),e[15]=1,e)}function ev(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=i[0],u=i[1],c=i[2],l=r-n[0],m=a-n[1],d=s-n[2],f=l*l+m*m+d*d;f>0&&(f=1/Math.sqrt(f),l*=f,m*=f,d*=f);var g=u*d-c*m,p=c*l-o*d,v=o*m-u*l;return f=g*g+p*p+v*v,f>0&&(f=1/Math.sqrt(f),g*=f,p*=f,v*=f),e[0]=g,e[1]=p,e[2]=v,e[3]=0,e[4]=m*v-d*p,e[5]=d*g-l*v,e[6]=l*p-m*g,e[7]=0,e[8]=l,e[9]=m,e[10]=d,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function tv(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function nv(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function iv(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e[6]=t[6]+n[6],e[7]=t[7]+n[7],e[8]=t[8]+n[8],e[9]=t[9]+n[9],e[10]=t[10]+n[10],e[11]=t[11]+n[11],e[12]=t[12]+n[12],e[13]=t[13]+n[13],e[14]=t[14]+n[14],e[15]=t[15]+n[15],e}function al(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e[6]=t[6]-n[6],e[7]=t[7]-n[7],e[8]=t[8]-n[8],e[9]=t[9]-n[9],e[10]=t[10]-n[10],e[11]=t[11]-n[11],e[12]=t[12]-n[12],e[13]=t[13]-n[13],e[14]=t[14]-n[14],e[15]=t[15]-n[15],e}function rv(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12]*n,e[13]=t[13]*n,e[14]=t[14]*n,e[15]=t[15]*n,e}function av(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e[3]=t[3]+n[3]*i,e[4]=t[4]+n[4]*i,e[5]=t[5]+n[5]*i,e[6]=t[6]+n[6]*i,e[7]=t[7]+n[7]*i,e[8]=t[8]+n[8]*i,e[9]=t[9]+n[9]*i,e[10]=t[10]+n[10]*i,e[11]=t[11]+n[11]*i,e[12]=t[12]+n[12]*i,e[13]=t[13]+n[13]*i,e[14]=t[14]+n[14]*i,e[15]=t[15]+n[15]*i,e}function sv(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function ov(e,t){var n=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],u=e[6],c=e[7],l=e[8],m=e[9],d=e[10],f=e[11],g=e[12],p=e[13],v=e[14],w=e[15],L=t[0],E=t[1],y=t[2],k=t[3],x=t[4],T=t[5],O=t[6],b=t[7],S=t[8],N=t[9],j=t[10],ce=t[11],Q=t[12],M=t[13],H=t[14],ee=t[15];return Math.abs(n-L)<=de*Math.max(1,Math.abs(n),Math.abs(L))&&Math.abs(i-E)<=de*Math.max(1,Math.abs(i),Math.abs(E))&&Math.abs(r-y)<=de*Math.max(1,Math.abs(r),Math.abs(y))&&Math.abs(a-k)<=de*Math.max(1,Math.abs(a),Math.abs(k))&&Math.abs(s-x)<=de*Math.max(1,Math.abs(s),Math.abs(x))&&Math.abs(o-T)<=de*Math.max(1,Math.abs(o),Math.abs(T))&&Math.abs(u-O)<=de*Math.max(1,Math.abs(u),Math.abs(O))&&Math.abs(c-b)<=de*Math.max(1,Math.abs(c),Math.abs(b))&&Math.abs(l-S)<=de*Math.max(1,Math.abs(l),Math.abs(S))&&Math.abs(m-N)<=de*Math.max(1,Math.abs(m),Math.abs(N))&&Math.abs(d-j)<=de*Math.max(1,Math.abs(d),Math.abs(j))&&Math.abs(f-ce)<=de*Math.max(1,Math.abs(f),Math.abs(ce))&&Math.abs(g-Q)<=de*Math.max(1,Math.abs(g),Math.abs(Q))&&Math.abs(p-M)<=de*Math.max(1,Math.abs(p),Math.abs(M))&&Math.abs(v-H)<=de*Math.max(1,Math.abs(v),Math.abs(H))&&Math.abs(w-ee)<=de*Math.max(1,Math.abs(w),Math.abs(ee))}var cv=el,uv=al;var _e={};ks(_e,{add:()=>fv,angle:()=>Dv,bezier:()=>Rv,ceil:()=>_v,clone:()=>lv,copy:()=>mv,create:()=>sl,cross:()=>bv,dist:()=>Kv,distance:()=>dl,div:()=>Wv,divide:()=>ll,dot:()=>xs,equals:()=>Gv,exactEquals:()=>Bv,floor:()=>gv,forEach:()=>qv,fromValues:()=>dv,hermite:()=>Mv,inverse:()=>Ev,len:()=>Xv,length:()=>ol,lerp:()=>xv,max:()=>pv,min:()=>vv,mul:()=>Vv,multiply:()=>ul,negate:()=>Sv,normalize:()=>kv,random:()=>Lv,rotateX:()=>Iv,rotateY:()=>Cv,rotateZ:()=>Pv,round:()=>yv,scale:()=>wv,scaleAndAdd:()=>Av,set:()=>hv,slerp:()=>Tv,sqrDist:()=>$v,sqrLen:()=>Yv,squaredDistance:()=>ml,squaredLength:()=>hl,str:()=>Uv,sub:()=>Hv,subtract:()=>cl,transformMat3:()=>zv,transformMat4:()=>Nv,transformQuat:()=>Ov,zero:()=>Fv});function sl(){var e=new Ye(3);return Ye!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function lv(e){var t=new Ye(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function ol(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function dv(e,t,n){var i=new Ye(3);return i[0]=e,i[1]=t,i[2]=n,i}function mv(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function hv(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function fv(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function cl(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function ul(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function ll(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function _v(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function gv(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function vv(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function pv(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function yv(e,t){return e[0]=Er(t[0]),e[1]=Er(t[1]),e[2]=Er(t[2]),e}function wv(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function Av(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function dl(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function ml(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function hl(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function Sv(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Ev(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function kv(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function xs(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function bv(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],u=n[2];return e[0]=r*u-a*o,e[1]=a*s-i*u,e[2]=i*o-r*s,e}function xv(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function Tv(e,t,n,i){var r=Math.acos(Math.min(Math.max(xs(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function Mv(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,u=s*(a-2)+a,c=s*(a-1),l=s*(3-2*a);return e[0]=t[0]*o+n[0]*u+i[0]*c+r[0]*l,e[1]=t[1]*o+n[1]*u+i[1]*c+r[1]*l,e[2]=t[2]*o+n[2]*u+i[2]*c+r[2]*l,e}function Rv(e,t,n,i,r,a){var s=1-a,o=s*s,u=a*a,c=o*s,l=3*a*o,m=3*u*s,d=u*a;return e[0]=t[0]*c+n[0]*l+i[0]*m+r[0]*d,e[1]=t[1]*c+n[1]*l+i[1]*m+r[1]*d,e[2]=t[2]*c+n[2]*l+i[2]*m+r[2]*d,e}function Lv(e,t){t=t===void 0?1:t;var n=bs()*2*Math.PI,i=bs()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function Nv(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function zv(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function Ov(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],u=t[1],c=t[2],l=r*c-a*u,m=a*o-i*c,d=i*u-r*o;return l=l+l,m=m+m,d=d+d,e[0]=o+s*l+r*d-a*m,e[1]=u+s*m+a*l-i*d,e[2]=c+s*d+i*m-r*l,e}function Iv(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Cv(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Pv(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Dv(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],u=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=u&&xs(e,t)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function Fv(e){return e[0]=0,e[1]=0,e[2]=0,e}function Uv(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function Bv(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function Gv(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=de*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=de*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=de*Math.max(1,Math.abs(r),Math.abs(o))}var Hv=cl,Vv=ul,Wv=ll,Kv=dl,$v=ml,Xv=ol,Yv=hl,qv=(function(){var e=sl();return function(t,n,i,r,a,s){var o,u;for(n||(n=3),i||(i=0),r?u=Math.min(r*n+i,t.length):u=t.length,o=i;o<u;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var Zv=Object.defineProperty,nd=(e,t)=>{for(var n in t)Zv(e,n,{get:t[n],enumerable:!0})};var FI=Math.PI/180;var jv=Math.PI/180,UI=180/Math.PI,di=jv,Vs=[[-.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]];var ut=1,Ft=2;var to=8,no=16,Jv=32;var Qv=16384;var Br=65536,id=1<<17,ep=1<<18,tp=1<<19,np=1<<20,ip=1<<21,rp=1<<22,ap=1<<23,BI=1<<24,Gr=1<<25,sp=1<<26,GI=1<<27,HI=1<<28,VI=1<<29,Hr=1<<30,WI=1<<31;var KI=1<<25,$I=1<<28,XI=1<<29,YI=1<<30,qI=1<<31,ZI=ut|Ft,jI=ut|Br|Ft|Gr|Hr,JI=ut|Br|Ft,QI=ut|id|Ft|Gr|Hr,eC=Jv|to|no,tC=ut|no|to,op=ut|Gr|Hr|Ft|sp,nC=ep|tp|np|ip|rp|ap,iC=ut|to|no|Gr|Hr,rC=ut|Br|Ft,aC=ut|Ft,sC=ut|Br|Ft|id,oC=op|Qv,cC=Number.MAX_SAFE_INTEGER-1;var rd=256,cp=256,up=8192,lp=2048,dp=512,mp=256,hp=rd*2,fp=256,Ts=32;var ad=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.HealthBarName=55]="HealthBarName",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+up]="Sounds",e[e.Images=e.Sounds+lp]="Images",e[e.Lights=e.Images+dp]="Lights",e[e.ShadowLights=e.Lights+cp]="ShadowLights",e[e.Items=e.ShadowLights+fp]="Items",e[e.PlayerSkins=e.Items+mp]="PlayerSkins",e[e.General=e.PlayerSkins+rd]="General",e[e.WheelWeapons=e.General+hp]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Ts]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Ts]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Ts]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ad||{}),uC=ad.MaxConfigStrings;var _p={};nd(_p,{addReplayFrame:()=>yp,createReplaySession:()=>pp,deserializeReplay:()=>vp,serializeReplay:()=>gp});function gp(e){return JSON.stringify(e,null,2)}function vp(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function pp(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function yp(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var J=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(J||{}),B=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(B||{}),wp=12,Ap=9,lC=Math.ceil(wp*Ap/16),Sp=23,Ep=2,dC=Math.ceil(Sp*Ep/16),kp={};nd(kp,{U_ANGLE1:()=>Np,U_ANGLE2:()=>zp,U_ANGLE3:()=>Op,U_EFFECTS:()=>Pp,U_EVENT:()=>Up,U_FRAME:()=>Ip,U_MODEL:()=>xp,U_MODEL2:()=>Gp,U_MODEL3:()=>Hp,U_MODEL4:()=>Vp,U_MOREBITS:()=>Bp,U_NUMBER:()=>bp,U_ORIGIN1:()=>Mp,U_ORIGIN2:()=>Rp,U_ORIGIN3:()=>Lp,U_REMOVE:()=>Wp,U_RENDERFX:()=>Dp,U_SKIN:()=>Cp,U_SOLID:()=>Fp,U_SOUND:()=>Tp});var bp=1,xp=2,Tp=4,Mp=8,Rp=16,Lp=32,Np=64,zp=128,Op=256,Ip=512,Cp=1024,Pp=2048,Dp=4096,Fp=8192,Up=16384,Bp=32768,Gp=1,Hp=2,Vp=4,Wp=32768,Ws=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=Vs[t];e.x=n[0],e.y=n[1],e.z=n[2]}},Kp=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let i=0;i<Vs.length;i++){let r=Vs[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},pi=class ze{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new Kp(ze.MAX_MSGLEN);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=ze.PACKET_HEADER,i=this.reliableLength>0?this.reliableLength+2:0,r=t?t.length:0;n+i+r>ze.MAX_MSGLEN&&(r=ze.MAX_MSGLEN-n-i,r<0&&(r=0));let a=new ArrayBuffer(n+i+r),s=new DataView(a),o=new Uint8Array(a),u=this.outgoingSequence;this.reliableLength>0&&(u|=2147483648,(this.outgoingReliableSequence&1)!==0&&(u|=1073741824)),s.setUint32(0,u,!0);let c=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(c|=2147483648),s.setUint32(4,c,!0),s.setUint16(8,this.qport,!0);let l=n;if(this.reliableLength>0){s.setUint16(l,this.reliableLength,!0),l+=2;let d=this.reliableMessage.getBuffer().subarray(0,this.reliableLength);o.set(d,l),l+=this.reliableLength}if(t&&r>0){let m=t.slice(0,r);o.set(m,l)}return o}process(t){if(t.length<ze.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,u=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let g=u?1:0,p=this.outgoingReliableSequence&1;g!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1)}let c=(i&2147483648)!==0,l=(i&1073741824)!==0?1:0,m=ze.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let g=n.getUint16(m,!0);m+=2;let p=this.incomingReliableSequence&1;if(l===p){if(this.incomingReliableSequence++,m+g>t.byteLength)return null;d=t.slice(m,m+g)}m+=g}let f=t.slice(m);if(d&&d.length>0){let g=d.length+f.length,p=new Uint8Array(g);return p.set(d,0),p.set(f,d.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>ze.MAX_MSGLEN-ze.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>ze.MAX_MSGLEN-ze.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>ze.MAX_MSGLEN-ze.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>ze.MAX_MSGLEN-ze.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}};pi.MAX_MSGLEN=1400;pi.FRAGMENT_SIZE=1024;pi.PACKET_HEADER=10;pi.HEADER_OVERHEAD=pi.PACKET_HEADER+2;var sd=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(sd||{}),mC=Object.keys(sd).length/2;function $p(){let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let i=0;i<8;i+=1)n=(n&1)!==0?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e}var hC=$p();var fC=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"}]);var Xp=19,_C=8+Xp*8;var Ks=4,Ms=7*Ks,gC=[{index:0,size:3,type:5126,stride:Ms,offset:0},{index:1,size:2,type:5126,stride:Ms,offset:3*Ks},{index:2,size:2,type:5126,stride:Ms,offset:5*Ks}];var od=32;var vC=`#version 300 es
|
|
1
|
+
"use strict";var Quake2Client=(()=>{var bs=Object.defineProperty;var pg=Object.getOwnPropertyDescriptor;var yg=Object.getOwnPropertyNames;var wg=Object.prototype.hasOwnProperty;var xs=(e,t)=>{for(var n in t)bs(e,n,{get:t[n],enumerable:!0})},Ag=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of yg(t))!wg.call(e,r)&&r!==n&&bs(e,r,{get:()=>t[r],enumerable:!(i=pg(t,r))||i.enumerable});return e};var Sg=e=>Ag(bs({},"__esModule",{value:!0}),e);var DI={};xs(DI,{ClientConfigStrings:()=>di,ClientMode:()=>fg,ClientPrediction:()=>ua,InputAction:()=>Ss,InputBindings:()=>Sn,InputCommandBuffer:()=>ks,InputController:()=>mi,ViewEffects:()=>la,createClient:()=>PI,createDefaultBindings:()=>hg,interpolatePredictionState:()=>un,normalizeCommand:()=>kr,normalizeInputCode:()=>Jl});var de=1e-6,qe=typeof Float32Array<"u"?Float32Array:Array,Ts=Math.random;function br(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var UI=Math.PI/180,BI=180/Math.PI;var me={};xs(me,{add:()=>ov,adjoint:()=>Lg,clone:()=>Eg,copy:()=>bg,create:()=>kg,decompose:()=>Xg,determinant:()=>Ng,equals:()=>dv,exactEquals:()=>uv,frob:()=>sv,fromQuat:()=>jg,fromQuat2:()=>Wg,fromRotation:()=>Bg,fromRotationTranslation:()=>iu,fromRotationTranslationScale:()=>Yg,fromRotationTranslationScaleOrigin:()=>qg,fromScaling:()=>Ug,fromTranslation:()=>Fg,fromValues:()=>xg,fromXRotation:()=>Gg,fromYRotation:()=>Hg,fromZRotation:()=>Vg,frustum:()=>Zg,getRotation:()=>$g,getScaling:()=>ru,getTranslation:()=>Kg,identity:()=>tu,invert:()=>Rg,lookAt:()=>iv,mul:()=>mv,multiply:()=>nu,multiplyScalar:()=>cv,multiplyScalarAndAdd:()=>lv,ortho:()=>tv,orthoNO:()=>su,orthoZO:()=>nv,perspective:()=>Jg,perspectiveFromFieldOfView:()=>ev,perspectiveNO:()=>au,perspectiveZO:()=>Qg,rotate:()=>Ig,rotateX:()=>Cg,rotateY:()=>Pg,rotateZ:()=>Dg,scale:()=>Og,set:()=>Tg,str:()=>av,sub:()=>hv,subtract:()=>ou,targetTo:()=>rv,translate:()=>zg,transpose:()=>Mg});function kg(){var e=new qe(16);return qe!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Eg(e){var t=new qe(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function bg(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function xg(e,t,n,i,r,a,s,o,l,c,u,m,d,f,g,p){var v=new qe(16);return v[0]=e,v[1]=t,v[2]=n,v[3]=i,v[4]=r,v[5]=a,v[6]=s,v[7]=o,v[8]=l,v[9]=c,v[10]=u,v[11]=m,v[12]=d,v[13]=f,v[14]=g,v[15]=p,v}function Tg(e,t,n,i,r,a,s,o,l,c,u,m,d,f,g,p,v){return e[0]=t,e[1]=n,e[2]=i,e[3]=r,e[4]=a,e[5]=s,e[6]=o,e[7]=l,e[8]=c,e[9]=u,e[10]=m,e[11]=d,e[12]=f,e[13]=g,e[14]=p,e[15]=v,e}function tu(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Mg(e,t){if(e===t){var n=t[1],i=t[2],r=t[3],a=t[6],s=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[6]=t[9],e[7]=t[13],e[8]=i,e[9]=a,e[11]=t[14],e[12]=r,e[13]=s,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function Rg(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],m=t[9],d=t[10],f=t[11],g=t[12],p=t[13],v=t[14],w=t[15],L=n*o-i*s,k=n*l-r*s,y=n*c-a*s,E=i*l-r*o,x=i*c-a*o,T=r*c-a*l,O=u*p-m*g,b=u*v-d*g,S=u*w-f*g,N=m*v-d*p,Z=m*w-f*p,ce=d*w-f*v,Q=L*ce-k*Z+y*N+E*S-x*b+T*O;return Q?(Q=1/Q,e[0]=(o*ce-l*Z+c*N)*Q,e[1]=(r*Z-i*ce-a*N)*Q,e[2]=(p*T-v*x+w*E)*Q,e[3]=(d*x-m*T-f*E)*Q,e[4]=(l*S-s*ce-c*b)*Q,e[5]=(n*ce-r*S+a*b)*Q,e[6]=(v*y-g*T-w*k)*Q,e[7]=(u*T-d*y+f*k)*Q,e[8]=(s*Z-o*S+c*O)*Q,e[9]=(i*S-n*Z-a*O)*Q,e[10]=(g*x-p*y+w*L)*Q,e[11]=(m*y-u*x-f*L)*Q,e[12]=(o*b-s*N-l*O)*Q,e[13]=(n*N-i*b+r*O)*Q,e[14]=(p*k-g*E-v*L)*Q,e[15]=(u*E-m*k+d*L)*Q,e):null}function Lg(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],m=t[9],d=t[10],f=t[11],g=t[12],p=t[13],v=t[14],w=t[15],L=n*o-i*s,k=n*l-r*s,y=n*c-a*s,E=i*l-r*o,x=i*c-a*o,T=r*c-a*l,O=u*p-m*g,b=u*v-d*g,S=u*w-f*g,N=m*v-d*p,Z=m*w-f*p,ce=d*w-f*v;return e[0]=o*ce-l*Z+c*N,e[1]=r*Z-i*ce-a*N,e[2]=p*T-v*x+w*E,e[3]=d*x-m*T-f*E,e[4]=l*S-s*ce-c*b,e[5]=n*ce-r*S+a*b,e[6]=v*y-g*T-w*k,e[7]=u*T-d*y+f*k,e[8]=s*Z-o*S+c*O,e[9]=i*S-n*Z-a*O,e[10]=g*x-p*y+w*L,e[11]=m*y-u*x-f*L,e[12]=o*b-s*N-l*O,e[13]=n*N-i*b+r*O,e[14]=p*k-g*E-v*L,e[15]=u*E-m*k+d*L,e}function Ng(e){var t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],l=e[7],c=e[8],u=e[9],m=e[10],d=e[11],f=e[12],g=e[13],p=e[14],v=e[15],w=t*s-n*a,L=t*o-i*a,k=n*o-i*s,y=c*g-u*f,E=c*p-m*f,x=u*p-m*g,T=t*x-n*E+i*y,O=a*x-s*E+o*y,b=c*k-u*L+m*w,S=f*k-g*L+p*w;return l*T-r*O+v*b-d*S}function nu(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],m=t[8],d=t[9],f=t[10],g=t[11],p=t[12],v=t[13],w=t[14],L=t[15],k=n[0],y=n[1],E=n[2],x=n[3];return e[0]=k*i+y*o+E*m+x*p,e[1]=k*r+y*l+E*d+x*v,e[2]=k*a+y*c+E*f+x*w,e[3]=k*s+y*u+E*g+x*L,k=n[4],y=n[5],E=n[6],x=n[7],e[4]=k*i+y*o+E*m+x*p,e[5]=k*r+y*l+E*d+x*v,e[6]=k*a+y*c+E*f+x*w,e[7]=k*s+y*u+E*g+x*L,k=n[8],y=n[9],E=n[10],x=n[11],e[8]=k*i+y*o+E*m+x*p,e[9]=k*r+y*l+E*d+x*v,e[10]=k*a+y*c+E*f+x*w,e[11]=k*s+y*u+E*g+x*L,k=n[12],y=n[13],E=n[14],x=n[15],e[12]=k*i+y*o+E*m+x*p,e[13]=k*r+y*l+E*d+x*v,e[14]=k*a+y*c+E*f+x*w,e[15]=k*s+y*u+E*g+x*L,e}function zg(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,l,c,u,m,d,f,g,p,v,w;return t===e?(e[12]=t[0]*i+t[4]*r+t[8]*a+t[12],e[13]=t[1]*i+t[5]*r+t[9]*a+t[13],e[14]=t[2]*i+t[6]*r+t[10]*a+t[14],e[15]=t[3]*i+t[7]*r+t[11]*a+t[15]):(s=t[0],o=t[1],l=t[2],c=t[3],u=t[4],m=t[5],d=t[6],f=t[7],g=t[8],p=t[9],v=t[10],w=t[11],e[0]=s,e[1]=o,e[2]=l,e[3]=c,e[4]=u,e[5]=m,e[6]=d,e[7]=f,e[8]=g,e[9]=p,e[10]=v,e[11]=w,e[12]=s*i+u*r+g*a+t[12],e[13]=o*i+m*r+p*a+t[13],e[14]=l*i+d*r+v*a+t[14],e[15]=c*i+f*r+w*a+t[15]),e}function Og(e,t,n){var i=n[0],r=n[1],a=n[2];return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Ig(e,t,n,i){var r=i[0],a=i[1],s=i[2],o=Math.sqrt(r*r+a*a+s*s),l,c,u,m,d,f,g,p,v,w,L,k,y,E,x,T,O,b,S,N,Z,ce,Q,M;return o<de?null:(o=1/o,r*=o,a*=o,s*=o,l=Math.sin(n),c=Math.cos(n),u=1-c,m=t[0],d=t[1],f=t[2],g=t[3],p=t[4],v=t[5],w=t[6],L=t[7],k=t[8],y=t[9],E=t[10],x=t[11],T=r*r*u+c,O=a*r*u+s*l,b=s*r*u-a*l,S=r*a*u-s*l,N=a*a*u+c,Z=s*a*u+r*l,ce=r*s*u+a*l,Q=a*s*u-r*l,M=s*s*u+c,e[0]=m*T+p*O+k*b,e[1]=d*T+v*O+y*b,e[2]=f*T+w*O+E*b,e[3]=g*T+L*O+x*b,e[4]=m*S+p*N+k*Z,e[5]=d*S+v*N+y*Z,e[6]=f*S+w*N+E*Z,e[7]=g*S+L*N+x*Z,e[8]=m*ce+p*Q+k*M,e[9]=d*ce+v*Q+y*M,e[10]=f*ce+w*Q+E*M,e[11]=g*ce+L*Q+x*M,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Cg(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],u=t[9],m=t[10],d=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*r+c*i,e[5]=s*r+u*i,e[6]=o*r+m*i,e[7]=l*r+d*i,e[8]=c*r-a*i,e[9]=u*r-s*i,e[10]=m*r-o*i,e[11]=d*r-l*i,e}function Pg(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[8],u=t[9],m=t[10],d=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r-c*i,e[1]=s*r-u*i,e[2]=o*r-m*i,e[3]=l*r-d*i,e[8]=a*i+c*r,e[9]=s*i+u*r,e[10]=o*i+m*r,e[11]=l*i+d*r,e}function Dg(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[4],u=t[5],m=t[6],d=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*r+c*i,e[1]=s*r+u*i,e[2]=o*r+m*i,e[3]=l*r+d*i,e[4]=c*r-a*i,e[5]=u*r-s*i,e[6]=m*r-o*i,e[7]=d*r-l*i,e}function Fg(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function Ug(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Bg(e,t,n){var i=n[0],r=n[1],a=n[2],s=Math.sqrt(i*i+r*r+a*a),o,l,c;return s<de?null:(s=1/s,i*=s,r*=s,a*=s,o=Math.sin(t),l=Math.cos(t),c=1-l,e[0]=i*i*c+l,e[1]=r*i*c+a*o,e[2]=a*i*c-r*o,e[3]=0,e[4]=i*r*c-a*o,e[5]=r*r*c+l,e[6]=a*r*c+i*o,e[7]=0,e[8]=i*a*c+r*o,e[9]=r*a*c-i*o,e[10]=a*a*c+l,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function Gg(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Hg(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=0,e[2]=-n,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=n,e[9]=0,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Vg(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=i,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function iu(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=i+i,l=r+r,c=a+a,u=i*o,m=i*l,d=i*c,f=r*l,g=r*c,p=a*c,v=s*o,w=s*l,L=s*c;return e[0]=1-(f+p),e[1]=m+L,e[2]=d-w,e[3]=0,e[4]=m-L,e[5]=1-(u+p),e[6]=g+v,e[7]=0,e[8]=d+w,e[9]=g-v,e[10]=1-(u+f),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Wg(e,t){var n=new qe(3),i=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],m=i*i+r*r+a*a+s*s;return m>0?(n[0]=(o*s+u*i+l*a-c*r)*2/m,n[1]=(l*s+u*r+c*i-o*a)*2/m,n[2]=(c*s+u*a+o*r-l*i)*2/m):(n[0]=(o*s+u*i+l*a-c*r)*2,n[1]=(l*s+u*r+c*i-o*a)*2,n[2]=(c*s+u*a+o*r-l*i)*2),iu(e,t,n),e}function Kg(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function ru(e,t){var n=t[0],i=t[1],r=t[2],a=t[4],s=t[5],o=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.sqrt(n*n+i*i+r*r),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(l*l+c*c+u*u),e}function $g(e,t){var n=new qe(3);ru(n,t);var i=1/n[0],r=1/n[1],a=1/n[2],s=t[0]*i,o=t[1]*r,l=t[2]*a,c=t[4]*i,u=t[5]*r,m=t[6]*a,d=t[8]*i,f=t[9]*r,g=t[10]*a,p=s+u+g,v=0;return p>0?(v=Math.sqrt(p+1)*2,e[3]=.25*v,e[0]=(m-f)/v,e[1]=(d-l)/v,e[2]=(o-c)/v):s>u&&s>g?(v=Math.sqrt(1+s-u-g)*2,e[3]=(m-f)/v,e[0]=.25*v,e[1]=(o+c)/v,e[2]=(d+l)/v):u>g?(v=Math.sqrt(1+u-s-g)*2,e[3]=(d-l)/v,e[0]=(o+c)/v,e[1]=.25*v,e[2]=(m+f)/v):(v=Math.sqrt(1+g-s-u)*2,e[3]=(o-c)/v,e[0]=(d+l)/v,e[1]=(m+f)/v,e[2]=.25*v),e}function Xg(e,t,n,i){t[0]=i[12],t[1]=i[13],t[2]=i[14];var r=i[0],a=i[1],s=i[2],o=i[4],l=i[5],c=i[6],u=i[8],m=i[9],d=i[10];n[0]=Math.sqrt(r*r+a*a+s*s),n[1]=Math.sqrt(o*o+l*l+c*c),n[2]=Math.sqrt(u*u+m*m+d*d);var f=1/n[0],g=1/n[1],p=1/n[2],v=r*f,w=a*g,L=s*p,k=o*f,y=l*g,E=c*p,x=u*f,T=m*g,O=d*p,b=v+y+O,S=0;return b>0?(S=Math.sqrt(b+1)*2,e[3]=.25*S,e[0]=(E-T)/S,e[1]=(x-L)/S,e[2]=(w-k)/S):v>y&&v>O?(S=Math.sqrt(1+v-y-O)*2,e[3]=(E-T)/S,e[0]=.25*S,e[1]=(w+k)/S,e[2]=(x+L)/S):y>O?(S=Math.sqrt(1+y-v-O)*2,e[3]=(x-L)/S,e[0]=(w+k)/S,e[1]=.25*S,e[2]=(E+T)/S):(S=Math.sqrt(1+O-v-y)*2,e[3]=(w-k)/S,e[0]=(x+L)/S,e[1]=(E+T)/S,e[2]=.25*S),e}function Yg(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=t[3],l=r+r,c=a+a,u=s+s,m=r*l,d=r*c,f=r*u,g=a*c,p=a*u,v=s*u,w=o*l,L=o*c,k=o*u,y=i[0],E=i[1],x=i[2];return e[0]=(1-(g+v))*y,e[1]=(d+k)*y,e[2]=(f-L)*y,e[3]=0,e[4]=(d-k)*E,e[5]=(1-(m+v))*E,e[6]=(p+w)*E,e[7]=0,e[8]=(f+L)*x,e[9]=(p-w)*x,e[10]=(1-(m+g))*x,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function qg(e,t,n,i,r){var a=t[0],s=t[1],o=t[2],l=t[3],c=a+a,u=s+s,m=o+o,d=a*c,f=a*u,g=a*m,p=s*u,v=s*m,w=o*m,L=l*c,k=l*u,y=l*m,E=i[0],x=i[1],T=i[2],O=r[0],b=r[1],S=r[2],N=(1-(p+w))*E,Z=(f+y)*E,ce=(g-k)*E,Q=(f-y)*x,M=(1-(d+w))*x,H=(v+L)*x,ee=(g+k)*T,yt=(v-L)*T,xe=(1-(d+p))*T;return e[0]=N,e[1]=Z,e[2]=ce,e[3]=0,e[4]=Q,e[5]=M,e[6]=H,e[7]=0,e[8]=ee,e[9]=yt,e[10]=xe,e[11]=0,e[12]=n[0]+O-(N*O+Q*b+ee*S),e[13]=n[1]+b-(Z*O+M*b+yt*S),e[14]=n[2]+S-(ce*O+H*b+xe*S),e[15]=1,e}function jg(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=n+n,o=i+i,l=r+r,c=n*s,u=i*s,m=i*o,d=r*s,f=r*o,g=r*l,p=a*s,v=a*o,w=a*l;return e[0]=1-m-g,e[1]=u+w,e[2]=d-v,e[3]=0,e[4]=u-w,e[5]=1-c-g,e[6]=f+p,e[7]=0,e[8]=d+v,e[9]=f-p,e[10]=1-c-m,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Zg(e,t,n,i,r,a,s){var o=1/(n-t),l=1/(r-i),c=1/(a-s);return e[0]=a*2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*l,e[6]=0,e[7]=0,e[8]=(n+t)*o,e[9]=(r+i)*l,e[10]=(s+a)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*c,e[15]=0,e}function au(e,t,n,i,r){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(i-r);e[10]=(r+i)*s,e[14]=2*r*i*s}else e[10]=-1,e[14]=-2*i;return e}var Jg=au;function Qg(e,t,n,i,r){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){var s=1/(i-r);e[10]=r*s,e[14]=r*i*s}else e[10]=-1,e[14]=-i;return e}function ev(e,t,n,i){var r=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),o=Math.tan(t.rightDegrees*Math.PI/180),l=2/(s+o),c=2/(r+a);return e[0]=l,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=-((s-o)*l*.5),e[9]=(r-a)*c*.5,e[10]=i/(n-i),e[11]=-1,e[12]=0,e[13]=0,e[14]=i*n/(n-i),e[15]=0,e}function su(e,t,n,i,r,a,s){var o=1/(t-n),l=1/(i-r),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+n)*o,e[13]=(r+i)*l,e[14]=(s+a)*c,e[15]=1,e}var tv=su;function nv(e,t,n,i,r,a,s){var o=1/(t-n),l=1/(i-r),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=c,e[11]=0,e[12]=(t+n)*o,e[13]=(r+i)*l,e[14]=a*c,e[15]=1,e}function iv(e,t,n,i){var r,a,s,o,l,c,u,m,d,f,g=t[0],p=t[1],v=t[2],w=i[0],L=i[1],k=i[2],y=n[0],E=n[1],x=n[2];return Math.abs(g-y)<de&&Math.abs(p-E)<de&&Math.abs(v-x)<de?tu(e):(u=g-y,m=p-E,d=v-x,f=1/Math.sqrt(u*u+m*m+d*d),u*=f,m*=f,d*=f,r=L*d-k*m,a=k*u-w*d,s=w*m-L*u,f=Math.sqrt(r*r+a*a+s*s),f?(f=1/f,r*=f,a*=f,s*=f):(r=0,a=0,s=0),o=m*s-d*a,l=d*r-u*s,c=u*a-m*r,f=Math.sqrt(o*o+l*l+c*c),f?(f=1/f,o*=f,l*=f,c*=f):(o=0,l=0,c=0),e[0]=r,e[1]=o,e[2]=u,e[3]=0,e[4]=a,e[5]=l,e[6]=m,e[7]=0,e[8]=s,e[9]=c,e[10]=d,e[11]=0,e[12]=-(r*g+a*p+s*v),e[13]=-(o*g+l*p+c*v),e[14]=-(u*g+m*p+d*v),e[15]=1,e)}function rv(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=i[0],l=i[1],c=i[2],u=r-n[0],m=a-n[1],d=s-n[2],f=u*u+m*m+d*d;f>0&&(f=1/Math.sqrt(f),u*=f,m*=f,d*=f);var g=l*d-c*m,p=c*u-o*d,v=o*m-l*u;return f=g*g+p*p+v*v,f>0&&(f=1/Math.sqrt(f),g*=f,p*=f,v*=f),e[0]=g,e[1]=p,e[2]=v,e[3]=0,e[4]=m*v-d*p,e[5]=d*g-u*v,e[6]=u*p-m*g,e[7]=0,e[8]=u,e[9]=m,e[10]=d,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function av(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function sv(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function ov(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e[6]=t[6]+n[6],e[7]=t[7]+n[7],e[8]=t[8]+n[8],e[9]=t[9]+n[9],e[10]=t[10]+n[10],e[11]=t[11]+n[11],e[12]=t[12]+n[12],e[13]=t[13]+n[13],e[14]=t[14]+n[14],e[15]=t[15]+n[15],e}function ou(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e[6]=t[6]-n[6],e[7]=t[7]-n[7],e[8]=t[8]-n[8],e[9]=t[9]-n[9],e[10]=t[10]-n[10],e[11]=t[11]-n[11],e[12]=t[12]-n[12],e[13]=t[13]-n[13],e[14]=t[14]-n[14],e[15]=t[15]-n[15],e}function cv(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12]*n,e[13]=t[13]*n,e[14]=t[14]*n,e[15]=t[15]*n,e}function lv(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e[3]=t[3]+n[3]*i,e[4]=t[4]+n[4]*i,e[5]=t[5]+n[5]*i,e[6]=t[6]+n[6]*i,e[7]=t[7]+n[7]*i,e[8]=t[8]+n[8]*i,e[9]=t[9]+n[9]*i,e[10]=t[10]+n[10]*i,e[11]=t[11]+n[11]*i,e[12]=t[12]+n[12]*i,e[13]=t[13]+n[13]*i,e[14]=t[14]+n[14]*i,e[15]=t[15]+n[15]*i,e}function uv(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function dv(e,t){var n=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],l=e[6],c=e[7],u=e[8],m=e[9],d=e[10],f=e[11],g=e[12],p=e[13],v=e[14],w=e[15],L=t[0],k=t[1],y=t[2],E=t[3],x=t[4],T=t[5],O=t[6],b=t[7],S=t[8],N=t[9],Z=t[10],ce=t[11],Q=t[12],M=t[13],H=t[14],ee=t[15];return Math.abs(n-L)<=de*Math.max(1,Math.abs(n),Math.abs(L))&&Math.abs(i-k)<=de*Math.max(1,Math.abs(i),Math.abs(k))&&Math.abs(r-y)<=de*Math.max(1,Math.abs(r),Math.abs(y))&&Math.abs(a-E)<=de*Math.max(1,Math.abs(a),Math.abs(E))&&Math.abs(s-x)<=de*Math.max(1,Math.abs(s),Math.abs(x))&&Math.abs(o-T)<=de*Math.max(1,Math.abs(o),Math.abs(T))&&Math.abs(l-O)<=de*Math.max(1,Math.abs(l),Math.abs(O))&&Math.abs(c-b)<=de*Math.max(1,Math.abs(c),Math.abs(b))&&Math.abs(u-S)<=de*Math.max(1,Math.abs(u),Math.abs(S))&&Math.abs(m-N)<=de*Math.max(1,Math.abs(m),Math.abs(N))&&Math.abs(d-Z)<=de*Math.max(1,Math.abs(d),Math.abs(Z))&&Math.abs(f-ce)<=de*Math.max(1,Math.abs(f),Math.abs(ce))&&Math.abs(g-Q)<=de*Math.max(1,Math.abs(g),Math.abs(Q))&&Math.abs(p-M)<=de*Math.max(1,Math.abs(p),Math.abs(M))&&Math.abs(v-H)<=de*Math.max(1,Math.abs(v),Math.abs(H))&&Math.abs(w-ee)<=de*Math.max(1,Math.abs(w),Math.abs(ee))}var mv=nu,hv=ou;var _e={};xs(_e,{add:()=>pv,angle:()=>Gv,bezier:()=>Ov,ceil:()=>yv,clone:()=>fv,copy:()=>gv,create:()=>cu,cross:()=>Rv,dist:()=>qv,distance:()=>hu,div:()=>Yv,divide:()=>mu,dot:()=>Ms,equals:()=>Kv,exactEquals:()=>Wv,floor:()=>wv,forEach:()=>Qv,fromValues:()=>_v,hermite:()=>zv,inverse:()=>Tv,len:()=>Zv,length:()=>lu,lerp:()=>Lv,max:()=>Sv,min:()=>Av,mul:()=>Xv,multiply:()=>du,negate:()=>xv,normalize:()=>Mv,random:()=>Iv,rotateX:()=>Fv,rotateY:()=>Uv,rotateZ:()=>Bv,round:()=>kv,scale:()=>Ev,scaleAndAdd:()=>bv,set:()=>vv,slerp:()=>Nv,sqrDist:()=>jv,sqrLen:()=>Jv,squaredDistance:()=>fu,squaredLength:()=>_u,str:()=>Vv,sub:()=>$v,subtract:()=>uu,transformMat3:()=>Pv,transformMat4:()=>Cv,transformQuat:()=>Dv,zero:()=>Hv});function cu(){var e=new qe(3);return qe!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function fv(e){var t=new qe(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function lu(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function _v(e,t,n){var i=new qe(3);return i[0]=e,i[1]=t,i[2]=n,i}function gv(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function vv(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function pv(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function uu(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function du(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function mu(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function yv(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function wv(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Av(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function Sv(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function kv(e,t){return e[0]=br(t[0]),e[1]=br(t[1]),e[2]=br(t[2]),e}function Ev(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function bv(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function hu(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function fu(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function _u(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function xv(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Tv(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function Mv(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function Ms(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Rv(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=r*l-a*o,e[1]=a*s-i*l,e[2]=i*o-r*s,e}function Lv(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function Nv(e,t,n,i){var r=Math.acos(Math.min(Math.max(Ms(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function zv(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,l=s*(a-2)+a,c=s*(a-1),u=s*(3-2*a);return e[0]=t[0]*o+n[0]*l+i[0]*c+r[0]*u,e[1]=t[1]*o+n[1]*l+i[1]*c+r[1]*u,e[2]=t[2]*o+n[2]*l+i[2]*c+r[2]*u,e}function Ov(e,t,n,i,r,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,m=3*l*s,d=l*a;return e[0]=t[0]*c+n[0]*u+i[0]*m+r[0]*d,e[1]=t[1]*c+n[1]*u+i[1]*m+r[1]*d,e[2]=t[2]*c+n[2]*u+i[2]*m+r[2]*d,e}function Iv(e,t){t=t===void 0?1:t;var n=Ts()*2*Math.PI,i=Ts()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function Cv(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function Pv(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function Dv(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=r*c-a*l,m=a*o-i*c,d=i*l-r*o;return u=u+u,m=m+m,d=d+d,e[0]=o+s*u+r*d-a*m,e[1]=l+s*m+a*u-i*d,e[2]=c+s*d+i*m-r*u,e}function Fv(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Uv(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Bv(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Gv(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=l&&Ms(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function Hv(e){return e[0]=0,e[1]=0,e[2]=0,e}function Vv(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function Wv(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function Kv(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=de*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=de*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=de*Math.max(1,Math.abs(r),Math.abs(o))}var $v=uu,Xv=du,Yv=mu,qv=hu,jv=fu,Zv=lu,Jv=_u,Qv=(function(){var e=cu();return function(t,n,i,r,a,s){var o,l;for(n||(n=3),i||(i=0),r?l=Math.min(r*n+i,t.length):l=t.length,o=i;o<l;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var ep=Object.defineProperty,rd=(e,t)=>{for(var n in t)ep(e,n,{get:t[n],enumerable:!0})};var HI=Math.PI/180;var tp=Math.PI/180,VI=180/Math.PI,hi=tp,Ks=[[-.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]];var lt=1,Ft=2;var io=8,ro=16,np=32;var ip=16384;var Hr=65536,ad=1<<17,rp=1<<18,ap=1<<19,sp=1<<20,op=1<<21,cp=1<<22,lp=1<<23,WI=1<<24,Vr=1<<25,up=1<<26,KI=1<<27,$I=1<<28,XI=1<<29,Wr=1<<30,YI=1<<31;var qI=1<<25,jI=1<<28,ZI=1<<29,JI=1<<30,QI=1<<31,eC=lt|Ft,tC=lt|Hr|Ft|Vr|Wr,nC=lt|Hr|Ft,iC=lt|ad|Ft|Vr|Wr,rC=np|io|ro,aC=lt|ro|io,dp=lt|Vr|Wr|Ft|up,sC=rp|ap|sp|op|cp|lp,oC=lt|io|ro|Vr|Wr,cC=lt|Hr|Ft,lC=lt|Ft,uC=lt|Hr|Ft|ad,dC=dp|ip,mC=Number.MAX_SAFE_INTEGER-1;var sd=256,mp=256,hp=8192,fp=2048,_p=512,gp=256,vp=sd*2,pp=256,Rs=32;var od=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.HealthBarName=55]="HealthBarName",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+hp]="Sounds",e[e.Images=e.Sounds+fp]="Images",e[e.Lights=e.Images+_p]="Lights",e[e.ShadowLights=e.Lights+mp]="ShadowLights",e[e.Items=e.ShadowLights+pp]="Items",e[e.PlayerSkins=e.Items+gp]="PlayerSkins",e[e.General=e.PlayerSkins+sd]="General",e[e.WheelWeapons=e.General+vp]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Rs]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Rs]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Rs]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(od||{}),hC=od.MaxConfigStrings;var yp={};rd(yp,{addReplayFrame:()=>kp,createReplaySession:()=>Sp,deserializeReplay:()=>Ap,serializeReplay:()=>wp});function wp(e){return JSON.stringify(e,null,2)}function Ap(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function Sp(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function kp(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var J=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(J||{}),B=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(B||{}),Ep=12,bp=9,fC=Math.ceil(Ep*bp/16),xp=23,Tp=2,_C=Math.ceil(xp*Tp/16),Mp={};rd(Mp,{U_ANGLE1:()=>Cp,U_ANGLE2:()=>Pp,U_ANGLE3:()=>Dp,U_EFFECTS:()=>Bp,U_EVENT:()=>Vp,U_FRAME:()=>Fp,U_MODEL:()=>Lp,U_MODEL2:()=>Kp,U_MODEL3:()=>$p,U_MODEL4:()=>Xp,U_MOREBITS:()=>Wp,U_NUMBER:()=>Rp,U_ORIGIN1:()=>zp,U_ORIGIN2:()=>Op,U_ORIGIN3:()=>Ip,U_REMOVE:()=>Yp,U_RENDERFX:()=>Gp,U_SKIN:()=>Up,U_SOLID:()=>Hp,U_SOUND:()=>Np});var Rp=1,Lp=2,Np=4,zp=8,Op=16,Ip=32,Cp=64,Pp=128,Dp=256,Fp=512,Up=1024,Bp=2048,Gp=4096,Hp=8192,Vp=16384,Wp=32768,Kp=1,$p=2,Xp=4,Yp=32768,$s=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=Ks[t];e.x=n[0],e.y=n[1],e.z=n[2]}},qp=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let i=0;i<Ks.length;i++){let r=Ks[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},wi=class ze{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new qp(ze.MAX_MSGLEN);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=ze.PACKET_HEADER,i=this.reliableLength>0?this.reliableLength+2:0,r=t?t.length:0;n+i+r>ze.MAX_MSGLEN&&(r=ze.MAX_MSGLEN-n-i,r<0&&(r=0));let a=new ArrayBuffer(n+i+r),s=new DataView(a),o=new Uint8Array(a),l=this.outgoingSequence;this.reliableLength>0&&(l|=2147483648,(this.outgoingReliableSequence&1)!==0&&(l|=1073741824)),s.setUint32(0,l,!0);let c=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(c|=2147483648),s.setUint32(4,c,!0),s.setUint16(8,this.qport,!0);let u=n;if(this.reliableLength>0){s.setUint16(u,this.reliableLength,!0),u+=2;let d=this.reliableMessage.getBuffer().subarray(0,this.reliableLength);o.set(d,u),u+=this.reliableLength}if(t&&r>0){let m=t.slice(0,r);o.set(m,u)}return o}process(t){if(t.length<ze.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,l=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let g=l?1:0,p=this.outgoingReliableSequence&1;g!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1)}let c=(i&2147483648)!==0,u=(i&1073741824)!==0?1:0,m=ze.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let g=n.getUint16(m,!0);m+=2;let p=this.incomingReliableSequence&1;if(u===p){if(this.incomingReliableSequence++,m+g>t.byteLength)return null;d=t.slice(m,m+g)}m+=g}let f=t.slice(m);if(d&&d.length>0){let g=d.length+f.length,p=new Uint8Array(g);return p.set(d,0),p.set(f,d.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>ze.MAX_MSGLEN-ze.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>ze.MAX_MSGLEN-ze.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>ze.MAX_MSGLEN-ze.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>ze.MAX_MSGLEN-ze.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}};wi.MAX_MSGLEN=1400;wi.FRAGMENT_SIZE=1024;wi.PACKET_HEADER=10;wi.HEADER_OVERHEAD=wi.PACKET_HEADER+2;var cd=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(cd||{}),gC=Object.keys(cd).length/2;function jp(){let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let i=0;i<8;i+=1)n=(n&1)!==0?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e}var vC=jp();var pC=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"}]);var Zp=19,yC=8+Zp*8;var Xs=4,Ls=7*Xs,wC=[{index:0,size:3,type:5126,stride:Ls,offset:0},{index:1,size:2,type:5126,stride:Ls,offset:3*Xs},{index:2,size:2,type:5126,stride:Ls,offset:5*Xs}];var ld=32;var AC=`#version 300 es
|
|
2
2
|
precision highp float;
|
|
3
3
|
|
|
4
4
|
struct DLight {
|
|
@@ -7,7 +7,7 @@ struct DLight {
|
|
|
7
7
|
float intensity;
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
-
const int MAX_DLIGHTS = ${
|
|
10
|
+
const int MAX_DLIGHTS = ${ld};
|
|
11
11
|
|
|
12
12
|
in vec2 v_texCoord;
|
|
13
13
|
in vec2 v_lightmapCoord;
|
|
@@ -114,7 +114,7 @@ void main() {
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
o_color = finalColor;
|
|
117
|
-
}`;var
|
|
117
|
+
}`;var SC=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1]);var kC=`#version 300 es
|
|
118
118
|
precision highp float;
|
|
119
119
|
|
|
120
120
|
layout(location = 0) in vec3 a_position;
|
|
@@ -127,7 +127,7 @@ struct DLight {
|
|
|
127
127
|
float intensity;
|
|
128
128
|
};
|
|
129
129
|
|
|
130
|
-
const int MAX_DLIGHTS = ${
|
|
130
|
+
const int MAX_DLIGHTS = ${ld};
|
|
131
131
|
|
|
132
132
|
uniform mat4 u_modelViewProjection;
|
|
133
133
|
uniform mat4 u_modelMatrix;
|
|
@@ -166,15 +166,15 @@ void main() {
|
|
|
166
166
|
v_texCoord = a_texCoord;
|
|
167
167
|
v_position = worldPos.xyz;
|
|
168
168
|
gl_Position = u_modelViewProjection * vec4(a_position, 1.0);
|
|
169
|
-
}`;var cd=class{constructor(){this._position=_e.create(),this._angles=_e.create(),this._bobAngles=_e.create(),this._bobOffset=_e.create(),this._kickAngles=_e.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=me.create(),this._projectionMatrix=me.create(),this._viewProjectionMatrix=me.create(),this._dirty=!0}get position(){return this._position}set position(e){_e.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){_e.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){_e.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){_e.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){_e.copy(this._bobOffset,e),this._dirty=!0}get rollAngle(){return this._rollAngle}set rollAngle(e){this._rollAngle=e,this._dirty=!0}get fov(){return this._fov}set fov(e){this._fov=e,this._dirty=!0}get aspect(){return this._aspect}set aspect(e){this._aspect=e,this._dirty=!0}get viewMatrix(){return this.updateMatrices(),this._viewMatrix}get projectionMatrix(){return this.updateMatrices(),this._projectionMatrix}get viewProjectionMatrix(){return this.updateMatrices(),this._viewProjectionMatrix}getViewmodelProjectionMatrix(e){let t=me.create();return me.perspective(t,e*di,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;me.perspective(this._projectionMatrix,this._fov*di,this._aspect,this._near,this._far);let e=me.fromValues(0,-1,0,0,0,0,1,0,-1,0,0,0,0,0,0,1),t=this._angles[0]+this._bobAngles[0]+this._kickAngles[0],n=this._angles[1]+this._bobAngles[1]+this._kickAngles[1],i=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,r=t*di,a=n*di,s=i*di,o=me.create();me.identity(o),me.rotateZ(o,o,-a),me.rotateY(o,o,-r),me.rotateX(o,o,-s);let u=me.create();me.multiply(u,e,o);let c=_e.add(_e.create(),this._position,this._bobOffset),l=_e.negate(_e.create(),c),m=_e.create();_e.transformMat4(m,l,o);let d=_e.fromValues(m[1]||0,m[2]||0,m[0]||0);me.copy(this._viewMatrix,u),this._viewMatrix[12]=d[0],this._viewMatrix[13]=d[1],this._viewMatrix[14]=d[2],me.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var Yp=class{constructor(e){this.buffer=e,this.view=new DataView(e),this.offset=0}hasMore(){return this.offset<this.buffer.byteLength}readNextBlock(){if(this.offset+4>this.buffer.byteLength)return null;let e=this.view.getInt32(this.offset,!0);if(this.offset+=4,e<0||e>2097152)return console.warn(`DemoReader: Invalid block length ${e} at offset ${this.offset-4}`),null;if(this.offset+e>this.buffer.byteLength)return console.warn(`DemoReader: Incomplete block. Expected ${e} bytes, but only ${this.buffer.byteLength-this.offset} remain.`),null;let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new Ws(t)}}reset(){this.offset=0}getOffset(){return this.offset}},qp=4,fl=0,_l=1,Zp=2;function Rn(e){let t=e.length;for(;--t>=0;)e[t]=0}var jp=0,ud=1,Jp=2,Qp=3,ey=258,io=29,Ti=256,yi=Ti+1+io,xn=30,ro=19,ld=2*yi+1,Jt=15,Rs=16,ty=7,ao=256,dd=16,md=17,hd=18,$s=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Rr=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),ny=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),fd=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),iy=512,St=new Array((yi+2)*2);Rn(St);var _i=new Array(xn*2);Rn(_i);var wi=new Array(iy);Rn(wi);var Ai=new Array(ey-Qp+1);Rn(Ai);var so=new Array(io);Rn(so);var Lr=new Array(xn);Rn(Lr);function Ls(e,t,n,i,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}var _d,gd,vd;function Ns(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var pd=e=>e<256?wi[e]:wi[256+(e>>>7)],Si=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Ue=(e,t,n)=>{e.bi_valid>Rs-n?(e.bi_buf|=t<<e.bi_valid&65535,Si(e,e.bi_buf),e.bi_buf=t>>Rs-e.bi_valid,e.bi_valid+=n-Rs):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},st=(e,t,n)=>{Ue(e,n[t*2],n[t*2+1])},yd=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},ry=e=>{e.bi_valid===16?(Si(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},ay=(e,t)=>{let n=t.dyn_tree,i=t.max_code,r=t.stat_desc.static_tree,a=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,o=t.stat_desc.extra_base,u=t.stat_desc.max_length,c,l,m,d,f,g,p=0;for(d=0;d<=Jt;d++)e.bl_count[d]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<ld;c++)l=e.heap[c],d=n[n[l*2+1]*2+1]+1,d>u&&(d=u,p++),n[l*2+1]=d,!(l>i)&&(e.bl_count[d]++,f=0,l>=o&&(f=s[l-o]),g=n[l*2],e.opt_len+=g*(d+f),a&&(e.static_len+=g*(r[l*2+1]+f)));if(p!==0){do{for(d=u-1;e.bl_count[d]===0;)d--;e.bl_count[d]--,e.bl_count[d+1]+=2,e.bl_count[u]--,p-=2}while(p>0);for(d=u;d!==0;d--)for(l=e.bl_count[d];l!==0;)m=e.heap[--c],!(m>i)&&(n[m*2+1]!==d&&(e.opt_len+=(d-n[m*2+1])*n[m*2],n[m*2+1]=d),l--)}},wd=(e,t,n)=>{let i=new Array(Jt+1),r=0,a,s;for(a=1;a<=Jt;a++)r=r+n[a-1]<<1,i[a]=r;for(s=0;s<=t;s++){let o=e[s*2+1];o!==0&&(e[s*2]=yd(i[o]++,o))}},sy=()=>{let e,t,n,i,r,a=new Array(Jt+1);for(n=0,i=0;i<io-1;i++)for(so[i]=n,e=0;e<1<<$s[i];e++)Ai[n++]=i;for(Ai[n-1]=i,r=0,i=0;i<16;i++)for(Lr[i]=r,e=0;e<1<<Rr[i];e++)wi[r++]=i;for(r>>=7;i<xn;i++)for(Lr[i]=r<<7,e=0;e<1<<Rr[i]-7;e++)wi[256+r++]=i;for(t=0;t<=Jt;t++)a[t]=0;for(e=0;e<=143;)St[e*2+1]=8,e++,a[8]++;for(;e<=255;)St[e*2+1]=9,e++,a[9]++;for(;e<=279;)St[e*2+1]=7,e++,a[7]++;for(;e<=287;)St[e*2+1]=8,e++,a[8]++;for(wd(St,yi+1,a),e=0;e<xn;e++)_i[e*2+1]=5,_i[e*2]=yd(e,5);_d=new Ls(St,$s,Ti+1,yi,Jt),gd=new Ls(_i,Rr,0,xn,Jt),vd=new Ls(new Array(0),ny,0,ro,ty)},Ad=e=>{let t;for(t=0;t<yi;t++)e.dyn_ltree[t*2]=0;for(t=0;t<xn;t++)e.dyn_dtree[t*2]=0;for(t=0;t<ro;t++)e.bl_tree[t*2]=0;e.dyn_ltree[ao*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Sd=e=>{e.bi_valid>8?Si(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},gl=(e,t,n,i)=>{let r=t*2,a=n*2;return e[r]<e[a]||e[r]===e[a]&&i[t]<=i[n]},zs=(e,t,n)=>{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r<e.heap_len&&gl(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!gl(t,i,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=i},vl=(e,t,n)=>{let i,r,a=0,s,o;if(e.sym_next!==0)do i=e.pending_buf[e.sym_buf+a++]&255,i+=(e.pending_buf[e.sym_buf+a++]&255)<<8,r=e.pending_buf[e.sym_buf+a++],i===0?st(e,r,t):(s=Ai[r],st(e,s+Ti+1,t),o=$s[s],o!==0&&(r-=so[s],Ue(e,r,o)),i--,s=pd(i),st(e,s,n),o=Rr[s],o!==0&&(i-=Lr[s],Ue(e,i,o)));while(a<e.sym_next);st(e,ao,t)},Xs=(e,t)=>{let n=t.dyn_tree,i=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.elems,s,o,u=-1,c;for(e.heap_len=0,e.heap_max=ld,s=0;s<a;s++)n[s*2]!==0?(e.heap[++e.heap_len]=u=s,e.depth[s]=0):n[s*2+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=u<2?++u:0,n[c*2]=1,e.depth[c]=0,e.opt_len--,r&&(e.static_len-=i[c*2+1]);for(t.max_code=u,s=e.heap_len>>1;s>=1;s--)zs(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],zs(e,n,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,n[c*2]=n[s*2]+n[o*2],e.depth[c]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,n[s*2+1]=n[o*2+1]=c,e.heap[1]=c++,zs(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],ay(e,t),wd(n,u,e.bl_count)},pl=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,u=7,c=4;for(s===0&&(u=138,c=3),t[(n+1)*2+1]=65535,i=0;i<=n;i++)a=s,s=t[(i+1)*2+1],!(++o<u&&a===s)&&(o<c?e.bl_tree[a*2]+=o:a!==0?(a!==r&&e.bl_tree[a*2]++,e.bl_tree[dd*2]++):o<=10?e.bl_tree[md*2]++:e.bl_tree[hd*2]++,o=0,r=a,s===0?(u=138,c=3):a===s?(u=6,c=3):(u=7,c=4))},yl=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,u=7,c=4;for(s===0&&(u=138,c=3),i=0;i<=n;i++)if(a=s,s=t[(i+1)*2+1],!(++o<u&&a===s)){if(o<c)do st(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(st(e,a,e.bl_tree),o--),st(e,dd,e.bl_tree),Ue(e,o-3,2)):o<=10?(st(e,md,e.bl_tree),Ue(e,o-3,3)):(st(e,hd,e.bl_tree),Ue(e,o-11,7));o=0,r=a,s===0?(u=138,c=3):a===s?(u=6,c=3):(u=7,c=4)}},oy=e=>{let t;for(pl(e,e.dyn_ltree,e.l_desc.max_code),pl(e,e.dyn_dtree,e.d_desc.max_code),Xs(e,e.bl_desc),t=ro-1;t>=3&&e.bl_tree[fd[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},cy=(e,t,n,i)=>{let r;for(Ue(e,t-257,5),Ue(e,n-1,5),Ue(e,i-4,4),r=0;r<i;r++)Ue(e,e.bl_tree[fd[r]*2+1],3);yl(e,e.dyn_ltree,t-1),yl(e,e.dyn_dtree,n-1)},uy=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return fl;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return _l;for(n=32;n<Ti;n++)if(e.dyn_ltree[n*2]!==0)return _l;return fl},wl=!1,ly=e=>{wl||(sy(),wl=!0),e.l_desc=new Ns(e.dyn_ltree,_d),e.d_desc=new Ns(e.dyn_dtree,gd),e.bl_desc=new Ns(e.bl_tree,vd),e.bi_buf=0,e.bi_valid=0,Ad(e)},Ed=(e,t,n,i)=>{Ue(e,(jp<<1)+(i?1:0),3),Sd(e),Si(e,n),Si(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},dy=e=>{Ue(e,ud<<1,3),st(e,ao,St),ry(e)},my=(e,t,n,i)=>{let r,a,s=0;e.level>0?(e.strm.data_type===Zp&&(e.strm.data_type=uy(e)),Xs(e,e.l_desc),Xs(e,e.d_desc),s=oy(e),r=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=r&&(r=a)):r=a=n+5,n+4<=r&&t!==-1?Ed(e,t,n,i):e.strategy===qp||a===r?(Ue(e,(ud<<1)+(i?1:0),3),vl(e,St,_i)):(Ue(e,(Jp<<1)+(i?1:0),3),cy(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),vl(e,e.dyn_ltree,e.dyn_dtree)),Ad(e),i&&Sd(e)},hy=(e,t,n)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(Ai[n]+Ti+1)*2]++,e.dyn_dtree[pd(t)*2]++),e.sym_next===e.sym_end),fy=ly,_y=Ed,gy=my,vy=hy,py=dy,yy={_tr_init:fy,_tr_stored_block:_y,_tr_flush_block:gy,_tr_tally:vy,_tr_align:py},wy=(e,t,n,i)=>{let r=e&65535|0,a=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do r=r+t[i++]|0,a=a+r|0;while(--s);r%=65521,a%=65521}return r|a<<16|0},Ei=wy,Ay=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},Sy=new Uint32Array(Ay()),Ey=(e,t,n,i)=>{let r=Sy,a=i+n;e^=-1;for(let s=i;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},Te=Ey,tn={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},an={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},{_tr_init:ky,_tr_stored_block:Ys,_tr_flush_block:by,_tr_tally:Ct,_tr_align:xy}=yy,{Z_NO_FLUSH:Pt,Z_PARTIAL_FLUSH:Ty,Z_FULL_FLUSH:My,Z_FINISH:qe,Z_BLOCK:Al,Z_OK:Ne,Z_STREAM_END:Sl,Z_STREAM_ERROR:ot,Z_DATA_ERROR:Ry,Z_BUF_ERROR:Os,Z_DEFAULT_COMPRESSION:Ly,Z_FILTERED:Ny,Z_HUFFMAN_ONLY:kr,Z_RLE:zy,Z_FIXED:Oy,Z_DEFAULT_STRATEGY:Iy,Z_UNKNOWN:Cy,Z_DEFLATED:Vr}=an,Py=9,Dy=15,Fy=8,Uy=29,By=256,qs=By+1+Uy,Gy=30,Hy=19,Vy=2*qs+1,Wy=15,te=3,It=258,ct=It+te+1,Ky=32,Tn=42,oo=57,Zs=69,js=73,Js=91,Qs=103,Qt=113,hi=666,Oe=1,Ln=2,nn=3,Nn=4,$y=3,en=(e,t)=>(e.msg=tn[t],t),El=e=>e*2-(e>4?9:0),Ot=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Xy=e=>{let t,n,i,r=e.w_size;t=e.hash_size,i=t;do n=e.head[--i],e.head[i]=n>=r?n-r:0;while(--t);t=r,i=t;do n=e.prev[--i],e.prev[i]=n>=r?n-r:0;while(--t)},Yy=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,Dt=Yy,He=e=>{let t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},Ve=(e,t)=>{by(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,He(e.strm)},re=(e,t)=>{e.pending_buf[e.pending++]=t},mi=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},eo=(e,t,n,i)=>{let r=e.avail_in;return r>i&&(r=i),r===0?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),n),e.state.wrap===1?e.adler=Ei(e.adler,t,r,n):e.state.wrap===2&&(e.adler=Te(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},kd=(e,t)=>{let n=e.max_chain_length,i=e.strstart,r,a,s=e.prev_length,o=e.nice_match,u=e.strstart>e.w_size-ct?e.strstart-(e.w_size-ct):0,c=e.window,l=e.w_mask,m=e.prev,d=e.strstart+It,f=c[i+s-1],g=c[i+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(c[r+s]!==g||c[r+s-1]!==f||c[r]!==c[i]||c[++r]!==c[i+1])){i+=2,r++;do;while(c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&i<d);if(a=It-(d-i),i=d-It,a>s){if(e.match_start=t,s=a,a>=o)break;f=c[i+s-1],g=c[i+s]}}while((t=m[t&l])>u&&--n!==0);return s<=e.lookahead?s:e.lookahead},Mn=e=>{let t=e.w_size,n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-ct)&&(e.window.set(e.window.subarray(t,t+t-i),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Xy(e),i+=t),e.strm.avail_in===0)break;if(n=eo(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=te)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=Dt(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=Dt(e,e.ins_h,e.window[r+te-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<te)););}while(e.lookahead<ct&&e.strm.avail_in!==0)},bd=(e,t)=>{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,i,r,a,s=0,o=e.strm.avail_in;do{if(i=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,r=e.strstart-e.block_start,i>r+e.strm.avail_in&&(i=r+e.strm.avail_in),i>a&&(i=a),i<n&&(i===0&&t!==qe||t===Pt||i!==r+e.strm.avail_in)))break;s=t===qe&&i===r+e.strm.avail_in?1:0,Ys(e,0,0,s),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,He(e.strm),r&&(r>i&&(r=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,i-=r),i&&(eo(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(s===0);return o-=e.strm.avail_in,o&&(o>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=o&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-o,e.strm.next_in),e.strstart),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),s?Nn:t!==Pt&&t!==qe&&e.strm.avail_in===0&&e.strstart===e.block_start?Ln:(a=e.window_size-e.strstart,e.strm.avail_in>a&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,a+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),a>e.strm.avail_in&&(a=e.strm.avail_in),a&&(eo(e.strm,e.window,e.strstart,a),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.high_water<e.strstart&&(e.high_water=e.strstart),a=e.bi_valid+42>>3,a=e.pending_buf_size-a>65535?65535:e.pending_buf_size-a,n=a>e.w_size?e.w_size:a,r=e.strstart-e.block_start,(r>=n||(r||t===qe)&&t!==Pt&&e.strm.avail_in===0&&r<=a)&&(i=r>a?a:r,s=t===qe&&e.strm.avail_in===0&&i===r?1:0,Ys(e,e.block_start,i,s),e.block_start+=i,He(e.strm)),s?nn:Oe)},Is=(e,t)=>{let n,i;for(;;){if(e.lookahead<ct){if(Mn(e),e.lookahead<ct&&t===Pt)return Oe;if(e.lookahead===0)break}if(n=0,e.lookahead>=te&&(e.ins_h=Dt(e,e.ins_h,e.window[e.strstart+te-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-ct&&(e.match_length=kd(e,n)),e.match_length>=te)if(i=Ct(e,e.strstart-e.match_start,e.match_length-te),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=te){e.match_length--;do e.strstart++,e.ins_h=Dt(e,e.ins_h,e.window[e.strstart+te-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Dt(e,e.ins_h,e.window[e.strstart+1]);else i=Ct(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Ve(e,!1),e.strm.avail_out===0))return Oe}return e.insert=e.strstart<te-1?e.strstart:te-1,t===qe?(Ve(e,!0),e.strm.avail_out===0?nn:Nn):e.sym_next&&(Ve(e,!1),e.strm.avail_out===0)?Oe:Ln},En=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<ct){if(Mn(e),e.lookahead<ct&&t===Pt)return Oe;if(e.lookahead===0)break}if(n=0,e.lookahead>=te&&(e.ins_h=Dt(e,e.ins_h,e.window[e.strstart+te-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=te-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-ct&&(e.match_length=kd(e,n),e.match_length<=5&&(e.strategy===Ny||e.match_length===te&&e.strstart-e.match_start>4096)&&(e.match_length=te-1)),e.prev_length>=te&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-te,i=Ct(e,e.strstart-1-e.prev_match,e.prev_length-te),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=Dt(e,e.ins_h,e.window[e.strstart+te-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=te-1,e.strstart++,i&&(Ve(e,!1),e.strm.avail_out===0))return Oe}else if(e.match_available){if(i=Ct(e,0,e.window[e.strstart-1]),i&&Ve(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Oe}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=Ct(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<te-1?e.strstart:te-1,t===qe?(Ve(e,!0),e.strm.avail_out===0?nn:Nn):e.sym_next&&(Ve(e,!1),e.strm.avail_out===0)?Oe:Ln},qy=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=It){if(Mn(e),e.lookahead<=It&&t===Pt)return Oe;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=te&&e.strstart>0&&(r=e.strstart-1,i=s[r],i===s[++r]&&i===s[++r]&&i===s[++r])){a=e.strstart+It;do;while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&r<a);e.match_length=It-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=te?(n=Ct(e,1,e.match_length-te),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=Ct(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Ve(e,!1),e.strm.avail_out===0))return Oe}return e.insert=0,t===qe?(Ve(e,!0),e.strm.avail_out===0?nn:Nn):e.sym_next&&(Ve(e,!1),e.strm.avail_out===0)?Oe:Ln},Zy=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(Mn(e),e.lookahead===0)){if(t===Pt)return Oe;break}if(e.match_length=0,n=Ct(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Ve(e,!1),e.strm.avail_out===0))return Oe}return e.insert=0,t===qe?(Ve(e,!0),e.strm.avail_out===0?nn:Nn):e.sym_next&&(Ve(e,!1),e.strm.avail_out===0)?Oe:Ln};function at(e,t,n,i,r){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=i,this.func=r}var fi=[new at(0,0,0,0,bd),new at(4,4,8,4,Is),new at(4,5,16,8,Is),new at(4,6,32,32,Is),new at(4,4,16,16,En),new at(8,16,32,32,En),new at(8,16,128,128,En),new at(8,32,128,256,En),new at(32,128,258,1024,En),new at(32,258,258,4096,En)],jy=e=>{e.window_size=2*e.w_size,Ot(e.head),e.max_lazy_match=fi[e.level].max_lazy,e.good_match=fi[e.level].good_length,e.nice_match=fi[e.level].nice_length,e.max_chain_length=fi[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=te-1,e.match_available=0,e.ins_h=0};function Jy(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Vr,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(Vy*2),this.dyn_dtree=new Uint16Array((2*Gy+1)*2),this.bl_tree=new Uint16Array((2*Hy+1)*2),Ot(this.dyn_ltree),Ot(this.dyn_dtree),Ot(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(Wy+1),this.heap=new Uint16Array(2*qs+1),Ot(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*qs+1),Ot(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var Mi=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==Tn&&t.status!==oo&&t.status!==Zs&&t.status!==js&&t.status!==Js&&t.status!==Qs&&t.status!==Qt&&t.status!==hi?1:0},xd=e=>{if(Mi(e))return en(e,ot);e.total_in=e.total_out=0,e.data_type=Cy;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?oo:t.wrap?Tn:Qt,e.adler=t.wrap===2?0:1,t.last_flush=-2,ky(t),Ne},Td=e=>{let t=xd(e);return t===Ne&&jy(e.state),t},Qy=(e,t)=>Mi(e)||e.state.wrap!==2?ot:(e.state.gzhead=t,Ne),Md=(e,t,n,i,r,a)=>{if(!e)return ot;let s=1;if(t===Ly&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>Py||n!==Vr||i<8||i>15||t<0||t>9||a<0||a>Oy||i===8&&s!==1)return en(e,ot);i===8&&(i=9);let o=new Jy;return e.state=o,o.strm=e,o.status=Tn,o.wrap=s,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=r+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+te-1)/te),o.window=new Uint8Array(o.w_size*2),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<r+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=(o.lit_bufsize-1)*3,o.level=t,o.strategy=a,o.method=n,Td(e)},ew=(e,t)=>Md(e,t,Vr,Dy,Fy,Iy),tw=(e,t)=>{if(Mi(e)||t>Al||t<0)return e?en(e,ot):ot;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===hi&&t!==qe)return en(e,e.avail_out===0?Os:ot);let i=n.last_flush;if(n.last_flush=t,n.pending!==0){if(He(e),e.avail_out===0)return n.last_flush=-1,Ne}else if(e.avail_in===0&&El(t)<=El(i)&&t!==qe)return en(e,Os);if(n.status===hi&&e.avail_in!==0)return en(e,Os);if(n.status===Tn&&n.wrap===0&&(n.status=Qt),n.status===Tn){let r=Vr+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=kr||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,r|=a<<6,n.strstart!==0&&(r|=Ky),r+=31-r%31,mi(n,r),n.strstart!==0&&(mi(n,e.adler>>>16),mi(n,e.adler&65535)),e.adler=1,n.status=Qt,He(e),n.pending!==0)return n.last_flush=-1,Ne}if(n.status===oo){if(e.adler=0,re(n,31),re(n,139),re(n,8),n.gzhead)re(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),re(n,n.gzhead.time&255),re(n,n.gzhead.time>>8&255),re(n,n.gzhead.time>>16&255),re(n,n.gzhead.time>>24&255),re(n,n.level===9?2:n.strategy>=kr||n.level<2?4:0),re(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(re(n,n.gzhead.extra.length&255),re(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=Te(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Zs;else if(re(n,0),re(n,0),re(n,0),re(n,0),re(n,0),re(n,n.level===9?2:n.strategy>=kr||n.level<2?4:0),re(n,$y),n.status=Qt,He(e),n.pending!==0)return n.last_flush=-1,Ne}if(n.status===Zs){if(n.gzhead.extra){let r=n.pending,a=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+a>n.pending_buf_size;){let o=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex+=o,He(e),n.pending!==0)return n.last_flush=-1,Ne;r=0,a-=o}let s=new Uint8Array(n.gzhead.extra);n.pending_buf.set(s.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending+=a,n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=js}if(n.status===js){if(n.gzhead.name){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),He(e),n.pending!==0)return n.last_flush=-1,Ne;r=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,re(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=Js}if(n.status===Js){if(n.gzhead.comment){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),He(e),n.pending!==0)return n.last_flush=-1,Ne;r=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,re(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r))}n.status=Qs}if(n.status===Qs){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(He(e),n.pending!==0))return n.last_flush=-1,Ne;re(n,e.adler&255),re(n,e.adler>>8&255),e.adler=0}if(n.status=Qt,He(e),n.pending!==0)return n.last_flush=-1,Ne}if(e.avail_in!==0||n.lookahead!==0||t!==Pt&&n.status!==hi){let r=n.level===0?bd(n,t):n.strategy===kr?Zy(n,t):n.strategy===zy?qy(n,t):fi[n.level].func(n,t);if((r===nn||r===Nn)&&(n.status=hi),r===Oe||r===nn)return e.avail_out===0&&(n.last_flush=-1),Ne;if(r===Ln&&(t===Ty?xy(n):t!==Al&&(Ys(n,0,0,!1),t===My&&(Ot(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),He(e),e.avail_out===0))return n.last_flush=-1,Ne}return t!==qe?Ne:n.wrap<=0?Sl:(n.wrap===2?(re(n,e.adler&255),re(n,e.adler>>8&255),re(n,e.adler>>16&255),re(n,e.adler>>24&255),re(n,e.total_in&255),re(n,e.total_in>>8&255),re(n,e.total_in>>16&255),re(n,e.total_in>>24&255)):(mi(n,e.adler>>>16),mi(n,e.adler&65535)),He(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?Ne:Sl)},nw=e=>{if(Mi(e))return ot;let t=e.state.status;return e.state=null,t===Qt?en(e,Ry):Ne},iw=(e,t)=>{let n=t.length;if(Mi(e))return ot;let i=e.state,r=i.wrap;if(r===2||r===1&&i.status!==Tn||i.lookahead)return ot;if(r===1&&(e.adler=Ei(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){r===0&&(Ot(i.head),i.strstart=0,i.block_start=0,i.insert=0);let u=new Uint8Array(i.w_size);u.set(t.subarray(n-i.w_size,n),0),t=u,n=i.w_size}let a=e.avail_in,s=e.next_in,o=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,Mn(i);i.lookahead>=te;){let u=i.strstart,c=i.lookahead-(te-1);do i.ins_h=Dt(i,i.ins_h,i.window[u+te-1]),i.prev[u&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=u,u++;while(--c);i.strstart=u,i.lookahead=te-1,Mn(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=te-1,i.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,i.wrap=r,Ne},rw=ew,aw=Md,sw=Td,ow=xd,cw=Qy,uw=tw,lw=nw,dw=iw,mw="pako deflate (from Nodeca project)",gi={deflateInit:rw,deflateInit2:aw,deflateReset:sw,deflateResetKeep:ow,deflateSetHeader:cw,deflate:uw,deflateEnd:lw,deflateSetDictionary:dw,deflateInfo:mw},hw=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),fw=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(let i in n)hw(n,i)&&(e[i]=n[i])}}return e},_w=e=>{let t=0;for(let i=0,r=e.length;i<r;i++)t+=e[i].length;let n=new Uint8Array(t);for(let i=0,r=0,a=e.length;i<a;i++){let s=e[i];n.set(s,r),r+=s.length}return n},Wr={assign:fw,flattenChunks:_w},Rd=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Rd=!1}var ki=new Uint8Array(256);for(let e=0;e<256;e++)ki[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;ki[254]=ki[254]=1;var gw=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,i,r,a,s=e.length,o=0;for(r=0;r<s;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),o+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(o),a=0,r=0;a<o;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t},vw=(e,t)=>{if(t<65534&&e.subarray&&Rd)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let i=0;i<t;i++)n+=String.fromCharCode(e[i]);return n},pw=(e,t)=>{let n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let i,r,a=new Array(n*2);for(r=0,i=0;i<n;){let s=e[i++];if(s<128){a[r++]=s;continue}let o=ki[s];if(o>4){a[r++]=65533,i+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&i<n;)s=s<<6|e[i++]&63,o--;if(o>1){a[r++]=65533;continue}s<65536?a[r++]=s:(s-=65536,a[r++]=55296|s>>10&1023,a[r++]=56320|s&1023)}return vw(a,r)},yw=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+ki[e[n]]>t?n:t},bi={string2buf:gw,buf2string:pw,utf8border:yw};function ww(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var Ld=ww,Nd=Object.prototype.toString,{Z_NO_FLUSH:Aw,Z_SYNC_FLUSH:Sw,Z_FULL_FLUSH:Ew,Z_FINISH:kw,Z_OK:Nr,Z_STREAM_END:bw,Z_DEFAULT_COMPRESSION:xw,Z_DEFAULT_STRATEGY:Tw,Z_DEFLATED:Mw}=an;function Ri(e){this.options=Wr.assign({level:xw,method:Mw,chunkSize:16384,windowBits:15,memLevel:8,strategy:Tw},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ld,this.strm.avail_out=0;let n=gi.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Nr)throw new Error(tn[n]);if(t.header&&gi.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(typeof t.dictionary=="string"?i=bi.string2buf(t.dictionary):Nd.call(t.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(t.dictionary):i=t.dictionary,n=gi.deflateSetDictionary(this.strm,i),n!==Nr)throw new Error(tn[n]);this._dict_set=!0}}Ri.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?kw:Aw,typeof e=="string"?n.input=bi.string2buf(e):Nd.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),(a===Sw||a===Ew)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(r=gi.deflate(n,a),r===bw)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=gi.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===Nr;if(n.avail_out===0){this.onData(n.output);continue}if(a>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0};Ri.prototype.onData=function(e){this.chunks.push(e)};Ri.prototype.onEnd=function(e){e===Nr&&(this.result=Wr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function co(e,t){let n=new Ri(t);if(n.push(e,!0),n.err)throw n.msg||tn[n.err];return n.result}function Rw(e,t){return t=t||{},t.raw=!0,co(e,t)}function Lw(e,t){return t=t||{},t.gzip=!0,co(e,t)}var Nw=Ri,zw=co,Ow=Rw,Iw=Lw,Cw=an,Pw={Deflate:Nw,deflate:zw,deflateRaw:Ow,gzip:Iw,constants:Cw},br=16209,Dw=16191,Fw=function(t,n){let i,r,a,s,o,u,c,l,m,d,f,g,p,v,w,L,E,y,k,x,T,O,b,S,N=t.state;i=t.next_in,b=t.input,r=i+(t.avail_in-5),a=t.next_out,S=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),u=N.dmax,c=N.wsize,l=N.whave,m=N.wnext,d=N.window,f=N.hold,g=N.bits,p=N.lencode,v=N.distcode,w=(1<<N.lenbits)-1,L=(1<<N.distbits)-1;e:do{g<15&&(f+=b[i++]<<g,g+=8,f+=b[i++]<<g,g+=8),E=p[f&w];t:for(;;){if(y=E>>>24,f>>>=y,g-=y,y=E>>>16&255,y===0)S[a++]=E&65535;else if(y&16){k=E&65535,y&=15,y&&(g<y&&(f+=b[i++]<<g,g+=8),k+=f&(1<<y)-1,f>>>=y,g-=y),g<15&&(f+=b[i++]<<g,g+=8,f+=b[i++]<<g,g+=8),E=v[f&L];n:for(;;){if(y=E>>>24,f>>>=y,g-=y,y=E>>>16&255,y&16){if(x=E&65535,y&=15,g<y&&(f+=b[i++]<<g,g+=8,g<y&&(f+=b[i++]<<g,g+=8)),x+=f&(1<<y)-1,x>u){t.msg="invalid distance too far back",N.mode=br;break e}if(f>>>=y,g-=y,y=a-s,x>y){if(y=x-y,y>l&&N.sane){t.msg="invalid distance too far back",N.mode=br;break e}if(T=0,O=d,m===0){if(T+=c-y,y<k){k-=y;do S[a++]=d[T++];while(--y);T=a-x,O=S}}else if(m<y){if(T+=c+m-y,y-=m,y<k){k-=y;do S[a++]=d[T++];while(--y);if(T=0,m<k){y=m,k-=y;do S[a++]=d[T++];while(--y);T=a-x,O=S}}}else if(T+=m-y,y<k){k-=y;do S[a++]=d[T++];while(--y);T=a-x,O=S}for(;k>2;)S[a++]=O[T++],S[a++]=O[T++],S[a++]=O[T++],k-=3;k&&(S[a++]=O[T++],k>1&&(S[a++]=O[T++]))}else{T=a-x;do S[a++]=S[T++],S[a++]=S[T++],S[a++]=S[T++],k-=3;while(k>2);k&&(S[a++]=S[T++],k>1&&(S[a++]=S[T++]))}}else if((y&64)===0){E=v[(E&65535)+(f&(1<<y)-1)];continue n}else{t.msg="invalid distance code",N.mode=br;break e}break}}else if((y&64)===0){E=p[(E&65535)+(f&(1<<y)-1)];continue t}else if(y&32){N.mode=Dw;break e}else{t.msg="invalid literal/length code",N.mode=br;break e}break}}while(i<r&&a<o);k=g>>3,i-=k,g-=k<<3,f&=(1<<g)-1,t.next_in=i,t.next_out=a,t.avail_in=i<r?5+(r-i):5-(i-r),t.avail_out=a<o?257+(o-a):257-(a-o),N.hold=f,N.bits=g},kn=15,kl=852,bl=592,xl=0,Cs=1,Tl=2,Uw=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),Bw=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),Gw=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),Hw=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),Vw=(e,t,n,i,r,a,s,o)=>{let u=o.bits,c=0,l=0,m=0,d=0,f=0,g=0,p=0,v=0,w=0,L=0,E,y,k,x,T,O=null,b,S=new Uint16Array(kn+1),N=new Uint16Array(kn+1),j=null,ce,Q,M;for(c=0;c<=kn;c++)S[c]=0;for(l=0;l<i;l++)S[t[n+l]]++;for(f=u,d=kn;d>=1&&S[d]===0;d--);if(f>d&&(f=d),d===0)return r[a++]=1<<24|64<<16|0,r[a++]=1<<24|64<<16|0,o.bits=1,0;for(m=1;m<d&&S[m]===0;m++);for(f<m&&(f=m),v=1,c=1;c<=kn;c++)if(v<<=1,v-=S[c],v<0)return-1;if(v>0&&(e===xl||d!==1))return-1;for(N[1]=0,c=1;c<kn;c++)N[c+1]=N[c]+S[c];for(l=0;l<i;l++)t[n+l]!==0&&(s[N[t[n+l]]++]=l);if(e===xl?(O=j=s,b=20):e===Cs?(O=Uw,j=Bw,b=257):(O=Gw,j=Hw,b=0),L=0,l=0,c=m,T=a,g=f,p=0,k=-1,w=1<<f,x=w-1,e===Cs&&w>kl||e===Tl&&w>bl)return 1;for(;;){ce=c-p,s[l]+1<b?(Q=0,M=s[l]):s[l]>=b?(Q=j[s[l]-b],M=O[s[l]-b]):(Q=96,M=0),E=1<<c-p,y=1<<g,m=y;do y-=E,r[T+(L>>p)+y]=ce<<24|Q<<16|M|0;while(y!==0);for(E=1<<c-1;L&E;)E>>=1;if(E!==0?(L&=E-1,L+=E):L=0,l++,--S[c]===0){if(c===d)break;c=t[n+s[l]]}if(c>f&&(L&x)!==k){for(p===0&&(p=f),T+=m,g=c-p,v=1<<g;g+p<d&&(v-=S[g+p],!(v<=0));)g++,v<<=1;if(w+=1<<g,e===Cs&&w>kl||e===Tl&&w>bl)return 1;k=L&x,r[k]=f<<24|g<<16|T-a|0}}return L!==0&&(r[T+L]=c-p<<24|64<<16|0),o.bits=f,0},vi=Vw,Ww=0,zd=1,Od=2,{Z_FINISH:Ml,Z_BLOCK:Kw,Z_TREES:xr,Z_OK:rn,Z_STREAM_END:$w,Z_NEED_DICT:Xw,Z_STREAM_ERROR:Ze,Z_DATA_ERROR:Id,Z_MEM_ERROR:Cd,Z_BUF_ERROR:Yw,Z_DEFLATED:Rl}=an,Kr=16180,Ll=16181,Nl=16182,zl=16183,Ol=16184,Il=16185,Cl=16186,Pl=16187,Dl=16188,Fl=16189,zr=16190,At=16191,Ps=16192,Ul=16193,Ds=16194,Bl=16195,Gl=16196,Hl=16197,Vl=16198,Tr=16199,Mr=16200,Wl=16201,Kl=16202,$l=16203,Xl=16204,Yl=16205,Fs=16206,ql=16207,Zl=16208,ge=16209,Pd=16210,Dd=16211,qw=852,Zw=592,jw=15,Jw=jw,jl=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function Qw(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var sn=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<Kr||t.mode>Dd?1:0},Fd=e=>{if(sn(e))return Ze;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=Kr,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(qw),t.distcode=t.distdyn=new Int32Array(Zw),t.sane=1,t.back=-1,rn},Ud=e=>{if(sn(e))return Ze;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Fd(e)},Bd=(e,t)=>{let n;if(sn(e))return Ze;let i=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Ze:(i.window!==null&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,Ud(e))},Gd=(e,t)=>{if(!e)return Ze;let n=new Qw;e.state=n,n.strm=e,n.window=null,n.mode=Kr;let i=Bd(e,t);return i!==rn&&(e.state=null),i},eA=e=>Gd(e,Jw),Jl=!0,Us,Bs,tA=e=>{if(Jl){Us=new Int32Array(512),Bs=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(vi(zd,e.lens,0,288,Us,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;vi(Od,e.lens,0,32,Bs,0,e.work,{bits:5}),Jl=!1}e.lencode=Us,e.lenbits=9,e.distcode=Bs,e.distbits=5},Hd=(e,t,n,i)=>{let r,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),i>=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(r=a.wsize-a.wnext,r>i&&(r=i),a.window.set(t.subarray(n-i,n-i+r),a.wnext),i-=r,i?(a.window.set(t.subarray(n-i,n),0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=r))),0},nA=(e,t)=>{let n,i,r,a,s,o,u,c,l,m,d,f,g,p,v=0,w,L,E,y,k,x,T,O,b=new Uint8Array(4),S,N,j=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(sn(e)||!e.output||!e.input&&e.avail_in!==0)return Ze;n=e.state,n.mode===At&&(n.mode=Ps),s=e.next_out,r=e.output,u=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,l=n.bits,m=o,d=u,O=rn;e:for(;;)switch(n.mode){case Kr:if(n.wrap===0){n.mode=Ps;break}for(;l<16;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(n.wrap&2&&c===35615){n.wbits===0&&(n.wbits=15),n.check=0,b[0]=c&255,b[1]=c>>>8&255,n.check=Te(n.check,b,2,0),c=0,l=0,n.mode=Ll;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=ge;break}if((c&15)!==Rl){e.msg="unknown compression method",n.mode=ge;break}if(c>>>=4,l-=4,T=(c&15)+8,n.wbits===0&&(n.wbits=T),T>15||T>n.wbits){e.msg="invalid window size",n.mode=ge;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?Fl:At,c=0,l=0;break;case Ll:for(;l<16;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(n.flags=c,(n.flags&255)!==Rl){e.msg="unknown compression method",n.mode=ge;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=ge;break}n.head&&(n.head.text=c>>8&1),n.flags&512&&n.wrap&4&&(b[0]=c&255,b[1]=c>>>8&255,n.check=Te(n.check,b,2,0)),c=0,l=0,n.mode=Nl;case Nl:for(;l<32;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}n.head&&(n.head.time=c),n.flags&512&&n.wrap&4&&(b[0]=c&255,b[1]=c>>>8&255,b[2]=c>>>16&255,b[3]=c>>>24&255,n.check=Te(n.check,b,4,0)),c=0,l=0,n.mode=zl;case zl:for(;l<16;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}n.head&&(n.head.xflags=c&255,n.head.os=c>>8),n.flags&512&&n.wrap&4&&(b[0]=c&255,b[1]=c>>>8&255,n.check=Te(n.check,b,2,0)),c=0,l=0,n.mode=Ol;case Ol:if(n.flags&1024){for(;l<16;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}n.length=c,n.head&&(n.head.extra_len=c),n.flags&512&&n.wrap&4&&(b[0]=c&255,b[1]=c>>>8&255,n.check=Te(n.check,b,2,0)),c=0,l=0}else n.head&&(n.head.extra=null);n.mode=Il;case Il:if(n.flags&1024&&(f=n.length,f>o&&(f=o),f&&(n.head&&(T=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(i.subarray(a,a+f),T)),n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,f,a)),o-=f,a+=f,n.length-=f),n.length))break e;n.length=0,n.mode=Cl;case Cl:if(n.flags&2048){if(o===0)break e;f=0;do T=i[a+f++],n.head&&T&&n.length<65536&&(n.head.name+=String.fromCharCode(T));while(T&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,f,a)),o-=f,a+=f,T)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=Pl;case Pl:if(n.flags&4096){if(o===0)break e;f=0;do T=i[a+f++],n.head&&T&&n.length<65536&&(n.head.comment+=String.fromCharCode(T));while(T&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,f,a)),o-=f,a+=f,T)break e}else n.head&&(n.head.comment=null);n.mode=Dl;case Dl:if(n.flags&512){for(;l<16;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(n.wrap&4&&c!==(n.check&65535)){e.msg="header crc mismatch",n.mode=ge;break}c=0,l=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=At;break;case Fl:for(;l<32;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}e.adler=n.check=jl(c),c=0,l=0,n.mode=zr;case zr:if(n.havedict===0)return e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=l,Xw;e.adler=n.check=1,n.mode=At;case At:if(t===Kw||t===xr)break e;case Ps:if(n.last){c>>>=l&7,l-=l&7,n.mode=Fs;break}for(;l<3;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}switch(n.last=c&1,c>>>=1,l-=1,c&3){case 0:n.mode=Ul;break;case 1:if(tA(n),n.mode=Tr,t===xr){c>>>=2,l-=2;break e}break;case 2:n.mode=Gl;break;case 3:e.msg="invalid block type",n.mode=ge}c>>>=2,l-=2;break;case Ul:for(c>>>=l&7,l-=l&7;l<32;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",n.mode=ge;break}if(n.length=c&65535,c=0,l=0,n.mode=Ds,t===xr)break e;case Ds:n.mode=Bl;case Bl:if(f=n.length,f){if(f>o&&(f=o),f>u&&(f=u),f===0)break e;r.set(i.subarray(a,a+f),s),o-=f,a+=f,u-=f,s+=f,n.length-=f;break}n.mode=At;break;case Gl:for(;l<14;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(n.nlen=(c&31)+257,c>>>=5,l-=5,n.ndist=(c&31)+1,c>>>=5,l-=5,n.ncode=(c&15)+4,c>>>=4,l-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=ge;break}n.have=0,n.mode=Hl;case Hl:for(;n.have<n.ncode;){for(;l<3;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}n.lens[j[n.have++]]=c&7,c>>>=3,l-=3}for(;n.have<19;)n.lens[j[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,S={bits:n.lenbits},O=vi(Ww,n.lens,0,19,n.lencode,0,n.work,S),n.lenbits=S.bits,O){e.msg="invalid code lengths set",n.mode=ge;break}n.have=0,n.mode=Vl;case Vl:for(;n.have<n.nlen+n.ndist;){for(;v=n.lencode[c&(1<<n.lenbits)-1],w=v>>>24,L=v>>>16&255,E=v&65535,!(w<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(E<16)c>>>=w,l-=w,n.lens[n.have++]=E;else{if(E===16){for(N=w+2;l<N;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(c>>>=w,l-=w,n.have===0){e.msg="invalid bit length repeat",n.mode=ge;break}T=n.lens[n.have-1],f=3+(c&3),c>>>=2,l-=2}else if(E===17){for(N=w+3;l<N;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}c>>>=w,l-=w,T=0,f=3+(c&7),c>>>=3,l-=3}else{for(N=w+7;l<N;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}c>>>=w,l-=w,T=0,f=11+(c&127),c>>>=7,l-=7}if(n.have+f>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=ge;break}for(;f--;)n.lens[n.have++]=T}}if(n.mode===ge)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=ge;break}if(n.lenbits=9,S={bits:n.lenbits},O=vi(zd,n.lens,0,n.nlen,n.lencode,0,n.work,S),n.lenbits=S.bits,O){e.msg="invalid literal/lengths set",n.mode=ge;break}if(n.distbits=6,n.distcode=n.distdyn,S={bits:n.distbits},O=vi(Od,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,S),n.distbits=S.bits,O){e.msg="invalid distances set",n.mode=ge;break}if(n.mode=Tr,t===xr)break e;case Tr:n.mode=Mr;case Mr:if(o>=6&&u>=258){e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=l,Fw(e,d),s=e.next_out,r=e.output,u=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,l=n.bits,n.mode===At&&(n.back=-1);break}for(n.back=0;v=n.lencode[c&(1<<n.lenbits)-1],w=v>>>24,L=v>>>16&255,E=v&65535,!(w<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(L&&(L&240)===0){for(y=w,k=L,x=E;v=n.lencode[x+((c&(1<<y+k)-1)>>y)],w=v>>>24,L=v>>>16&255,E=v&65535,!(y+w<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}c>>>=y,l-=y,n.back+=y}if(c>>>=w,l-=w,n.back+=w,n.length=E,L===0){n.mode=Yl;break}if(L&32){n.back=-1,n.mode=At;break}if(L&64){e.msg="invalid literal/length code",n.mode=ge;break}n.extra=L&15,n.mode=Wl;case Wl:if(n.extra){for(N=n.extra;l<N;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}n.length+=c&(1<<n.extra)-1,c>>>=n.extra,l-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Kl;case Kl:for(;v=n.distcode[c&(1<<n.distbits)-1],w=v>>>24,L=v>>>16&255,E=v&65535,!(w<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if((L&240)===0){for(y=w,k=L,x=E;v=n.distcode[x+((c&(1<<y+k)-1)>>y)],w=v>>>24,L=v>>>16&255,E=v&65535,!(y+w<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}c>>>=y,l-=y,n.back+=y}if(c>>>=w,l-=w,n.back+=w,L&64){e.msg="invalid distance code",n.mode=ge;break}n.offset=E,n.extra=L&15,n.mode=$l;case $l:if(n.extra){for(N=n.extra;l<N;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}n.offset+=c&(1<<n.extra)-1,c>>>=n.extra,l-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=ge;break}n.mode=Xl;case Xl:if(u===0)break e;if(f=d-u,n.offset>f){if(f=n.offset-f,f>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=ge;break}f>n.wnext?(f-=n.wnext,g=n.wsize-f):g=n.wnext-f,f>n.length&&(f=n.length),p=n.window}else p=r,g=s-n.offset,f=n.length;f>u&&(f=u),u-=f,n.length-=f;do r[s++]=p[g++];while(--f);n.length===0&&(n.mode=Mr);break;case Yl:if(u===0)break e;r[s++]=n.length,u--,n.mode=Mr;break;case Fs:if(n.wrap){for(;l<32;){if(o===0)break e;o--,c|=i[a++]<<l,l+=8}if(d-=u,e.total_out+=d,n.total+=d,n.wrap&4&&d&&(e.adler=n.check=n.flags?Te(n.check,r,d,s-d):Ei(n.check,r,d,s-d)),d=u,n.wrap&4&&(n.flags?c:jl(c))!==n.check){e.msg="incorrect data check",n.mode=ge;break}c=0,l=0}n.mode=ql;case ql:if(n.wrap&&n.flags){for(;l<32;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(n.wrap&4&&c!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=ge;break}c=0,l=0}n.mode=Zl;case Zl:O=$w;break e;case ge:O=Id;break e;case Pd:return Cd;case Dd:default:return Ze}return e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=l,(n.wsize||d!==e.avail_out&&n.mode<ge&&(n.mode<Fs||t!==Ml))&&Hd(e,e.output,e.next_out,d-e.avail_out),m-=e.avail_in,d-=e.avail_out,e.total_in+=m,e.total_out+=d,n.total+=d,n.wrap&4&&d&&(e.adler=n.check=n.flags?Te(n.check,r,d,e.next_out-d):Ei(n.check,r,d,e.next_out-d)),e.data_type=n.bits+(n.last?64:0)+(n.mode===At?128:0)+(n.mode===Tr||n.mode===Ds?256:0),(m===0&&d===0||t===Ml)&&O===rn&&(O=Yw),O},iA=e=>{if(sn(e))return Ze;let t=e.state;return t.window&&(t.window=null),e.state=null,rn},rA=(e,t)=>{if(sn(e))return Ze;let n=e.state;return(n.wrap&2)===0?Ze:(n.head=t,t.done=!1,rn)},aA=(e,t)=>{let n=t.length,i,r,a;return sn(e)||(i=e.state,i.wrap!==0&&i.mode!==zr)?Ze:i.mode===zr&&(r=1,r=Ei(r,t,n,0),r!==i.check)?Id:(a=Hd(e,t,n,n),a?(i.mode=Pd,Cd):(i.havedict=1,rn))},sA=Ud,oA=Bd,cA=Fd,uA=eA,lA=Gd,dA=nA,mA=iA,hA=rA,fA=aA,_A="pako inflate (from Nodeca project)",Et={inflateReset:sA,inflateReset2:oA,inflateResetKeep:cA,inflateInit:uA,inflateInit2:lA,inflate:dA,inflateEnd:mA,inflateGetHeader:hA,inflateSetDictionary:fA,inflateInfo:_A};function gA(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var vA=gA,Vd=Object.prototype.toString,{Z_NO_FLUSH:pA,Z_FINISH:yA,Z_OK:xi,Z_STREAM_END:Gs,Z_NEED_DICT:Hs,Z_STREAM_ERROR:wA,Z_DATA_ERROR:Ql,Z_MEM_ERROR:AA}=an;function Li(e){this.options=Wr.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15)===0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ld,this.strm.avail_out=0;let n=Et.inflateInit2(this.strm,t.windowBits);if(n!==xi)throw new Error(tn[n]);if(this.header=new vA,Et.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=bi.string2buf(t.dictionary):Vd.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=Et.inflateSetDictionary(this.strm,t.dictionary),n!==xi)))throw new Error(tn[n])}Li.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r=this.options.dictionary,a,s,o;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?yA:pA,Vd.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),a=Et.inflate(n,s),a===Hs&&r&&(a=Et.inflateSetDictionary(n,r),a===xi?a=Et.inflate(n,s):a===Ql&&(a=Hs));n.avail_in>0&&a===Gs&&n.state.wrap>0&&e[n.next_in]!==0;)Et.inflateReset(n),a=Et.inflate(n,s);switch(a){case wA:case Ql:case Hs:case AA:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===Gs))if(this.options.to==="string"){let u=bi.utf8border(n.output,n.next_out),c=n.next_out-u,l=bi.buf2string(n.output,u);n.next_out=c,n.avail_out=i-c,c&&n.output.set(n.output.subarray(u,u+c),0),this.onData(l)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(a===xi&&o===0)){if(a===Gs)return a=Et.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};Li.prototype.onData=function(e){this.chunks.push(e)};Li.prototype.onEnd=function(e){e===xi&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Wr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function uo(e,t){let n=new Li(t);if(n.push(e),n.err)throw n.msg||tn[n.err];return n.result}function SA(e,t){return t=t||{},t.raw=!0,uo(e,t)}var EA=Li,kA=uo,bA=SA,xA=uo,TA=an,MA={Inflate:EA,inflate:kA,inflateRaw:bA,ungzip:xA,constants:TA},{Deflate:RA,deflate:LA,deflateRaw:NA,gzip:zA}=Pw,{Inflate:OA,inflate:IA,inflateRaw:CA,ungzip:PA}=MA,DA=RA,FA=LA,UA=NA,BA=zA,GA=OA,HA=IA,VA=CA,WA=PA,KA=an,ed={Deflate:DA,deflate:FA,deflateRaw:UA,gzip:BA,Inflate:GA,inflate:HA,inflateRaw:VA,ungzip:WA,constants:KA},Or=2023,lo=1,mo=2,ho=4,fo=8,_o=16,go=32,Wd=64,$A=128,XA=256,vo=512,po=1024,yo=2048,Ir=4096,wo=8192,Cr=16384,YA=32768,Pr=65536,Ao=1<<17,Dr=1<<18,Fr=1<<19,So=1<<20,Eo=1<<21,ko=1<<22,qA=1<<23,bo=1<<24,Ur=1<<25,xo=1<<26,To=1<<27,Mo=1<<28,Ro=1<<29,Lo=1<<30,ZA=-2147483648,No=1,zo=2,Oo=4,jA=1,JA=2,QA=128,bn=()=>({number:0,modelindex:0,modelindex2:0,modelindex3:0,modelindex4:0,frame:0,skinnum:0,effects:0,renderfx:0,origin:{x:0,y:0,z:0},old_origin:{x:0,y:0,z:0},angles:{x:0,y:0,z:0},sound:0,event:0,solid:0,bits:0,bitsHigh:0,alpha:0,scale:0,instanceBits:0,loopVolume:0,loopAttenuation:0,owner:0,oldFrame:0}),td=()=>({pm_type:0,origin:{x:0,y:0,z:0},velocity:{x:0,y:0,z:0},pm_time:0,pm_flags:0,gravity:0,delta_angles:{x:0,y:0,z:0},viewoffset:{x:0,y:0,z:0},viewangles:{x:0,y:0,z:0},kick_angles:{x:0,y:0,z:0},gun_index:0,gun_frame:0,gun_offset:{x:0,y:0,z:0},gun_angles:{x:0,y:0,z:0},blend:[0,0,0,0],fov:0,rdflags:0,stats:new Array(32).fill(0),gunskin:0,gunrate:0,damage_blend:[0,0,0,0],team_id:0}),Io=class Kd{constructor(t,n){this.protocolVersion=0,this.isDemo=jA,this.stream=t,this.handler=n}setProtocolVersion(t){this.protocolVersion=t}getProtocolVersion(){return this.protocolVersion}translateCommand(t){return this.protocolVersion===0&&(t===7||t===12)?J.serverdata:this.protocolVersion===Or?t:this.protocolVersion===34||this.protocolVersion===25?t<=J.frame?t:J.bad:(this.protocolVersion===0,t)}parseMessage(){for(;this.stream.hasMore();){let t=this.stream.readByte();if(t===-1)break;let n=t;t=this.translateCommand(t);try{switch(t){case J.bad:return;case J.nop:break;case J.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case J.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case J.print:this.parsePrint();break;case J.serverdata:this.parseServerData();break;case J.configstring:this.parseConfigString();break;case J.spawnbaseline:this.parseSpawnBaseline();break;case J.centerprint:this.parseCenterPrint();break;case J.download:this.parseDownload();break;case J.frame:this.parseFrame();break;case J.packetentities:this.parsePacketEntities(!1);break;case J.deltapacketentities:this.parsePacketEntities(!0);break;case J.playerinfo:this.parsePlayerState();break;case J.stufftext:this.parseStuffText();break;case J.layout:this.parseLayout();break;case J.inventory:this.parseInventory();break;case J.sound:this.parseSound();break;case J.muzzleflash:this.parseMuzzleFlash();break;case J.muzzleflash2:this.parseMuzzleFlash2();break;case J.temp_entity:this.parseTempEntity();break;case J.splitclient:this.parseSplitClient();break;case J.configblast:this.parseConfigBlast();break;case J.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case J.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case J.damage:this.parseDamage();break;case J.locprint:this.parseLocPrint();break;case J.fog:this.parseFog();break;case J.waitingforplayers:this.parseWaitingForPlayers();break;case J.bot_chat:this.parseBotChat();break;case J.poi:this.parsePoi();break;case J.help_path:this.parseHelpPath();break;case J.muzzleflash3:this.parseMuzzleFlash3();break;case J.achievement:this.parseAchievement();break;default:console.warn(`Unknown server command: ${n} (translated: ${t}) at offset ${this.stream.getPosition()-1}`);return}}catch(i){console.warn(`Error parsing command ${t}: ${i.message}`);return}}}parsePrint(){let t=this.stream.readByte(),n=this.stream.readString();this.handler&&this.handler.onPrint(t,n)}parseStuffText(){let t=this.stream.readString();this.handler&&this.handler.onStuffText(t)}parseLayout(){let t=this.stream.readString();this.handler&&this.handler.onLayout(t)}parseCenterPrint(){let t=this.stream.readString();this.handler&&this.handler.onCenterPrint(t)}parseServerData(){if(this.protocolVersion=this.stream.readLong(),this.protocolVersion===Or){let t=this.stream.readLong(),n=this.stream.readByte();this.isDemo=n;let i=this.stream.readByte(),r=this.stream.readString(),a=this.stream.readShort();if(a===-2){let o=this.stream.readShort();for(let u=0;u<o;u++)this.stream.readShort();a=0}else a===-1&&(a=-1);let s=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,0,r,a,s,i,n):console.log(`Server Data (Rerelease): Protocol ${this.protocolVersion}, Level ${s}, Tick ${i}`)}else{let t=this.stream.readLong();this.isDemo=this.stream.readByte();let n=0,i=this.stream.readString(),r=this.stream.readShort(),a=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,n,i,r,a):console.log(`Server Data: Protocol ${this.protocolVersion}, Level ${a}, GameDir ${i}`)}}parseConfigString(){let t=this.stream.readShort(),n=this.stream.readString();this.handler&&this.handler.onConfigString(t,n)}parseSplitClient(){let t=this.stream.readByte();this.handler&&this.handler.onSplitClient&&this.handler.onSplitClient(t)}parseConfigBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=ed.inflate(i);r.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new Ws(r.buffer);for(;a.hasMore();){let s=a.readUShort(),o=a.readString();this.handler&&this.handler.onConfigString(s,o)}}catch(r){console.error("svc_configblast: Failed to decompress data",r)}}parseSpawnBaselineBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=ed.inflate(i);r.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new Ws(r.buffer),s=new Kd(a,this.handler);for(;a.hasMore();)s.parseSpawnBaseline()}catch(r){console.error("svc_spawnbaselineblast: Failed to decompress data",r)}}parseLocPrint(){let t=this.stream.readByte(),n=this.stream.readString(),i=this.stream.readByte(),r=[];for(let a=0;a<i;a++)r.push(this.stream.readString());this.handler&&this.handler.onLocPrint&&this.handler.onLocPrint(t,n,r)}parseWaitingForPlayers(){let t=this.stream.readByte();this.handler&&this.handler.onWaitingForPlayers&&this.handler.onWaitingForPlayers(t)}parseBotChat(){let t=this.stream.readString(),n=this.stream.readShort(),i=this.stream.readString();this.handler&&this.handler.onBotChat&&this.handler.onBotChat(i)}parsePoi(){let t=this.stream.readUShort(),n=this.stream.readUShort(),i={x:0,y:0,z:0};this.stream.readPos(i);let r=this.stream.readUShort(),a=this.stream.readByte(),s=this.stream.readByte();this.handler&&this.handler.onPoi&&this.handler.onPoi(s,i)}parseHelpPath(){let t=this.stream.readByte(),n={x:0,y:0,z:0};this.stream.readPos(n);let i={x:0,y:0,z:0};this.stream.readDir(i),this.handler&&this.handler.onHelpPath&&this.handler.onHelpPath(n)}parseAchievement(){let t=this.stream.readString();this.handler&&this.handler.onAchievement&&this.handler.onAchievement(t)}parseDownload(){let t=this.stream.readShort(),n=this.stream.readByte(),i;t>0&&(i=this.stream.readData(t)),this.handler&&this.handler.onDownload(t,n,i)}parseInventory(){let n=new Array(256);for(let i=0;i<256;i++)n[i]=this.stream.readShort();this.handler&&this.handler.onInventory(n)}parseSound(){let t=this.stream.readByte(),n=this.stream.readByte(),i,r,a,s,o;if(t&1&&(i=this.stream.readByte()),t&2&&(r=this.stream.readByte()),t&16&&(a=this.stream.readByte()),t&8&&(s=this.stream.readShort()),t&4){let u={x:0,y:0,z:0};this.stream.readPos(u),o=u}this.handler&&this.handler.onSound(t,n,i,r,a,s,o)}parseMuzzleFlash(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(t,n)}parseMuzzleFlash2(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(t,n)}parseMuzzleFlash3(){let t=this.stream.readShort(),n=this.stream.readShort();this.handler&&this.handler.onMuzzleFlash3&&this.handler.onMuzzleFlash3(t,n)}parseFog(){let t=this.stream.readByte();if(t&128){let i=this.stream.readByte();t|=i<<8}let n={};t&1&&(n.density=this.stream.readFloat(),n.skyfactor=this.stream.readByte()),t&2&&(n.red=this.stream.readByte()),t&4&&(n.green=this.stream.readByte()),t&8&&(n.blue=this.stream.readByte()),t&16&&(n.time=this.stream.readShort()),t&32&&(n.hf_falloff=this.stream.readFloat()),t&64&&(n.hf_density=this.stream.readFloat()),t&256&&(n.hf_start_r=this.stream.readByte()),t&512&&(n.hf_start_g=this.stream.readByte()),t&1024&&(n.hf_start_b=this.stream.readByte()),t&2048&&(n.hf_start_dist=this.stream.readLong()),t&4096&&(n.hf_end_r=this.stream.readByte()),t&8192&&(n.hf_end_g=this.stream.readByte()),t&16384&&(n.hf_end_b=this.stream.readByte()),t&32768&&(n.hf_end_dist=this.stream.readLong()),this.handler&&this.handler.onFog&&this.handler.onFog(n)}parseDamage(){let t=this.stream.readByte(),n=[];for(let i=0;i<t;i++){let r=this.stream.readByte(),a={x:0,y:0,z:0};this.stream.readDir(a);let s=r&31,o=(r&32)!==0,u=(r&64)!==0,c=(r&128)!==0;n.push({damage:s,health:o,armor:u,power:c,dir:a})}this.handler&&this.handler.onDamage&&this.handler.onDamage(n)}parseTempEntity(){let t=this.stream.readByte(),n={x:0,y:0,z:0},i={x:0,y:0,z:0},r={x:0,y:0,z:0},a,s,o,u,c;switch(t){case B.EXPLOSION1:case B.EXPLOSION2:case B.ROCKET_EXPLOSION:case B.GRENADE_EXPLOSION:case B.ROCKET_EXPLOSION_WATER:case B.GRENADE_EXPLOSION_WATER:case B.BFG_EXPLOSION:case B.BFG_BIGEXPLOSION:case B.BOSSTPORT:case B.PLASMA_EXPLOSION:case B.PLAIN_EXPLOSION:case B.CHAINFIST_SMOKE:case B.TRACKER_EXPLOSION:case B.TELEPORT_EFFECT:case B.DBALL_GOAL:case B.NUKEBLAST:case B.WIDOWSPLASH:case B.EXPLOSION1_BIG:case B.EXPLOSION1_NP:this.stream.readPos(n);break;case B.GUNSHOT:case B.BLOOD:case B.BLASTER:case B.SHOTGUN:case B.SPARKS:case B.BULLET_SPARKS:case B.SCREEN_SPARKS:case B.SHIELD_SPARKS:case B.BLASTER2:case B.FLECHETTE:case B.MOREBLOOD:case B.ELECTRIC_SPARKS:case B.HEATBEAM_SPARKS:case B.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(r);break;case B.SPLASH:case B.LASER_SPARKS:case B.WELDING_SPARKS:case B.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte();break;case B.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(i)):(this.stream.readPos(n),this.stream.readDir(r));break;case B.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(r)):(this.stream.readPos(n),this.stream.readPos(i));break;case B.RAILTRAIL:case B.BUBBLETRAIL:case B.BFG_LASER:case B.DEBUGTRAIL:case B.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(i);break;case B.PARASITE_ATTACK:case B.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case B.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;case B.LIGHTNING:u=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case B.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case B.FORCEWALL:this.stream.readPos(n),this.stream.readPos(i),s=this.stream.readByte();break;case B.STEAM:let l=this.stream.readShort();a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte(),this.stream.readShort(),l!==-1&&this.stream.readLong();break;case B.WIDOWBEAMOUT:this.stream.readShort();case B.HEATBEAM:case B.MONSTER_HEATBEAM:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;default:break}this.handler&&this.handler.onTempEntity(t,n,i,r,a,s,o,u,c)}parseSpawnBaseline(){let t=this.parseEntityBits(),n=bn();this.parseDelta(bn(),n,t.number,t.bits,t.bitsHigh),this.handler&&this.handler.onSpawnBaseline(n)}parseFrame(){let t=this.stream.readLong(),n=this.stream.readLong(),i=this.stream.readByte(),r=this.stream.readByte(),a=this.stream.readData(r),s=this.stream.readByte();if(s=this.translateCommand(s),s!==J.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s} (translated)`);let o=this.parsePlayerState();if(this.isDemo===QA){let u=this.stream.readByte();for(let c=0;c<u;c++)this.stream.readByte()}this.isDemo===JA&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:n,surpressCount:i,areaBytes:r,areaBits:a,playerState:o,packetEntities:{delta:!1,entities:[]}})}parsePlayerState(){let t=td(),n=this.stream.readShort();n&1&&(t.pm_type=this.stream.readByte()),n&2&&(t.origin.x=this.stream.readShort()*.125,t.origin.y=this.stream.readShort()*.125,t.origin.z=this.stream.readShort()*.125),n&4&&(t.velocity.x=this.stream.readShort()*.125,t.velocity.y=this.stream.readShort()*.125,t.velocity.z=this.stream.readShort()*.125),n&8&&(t.pm_time=this.stream.readByte()),n&16&&(t.pm_flags=this.stream.readByte()),n&32&&(t.gravity=this.stream.readShort()),n&64&&(t.delta_angles.x=this.stream.readShort()*(180/32768),t.delta_angles.y=this.stream.readShort()*(180/32768),t.delta_angles.z=this.stream.readShort()*(180/32768)),n&128&&(t.viewoffset.x=this.stream.readChar()*.25,t.viewoffset.y=this.stream.readChar()*.25,t.viewoffset.z=this.stream.readChar()*.25),n&256&&(t.viewangles.x=this.stream.readAngle16(),t.viewangles.y=this.stream.readAngle16(),t.viewangles.z=this.stream.readAngle16()),n&512&&(t.kick_angles.x=this.stream.readChar()*.25,t.kick_angles.y=this.stream.readChar()*.25,t.kick_angles.z=this.stream.readChar()*.25),n&4096&&(t.gun_index=this.stream.readByte()),n&8192&&(t.gun_frame=this.stream.readByte(),t.gun_offset.x=this.stream.readChar()*.25,t.gun_offset.y=this.stream.readChar()*.25,t.gun_offset.z=this.stream.readChar()*.25,t.gun_angles.x=this.stream.readChar()*.25,t.gun_angles.y=this.stream.readChar()*.25,t.gun_angles.z=this.stream.readChar()*.25),n&1024&&(t.blend[0]=this.stream.readByte(),t.blend[1]=this.stream.readByte(),t.blend[2]=this.stream.readByte(),t.blend[3]=this.stream.readByte()),n&2048&&(t.fov=this.stream.readByte()),n&16384&&(t.rdflags=this.stream.readByte());let i=this.stream.readLong();for(let r=0;r<32;r++)i&1<<r&&(t.stats[r]=this.stream.readShort());return t}parsePacketEntities(t){let n=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:td(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let i=bn();this.parseDelta(bn(),i,n.number,n.bits,n.bitsHigh),t.push(i)}return t}parseEntityBits(){let t=this.stream.readByte();t&$A&&(t|=this.stream.readByte()<<8),t&YA&&(t|=this.stream.readByte()<<16),t&qA&&(t|=this.stream.readByte()<<24);let n=0;t&ZA&&(n=this.stream.readByte());let i;return t&XA?i=this.stream.readShort():i=this.stream.readByte(),{number:i,bits:t,bitsHigh:n}}parseDelta(t,n,i,r,a=0){n.number=t.number,n.modelindex=t.modelindex,n.modelindex2=t.modelindex2,n.modelindex3=t.modelindex3,n.modelindex4=t.modelindex4,n.frame=t.frame,n.skinnum=t.skinnum,n.effects=t.effects,n.renderfx=t.renderfx,n.origin.x=t.origin.x,n.origin.y=t.origin.y,n.origin.z=t.origin.z,n.old_origin.x=t.origin.x,n.old_origin.y=t.origin.y,n.old_origin.z=t.origin.z,n.angles.x=t.angles.x,n.angles.y=t.angles.y,n.angles.z=t.angles.z,n.sound=t.sound,n.event=t.event,n.solid=t.solid,n.alpha=t.alpha,n.scale=t.scale,n.instanceBits=t.instanceBits,n.loopVolume=t.loopVolume,n.loopAttenuation=t.loopAttenuation,n.owner=t.owner,n.oldFrame=t.oldFrame,n.number=i,n.bits=r,n.bitsHigh=a,r&yo&&(n.modelindex=this.stream.readByte()),r&So&&(n.modelindex2=this.stream.readByte()),r&Eo&&(n.modelindex3=this.stream.readByte()),r&ko&&(n.modelindex4=this.stream.readByte()),r&_o&&(n.frame=this.stream.readByte()),r&Ao&&(n.frame=this.stream.readShort()),r&Pr&&r&Ur?n.skinnum=this.stream.readLong():r&Pr?n.skinnum=this.stream.readByte():r&Ur&&(n.skinnum=this.stream.readShort()),r&Cr&&r&Fr?n.effects=this.stream.readLong():r&Cr?n.effects=this.stream.readByte():r&Fr&&(n.effects=this.stream.readShort()),r&Ir&&r&Dr?n.renderfx=this.stream.readLong():r&Ir?n.renderfx=this.stream.readByte():r&Dr&&(n.renderfx=this.stream.readShort()),r&lo&&(n.origin.x=this.stream.readCoord()),r&mo&&(n.origin.y=this.stream.readCoord()),r&vo&&(n.origin.z=this.stream.readCoord()),r&po&&(n.angles.x=this.stream.readAngle()),r&ho&&(n.angles.y=this.stream.readAngle()),r&fo&&(n.angles.z=this.stream.readAngle()),r&bo&&this.stream.readPos(n.old_origin),r&xo&&(n.sound=this.stream.readByte()),r&go?n.event=this.stream.readByte():n.event=0,r&To&&(n.solid=this.stream.readShort()),r&wo&&(n.alpha=this.stream.readByte()/255),r&Mo&&(n.scale=this.stream.readFloat()),r&Ro&&(n.instanceBits=this.stream.readLong()),r&Lo&&(n.loopVolume=this.stream.readByte()/255),a&No&&(n.loopAttenuation=this.stream.readByte()/255),a&zo&&(n.owner=this.stream.readShort()),a&Oo&&(n.oldFrame=this.stream.readShort())}};var $d=class{constructor(){this.reader=null,this.state=0,this.playbackSpeed=1,this.currentProtocolVersion=0,this.accumulatedTime=0,this.frameDuration=100}setHandler(e){this.handler=e}loadDemo(e){this.reader=new Yp(e),this.state=0,this.accumulatedTime=0,this.currentProtocolVersion=0}play(){this.reader&&(this.state=1)}pause(){this.state===1&&(this.state=2)}stop(){this.state=0,this.reader&&this.reader.reset(),this.accumulatedTime=0,this.currentProtocolVersion=0}setFrameDuration(e){this.frameDuration=e}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.reader.hasMore()){this.state=3;return}let t=this.reader.readNextBlock();if(!t){this.state=3;return}let n=new Io(t.data,this.handler);n.setProtocolVersion(this.currentProtocolVersion),n.parseMessage(),this.currentProtocolVersion=n.getProtocolVersion(),this.accumulatedTime-=this.frameDuration}}getState(){return this.state}getCurrentTime(){return this.accumulatedTime}};var eS=Object.defineProperty,Xd=(e,t)=>{for(var n in t)eS(e,n,{get:t[n],enumerable:!0})},Ut={x:0,y:0,z:0};var TC=Math.PI/180;function $r(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function Yr(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function zi(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function tS(e){return zi(e,e)}function qr(e){return Math.sqrt(tS(e))}function Yd(e){let t=qr(e);return t===0?e:Yr(e,1/t)}var qd=0,Zd=1,jd=2,nS=Math.PI/180,MC=180/Math.PI;function Co(e,t){switch(t){case qd:return e.x;case Zd:return e.y;case jd:default:return e.z}}function Po(e){return e*nS}function On(e){let t=e%360;return t<0?360+t:t}function Zr(e){let t=Po(Co(e,Zd)),n=Po(Co(e,qd)),i=Po(Co(e,jd)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),u=Math.sin(i),c=Math.cos(i),l={x:o*a,y:o*r,z:-s},m={x:-u*s*a-c*-r,y:-u*s*r-c*a,z:-u*o},d={x:c*s*a-u*-r,y:c*s*r-u*a,z:c*o};return{forward:l,right:m,up:d}}var zn=[[-.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]];var lt=1,Bt=2;var Uo=8,Bo=16,iS=32;var rS=16384;var jr=65536,Jd=1<<17,aS=1<<18,sS=1<<19,oS=1<<20,cS=1<<21,uS=1<<22,lS=1<<23,RC=1<<24,Jr=1<<25,dS=1<<26,LC=1<<27,NC=1<<28,zC=1<<29,Qr=1<<30,OC=1<<31;var IC=1<<25,CC=1<<28,PC=1<<29,DC=1<<30,FC=1<<31;var UC=lt|Bt,BC=lt|jr|Bt|Jr|Qr,GC=lt|jr|Bt,HC=lt|Jd|Bt|Jr|Qr,VC=iS|Uo|Bo,WC=lt|Bo|Uo,mS=lt|Jr|Qr|Bt|dS,KC=aS|sS|oS|cS|uS|lS,$C=lt|Uo|Bo|Jr|Qr,XC=lt|jr|Bt,YC=lt|Bt,qC=lt|jr|Bt|Jd,ZC=mS|rS;var jC=Number.MAX_SAFE_INTEGER-1;var Oi=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(Oi||{});var Qd=256;var hS=256,Ii=8192,Ci=2048,Pi=512,fS=256,_S=Qd*2,gS=256,Do=32;var ye=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.HealthBarName=55]="HealthBarName",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+Ii]="Sounds",e[e.Images=e.Sounds+Ci]="Images",e[e.Lights=e.Images+Pi]="Lights",e[e.ShadowLights=e.Lights+hS]="ShadowLights",e[e.Items=e.ShadowLights+gS]="Items",e[e.PlayerSkins=e.Items+fS]="PlayerSkins",e[e.General=e.PlayerSkins+Qd]="General",e[e.WheelWeapons=e.General+_S]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Do]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Do]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Do]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ye||{}),JC=ye.MaxConfigStrings;var vS={};Xd(vS,{addReplayFrame:()=>AS,createReplaySession:()=>wS,deserializeReplay:()=>yS,serializeReplay:()=>pS});function pS(e){return JSON.stringify(e,null,2)}function yS(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function wS(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function AS(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var Di=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(Di||{});var kt=(e=>(e[e.Ducked=1]="Ducked",e[e.JumpHeld=2]="JumpHeld",e[e.OnGround=4]="OnGround",e[e.TimeWaterJump=8]="TimeWaterJump",e[e.TimeLand=16]="TimeLand",e[e.TimeTeleport=32]="TimeTeleport",e[e.NoPositionalPrediction=64]="NoPositionalPrediction",e[e.OnLadder=128]="OnLadder",e[e.NoAngularPrediction=256]="NoAngularPrediction",e[e.IgnorePlayerCollision=512]="IgnorePlayerCollision",e[e.TimeTrick=1024]="TimeTrick",e))(kt||{});function Cn(e,t){return(e&t)!==0}var ea=(e=>(e[e.Normal=0]="Normal",e[e.Grapple=1]="Grapple",e[e.NoClip=2]="NoClip",e[e.Spectator=3]="Spectator",e[e.Dead=4]="Dead",e[e.Gib=5]="Gib",e[e.Freeze=6]="Freeze",e))(ea||{}),dt=(e=>(e[e.None=0]="None",e[e.Attack=1]="Attack",e[e.Use=2]="Use",e[e.Holster=4]="Holster",e[e.Jump=8]="Jump",e[e.Crouch=16]="Crouch",e[e.Any=128]="Any",e))(dt||{});function SS(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:u,pmWaterFriction:c}=e,l=qr(t);if(l<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let g=l<u?u:l;m+=g*o*n}s>0&&!a&&(m+=l*c*s*n);let d=l-m;if(d<0&&(d=0),d===l)return t;let f=d/l;return Yr(t,f)}function ES(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=zi(t,n),o=i-s;if(o<=0)return t;let u=r*a*i;return u>o&&(u=o),{x:t.x+n.x*u,y:t.y+n.y*u,z:t.z+n.z*u}}function kS(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=qr(a);if(s>r){let o=r/s;a=Yr(a,o),s=r}return{wishdir:s===0?a:Yd(a),wishspeed:s}}function bS(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:t.z*i.forwardmove+n.z*i.sidemove};i.upmove>10?a=$r(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=$r(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=$r(a,{x:0,y:0,z:-60}):a=$r(a,{x:0,y:0,z:10});let s=qr(a);if(s>r){let o=r/s;a=Yr(a,o),s=r}return s*=.5,{wishdir:s===0?a:Yd(a),wishspeed:s}}function xS(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function TS(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function Go(e){let{pmFlags:t,cmdAngles:n,deltaAngles:i}=e,r;(t&32)!==0?r={x:0,y:n.y+i.y,z:0}:(r=xS(n,i),r={...r,x:TS(r.x)});let a=Zr(r);return{viewangles:r,...a}}var em=200,tm=200,nm=200,im=140,rm=150,am=3;function MS(e){let t=On(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function sm(e,t){return{x:MS(e.x+t.x),y:On(e.y+t.y),z:On(e.z+t.z)}}function om(e,t){let n=t.sensitivityX??t.sensitivity,i=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*i,y:e.deltaX*n,z:0}}var on=(e=>(e[e.bad=0]="bad",e[e.nop=1]="nop",e[e.move=2]="move",e[e.userinfo=3]="userinfo",e[e.stringcmd=4]="stringcmd",e))(on||{});var cm=64;var um=0,lm=1,dm=2,mm=3,hm=4,fm=5,_m=6,gm=7,vm=8;var pm=11,ym=12,wm=13;function RS(e,t,n){let i=Math.floor(n/2),r=n%2!==0,a=t+i,s=e[a]||0;if(r){let o=e[a+1]||0,u=s>>>8&255;return(o&255)<<8|u}else return s&65535}function Am(e,t,n,i){let r=i*n,a=Math.floor(r/8),s=r%8,o=(1<<i)-1<<s;return(RS(e,t,a)&o)>>>s}var Fi=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(Fi||{}),Ce=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(Ce||{}),Sm=12,Em=9,QC=Math.ceil(Sm*Em/16),km=23,bm=2,e7=Math.ceil(km*bm/16),LS={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,bandolier:10,ammo_pack:10,ir_goggles:11,double_damage:12,sphere_vengeance:13,sphere_hunter:14,sphere_defender:15,doppelganger:16,flashlight:17,compass:18,tech_resistance:19,tech_strength:20,tech_haste:21,tech_regeneration:22,tag_token:-1};function xm(e,t){return t<0||t>=Sm?0:Am(e,34,t,Em)}function ta(e,t){let n;return typeof t=="number"?n=t:n=LS[t],n===void 0||n<0||n>=km?0:Am(e,41,n,bm)}function Tm(e,t){e.writeByte(t.msec),e.writeByte(t.buttons),e.writeAngle16(t.angles.x),e.writeAngle16(t.angles.y),e.writeAngle16(t.angles.z),e.writeShort(t.forwardmove),e.writeShort(t.sidemove),e.writeShort(t.upmove),e.writeByte(0),e.writeByte(0)}var NS={};Xd(NS,{U_ANGLE1:()=>FS,U_ANGLE2:()=>US,U_ANGLE3:()=>BS,U_EFFECTS:()=>VS,U_EVENT:()=>$S,U_FRAME:()=>GS,U_MODEL:()=>OS,U_MODEL2:()=>YS,U_MODEL3:()=>qS,U_MODEL4:()=>ZS,U_MOREBITS:()=>XS,U_NUMBER:()=>zS,U_ORIGIN1:()=>CS,U_ORIGIN2:()=>PS,U_ORIGIN3:()=>DS,U_REMOVE:()=>jS,U_RENDERFX:()=>WS,U_SKIN:()=>HS,U_SOLID:()=>KS,U_SOUND:()=>IS});var zS=1,OS=2,IS=4,CS=8,PS=16,DS=32,FS=64,US=128,BS=256,GS=512,HS=1024,VS=2048,WS=4096,KS=8192,$S=16384,XS=32768,YS=1,qS=2,ZS=4,jS=32768,Ni=.025,Fo=33554432,Xr={None:0,Feet:1,Waist:2,Under:3},JS=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},QS=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&Fo))return{...e,waterLevel:Xr.None};let s=Xr.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&Fo){s=Xr.Waist;let c=e.origin.z+22;n.z=c,t(n)&Fo&&(s=Xr.Under)}return{...e,waterLevel:s}},Ho=(e,t,n,i)=>{let r={...e};r=JS(r,n),r=QS(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:u,viewAngles:c}=r,l=u>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:m,right:d}=Zr(l),f=SS({velocity:s,frametime:Ni,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:u,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=u>=2?bS({forward:m,right:d,cmd:t,maxSpeed:320}):kS({forward:m,right:d,cmd:t,maxSpeed:320}),p=ES({velocity:f,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||u>=2?10:1,frametime:Ni}),v=n(a,{x:a.x+p.x*Ni,y:a.y+p.y*Ni,z:a.z+p.z*Ni});return{...r,origin:v.endpos,velocity:p}},Mm=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=zn[t];e.x=n[0],e.y=n[1],e.z=n[2]}},Vo=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let i=0;i<zn.length;i++){let r=zn[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},Ui=class{constructor(e=1024){this.buffer=new Uint8Array(e),this.view=new DataView(this.buffer.buffer),this.offset=0}ensureCapacity(e){if(this.offset+e>this.buffer.length){let t=Math.max(this.buffer.length*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer)}}getData(){return this.buffer.slice(0,this.offset)}writeByte(e){this.ensureCapacity(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureCapacity(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureCapacity(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeUShort(e){this.ensureCapacity(2),this.view.setUint16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureCapacity(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureCapacity(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length+1;this.ensureCapacity(t);for(let n=0;n<e.length;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+e.length,0),this.offset+=t}writeData(e){this.ensureCapacity(e.length),this.buffer.set(e,this.offset),this.offset+=e.length}writeCoord(e){this.writeShort(Math.round(e*8))}writeAngle(e){this.writeByte(Math.round(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.round(e*65536/360))}writeDir(e,t,n){let i=0,r=-999999,a=Math.sqrt(e*e+t*t+n*n);if(a>0){e/=a,t/=a,n/=a;for(let s=0;s<162;s++){let o=e*zn[s][0]+t*zn[s][1]+n*zn[s][2];o>r&&(r=o,i=s)}}this.writeByte(i)}},In=class Ie{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new Vo(Ie.MAX_MSGLEN);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=Ie.PACKET_HEADER,i=this.reliableLength>0?this.reliableLength+2:0,r=t?t.length:0;n+i+r>Ie.MAX_MSGLEN&&(r=Ie.MAX_MSGLEN-n-i,r<0&&(r=0));let a=new ArrayBuffer(n+i+r),s=new DataView(a),o=new Uint8Array(a),u=this.outgoingSequence;this.reliableLength>0&&(u|=2147483648,(this.outgoingReliableSequence&1)!==0&&(u|=1073741824)),s.setUint32(0,u,!0);let c=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(c|=2147483648),s.setUint32(4,c,!0),s.setUint16(8,this.qport,!0);let l=n;if(this.reliableLength>0){s.setUint16(l,this.reliableLength,!0),l+=2;let d=this.reliableMessage.getBuffer().subarray(0,this.reliableLength);o.set(d,l),l+=this.reliableLength}if(t&&r>0){let m=t.slice(0,r);o.set(m,l)}return o}process(t){if(t.length<Ie.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,u=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let g=u?1:0,p=this.outgoingReliableSequence&1;g!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1)}let c=(i&2147483648)!==0,l=(i&1073741824)!==0?1:0,m=Ie.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let g=n.getUint16(m,!0);m+=2;let p=this.incomingReliableSequence&1;if(l===p){if(this.incomingReliableSequence++,m+g>t.byteLength)return null;d=t.slice(m,m+g)}m+=g}let f=t.slice(m);if(d&&d.length>0){let g=d.length+f.length,p=new Uint8Array(g);return p.set(d,0),p.set(f,d.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Ie.MAX_MSGLEN-Ie.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Ie.MAX_MSGLEN-Ie.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Ie.MAX_MSGLEN-Ie.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>Ie.MAX_MSGLEN-Ie.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}};In.MAX_MSGLEN=1400;In.FRAGMENT_SIZE=1024;In.PACKET_HEADER=10;In.HEADER_OVERHEAD=In.PACKET_HEADER+2;var Rm=In;var Lm=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(Lm||{}),t7=Object.keys(Lm).length/2;var na=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],Nm={blaster:null,shotgun:1,supershotgun:1,machinegun:0,chaingun:0,grenades:3,grenadelauncher:3,rocketlauncher:2,hyperblaster:4,railgun:5,bfg10k:4,grapple:null,chainfist:null,etf_rifle:8,prox_launcher:11,ionripper:4,plasmabeam:4,phalanx:6,disruptor:10,trap:7};var e2=Object.defineProperty,t2=(e,t)=>{for(var n in t)e2(e,n,{get:t[n],enumerable:!0})},ra=null,ia=[1,1,1,1],zm=["ch1","ch2","ch3"],Wo=[null,null,null],n2=e=>{for(let t=0;t<zm.length;t++){let n=zm[t];try{Wo[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{Wo[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
|
|
170
|
-
`)}}}
|
|
171
|
-
`)}},
|
|
172
|
-
`)}},
|
|
173
|
-
`)}
|
|
174
|
-
`),l=n.height/2-c.length*10;for(let m of c)ke.SCR_DrawCenterString(l,m),l+=16}jo.drawCenterPrint(ke,o,u),jo.drawNotifications(ke,o),Bm.drawSubtitles(ke,o),i2(ke,n.width,n.height)}function sa(){return jo}function w2(){return Bm}function A2(e,t,n){t>=ye.Models&&t<ye.Models+Ii?e.RegisterModel(n):t>=ye.Sounds&&t<ye.Sounds+Ci?e.RegisterSound(n):t>=ye.Images&&t<ye.Images+Pi&&e.Draw_RegisterPic(n)}var Xo=1e-6,aa=typeof Float32Array<"u"?Float32Array:Array,Pm=Math.random;function Yo(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var S2={};t2(S2,{add:()=>T2,angle:()=>Z2,bezier:()=>H2,ceil:()=>M2,clone:()=>E2,copy:()=>b2,create:()=>Gm,cross:()=>F2,dist:()=>r5,distance:()=>$m,div:()=>i5,divide:()=>Km,dot:()=>Jo,equals:()=>e5,exactEquals:()=>Q2,floor:()=>R2,forEach:()=>c5,fromValues:()=>k2,hermite:()=>G2,inverse:()=>P2,len:()=>s5,length:()=>Hm,lerp:()=>U2,max:()=>N2,min:()=>L2,mul:()=>n5,multiply:()=>Wm,negate:()=>C2,normalize:()=>D2,random:()=>V2,rotateX:()=>X2,rotateY:()=>Y2,rotateZ:()=>q2,round:()=>z2,scale:()=>O2,scaleAndAdd:()=>I2,set:()=>x2,slerp:()=>B2,sqrDist:()=>a5,sqrLen:()=>o5,squaredDistance:()=>Xm,squaredLength:()=>Ym,str:()=>J2,sub:()=>t5,subtract:()=>Vm,transformMat3:()=>K2,transformMat4:()=>W2,transformQuat:()=>$2,zero:()=>j2});function Gm(){var e=new aa(3);return aa!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function E2(e){var t=new aa(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Hm(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function k2(e,t,n){var i=new aa(3);return i[0]=e,i[1]=t,i[2]=n,i}function b2(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function x2(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function T2(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Vm(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function Wm(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Km(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function M2(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function R2(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function L2(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function N2(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function z2(e,t){return e[0]=Yo(t[0]),e[1]=Yo(t[1]),e[2]=Yo(t[2]),e}function O2(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function I2(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function $m(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function Xm(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function Ym(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function C2(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function P2(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function D2(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function Jo(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function F2(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],u=n[2];return e[0]=r*u-a*o,e[1]=a*s-i*u,e[2]=i*o-r*s,e}function U2(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function B2(e,t,n,i){var r=Math.acos(Math.min(Math.max(Jo(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function G2(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,u=s*(a-2)+a,c=s*(a-1),l=s*(3-2*a);return e[0]=t[0]*o+n[0]*u+i[0]*c+r[0]*l,e[1]=t[1]*o+n[1]*u+i[1]*c+r[1]*l,e[2]=t[2]*o+n[2]*u+i[2]*c+r[2]*l,e}function H2(e,t,n,i,r,a){var s=1-a,o=s*s,u=a*a,c=o*s,l=3*a*o,m=3*u*s,d=u*a;return e[0]=t[0]*c+n[0]*l+i[0]*m+r[0]*d,e[1]=t[1]*c+n[1]*l+i[1]*m+r[1]*d,e[2]=t[2]*c+n[2]*l+i[2]*m+r[2]*d,e}function V2(e,t){t=t===void 0?1:t;var n=Pm()*2*Math.PI,i=Pm()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function W2(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function K2(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function $2(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],u=t[1],c=t[2],l=r*c-a*u,m=a*o-i*c,d=i*u-r*o;return l=l+l,m=m+m,d=d+d,e[0]=o+s*l+r*d-a*m,e[1]=u+s*m+a*l-i*d,e[2]=c+s*d+i*m-r*l,e}function X2(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Y2(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function q2(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Z2(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],u=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=u&&Jo(e,t)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function j2(e){return e[0]=0,e[1]=0,e[2]=0,e}function J2(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function Q2(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function e5(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=Xo*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=Xo*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=Xo*Math.max(1,Math.abs(r),Math.abs(o))}var t5=Vm,n5=Wm,i5=Km,r5=$m,a5=Xm,s5=Hm,o5=Ym,c5=(function(){var e=Gm();return function(t,n,i,r,a,s){var o,u;for(n||(n=3),i||(i=0),r?u=Math.min(r*n+i,t.length):u=t.length,o=i;o<u;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var u5={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function l5(e){return{x:Math.max(-14,Math.min(14,e.x)),y:Math.max(-14,Math.min(14,e.y)),z:Math.max(-22,Math.min(30,e.z))}}function d5(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function m5(e,t,n,i,r){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=d5(t,i,r),s=e+a,u=Cn(n,kt.Ducked)&&i?s*4:s;return{bobTime:s,bobCycle:Math.floor(u),bobCycleRun:Math.floor(s),bobFracSin:Math.abs(Math.sin(u*Math.PI))}}var oa=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...u5,...e}}addKick(e){e.durationMs<=0||(this.kick={...e,remainingMs:e.durationMs})}get last(){return this.lastSample}sample(e,t){let{forward:n,right:i}=Zr(Go({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??Ut}).viewangles),r=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=Cn(e.pmFlags,kt.OnGround),s=m5(this.bobTime,r,e.pmFlags,a,t);this.bobTime=s.bobTime,this.bobCycle=s.bobCycle,this.bobCycleRun=s.bobCycleRun,this.bobFracSin=s.bobFracSin;let o=zi(e.velocity,n)*this.settings.runPitch,u=zi(e.velocity,i),c=u<0?-1:1,m=Math.abs(u)*this.settings.runRoll;m>2&&(m=2),m*=c;let d=this.bobFracSin*this.settings.bobPitch*r,f=this.bobFracSin*this.settings.bobRoll*r;Cn(e.pmFlags,kt.Ducked)&&a&&(d*=6,f*=6),o+=Math.min(d,this.settings.maxBobAngle),f=Math.min(f,this.settings.maxBobAngle),this.bobCycle&1&&(f=-f),m+=f;let g=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),p=0,v=0,w=0,L=0,E=0;if(this.kick&&this.kick.remainingMs>0){let T=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));p+=T*this.kick.pitch,v+=T*this.kick.roll,this.kick.origin&&(w+=T*this.kick.origin.x,L+=T*this.kick.origin.y,E+=T*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let y={x:o+p,y:0,z:m+v},k={x:w,y:L,z:g+E},x={angles:y,offset:l5(k),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:r};return this.lastSample=x,x}},h5={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},f5=800,mt={x:0,y:0,z:0};function cn(){return{origin:mt,velocity:mt,viewAngles:mt,onGround:!1,pmFlags:kt.OnGround,pmType:ea.Normal,waterLevel:Di.None,gravity:f5,deltaAngles:mt,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:0,damageIndicators:[],blend:[0,0,0,0],stats:[],kick_angles:mt,kick_origin:mt,gunoffset:mt,gunangles:mt,gunindex:0,pm_time:0,pm_type:ea.Normal,pm_flags:kt.OnGround,gun_frame:0,rdflags:0,fov:90,pickupIcon:void 0,centerPrint:void 0,notify:void 0,client:void 0,health:0,armor:0,ammo:0}}function Dm(e){return e?{...cn(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:mt,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:cn()}function Be(e,t,n){return e+(t-e)*n}function qo(e,t,n){let i=On(t-e);return i>180&&(i-=360),On(e+i*n)}function un(e,t,n){let i=Math.max(0,Math.min(n,1));return{...t,origin:{x:Be(e.origin.x,t.origin.x,i),y:Be(e.origin.y,t.origin.y,i),z:Be(e.origin.z,t.origin.z,i)},velocity:{x:Be(e.velocity.x,t.velocity.x,i),y:Be(e.velocity.y,t.velocity.y,i),z:Be(e.velocity.z,t.velocity.z,i)},viewAngles:{x:qo(e.viewAngles.x,t.viewAngles.x,i),y:qo(e.viewAngles.y,t.viewAngles.y,i),z:qo(e.viewAngles.z,t.viewAngles.z,i)},damageAlpha:Be(e.damageAlpha,t.damageAlpha,i),blend:[Be(e.blend[0],t.blend[0],i),Be(e.blend[1],t.blend[1],i),Be(e.blend[2],t.blend[2],i),Be(e.blend[3],t.blend[3],i)],health:Be(e.health||0,t.health||0,i),armor:Be(e.armor||0,t.armor||0,i),ammo:Be(e.ammo||0,t.ammo||0,i)}}function _5(e,t,n,i,r){let a={forwardmove:t.forwardmove,sidemove:t.sidemove,upmove:t.upmove,buttons:t.buttons},s=Ho(e,a,i,r),{viewangles:o}=Go({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??mt});return{...s,viewAngles:o}}var ca=class{constructor(e,t,n={}){this.baseFrame={frame:0,timeMs:0,state:cn()},this.commands=[],this.predicted=cn(),this.settings={...h5,...n},this.trace=e,this.pointContents=t,this.predicted=this.baseFrame.state??cn()}setAuthoritative(e){let t=Dm(e.state);return this.baseFrame={...e,state:t},this.commands=this.commands.filter(n=>(n.serverFrame??Number.MAX_SAFE_INTEGER)>e.frame),this.recompute()}enqueueCommand(e){return this.commands.push(e),this.recompute()}getPredictedState(){return this.predicted}recompute(){let e=Dm(this.baseFrame.state);for(let t of this.commands)e=_5(e,t,this.settings,this.trace,this.pointContents);return this.predicted=e,e}},be=null;function g5(){if(!be){console.error("CGame Init: cgame imports not set");return}be.Com_Print(`===== CGame Initialization =====
|
|
175
|
-
`),
|
|
176
|
-
`)}function
|
|
177
|
-
`),be=null}function p5(e,t,n,i,r,a,s){y2(e,t,n,i,r,a,s)}function y5(){p2()}function w5(e){return 0}function A5(e){return e.stats[Ce.STAT_ACTIVE_WHEEL_WEAPON]??0}function S5(e){let t=[],n=e.stats[Ce.STAT_WEAPONS_OWNED_1]||0,i=e.stats[Ce.STAT_WEAPONS_OWNED_2]||0,r=n|i<<16;for(let a=0;a<na.length;a++)r&1<<a&&t.push(a);return t}function E5(e,t){if(t<0||t>=na.length)return 0;let n=na[t],i=Nm[n];return i===null?-1:xm(e.stats,i)}function k5(e){let t=0,n=Object.values(Fi);for(let i of n)ta(e.stats,i)>0&&t++;return t}function b5(e){return e.stats[Ce.STAT_HIT_MARKER]??0}function x5(e){let t=e;if(!t||!t.s||!t.cmd||!be)return;let n=(a,s,o,u)=>{let c={x:0,y:0,z:0};return be.PM_Trace(a,s,o||c,u||c)},i=a=>{let s={x:0,y:0,z:0};return be.PM_Trace(a,a,s,s).contents||0},r=Ho(t.s,t.cmd,n,i);t.s.origin=r.origin,t.s.velocity=r.velocity,t.s.onGround=r.onGround,t.s.waterLevel=r.waterLevel}function T5(e,t){be&&A2(be,e,t)}function M5(e,t,n){if(!be)return;sa().setCenterPrint(e,be.CL_ClientTime())}function R5(e,t,n){if(!be)return;sa().addNotification(t,n,be.CL_ClientTime())}function L5(e){sa().clearNotifications()}function N5(e){sa().clearCenterPrint()}function z5(e,t){if(!be)return;w2().addSubtitle(e,be.CL_ClientTime())}function O5(e){return{x:0,y:0,z:0}}function I5(e){return null}function qm(e){return be=e,{Init:g5,Shutdown:v5,DrawHUD:p5,TouchPics:y5,LayoutFlags:w5,GetActiveWeaponWheelWeapon:A5,GetOwnedWeaponWheelWeapons:S5,GetWeaponWheelAmmoCount:E5,GetPowerupWheelCount:k5,GetHitMarkerDamage:b5,Pmove:x5,ParseConfigString:T5,ParseCenterPrint:M5,NotifyMessage:R5,ShowSubtitle:z5,ClearNotify:L5,ClearCenterprint:N5,GetMonsterFlashOffset:O5,GetExtension:I5}}function Zm(e,t){let n=new Map,i=new Set,r=()=>e.engine.renderer;return{get tick_rate(){return t.tickRate},get frame_time_s(){return t.frameTimeMs/1e3},get frame_time_ms(){return t.frameTimeMs},Com_Print:a=>{console.log(`[CGAME] ${a}`)},Com_Error:a=>{console.error(`[CGAME ERROR] ${a}`)},get_configstring:a=>t.configStrings.get(a)||"",TagMalloc:(a,s)=>({}),TagFree:a=>{},FreeTags:a=>{},cvar:(a,s,o)=>{if(!e.host||!e.host.cvars)return null;let u=e.host.cvars.get(a);return u||e.host.cvars.register({name:a,defaultValue:s,flags:o})},cvar_set:(a,s)=>{e.host?.cvars?.setValue(a,s)},cvar_forceset:(a,s)=>{e.host?.cvars?.setValue(a,s)},CL_FrameValid:()=>!0,CL_FrameTime:()=>t.frameTimeMs,CL_ClientTime:()=>t.frameTimeMs,CL_ServerFrame:()=>t.serverFrame,CL_ServerProtocol:()=>t.serverProtocol,CL_GetClientName:a=>t.getClientName(a),CL_GetClientPic:a=>"",CL_GetClientDogtag:a=>"",CL_GetKeyBinding:a=>t.getKeyBinding(a),RegisterModel:a=>{if(!e.engine.assets)return;let s=a.split(".").pop()?.toLowerCase();s==="md2"?e.engine.assets.loadMd2Model(a).catch(o=>console.warn(`Failed to precache MD2 ${a}`,o)):s==="sp2"?e.engine.assets.loadSprite(a).catch(o=>console.warn(`Failed to precache Sprite ${a}`,o)):s==="md3"&&e.engine.assets.loadMd3Model(a).catch(o=>console.warn(`Failed to precache MD3 ${a}`,o))},RegisterSound:a=>{e.engine.assets&&e.engine.assets.loadSound(a).catch(s=>console.warn(`Failed to precache sound ${a}`,s))},Draw_RegisterPic:a=>(n.has(a)||i.has(a)||(i.add(a),e.engine.assets&&e.engine.assets.loadTexture(a).then(s=>{if(e.engine.renderer){let o=e.engine.renderer.registerTexture(a,s);n.set(a,o)}i.delete(a)}).catch(s=>{console.warn(`[CGameImport] Failed to load pic: ${a}`,s),i.delete(a)})),a),Draw_GetPicSize:a=>{let s=a,o=n.get(s);return o?{width:o.width,height:o.height}:{width:0,height:0}},SCR_DrawChar:(a,s,o)=>{r()?.drawString(a,s,String.fromCharCode(o))},SCR_DrawPic:(a,s,o)=>{let u=o,c=n.get(u);c&&r()?.drawPic(a,s,c)},SCR_DrawColorPic:(a,s,o,u,c)=>{let l=o,m=n.get(l);m&&r()?.drawPic(a,s,m,[u.x,u.y,u.z,c])},SCR_DrawFontString:(a,s,o)=>{r()?.drawString(a,s,o)},SCR_DrawCenterString:(a,s)=>{r()?.drawCenterString(a,s)},SCR_MeasureFontString:a=>a.replace(/\^[0-9]/g,"").length*8,SCR_FontLineHeight:()=>8,SCR_SetAltTypeface:a=>{},SCR_DrawBind:(a,s,o)=>{let u=t.getKeyBinding(o);r()?.drawString(a,s,`[${o}]`)},Localize:a=>a,CL_GetTextInput:()=>"",CL_GetWarnAmmoCount:()=>5,CL_InAutoDemoLoop:()=>t.inAutoDemo,PM_Trace:(a,s,o,u)=>e.engine.trace(a,s,o,u)}}var Dn=null,Gt=0;var Bi=!0,Gi=["ch1","ch2","ch3"],Fn=[null,null,null],jm=async(e,t)=>{for(let n=0;n<Gi.length;n++){let i=Gi[n];try{let r=await t.loadTexture(`pics/${i}.pcx`);Fn[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");Fn[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}Dn=Fn[0]};var Jm=()=>{if(Bi?(Gt++,Gt>=Gi.length&&(Bi=!1,Gt=0)):(Bi=!0,Gt=0),Bi){if(Dn=Fn[Gt],!Dn){let e=!1;for(let t=0;t<Gi.length;t++){let n=(Gt+t)%Gi.length;if(Fn[n]){Gt=n,Dn=Fn[n],e=!0;break}}e||(Dn=null)}}else Dn=null;return Bi?Gt:-1};var C5=Object.defineProperty,P5=Object.getOwnPropertyNames,fn=(e,t)=>function(){return e&&(t=(0,e[P5(e)[0]])(e=0)),t},D5=(e,t)=>{for(var n in t)C5(e,n,{get:t[n],enumerable:!0})};function Zn(e){return{x:e.x,y:e.y,z:e.z}}function F(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function P(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function D(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Ec(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function F5(e){return Ec(e,e)}function Ge(e){return Math.sqrt(F5(e))}function G(e){let t=Ge(e);return t===0?e:D(e,1/t)}function U5(e,t,n){return{x:e.x<t.x?t.x:e.x>n.x?n.x:e.x,y:e.y<t.y?t.y:e.y>n.y?n.y:e.y,z:e.z<t.z?t.z:e.z>n.z?n.z:e.z}}function B5(e,t,n,i){let r=0;if(t.x<n.x){let a=t.x-n.x;r+=a*a}else if(e.x>i.x){let a=e.x-i.x;r+=a*a}if(t.y<n.y){let a=t.y-n.y;r+=a*a}else if(e.y>i.y){let a=e.y-i.y;r+=a*a}if(t.z<n.z){let a=t.z-n.z;r+=a*a}else if(e.z>i.z){let a=e.z-i.z;r+=a*a}return r}function Ki(e,t){switch(t){case Sa:return e.x;case Ea:return e.y;case kc:default:return e.z}}function fa(e){return e*gh}function cc(e){return e*vh}function uc(e){let t=e%360;return t<0?360+t:t}function Z(e){let t=fa(Ki(e,Ea)),n=fa(Ki(e,Sa)),i=fa(Ki(e,kc)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),u=Math.sin(i),c=Math.cos(i),l={x:o*a,y:o*r,z:-s},m={x:-u*s*a-c*-r,y:-u*s*r-c*a,z:-u*o},d={x:c*s*a-u*-r,y:c*s*r-u*a,z:c*o};return{forward:l,right:m,up:d}}function er(e){let t=Ki(e,Sa),n=Ki(e,Ea);if(t===0)return n===0?0:n>0?90:270;let i=cc(Math.atan2(n,t));return i<0?i+360:i}function jn(e){let t=e.x,n=e.y,i=e.z;if(n===0&&t===0)return{x:i>0?-90:-270,y:0,z:0};let r;t?r=cc(Math.atan2(n,t)):n>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+n*n),s=cc(Math.atan2(i,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}function tr(e){return new bc(e)}function G5(e){return JSON.stringify(e,null,2)}function H5(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function V5(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function W5(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}function K5(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:u,pmWaterFriction:c}=e,l=Ge(t);if(l<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let g=l<u?u:l;m+=g*o*n}s>0&&!a&&(m+=l*c*s*n);let d=l-m;if(d<0&&(d=0),d===l)return t;let f=d/l;return D(t,f)}function $5(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=Ec(t,n),o=i-s;if(o<=0)return t;let u=r*a*i;return u>o&&(u=o),{x:t.x+n.x*u,y:t.y+n.y*u,z:t.z+n.z*u}}function X5(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=Ge(a);if(s>r){let o=r/s;a=D(a,o),s=r}return{wishdir:s===0?a:G(a),wishspeed:s}}function Y5(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:t.z*i.forwardmove+n.z*i.sidemove};i.upmove>10?a=F(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=F(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=F(a,{x:0,y:0,z:-60}):a=F(a,{x:0,y:0,z:10});let s=Ge(a);if(s>r){let o=r/s;a=D(a,o),s=r}return s*=.5,{wishdir:s===0?a:G(a),wishspeed:s}}var Qm,Qo,W,q5,Z5,Sa,Ea,kc,gh,vh,ec,Je,e0,t0,n0,i0,ua,r0,bc,De,bt,j5,la,da,a0,J5,Q5,s0,eE,Hi,tc,o0,c0,u0,l0,d0,m0,tE,Wt,Xi,nE,iE,rE,mn,aE,sE,oE,cE,uE,lE,dE,mE,hE,fE,_E,gE,vE,pE,xc,yE,wE,Yi,ph,AE,Rt,SE,EE,kE,bE,xE,TE,ME,h0,nc,f0,_0,g0,v0,p0,y0,w0,ma,ic,RE,A0,S0,LE,se,we,yh,wh,Ah,Sh,Eh,kh,bh,xh,Th,Mh,ie,E0,k0,b0,NE,x0,T0,zE,OE,M0,R0,L0,N0,z0,O0,I0,C0,P0,D0,F0,U0,B0,G0,H0,V0,W0,K0,$0,X0,Y0,q0,Un,ha,Vi,Z0,j0,IE,J0,Bn,V,I,CE,he,PE,Q0,DE,FE,U=fn({"../shared/dist/esm/index.js"(){"use strict";Qm=Object.defineProperty,Qo=(e,t)=>{for(var n in t)Qm(e,n,{get:t[n],enumerable:!0})},W={x:0,y:0,z:0},q5=.1,Z5=Math.PI/180,Sa=0,Ea=1,kc=2,gh=Math.PI/180,vh=180/Math.PI,ec=[[-.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]],Je=624,e0=397,t0=2567483615,n0=2147483648,i0=2147483647,ua=4294967296,r0=class{constructor(e=5489){this.state=new Uint32Array(Je),this.index=Je,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<Je;t++){let n=this.state[t-1]^this.state[t-1]>>>30,i=Math.imul(n>>>0,1812433253)+t;this.state[t]=i>>>0}this.index=Je}nextUint32(){this.index>=Je&&this.twist();let e=this.state[this.index++];return e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0}twist(){for(let e=0;e<Je;e++){let t=this.state[e]&n0|this.state[(e+1)%Je]&i0,n=this.state[(e+e0)%Je]^t>>>1;(t&1)!==0&&(n^=t0),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==Je)throw new Error(`Expected ${Je} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},bc=class{constructor(e={}){this.mt=new r0(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/ua}frandomRange(e,t){return e+(t-e)*this.frandom()}frandomMax(e){return this.frandomRange(0,e)}crandom(){return this.frandomRange(-1,1)}crandomOpen(){let e=Number.EPSILON;return this.frandomRange(-1+e,1)}irandomUint32(){return this.mt.nextUint32()}irandomRange(e,t){if(t-e<=1)return e;let n=t-e,i=ua-ua%n,r;do r=this.mt.nextUint32();while(r>=i);return e+r%n}irandom(e){return e<=0?0:this.irandomRange(0,e)}randomTimeRange(e,t){return t<=e?e:this.irandomRange(e,t)}randomTime(e){return this.irandom(e)}randomIndex(e){return this.irandom(e.length)}getState(){return{mt:this.mt.getState()}}setState(e){this.mt.setState(e.mt)}},De=1,bt=2,j5=4,la=8,da=16,a0=32,J5=64,Q5=8192,s0=16384,eE=32768,Hi=65536,tc=1<<17,o0=1<<18,c0=1<<19,u0=1<<20,l0=1<<21,d0=1<<22,m0=1<<23,tE=1<<24,Wt=1<<25,Xi=1<<26,nE=1<<27,iE=1<<28,rE=1<<29,mn=1<<30,aE=1<<31,sE=1,oE=2,cE=4,uE=8,lE=16,dE=32,mE=64,hE=128,fE=1<<25,_E=1<<28,gE=1<<29,vE=1<<30,pE=1<<31,xc=De|bt,yE=De|Hi|bt|Wt|mn,wE=De|Hi|bt,Yi=De|tc|bt|Wt|mn,ph=a0|la|da,AE=De|da|la,Rt=De|Wt|mn|bt|Xi,SE=o0|c0|u0|l0|d0|m0,EE=De|la|da|Wt|mn,kE=De|Hi|bt,bE=De|bt,xE=De|Hi|bt|tc,TE=Rt|s0,ME=Number.MAX_SAFE_INTEGER-1,h0=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(h0||{}),nc=256,f0=256,_0=8192,g0=2048,v0=512,p0=256,y0=nc*2,w0=256,ma=32,ic=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.HealthBarName=55]="HealthBarName",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+_0]="Sounds",e[e.Images=e.Sounds+g0]="Images",e[e.Lights=e.Images+v0]="Lights",e[e.ShadowLights=e.Lights+f0]="ShadowLights",e[e.Items=e.ShadowLights+w0]="Items",e[e.PlayerSkins=e.Items+p0]="PlayerSkins",e[e.General=e.PlayerSkins+nc]="General",e[e.WheelWeapons=e.General+y0]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+ma]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+ma]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+ma]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ic||{}),RE=ic.MaxConfigStrings,A0={},Qo(A0,{addReplayFrame:()=>W5,createReplaySession:()=>V5,deserializeReplay:()=>H5,serializeReplay:()=>G5}),S0=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(S0||{}),LE=1080,se=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(se||{}),we=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(we||{}),yh=0,wh=1,Ah=2,Sh=3,Eh=6,kh=7,bh=8,xh=11,Th=12,Mh=13,ie=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(ie||{}),E0=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(E0||{}),k0=12,b0=9,NE=Math.ceil(k0*b0/16),x0=23,T0=2,zE=Math.ceil(x0*T0/16),OE={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,bandolier:10,ammo_pack:10,ir_goggles:11,double_damage:12,sphere_vengeance:13,sphere_hunter:14,sphere_defender:15,doppelganger:16,flashlight:17,compass:18,tech_resistance:19,tech_strength:20,tech_haste:21,tech_regeneration:22,tag_token:-1},M0=(e=>(e[e.MinLight=1]="MinLight",e[e.ViewerModel=2]="ViewerModel",e[e.WeaponModel=4]="WeaponModel",e[e.FullBright=8]="FullBright",e[e.DepthHack=16]="DepthHack",e[e.Translucent=32]="Translucent",e[e.FrameLerp=64]="FrameLerp",e[e.Beam=128]="Beam",e[e.CustomLight=256]="CustomLight",e[e.Glow=512]="Glow",e[e.ShellRed=1024]="ShellRed",e[e.ShellGreen=2048]="ShellGreen",e[e.ShellBlue=4096]="ShellBlue",e[e.IrVisible=32768]="IrVisible",e[e.ShellDouble=65536]="ShellDouble",e[e.ShellHalfDam=131072]="ShellHalfDam",e[e.MinLightPlus=262144]="MinLightPlus",e[e.ExtraLight=524288]="ExtraLight",e[e.BeamLightning=1048576]="BeamLightning",e))(M0||{}),R0={},Qo(R0,{U_ANGLE1:()=>P0,U_ANGLE2:()=>D0,U_ANGLE3:()=>F0,U_EFFECTS:()=>G0,U_EVENT:()=>W0,U_FRAME:()=>U0,U_MODEL:()=>N0,U_MODEL2:()=>$0,U_MODEL3:()=>X0,U_MODEL4:()=>Y0,U_MOREBITS:()=>K0,U_NUMBER:()=>L0,U_ORIGIN1:()=>O0,U_ORIGIN2:()=>I0,U_ORIGIN3:()=>C0,U_REMOVE:()=>q0,U_RENDERFX:()=>H0,U_SKIN:()=>B0,U_SOLID:()=>V0,U_SOUND:()=>z0}),L0=1,N0=2,z0=4,O0=8,I0=16,C0=32,P0=64,D0=128,F0=256,U0=512,B0=1024,G0=2048,H0=4096,V0=8192,W0=16384,K0=32768,$0=1,X0=2,Y0=4,q0=32768,Un=.025,ha=33554432,Vi={None:0,Feet:1,Waist:2,Under:3},Z0=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},j0=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&ha))return{...e,waterLevel:Vi.None};let s=Vi.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&ha){s=Vi.Waist;let c=e.origin.z+22;n.z=c,t(n)&ha&&(s=Vi.Under)}return{...e,waterLevel:s}},IE=(e,t,n,i)=>{let r={...e};r=Z0(r,n),r=j0(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:u,viewAngles:c}=r,l=u>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:m,right:d}=Z(l),f=K5({velocity:s,frametime:Un,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:u,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=u>=2?Y5({forward:m,right:d,cmd:t,maxSpeed:320}):X5({forward:m,right:d,cmd:t,maxSpeed:320}),p=$5({velocity:f,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||u>=2?10:1,frametime:Un}),v=n(a,{x:a.x+p.x*Un,y:a.y+p.y*Un,z:a.z+p.z*Un});return{...r,origin:v.endpos,velocity:p}},J0=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let i=0;i<ec.length;i++){let r=ec[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},Bn=class Pe{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new J0(Pe.MAX_MSGLEN);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=Pe.PACKET_HEADER,i=this.reliableLength>0?this.reliableLength+2:0,r=t?t.length:0;n+i+r>Pe.MAX_MSGLEN&&(r=Pe.MAX_MSGLEN-n-i,r<0&&(r=0));let a=new ArrayBuffer(n+i+r),s=new DataView(a),o=new Uint8Array(a),u=this.outgoingSequence;this.reliableLength>0&&(u|=2147483648,(this.outgoingReliableSequence&1)!==0&&(u|=1073741824)),s.setUint32(0,u,!0);let c=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(c|=2147483648),s.setUint32(4,c,!0),s.setUint16(8,this.qport,!0);let l=n;if(this.reliableLength>0){s.setUint16(l,this.reliableLength,!0),l+=2;let d=this.reliableMessage.getBuffer().subarray(0,this.reliableLength);o.set(d,l),l+=this.reliableLength}if(t&&r>0){let m=t.slice(0,r);o.set(m,l)}return o}process(t){if(t.length<Pe.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,u=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let g=u?1:0,p=this.outgoingReliableSequence&1;g!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1)}let c=(i&2147483648)!==0,l=(i&1073741824)!==0?1:0,m=Pe.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let g=n.getUint16(m,!0);m+=2;let p=this.incomingReliableSequence&1;if(l===p){if(this.incomingReliableSequence++,m+g>t.byteLength)return null;d=t.slice(m,m+g)}m+=g}let f=t.slice(m);if(d&&d.length>0){let g=d.length+f.length,p=new Uint8Array(g);return p.set(d,0),p.set(f,d.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Pe.MAX_MSGLEN-Pe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Pe.MAX_MSGLEN-Pe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Pe.MAX_MSGLEN-Pe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>Pe.MAX_MSGLEN-Pe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}},Bn.MAX_MSGLEN=1400,Bn.FRAGMENT_SIZE=1024,Bn.PACKET_HEADER=10,Bn.HEADER_OVERHEAD=Bn.PACKET_HEADER+2,V=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="supershotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.HandGrenade="grenades",e.GrenadeLauncher="grenadelauncher",e.RocketLauncher="rocketlauncher",e.HyperBlaster="hyperblaster",e.Railgun="railgun",e.BFG10K="bfg10k",e.Grapple="grapple",e.ChainFist="chainfist",e.EtfRifle="etf_rifle",e.ProxLauncher="prox_launcher",e.IonRipper="ionripper",e.PlasmaBeam="plasmabeam",e.Phalanx="phalanx",e.Disruptor="disruptor",e.Trap="trap",e))(V||{}),I=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(I||{}),CE=Object.keys(I).length/2,he=(e=>(e.Shells="ammo_shells",e.Bullets="ammo_bullets",e.Rockets="ammo_rockets",e.Grenades="ammo_grenades",e.Cells="ammo_cells",e.Slugs="ammo_slugs",e.MagSlugs="ammo_magslug",e.Flechettes="ammo_flechettes",e.Disruptor="ammo_disruptor",e.Tesla="ammo_tesla",e.Trap="ammo_trap",e.Prox="ammo_prox",e))(he||{}),PE=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],Q0=(e=>(e[e.Auto=0]="Auto",e[e.Weapon=1]="Weapon",e[e.Voice=2]="Voice",e[e.Item=3]="Item",e[e.Body=4]="Body",e[e.Aux=5]="Aux",e[e.Footstep=6]="Footstep",e[e.Aux3=7]="Aux3",e[e.NoPhsAdd=8]="NoPhsAdd",e[e.Reliable=16]="Reliable",e[e.ForcePos=32]="ForcePos",e))(Q0||{}),DE=1,FE=2}});var UE,_n=fn({"src/inventory/ammo.ts"(){"use strict";U(),UE={[he.Shells]:{id:he.Shells,ammoType:I.Shells,quantity:10,weaponAmmo:!1},[he.Bullets]:{id:he.Bullets,ammoType:I.Bullets,quantity:50,weaponAmmo:!1},[he.Rockets]:{id:he.Rockets,ammoType:I.Rockets,quantity:5,weaponAmmo:!1},[he.Grenades]:{id:he.Grenades,ammoType:I.Grenades,quantity:5,weaponAmmo:!0},[he.Cells]:{id:he.Cells,ammoType:I.Cells,quantity:50,weaponAmmo:!1},[he.Slugs]:{id:he.Slugs,ammoType:I.Slugs,quantity:10,weaponAmmo:!1},[he.MagSlugs]:{id:he.MagSlugs,ammoType:I.MagSlugs,quantity:10,weaponAmmo:!1},[he.Flechettes]:{id:he.Flechettes,ammoType:I.Flechettes,quantity:50,weaponAmmo:!1},[he.Disruptor]:{id:he.Disruptor,ammoType:I.Disruptor,quantity:15,weaponAmmo:!1},[he.Tesla]:{id:he.Tesla,ammoType:I.Tesla,quantity:5,weaponAmmo:!1},[he.Trap]:{id:he.Trap,ammoType:I.Trap,quantity:5,weaponAmmo:!1},[he.Prox]:{id:he.Prox,ammoType:I.Prox,quantity:5,weaponAmmo:!1}}}});function Kt(e,t){return(e&t)!==0}var eh,Rh=fn({"src/combat/damageFlags.ts"(){"use strict";eh=(e=>(e[e.NONE=0]="NONE",e[e.RADIUS=1]="RADIUS",e[e.NO_ARMOR=2]="NO_ARMOR",e[e.ENERGY=4]="ENERGY",e[e.NO_KNOCKBACK=8]="NO_KNOCKBACK",e[e.BULLET=16]="BULLET",e[e.NO_PROTECTION=32]="NO_PROTECTION",e[e.DESTROY_ARMOR=64]="DESTROY_ARMOR",e[e.NO_REG_ARMOR=128]="NO_REG_ARMOR",e[e.NO_POWER_ARMOR=256]="NO_POWER_ARMOR",e[e.NO_INDICATOR=512]="NO_INDICATOR",e[e.NO_DAMAGE_EFFECTS=1024]="NO_DAMAGE_EFFECTS",e))(eh||{})}});function BE(e,t,n){if(e<=0||Kt(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=Lh[n.armorType],r=Kt(t,4)?i.energyProtection:i.normalProtection,a=Math.ceil(r*e);return a>=n.armorCount&&(a=n.armorCount),a<=0?{saved:0,remainingArmor:n.armorCount}:{saved:a,remainingArmor:n.armorCount-a}}function GE(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if(Kt(t,258))return{saved:0,remainingCells:r.cellCount};if(!r.type||r.cellCount<=0)return{saved:0,remainingCells:r.cellCount};let{forward:s}=Z(r.angles),o={x:n.x-r.origin.x,y:n.y-r.origin.y,z:n.z-r.origin.z},u=Math.hypot(o.x,o.y,o.z);if(r.type==="screen"&&u>0){let v={x:o.x/u,y:o.y/u,z:o.z/u};if(v.x*s.x+v.y*s.y+v.z*s.z<=.3)return{saved:0,remainingCells:r.cellCount}}let c=a.ctfMode??!1,l=r.type==="screen"||c?1:2,m=r.type==="screen"?e/3:2*e/3;m=Math.max(1,m);let d=r.cellCount*l;Kt(t,4)&&(d=Math.max(1,Math.floor(d/2))),d>m&&(d=Math.floor(m));let f=d/l;Kt(t,4)&&(f*=2),f=Math.max(1,Math.floor(f));let g=Math.max(l,f),p=Math.max(0,r.cellCount-g);return{saved:d,remainingCells:p}}var hn,Lh,Nh=fn({"src/combat/armor.ts"(){"use strict";U(),Rh(),hn=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(hn||{}),Lh={jacket:{baseCount:25,maxCount:50,normalProtection:.3,energyProtection:0},combat:{baseCount:50,maxCount:100,normalProtection:.6,energyProtection:.3},body:{baseCount:100,maxCount:200,normalProtection:.8,energyProtection:.6}}}});function zh(e,t){return e.ownedWeapons.has(t)?(e.currentWeapon=t,!0):!1}var Ee,Yt=fn({"src/inventory/playerInventory.ts"(){"use strict";_n(),U(),Nh(),Ee=(e=>(e.Blue="key_blue",e.Red="key_red",e.Green="key_green",e.Yellow="key_yellow",e.DataCD="key_data_cd",e.PowerCube="key_power_cube",e.ExplosiveCharges="key_explosive_charges",e.PowerCore="key_power_core",e.Pyramid="key_pyramid",e.DataSpinner="key_data_spinner",e.Pass="key_pass",e.CommanderHead="key_commander_head",e.Airstrike="key_airstrike",e.NukeContainer="key_nuke_container",e.Nuke="key_nuke",e.RedFlag="key_red_flag",e.BlueFlag="key_blue_flag",e))(Ee||{})}});function Oh(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var th,Ih=fn({"src/combat/weapons/state.ts"(){"use strict";th=(e=>(e[e.WEAPON_READY=0]="WEAPON_READY",e[e.WEAPON_ACTIVATING=1]="WEAPON_ACTIVATING",e[e.WEAPON_DROPPING=2]="WEAPON_DROPPING",e[e.WEAPON_FIRING=3]="WEAPON_FIRING",e))(th||{})}}),Ch={};D5(Ch,{ChangeWeapon:()=>VE,NoAmmoWeaponChange:()=>WE,setInstantSwitch:()=>HE,switchToBestWeapon:()=>Ph});function HE(e){ka=e}function VE(e,t){if(!e.client)return;let n=e.client;if(n.weaponstate!==2&&t){if(zh(n.inventory,t),n.weaponstate=1,n.gun_frame=0,ka){n.weaponstate=0,n.weapon_think_time=0;return}n.weapon_think_time=0}}function WE(e){e.client&&Ph(e)}function Ph(e){if(!e.client)return;let t=e.client.inventory,n=null;t.ownedWeapons.has(V.BFG10K)&&t.ammo.counts[I.Cells]>=50?n=V.BFG10K:t.ownedWeapons.has(V.RocketLauncher)&&t.ammo.counts[I.Rockets]>=1?n=V.RocketLauncher:t.ownedWeapons.has(V.Railgun)&&t.ammo.counts[I.Slugs]>=1?n=V.Railgun:t.ownedWeapons.has(V.Chaingun)&&t.ammo.counts[I.Bullets]>=1?n=V.Chaingun:t.ownedWeapons.has(V.SuperShotgun)&&t.ammo.counts[I.Shells]>=2?n=V.SuperShotgun:t.ownedWeapons.has(V.Machinegun)&&t.ammo.counts[I.Bullets]>=1?n=V.Machinegun:t.ownedWeapons.has(V.Shotgun)&&t.ammo.counts[I.Shells]>=1?n=V.Shotgun:n=V.Blaster,n&&n!==t.currentWeapon&&(zh(t,n),e.client.weaponstate=1,e.client.gun_frame=0,ka&&(e.client.weaponstate=0),e.client.weapon_think_time=0)}var ka,KE=fn({"src/combat/weapons/switching.ts"(){"use strict";Yt(),_n(),ka=!1}});U();Yt();_n();var $E={...W};var f7=Object.freeze({aiflags:0,last_sighting:$E,trail_time:0,pausetime:0});var Tc=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"killtarget",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"pathtarget",type:"string",save:!0},{name:"model",type:"string",save:!0},{name:"item",type:"string",save:!0},{name:"map",type:"string",save:!0},{name:"inventory",type:"inventory",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"pos1",type:"vec3",save:!0},{name:"pos2",type:"vec3",save:!0},{name:"viewheight",type:"int",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"absmin",type:"vec3",save:!0},{name:"absmax",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"movedir",type:"vec3",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"spawn_count",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"speed",type:"float",save:!0},{name:"accel",type:"float",save:!0},{name:"decel",type:"float",save:!0},{name:"height",type:"float",save:!0},{name:"deadflag",type:"int",save:!0},{name:"count",type:"int",save:!0},{name:"wait",type:"float",save:!0},{name:"delay",type:"float",save:!0},{name:"random",type:"float",save:!0},{name:"timestamp",type:"float",save:!0},{name:"lip",type:"int",save:!0},{name:"state",type:"int",save:!0},{name:"style",type:"int",save:!0},{name:"sounds",type:"int",save:!0},{name:"noise_index",type:"int",save:!0},{name:"attenuation",type:"float",save:!0},{name:"volume",type:"float",save:!0},{name:"fly_sound_debounce_time",type:"float",save:!0},{name:"last_move_time",type:"float",save:!0},{name:"damage_debounce_time",type:"float",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"target_ent",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"search_time",type:"float",save:!0},{name:"attack_finished_time",type:"float",save:!0},{name:"pain_finished_time",type:"float",save:!0},{name:"pain_debounce_time",type:"float",save:!0},{name:"trail_time",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"blocked",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1},{name:"postthink",type:"callback",save:!1},{name:"beam",type:"entity",save:!0},{name:"beam2",type:"entity",save:!0}];U();U();U();U();var XE=20,YE=440,qE=940,rc=32,ZE=1<<24,ga=1;U();U();function nh(e){return{mins:{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},maxs:{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}}}function qt(e,t){let n=nh(e),i=nh(t),r=B5(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function jE(e){return e<=XE?"melee":e<=YE?"near":e<=qE?"mid":"far"}function qi(e,t){let{forward:n}=Z(e.angles),i=G(P(t.origin,e.origin)),r=Ec(i,n);return(e.spawnflags&ga)!==0&&e.trail_time===0&&e.enemy===null?r>.15:r>-.3}function gn(e,t,n,i){if((t.flags&ZE)!==0)return!1;let r={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},a={x:t.origin.x,y:t.origin.y,z:t.origin.z+t.viewheight},s=i?.throughGlass?1:3,o=n(r,null,null,a,e,s);return o.fraction===1||o.ent===t}U();function JE(e,t){let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=er(n)}function Dh(e){e.angles.y=uc(e.ideal_yaw)}function QE(e,t,n){e.enemy&&(e.goalentity=e.enemy,JE(e,e.enemy),Dh(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function ek(e,t,n,i){if(!e.enemy)return;(e.enemy.svflags&8)!==0&&(t.sightEntity=e,t.sightEntityFrame=t.frameNumber,e.light_level=128),e.show_hostile=t.timeSeconds+1;let r=e.monsterinfo.last_sighting;if(r.x=e.enemy.origin.x,r.y=e.enemy.origin.y,r.z=e.enemy.origin.z,e.trail_time=t.timeSeconds,e.monsterinfo.trail_time=t.timeSeconds,!e.combattarget){QE(e,t,n);return}let a=i?.pickTarget,s=a?.(e.combattarget)??e.enemy;e.goalentity=s,e.movetarget=s,e.combattarget=void 0,e.monsterinfo.aiflags|=4096,e.movetarget&&(e.movetarget.targetname=void 0),e.monsterinfo.pausetime=0,e.monsterinfo.run?.(e,n)}function tk(e,t,n,i){let r=qt(e,t),a=jE(r);return a==="far"||t.light_level<=5||!gn(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||qi(e,t):a==="mid"?qi(e,t):!0}function nk(e,t,n,i,r){if((e.spawnflags&ga)!==0){if(!gn(e,t,r))return!1}else if(i.canHear&&!i.canHear(e,t))return!1;let a=P(t.origin,e.origin);return Ge(a)>1e3||i.areasConnected&&!i.areasConnected(e,t)?!1:(e.ideal_yaw=er(a),Dh(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function ik(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&ga)===0?t.sightEntity.enemy!==e.enemy?{candidate:t.sightEntity,heardit:!1}:{candidate:null,heardit:!1}:t.soundEntity&&t.soundEntityFrame>=t.frameNumber-1?{candidate:t.soundEntity,heardit:!0}:!e.enemy&&t.sound2Entity&&t.sound2EntityFrame>=t.frameNumber-1&&(e.spawnflags&ga)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function rk(e){return(e.flags&rc)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&rc)!==0:!!(e.enemy&&(e.enemy.flags&rc)!==0)}function Mc(e,t,n,i,r={}){if((e.monsterinfo.aiflags&256)!==0)return e.goalentity?.classname==="target_actor",!1;if((e.monsterinfo.aiflags&4096)!==0)return!1;let{candidate:a,heardit:s}=ik(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(rk(a))return!1;if(s){if(!nk(e,a,t,r,i))return!1}else{if(!tk(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return ek(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}function Fh(e,t){if(t===0)return{x:0,y:0,z:0};let n=fa(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function ba(e,t,n){let i=Fh(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function Jn(e,t){let n=uc(e.angles.y),i=e.ideal_yaw;if(n===i){e.angles.y=n;return}let r=e.yaw_speed*t*10,a=i-n;i>n?a>=180&&(a-=360):a<=-180&&(a+=360),a>r?a=r:a<-r&&(a=-r),e.angles.y=uc(n+a)}function _(e,t){ba(e,e.angles.y,t)}function xa(e,t){if(!t)return;let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=er(n)}function R(e,t,n){Mc(e,n.targetAwareness,n,n.trace)||Jn(e,t)}function z(e,t,n,i){if(!Mc(e,i.targetAwareness,i,i.trace)&&(xa(e,e.goalentity),Jn(e,n),t!==0&&ba(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&qt(e,e.goalentity)<64&&e.goalentity.target)){let a=i.pickTarget(e.goalentity.target);a&&(e.goalentity=a,e.ideal_yaw=e.angles.y)}}function ae(e,t,n){t!==0&&ba(e,e.angles.y,t),(e.monsterinfo.aiflags&32768)===0&&Jn(e,n)}function oe(e,t,n,i){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,i);return}Mc(e,i.targetAwareness,i,i.trace),(e.monsterinfo.aiflags&32768)===0&&xa(e,e.enemy??e.goalentity),Jn(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Uh(e,e.angles.y,t,i)}function ak(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&xa(e,t),Jn(e,i),n!==0&&ba(e,e.angles.y,n)}function le(e,t,n,i){(e.monsterinfo.aiflags&32768)===0&&xa(e,e.enemy),Jn(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Uh(e,e.angles.y,t,i)}function sk(e,t){if(e.movetype===1)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.mins.z-1},i=t.trace(e.origin,e.mins,e.maxs,n,e,Yi);if(e.groundentity=i.ent,!e.groundentity&&!i.allsolid&&!i.startsolid&&i.fraction===1){let r=t.pointcontents(n);r&ph?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function ok(e,t){let n={x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},i={x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z},r={x:0,y:0,z:0},a={x:0,y:0,z:0};for(let s=0;s<2;s++)if(s===1?r={x:n.x,y:n.y,z:0}:r={x:i.x,y:n.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,Yi).fraction<1)||(s===1?r={x:n.x,y:i.y,z:0}:r={x:i.x,y:i.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0)||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,Yi).fraction<1))return!0;return!1}function Uh(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=Fh(t,n);(e.monsterinfo.aiflags&1024)!==0&&e.monsterinfo.aiflags&1073741824;let a={x:e.origin.x+r.x,y:e.origin.y+r.y,z:e.origin.z+r.z};if(i.trace(e.origin,e.mins,e.maxs,a,e,Yi).fraction<1)return!1;let o={...e.origin};return e.origin.x=a.x,e.origin.y=a.y,e.origin.z=a.z,(e.flags&3)===0&&e.movetype!==1&&!ok(e,i)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&sk(e,i),!0)}U();U();var ck=Tc.filter(e=>e.save||e.type==="callback"),_7=new Map(ck.map(e=>[e.name,e]));U();U();Nh();Rh();U();function uk(e,t){if(!e)return 1;let n=e.client;if(!n)return 1;let i=1;return n.quad_time&&n.quad_time>t&&(i*=4),n.double_time&&n.double_time>t&&(i*=2),i}function lk(e,t,n,i,r){if(Kt(r,8)||((e.flags??0)&4)!==0||i===0)return{x:0,y:0,z:0};let s=Math.max(50,e.mass??200),o=G(n),c=D(o,(t===e?1600:500)*i/s);return e.velocity=F(e.velocity,c),c}function dk(e,t,n,i,r){let a=i,s=0,o=0,u,c;if(e.powerArmor){let l=GE(i,r,t,n,e.powerArmor);s=l.saved,u=l.remainingCells,a-=s}if(e.regularArmor){let l=BE(a,r,e.regularArmor);o=l.saved,c=l.remainingArmor,a-=o}return[Math.max(0,a),s,o,u,c]}function ih(e){return e.mins&&e.maxs?{x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5}:e.origin}function fe(e,t,n,i,r,a,s,o,u,c,l,m){if(!e.takedamage)return null;let d=uk(n,l),f=s*d,g=o*d;if(!Kt(u,32)&&((e.flags??0)&1)!==0&&f>0)return{take:0,psave:0,asave:f,knocked:{x:0,y:0,z:0},killed:!1};let v=lk(e,n,i,g,u),[w,L,E,y,k]=dk(e,r,a,f,u);e.monsterinfo&&e.monsterinfo.freeze_time>l&&f>0&&(w=e.health+100,L=0,E=0),e.powerArmor&&y!==void 0&&(e.powerArmor.cellCount=y),e.regularArmor&&(e.regularArmor.armorCount=k??e.regularArmor.armorCount);let x=w;x>0&&(e.health-=x,m&&!Kt(u,1024)&&(e.classname==="player"||e.monsterinfo)&&m(r,1,se.temp_entity,we.BLOOD,r,a));let T=e.health<=0;return T?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,x,r,c):x>0&&e.pain&&e.pain(e,n,o,x,c),{take:x,psave:L,asave:E,knocked:v,killed:T,remainingCells:y,remainingArmor:k}}function Rc(e,t,n,i,r,a,s,o,u,c={},l){let m=[],d=ih(t),f=c.canDamage??(()=>!0);for(let g of e){if(g===r||!g.takedamage||!f(g,t))continue;let p=g.mins&&g.maxs?U5(d,F(g.origin,g.mins),F(g.origin,g.maxs)):ih(g),v=P(d,p),w=Ge(v);if(a>0&&w>a)continue;let L=i-.5*w;if(L<=0)continue;let E=g===n?L*.5:L,y=G(P(g.origin,d)),k=fe(g,t,n,y,p,y,E,E,s|1,o,u,l);m.push({target:g,result:k,appliedDamage:E})}return m}var g7=tr();U();U();U();function Bh(e,t,n,i,r,a,s,o=0){let u=e.spawn();u.classname="rocket",u.movetype=8,u.solid=2,u.owner=t,u.origin={...n},u.velocity={x:i.x*s,y:i.y*s,z:i.z*s},u.mins={x:-4,y:-4,z:-4},u.maxs={x:4,y:4,z:4},u.touch=(c,l,m,d)=>{if(l===c.owner)return;l&&l.takedamage&&fe(l,c,c.owner,c.velocity,c.origin,m?m.normal:W,r,0,0,8,e.timeSeconds,e.multicast.bind(e));let f=e.findByRadius(c.origin,120);Rc(f,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,se.temp_entity,we.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(u)}function Lc(e,t,n,i,r,a,s=2.5){let o=e.spawn();o.classname="grenade",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=9,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("models/objects/grenade/tris.md2"),o.mins={x:-4,y:-4,z:-4},o.maxs={x:4,y:4,z:4},o.avelocity={x:300,y:300,z:300};let u=c=>{let l=e.findByRadius(c.origin,120);Rc(l,c,c.owner,r,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,se.temp_entity,we.GRENADE_EXPLOSION,c.origin),e.free(c)};o.touch=(c,l,m,d)=>{if(l!==c.owner){if(l&&l.takedamage){u(c);return}c.groundentity||e.sound(c,0,"weapons/grenlb1b.wav",1,1,0)}},o.think=c=>{u(c)},e.scheduleThink(o,e.timeSeconds+s),e.finalizeSpawn(o)}function nr(e,t,n,i,r,a,s){let o=e.spawn();return s===10?o.classname="hyperblaster_bolt":s===58?(o.classname="blueblaster_bolt",o.modelindex=e.modelIndex("models/objects/laser/tris.md2"),o.skin=1):o.classname="blaster_bolt",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.solid=2,o.mins={x:-2,y:-2,z:-2},o.maxs={x:2,y:2,z:2},o.touch=(u,c,l,m)=>{if(c!==u.owner){if(c&&c.takedamage)fe(c,u,u.owner,u.velocity,u.origin,l?l.normal:W,r,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(l){let d=we.BLASTER;s===58&&(d=we.BLUEHYPERBLASTER),e.multicast(u.origin,1,se.temp_entity,d,u.origin,l.normal)}e.free(u)}},e.finalizeSpawn(o),o}function mk(e,t,n,i,r,a){let s=e.spawn();s.classname="ionripper",s.owner=t,s.origin={...n},s.velocity={x:i.x*a,y:i.y*a,z:i.z*a},s.movetype=10,s.solid=2,s.modelindex=e.modelIndex("models/objects/boomrang/tris.md2"),s.mins={x:-2,y:-2,z:-2},s.maxs={x:2,y:2,z:2},s.touch=(o,u,c,l)=>{if(u!==o.owner){if(u&&u.takedamage){fe(u,o,o.owner,o.velocity,o.origin,c?c.normal:W,r,1,4,35,e.timeSeconds,e.multicast.bind(e)),e.free(o);return}if(o.count=(o.count||0)+1,o.count>5){e.multicast(o.origin,1,se.temp_entity,we.WELDING_SPARKS,o.origin,W,228),e.free(o);return}e.sound(o,0,"weapons/ripphit.wav",1,1,0),c&&e.multicast(o.origin,1,se.temp_entity,we.WELDING_SPARKS,o.origin,c.normal,228)}},s.think=o=>{e.multicast(o.origin,1,se.temp_entity,we.WELDING_SPARKS,o.origin,W,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function hk(e,t,n,i,r,a){nr(e,t,n,i,r,a,58)}function fk(e,t,n,i){let r={...t.origin},a={x:(n.absmin.x+n.absmax.x)*.5,y:(n.absmin.y+n.absmax.y)*.5,z:(n.absmin.z+n.absmax.z)*.5},s=G(P(a,r)),o={x:r.x+s.x*2048,y:r.y+s.y*2048,z:r.z+s.z*2048},u=16,c=[],l=[],m={...r};try{for(let f=0;f<u;f++){let g=e.trace(m,null,null,o,t,De|Wt|mn|Xi);if(!g.ent||g.fraction>=1||(g.ent.takedamage&&g.ent!==t.owner&&fe(g.ent,t,t.owner,s,g.endpos,W,i,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(g.ent.svflags&4)&&!g.ent.client&&g.ent.classname!=="misc_explobox"))break;c.push(g.ent),l.push(g.ent.solid),g.ent.solid=0,m={...g.endpos}}let d=e.trace(r,null,null,o,t,De);e.multicast(t.origin,2,se.temp_entity,we.BFG_LASER,r,d.endpos)}finally{for(let d=0;d<c.length;d++)c[d].solid=l[d]}}function _k(e,t){let n=t.deathmatch?5:10,i=t.findByRadius(e.origin,256);for(let r of i){if(r===e||r===e.owner||!r.takedamage||!(r.svflags&4)&&!r.client&&r.classname!=="misc_explobox")continue;let a={x:(r.absmin.x+r.absmax.x)*.5,y:(r.absmin.y+r.absmax.y)*.5,z:(r.absmin.z+r.absmax.z)*.5};t.trace(e.origin,null,null,a,null,xc).fraction<1||fk(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function gk(e,t){if((e.frame===void 0||e.frame<0)&&(e.frame=0),e.frame===0){let n=t.findByRadius(e.origin,e.dmg_radius||100);for(let i of n){if(!i.takedamage||i===e.owner||!(i.svflags&4)&&!i.client&&i.classname!=="misc_explobox")continue;let r={x:(i.absmin.x+i.absmax.x)*.5,y:(i.absmin.y+i.absmax.y)*.5,z:(i.absmin.z+i.absmax.z)*.5},a=P(e.origin,r),s=Ge(a),o=e.dmg_radius||100,u=(e.radius_dmg||200)*(1-Math.sqrt(s/o));u>0&&fe(i,e,e.owner,e.velocity,r,W,Math.floor(u),0,4,14,t.timeSeconds,t.multicast.bind(t))}}if(e.frame++,e.frame>=5){t.free(e);return}t.scheduleThink(e,t.timeSeconds+.1)}function Gh(e,t,n,i,r,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("sprites/s_bfg1.sp2"),o.svflags=128,o.radius_dmg=r,o.dmg_radius=s,o.mins={x:-10,y:-10,z:-10},o.maxs={x:10,y:10,z:10},o.touch=(u,c,l,m)=>{if(c===u.owner)return;c&&c.takedamage&&fe(c,u,u.owner,u.velocity,u.origin,l?l.normal:W,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let d=e.findByRadius(u.origin,100);Rc(d,u,u.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(u.origin,2,se.temp_entity,we.BFG_BIGEXPLOSION,u.origin),u.solid=0,u.touch=void 0,u.velocity=W,u.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),u.frame=0,u.enemy=c,u.think=(f,g)=>gk(f,g),e.scheduleThink(u,e.timeSeconds+.1)},o.think=(u,c)=>_k(u,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}U();var v7=1/40;_n();Yt();Ih();Yt();var vk=1;Yt();Ih();Yt();_n();U();U();var pk=22;function _t(e,t,n,i,r,a){let s=Zn(t.origin),o={...s,z:s.z+(t.viewheight??pk)},u=D(i,n.x),c=D(r,n.y),l=D(a,n.z),m=F(F(F(o,u),c),l),d=e.trace(o,null,null,m,t,xc);return d.fraction<1?{x:d.endpos.x-i.x,y:d.endpos.y-i.y,z:d.endpos.z-i.z}:m}var yk=7,wk=18,Ak=36,Sk=39,Ek=5,kk=28,bk=52,xk=57,Tk=3,Mk=23,Rk=52,Lk=61,Nk=5,zk=21,Ok=52,Ik=61,Ck=3,Pk=18,Dk=51,Fk=56,Uk=3,Bk=12,Gk=34,Hk=38,Vk=6,Wk=9,Kk=28,$k=32,Xk=8,Yk=32,qk=54,Zk=58,jk=5,Jk=16,Qk=36,eb=39,tb=4,nb=8,ib=52,rb=55;var ab=46,sb=53;var ob=109,cb=117;var ub=1;var $t=tr();function gt(e,t,n=0,i=0){e.client&&(e.client.kick_angles={x:t,y:n,z:0},e.client.kick_origin={x:i,y:0,z:0})}function vt(e){if(!e.client)return;let t=(e.client.pm_flags&2)!==0;e.client.anim_priority=ub,t?(e.frame=ob-1,e.client.anim_end=cb):(e.frame=ab-1,e.client.anim_end=sb)}function Hh(e,t,n,i,r,a,s){let o={x:n.x+i.x*8192,y:n.y+i.y*8192,z:n.z+i.z*8192},u=e.trace(n,null,null,o,t,0);u.ent&&u.ent.takedamage?fe(u.ent,t,t,W,u.endpos,u.plane?u.plane.normal:W,r,a,16,s,e.time,e.multicast):u.plane&&e.multicast(u.endpos,1,se.temp_entity,we.GUNSHOT,u.endpos,u.plane.normal)}function lc(e,t,n,i,r,a,s,o,u,c,l,m){for(let d=0;d<s;d++){let f=F(D(r,$t.crandom()*c),D(a,$t.crandom()*l)),g=F(i,f),p={x:n.x+g.x*8192,y:n.y+g.y*8192,z:n.z+g.z*8192},v=e.trace(n,null,null,p,t,0);v.ent&&v.ent.takedamage?fe(v.ent,t,t,W,v.endpos,v.plane?v.plane.normal:W,o,u,16,m,e.time,e.multicast):v.plane&&$t.frandom()>.9&&e.multicast(v.endpos,1,se.temp_entity,we.GUNSHOT,v.endpos,v.plane.normal)}}function lb(e,t,n,i,r,a){let s={...n},o={...n},u={x:n.x+i.x*8192,y:n.y+i.y*8192,z:n.z+i.z*8192},c=t,l=0,m=u;for(;l<16;){l++;let d=e.trace(o,null,null,u,c,0);if(m=d.endpos,d.fraction>=1||(d.ent&&d.ent.takedamage&&fe(d.ent,t,t,W,d.endpos,d.plane?d.plane.normal:W,r,a,4,11,e.time,e.multicast),c=d.ent,o=d.endpos,!d.ent||d.ent===e.entities.world))break}e.multicast(s,2,se.temp_entity,we.RAILTRAIL,s,m)}function db(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Shells]<1)return;n.ammo.counts[I.Shells]--,e.multicast(t.origin,1,se.muzzleflash,t.index,Ah),gt(t,-2,0,-2),vt(t);let{forward:i,right:r,up:a}=Z(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a);lc(e,t,s,i,r,a,12,4,1,500,500,2)}function mb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Shells]<2)return;n.ammo.counts[I.Shells]-=2,e.multicast(t.origin,1,se.muzzleflash,t.index,xh),gt(t,-4,0,-4),vt(t);let{forward:i,right:r,up:a}=Z(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a),{forward:o,right:u,up:c}=Z({...t.angles,y:t.angles.y-5});lc(e,t,s,o,u,c,10,6,1,700,700,3);let{forward:l,right:m,up:d}=Z({...t.angles,y:t.angles.y+5});lc(e,t,s,l,m,d,10,6,1,700,700,3)}function hb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Bullets]<1)return;n.ammo.counts[I.Bullets]--,e.multicast(t.origin,1,se.muzzleflash,t.index,wh),gt(t,-1,$t.crandom()*.5,0),vt(t);let{forward:i,right:r,up:a}=Z(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a);Hh(e,t,s,i,8,1,4)}function fb(e,t){if(!t.client)return;let n=t.client.inventory,i=Oh(t.client.weaponStates,V.Chaingun);e.time-i.lastFireTime>200&&(i.spinupCount=0);let r=(i.spinupCount||0)+1;i.spinupCount=r;let a;if(r<=5?(a=1,r===1&&e.sound(t,0,"weapons/chngnu1a.wav",1,0,0)):(r<=10?a=2:a=3,e.sound(t,0,"weapons/chngnl1a.wav",1,0,0)),n.ammo.counts[I.Bullets]<a&&(a=n.ammo.counts[I.Bullets]),a===0)return;n.ammo.counts[I.Bullets]-=a;let s=e.deathmatch?6:8,o=1;gt(t,-.5,$t.crandom()*(.5+a*.15),0),vt(t);let{forward:u,right:c,up:l}=Z(t.angles),m=_t(e,t,{x:8,y:8,z:-8},u,c,l);for(let f=0;f<a;f++){let g=F(D(c,$t.crandom()*4),D(l,$t.crandom()*4)),p=F(u,g);Hh(e,t,m,p,s,o,5)}let d=Sh+a-1;e.multicast(t.origin,1,se.muzzleflash,t.index,d)}function _b(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Slugs]<1)return;n.ammo.counts[I.Slugs]--,e.multicast(t.origin,1,se.muzzleflash,t.index,Eh),gt(t,-3,0,-3),vt(t);let{forward:i,right:r,up:a}=Z(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?100:125,u=e.deathmatch?200:225;lb(e,t,s,i,o,u)}function gb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Cells]<1)return;n.ammo.counts[I.Cells]--,e.multicast(t.origin,1,se.muzzleflash,t.index,Mh),gt(t,-.5,0,0),vt(t);let{forward:i,right:r,up:a}=Z(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?15:20;nr(e.entities,t,s,i,o,1e3,10)}function vb(e,t){if(!t.client)return;e.multicast(t.origin,1,se.muzzleflash,t.index,yh),gt(t,-.5,0,0),vt(t);let{forward:n,right:i,up:r}=Z(t.angles),a=_t(e,t,{x:8,y:8,z:-8},n,i,r);nr(e.entities,t,a,n,15,1500,1)}function pb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Rockets]<1)return;n.ammo.counts[I.Rockets]--,e.multicast(t.origin,1,se.muzzleflash,t.index,kh),gt(t,-2,0,-2),vt(t);let{forward:i,right:r,up:a}=Z(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a),o=100+e.random.irandom(21);Bh(e.entities,t,s,i,o,120,650)}function yb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Grenades]<1)return;n.ammo.counts[I.Grenades]--,e.multicast(t.origin,1,se.muzzleflash,t.index,bh),gt(t,-2,0,-2),vt(t);let{forward:i,right:r,up:a}=Z(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a);Lc(e.entities,t,s,i,120,600)}function wb(e,t){if(!t.client)return;let n=t.client.inventory,i=t.client.gun_frame,r=i===9||i===0||i===void 0,a=i===22||i===0||i===void 0;if(r){if(n.ammo.counts[I.Cells]<50)return;n.ammo.counts[I.Cells]-=50,e.sound(t,0,"weapons/bfg__f1y.wav",1,0,0)}if(a){e.multicast(t.origin,1,se.muzzleflash,t.index,Th),gt(t,-5,0,-2),vt(t);let{forward:s,right:o,up:u}=Z(t.angles),c=_t(e,t,{x:8,y:8,z:-8},s,o,u),l=e.deathmatch?200:500;Gh(e.entities,t,c,s,l,400,200)}}function ln(e){let t=.1;return e.client?.inventory.powerups.has(ie.TechHaste)&&(t*=.5),e.client?.inventory.powerups.has(ie.QuadFire)&&(t*=.25),t}function Lt(e,t,n,i,r,a,s,o,u){if(!e.client)return;let c=e.client,l=u.timeSeconds;if(c.weapon_think_time&&c.weapon_think_time<=l&&(c.weapon_think_time=0),!(c.weapon_think_time&&c.weapon_think_time>l)){if(c.weaponstate===1){if(c.gun_frame<t){c.gun_frame++,c.weapon_think_time=l+ln(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=l+ln(e);return}if(c.weaponstate===2){if(c.gun_frame<r){c.gun_frame++,c.weapon_think_time=l+ln(e);return}Promise.resolve().then(()=>(KE(),Ch)).then(({ChangeWeapon:m})=>{m(e)});return}if(c.weaponstate===0){if(c.buttons&1){c.weaponstate=3,c.gun_frame=t+1;return}if(c.gun_frame<i){if(c.gun_frame++,c.weapon_think_time=l+ln(e),a){for(let m of a)if(c.gun_frame===m&&$t.frandom()<.5)return}return}c.gun_frame=n+1,c.weapon_think_time=l+ln(e);return}if(c.weaponstate===3){if(s){for(let m of s)if(c.gun_frame===m){o&&o(e);break}}if(c.gun_frame<n){c.gun_frame++,c.weapon_think_time=l+ln(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=l+ln(e);return}}}function Vh(e,t,n,i,r,a,s,o){if(!e.client)return;let u=e.client;u.weaponstate===3?(u.gun_frame===n||u.gun_frame===i?u.gun_frame=t:u.gun_frame++,s&&s(e),u.buttons&1||(u.gun_frame=i+1,u.weaponstate=0)):Lt(e,t-1,n,i,r,null,null,s,o)}function Ab(e,t){let n=Oh(e.client.weaponStates,V.Chaingun);!(e.client.buttons&vk)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0),Vh(e,Nk,zk,Ok,Ik,0,i=>fb(t.game,i),t)}var Sb=[22,28,34],Eb=[8];function kb(e,t){Lt(e,yk,wk,Ak,Sk,Sb,Eb,n=>db(t.game,n),t)}var bb=[29,42,57],xb=[22,28];function Tb(e,t){Lt(e,Ek,kk,bk,xk,bb,xb,n=>mb(t.game,n),t)}var Mb=[23,45],Rb=[4,5,30,31];function Lb(e,t){Lt(e,Tk,Mk,Rk,Lk,Mb,Rb,n=>hb(t.game,n),t)}var Nb=[25,33],zb=[4];function Ob(e,t){Lt(e,Uk,Bk,Gk,Hk,Nb,zb,n=>pb(t.game,n),t)}function Ib(e,t){Vh(e,Vk,Wk,Kk,$k,0,n=>gb(t.game,n),t)}var Cb=[56],Pb=[4];function Db(e,t){Lt(e,Ck,Pk,Dk,Fk,Cb,Pb,n=>_b(t.game,n),t)}var Fb=[39,45,50,54],Ub=[9,22];function Bb(e,t){Lt(e,Xk,Yk,qk,Zk,Fb,Ub,n=>wb(t.game,n),t)}var Gb=[34,51,59],Hb=[6];function Vb(e,t){Lt(e,jk,Jk,Qk,eb,Gb,Hb,n=>yb(t.game,n),t)}var Wb=[19,32],Kb=[5];function $b(e,t){Lt(e,tb,nb,ib,rb,Wb,Kb,n=>vb(t.game,n),t)}var p7={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:V.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5,think:$b},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:V.Shotgun,ammoType:I.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:kb},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:V.SuperShotgun,ammoType:I.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Tb},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:V.Machinegun,ammoType:I.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Lb},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:V.Chaingun,ammoType:I.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Ab},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:V.HandGrenade,ammoType:I.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:V.GrenadeLauncher,ammoType:I.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Vb},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:V.RocketLauncher,ammoType:I.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1,think:Ob},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:V.HyperBlaster,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Ib},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:V.Railgun,ammoType:I.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5,think:Db},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:V.BFG10K,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1,think:Bb},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:V.IonRipper,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:V.Phalanx,ammoType:I.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:V.PlasmaBeam,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:V.EtfRifle,ammoType:I.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:V.ProxLauncher,ammoType:I.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};_n();_n();U();U();var je=tr(),Xb=1;function rh(e,t,n,i,r){let a=e.spawn();a.classname="gib",a.origin={x:t.x+(je.frandom()-.5)*20,y:t.y+(je.frandom()-.5)*20,z:t.z+(je.frandom()-.5)*20},a.velocity={x:(je.frandom()-.5)*300,y:(je.frandom()-.5)*300,z:200+je.frandom()*100},a.movetype=9,a.solid=0,a.clipmask=1,a.avelocity={x:je.crandom()*600,y:je.crandom()*600,z:je.crandom()*600};let s=["models/objects/gibs/bone/tris.md2","models/objects/gibs/meat/tris.md2","models/objects/gibs/sm_meat/tris.md2"],o=i||s[Math.floor(je.frandom()*s.length)];return a.modelindex=e.modelIndex(o),a.mins={x:-2,y:-2,z:-2},a.maxs={x:2,y:2,z:2},r&&r&Xb,a.think=u=>{e.free(u)},e.scheduleThink(a,e.timeSeconds+10+je.frandom()*10),e.finalizeSpawn(a),a}function Wh(e,t,n){if(typeof n=="number"){let i=n,r=4+Math.floor(je.frandom()*4);for(let a=0;a<r;a++)rh(e,t,i)}else{let i=n;for(let r of i)for(let a=0;a<r.count;a++)rh(e,t,0,r.model,r.flags)}}U();function Yb(e,t){let n=e.monsterinfo.current_move;if(!n||((e.frame<n.firstframe||e.frame>n.lastframe)&&(e.monsterinfo.aiflags&=-129,e.frame=n.firstframe),(e.monsterinfo.aiflags&128)!==0))return;let i=e.frame-n.firstframe,r=n.frames[i];r.ai&&r.ai(e,r.dist,t),r.think&&r.think(e,t),e.inUse&&(e.frame++,e.frame>n.lastframe&&n.endfunc&&(n.endfunc(e,t),e.monsterinfo.current_move))}function qb(e,t){Yb(e,t),e.nextthink=t.timeSeconds+.1}var Ta=.1,$i=80;var Kh=tr();function Zb(){return Kh.frandom()}function $h(e,t){return Math.floor(Kh.frandom()*(t-e+1)+e)}function Kn(e,t,n){R(e,Ta,n)}function Qe(e,t,n){z(e,t,Ta,n)}function Gn(e,t,n){oe(e,t,Ta,n)}function pe(e,t,n){le(e,t,Ta,n)}function q(e,t,n){_(e,t)}var Zi={pain:"berserk/berpain2.wav",die:"berserk/berdeth2.wav",idle:"berserk/beridle1.wav",idle2:"berserk/idle.wav",punch:"berserk/attack.wav",search:"berserk/bersrch1.wav",sight:"berserk/sight.wav",thud:"mutant/thud1.wav",explod:"world/explod2.wav",jump:"berserk/jump.wav",footstep:"misc/step1.wav"};function it(e,t){t.sound(e,2,Zi.footstep,1,1,0)}function va(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function jb(e,t){}var Nc,Xh,Jb,Yh,Qb,e6,t6,n6,i6,qh,r6;function a6(e,t){va(e,Nc)}function s6(e,t){e.monsterinfo.aiflags&1||e.enemy||Zb()>.15||(va(e,Xh),t.sound(e,1,Zi.idle,1,2,0))}var o6=[{ai:Kn,dist:0,think:s6},{ai:Kn,dist:0},{ai:Kn,dist:0},{ai:Kn,dist:0},{ai:Kn,dist:0}];Nc={firstframe:0,lastframe:4,frames:o6,endfunc:null};var c6=Array.from({length:20},()=>({ai:Kn,dist:0}));Xh={firstframe:5,lastframe:24,frames:c6,endfunc:a6};var u6=[{ai:Qe,dist:9.1},{ai:Qe,dist:6.3},{ai:Qe,dist:4.9},{ai:Qe,dist:6.7,think:it},{ai:Qe,dist:6},{ai:Qe,dist:8.2},{ai:Qe,dist:7.2},{ai:Qe,dist:6.1},{ai:Qe,dist:4.9},{ai:Qe,dist:4.7,think:it},{ai:Qe,dist:4.7}];Jb={firstframe:25,lastframe:35,frames:u6,endfunc:null};var l6=[{ai:Gn,dist:21},{ai:Gn,dist:11,think:it},{ai:Gn,dist:21},{ai:Gn,dist:25,think:jb},{ai:Gn,dist:18,think:it},{ai:Gn,dist:19}];Yh={firstframe:36,lastframe:41,frames:l6,endfunc:null};function ir(e,t){e.monsterinfo.aiflags&1?va(e,Nc):va(e,Yh)}function Zh(e,t,n,i,r){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=Z(e.angles).forward,o={x:a.x+s.x+t.x,y:a.y+s.y+t.y,z:a.z+s.z+t.z},u={x:a.x+s.x*$i,y:a.y+s.y*$i,z:a.z+s.z*$i},c=r.trace(a,null,null,u,e,536870913);return!c.ent||!c.ent.takedamage?!1:(fe(c.ent,e,e,s,c.endpos,c.plane?.normal||W,n,i,0,0,r.timeSeconds,r.multicast.bind(r)),!0)}function d6(e,t){Zh(e,{x:$i,y:0,z:-24},$h(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function jh(e,t){t.sound(e,1,Zi.punch,1,1,0)}var m6=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:jh},{ai:pe,dist:0,think:d6},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];Qb={firstframe:67,lastframe:74,frames:m6,endfunc:ir};function h6(e,t){Zh(e,{x:$i,y:0,z:-4},$h(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var f6=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:it},{ai:pe,dist:0},{ai:pe,dist:0,think:jh},{ai:pe,dist:0},{ai:pe,dist:0,think:h6},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];e6={firstframe:75,lastframe:86,frames:f6,endfunc:ir};function _6(e,t,n,i,r,a){let s=a.findByRadius(e.origin,i);for(let o of s){if(o===e||!o.takedamage)continue;let u=Math.sqrt(Math.pow(o.origin.x-e.origin.x,2)+Math.pow(o.origin.y-e.origin.y,2)+Math.pow(o.origin.z-e.origin.z,2)),c=Math.max(0,1-u/i);if(c<=0)continue;let l=Math.max(1,n*c*c),m=r*c*c,d=G(P(o.origin,e.origin));fe(o,e,t,d,o.origin,d,l,m,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function zc(e,t){t.sound(e,1,Zi.thud,1,1,0),t.sound(e,2,Zi.explod,.75,1,0);let{forward:n,right:i}=Z(e.angles),r={x:20,y:-14.3,z:-21},a={x:e.origin.x+n.x*r.x+i.x*r.y,y:e.origin.y+n.y*r.x+i.y*r.y,z:e.origin.z+n.z*r.x+i.z*r.y+r.z},s=t.trace(e.origin,null,null,a,e,1);t.multicast(s.endpos,2,se.temp_entity,we.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},_6(e,e,8,165,300,t)}function g6(e,t,n,i,r){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,zc(e,r))}function Oc(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function v6(e,t){if(!e.enemy)return;let n=P(e.enemy.origin,e.origin),r=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=G({x:n.x,y:n.y,z:0}),s=jn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*r,y:a.y*r,z:450},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3,e.touch=(u,c,l,m)=>{g6(u,c,l,m,t),u.groundentity&&(u.frame=104,zc(u,t),u.touch=void 0)},Oc(e,t)}function p6(e,t){if(Oc(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(zc(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var y6=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:q,dist:0,think:v6},{ai:q,dist:0,think:Oc},{ai:q,dist:0,think:p6},{ai:q,dist:0,think:it},{ai:q,dist:0},{ai:q,dist:0,think:it},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0,think:it}];t6={firstframe:87,lastframe:109,frames:y6,endfunc:ir};var w6=[{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0}];n6={firstframe:149,lastframe:152,frames:w6,endfunc:ir};var A6=Array.from({length:20},(e,t)=>({ai:q,dist:0,think:t%5===4?it:void 0}));i6={firstframe:153,lastframe:172,frames:A6,endfunc:ir};function Jh(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=qh.lastframe,e.nextthink=-1,e.deadflag=2}var S6=[{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0,think:it},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0}];qh={firstframe:173,lastframe:185,frames:S6,endfunc:Jh};var E6=[{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0,think:it},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0}];r6={firstframe:186,lastframe:193,frames:E6,endfunc:Jh};U();function ah(){return 2*Math.random()-1}function pa(e,t,n,i,r,a,s,o,u,c=0){let l=n;if(a>0||s>0){let f=jn(n),{right:g,up:p}=Z(f),v=ah()*a,w=ah()*s;l={x:n.x+g.x*v+p.x*w,y:n.y+g.y*v+p.y*w,z:n.z+g.z*v+p.z*w},l=G(l)}let m=F(t,D(l,8192)),d=u.trace(t,m,W,W,e,Rt);!d.ent||d.fraction===1||fe(d.ent,e,e,l,d.endpos,d.plane?.normal||W,i,r,18,c,u.timeSeconds)}var Xt=pa;function k6(e,t,n,i,r,a,s,o,u,c,l=2){for(let m=0;m<o;m++)Xt(e,t,n,i,r,a,s,u,c,l)}function pt(e,t,n,i,r,a,s,o,u=1){nr(o,e,t,n,i,r,u)}function b6(e,t,n,i,r,a,s,o){hk(o,e,t,n,i,r)}function x6(e,t,n,i,r,a,s,o){mk(o,e,t,n,i,r)}function T6(e,t,n,i,r,a,s){Lc(s,e,t,n,i,r)}function rr(e,t,n,i,r,a,s){Bh(s,e,t,n,i,120,r)}function Qh(e,t,n,i,r,a,s,o,u){Gh(u,e,t,n,i,r,s)}function ef(e,t,n,i,r,a,s){let o=F(t,D(n,8192)),u=s.trace(t,o,W,W,e,Rt);s.multicast(t,2,se.temp_entity,we.RAILTRAIL,t,u.endpos),u.ent&&u.ent.takedamage&&fe(u.ent,e,e,n,u.endpos,W,i,r,6,11,s.timeSeconds)}function ar(e,t,n,i,r){if(!e.enemy)return!1;let{forward:a}=Z(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,u=F(s,D(a,o)),c=r.trace(s,u,W,W,e,Rt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let l=G(P(c.endpos,s));return fe(c.ent,e,e,l,c.endpos,c.plane?.normal||W,n,i,0,0,r.timeSeconds),!0}return!1}function M6(e,t,n,i,r,a,s,o){rr(e,t,n,i,r,a,o)}function sh(e,t){let n={...e.origin},i=F(n,D(e.movedir,2048)),r={...n},a=16,s=[],o=[];try{for(let u=0;u<a;u++){let c=t.trace(r,i,W,W,e,De|Wt|mn|Xi);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&fe(c.ent,e,e.owner,e.movedir,c.endpos,W,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,se.temp_entity,we.LASER_SPARKS,10,c.endpos,c.plane?.normal||W,e.skin);break}if(c.ent&&(c.ent.takedamage||c.ent.client)){s.push(c.ent),o.push(c.ent.solid),c.ent.solid=0,r={...c.endpos};continue}break}}finally{for(let u=0;u<s.length;u++)s[u].solid=o[u]}t.linkentity(e)}function R6(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function dc(e,t,n,i,r){let a=n?e.beam2:e.beam;(!a||!a.inUse)&&(a=r.spawn(),a.classname="laser_beam",a.movetype=0,a.solid=0,a.renderfx|=8,a.modelindex=1,a.owner=e,a.dmg=t,a.frame=2,a.skin=4076007664,a.think=(s,o)=>{s.postthink&&s.postthink(s,o),o.timeSeconds>=s.timestamp?R6(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{i(s,o),sh(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),sh(a,r)}U();var Ic=.1,L6={x:0,y:30,z:-15},N6={x:0,y:15,z:0},z6={x:0,y:-15,z:0},O6={x:0,y:-30,z:-15},I6={x:30,y:20,z:0},C6={x:30,y:-20,z:0};function P6(e,t,n){R(e,Ic,n)}function D6(e,t,n){z(e,t,Ic,n)}function Ma(e,t,n){le(e,t,Ic,n)}function Cc(e,t,n){_(e,t)}var Pc,tf,nf,F6,rf,af,U6,B6,G6,sf;function H6(e){e.monsterinfo.current_move=Pc}function V6(e){e.monsterinfo.current_move=tf}function sr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=nf:e.monsterinfo.current_move=Pc}function of(e){e.monsterinfo.current_move=rf}function W6(e){e.enemy&&qi(e,e.enemy)&&Math.random()<=.7?of(e):e.monsterinfo.current_move=af}function mc(e,t){let{forward:n,right:i,up:r}=Z(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),u=D(r,t.z);return F(F(F(a,s),o),u)}function K6(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=mc(e,I6),i=G(P(e.enemy.origin,n));Xt(e,n,i,6,4,.1,.05,0,t,4);let r=mc(e,C6),a=G(P(e.enemy.origin,r));Xt(e,r,a,6,4,.1,.05,0,t,4)}function $6(e,t){if(!e.enemy)return;let n=[L6,N6,z6,O6],i=n[Math.floor(Math.random()*n.length)],r=mc(e,i),a=G(P(e.enemy.origin,r));rr(e,r,a,50,500,0,t)}function X6(e){e.monsterinfo.nextframe=sf.lastframe,e.nextthink=-1}var cf=Array.from({length:20},()=>({ai:D6,dist:10}));tf={firstframe:0,lastframe:19,frames:cf,endfunc:V6};nf={firstframe:0,lastframe:19,frames:cf,endfunc:sr};var Y6=Array.from({length:21},()=>({ai:P6,dist:0}));Pc={firstframe:29,lastframe:49,frames:Y6,endfunc:H6};var q6=Array.from({length:9},(e,t)=>({ai:Ma,dist:2,think:t===8?of:null}));F6={firstframe:50,lastframe:58,frames:q6,endfunc:null};var Z6=Array.from({length:6},()=>({ai:Ma,dist:2,think:K6}));rf={firstframe:59,lastframe:64,frames:Z6,endfunc:W6};var j6=Array.from({length:4},()=>({ai:Ma,dist:2}));af={firstframe:65,lastframe:68,frames:j6,endfunc:sr};var J6=Array.from({length:21},(e,t)=>({ai:Ma,dist:2,think:t===12?$6:null}));U6={firstframe:69,lastframe:89,frames:J6,endfunc:sr};var Q6=Array.from({length:18},()=>({ai:Cc,dist:0}));B6={firstframe:90,lastframe:107,frames:Q6,endfunc:sr};var ex=Array.from({length:4},()=>({ai:Cc,dist:0}));G6={firstframe:108,lastframe:111,frames:ex,endfunc:sr};var tx=Array.from({length:49},()=>({ai:Cc,dist:0}));sf={firstframe:112,lastframe:160,frames:tx,endfunc:X6};U();var Ra=.1,Dc=80,La=Math.random;function uf(e,t,n){R(e,Ra,n)}function et(e,t,n){z(e,t,Ra,n)}function tt(e,t,n){oe(e,t,Ra,n)}function C(e,t,n){le(e,t,Ra,n)}function X(e,t,n){_(e,t)}var Fc,nx,ix,lf,df,rx,ax,sx,ox,cx,ux,lx,dx,mx;function mf(e){e.monsterinfo.current_move=Fc}function Zt(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=Fc:e.monsterinfo.current_move=lf}function hx(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function fx(e,t){let n={x:Dc,y:e.maxs.x,z:8};ar(e,n,15+Math.floor(La()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function _x(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function gx(e,t){let n={x:Dc,y:e.mins.x,z:8};ar(e,n,15+Math.floor(La()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function hf(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function ff(e,t){ar(e,{x:Dc,y:0,z:8},10+Math.floor(La()*5),-600,t)?e.count=1:e.monsterinfo.melee_debounce_time=t.timeSeconds+3,t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0)}function _f(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=df)}function oh(e,t){if(!e.enemy)return;let n=Z(e.angles).forward,i={...e.origin};i.z+=24;let r={...e.enemy.origin};if(t.trace(i,r,W,W,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,se.temp_entity,we.PARASITE_ATTACK,e,i,r);let s=P(i,r);fe(e.enemy,e,e,s,e.enemy.origin,W,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=Z(e.angles).forward;e.enemy.velocity=D(o,-1200)}var ch=[{x:.7467,y:.23837,z:34.16769},{x:-1.07639,y:.23837,z:33.386372},{x:-1.3355,y:5.3343,z:32.17717},{x:-.17536,y:8.84637,z:30.635479},{x:-2.75759,y:7.80461,z:30.15086},{x:-5.57509,y:5.15284,z:30.05616},{x:-7.01755,y:3.26247,z:30.552521},{x:-7.91574,y:.6388,z:33.176189},{x:-3.91539,y:8.28573,z:33.976349},{x:-.91354,y:10.93303,z:34.141811},{x:-.3699,y:8.9239,z:34.189079}],uh=[{x:-3.36471,y:.32775,z:33.938381},{x:-5.14045,y:.49348,z:32.659851},{x:-5.34198,y:5.64698,z:31.277901},{x:-4.13448,y:9.27744,z:29.925621},{x:-6.59834,y:6.81509,z:29.32262},{x:-8.61084,y:2.52965,z:29.251591},{x:-9.23136,y:.09328,z:29.747959},{x:-11.00411,y:1.93693,z:32.39526},{x:-7.87831,y:7.64819,z:33.148151},{x:-4.94737,y:11.43005,z:33.31361},{x:-4.33282,y:9.44457,z:33.52634}];function vx(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=Z(n.angles),s=n.frame-0;(s<0||s>=ch.length)&&(s=0);let o=ch[s],u=F(n.origin,D(r,o.x));u=F(u,D(i,o.y)),u=F(u,D(a,o.z));let c=G(P(n.enemy.origin,u));e.origin=u,e.movedir=c,t.linkentity(e)}function px(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=Z(n.angles),s=n.frame-0;(s<0||s>=uh.length)&&(s=0);let o=uh[s],u=F(n.origin,D(r,o.x));u=F(u,D(i,o.y)),u=F(u,D(a,o.z));let c=G(P(n.enemy.origin,u));e.origin=u,e.movedir=c,t.linkentity(e)}function ht(e,t){dc(e,1,!1,vx,t),dc(e,1,!0,px,t)}function yx(e){La()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function wx(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function Ax(e){}function Sx(e){e.monsterinfo.aiflags&=-17}var Ex=Array.from({length:30},()=>({ai:uf,dist:0}));Fc={firstframe:162,lastframe:191,frames:Ex,endfunc:mf};var kx=Array.from({length:30},()=>({ai:uf,dist:0}));nx={firstframe:192,lastframe:221,frames:kx,endfunc:mf};var bx=[{ai:et,dist:7},{ai:et,dist:2},{ai:et,dist:3},{ai:et,dist:3},{ai:et,dist:1},{ai:et,dist:0},{ai:et,dist:0},{ai:et,dist:9},{ai:et,dist:-4},{ai:et,dist:-1},{ai:et,dist:2}];ix={firstframe:0,lastframe:10,frames:bx,endfunc:null};var xx=[{ai:tt,dist:9},{ai:tt,dist:2},{ai:tt,dist:3},{ai:tt,dist:3},{ai:tt,dist:1},{ai:tt,dist:0},{ai:tt,dist:0},{ai:tt,dist:10},{ai:tt,dist:-4},{ai:tt,dist:-1},{ai:tt,dist:2}];lf={firstframe:0,lastframe:10,frames:xx,endfunc:null};var Tx=[{ai:C,dist:8},{ai:C,dist:3},{ai:C,dist:5},{ai:C,dist:0},{ai:C,dist:-3,think:hx},{ai:C,dist:0},{ai:C,dist:-5},{ai:C,dist:-7,think:fx},{ai:C,dist:0},{ai:C,dist:6,think:_x},{ai:C,dist:1},{ai:C,dist:2,think:gx},{ai:C,dist:-3},{ai:C,dist:6},{ai:C,dist:-1},{ai:C,dist:-3},{ai:C,dist:2},{ai:C,dist:-11}];df={firstframe:53,lastframe:70,frames:Tx,endfunc:Zt};var Mx=[{ai:C,dist:5},{ai:C,dist:-4},{ai:C,dist:-4},{ai:C,dist:-3},{ai:C,dist:0,think:hf},{ai:C,dist:0},{ai:C,dist:13,think:ff},{ai:C,dist:0},{ai:C,dist:2},{ai:C,dist:0},{ai:C,dist:-9,think:_f},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];rx={firstframe:71,lastframe:87,frames:Mx,endfunc:Zt};var Rx=[{ai:C,dist:5},{ai:C,dist:-4},{ai:C,dist:-4},{ai:C,dist:-3},{ai:C,dist:0,think:hf},{ai:C,dist:0,think:oh},{ai:C,dist:13},{ai:C,dist:0,think:ff},{ai:C,dist:2},{ai:C,dist:0,think:oh},{ai:C,dist:-9,think:_f},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];ax={firstframe:71,lastframe:87,frames:Rx,endfunc:Zt};var Lx=[{ai:C,dist:9,think:ht},{ai:C,dist:2,think:ht},{ai:C,dist:3,think:ht},{ai:C,dist:3,think:ht},{ai:C,dist:1,think:ht},{ai:C,dist:0,think:ht},{ai:C,dist:0,think:ht},{ai:C,dist:10,think:ht},{ai:C,dist:-4,think:ht},{ai:C,dist:-1,think:ht},{ai:C,dist:2,think:yx}];sx={firstframe:0,lastframe:10,frames:Lx,endfunc:Zt};var Nx=[{ai:X,dist:-6},{ai:X,dist:-2},{ai:X,dist:-6},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:2},{ai:X,dist:0},{ai:X,dist:2},{ai:X,dist:1},{ai:X,dist:7},{ai:X,dist:0},{ai:X,dist:3},{ai:X,dist:-1}];ox={firstframe:88,lastframe:108,frames:Nx,endfunc:Zt};var zx=[{ai:X,dist:-2},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:3},{ai:X,dist:1},{ai:X,dist:-2}];cx={firstframe:109,lastframe:116,frames:zx,endfunc:Zt};var Ox=[{ai:X,dist:-2},{ai:X,dist:2},{ai:X,dist:1},{ai:X,dist:3},{ai:X,dist:0},{ai:X,dist:-4}];ux={firstframe:117,lastframe:122,frames:Ox,endfunc:Zt};var Ix=Array.from({length:18},()=>({ai:X,dist:0}));lx={firstframe:123,lastframe:140,frames:Ix,endfunc:gf};var Cx=[{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:9},{ai:X,dist:0}];dx={firstframe:141,lastframe:145,frames:Cx,endfunc:gf};var Px=[{ai:X,dist:0},{ai:X,dist:-2,think:wx},{ai:X,dist:17,think:Ax},{ai:X,dist:-3},{ai:X,dist:-1,think:Sx},{ai:X,dist:-5},{ai:X,dist:-6},{ai:X,dist:-6}];mx={firstframe:146,lastframe:153,frames:Px,endfunc:Zt};function gf(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}U();var Na=.1,Dx=80,Qn=Math.random;function vf(e,t,n){R(e,Na,n)}function Fx(e,t,n){z(e,t,Na,n)}function Ux(e,t,n){oe(e,t,Na,n)}function Y(e,t,n){le(e,t,Na,n)}function ei(e,t,n){_(e,t)}var Uc,pf,yf,Bx,Bc,hc,Gx,Gc,wf,Hx,Vx,Wx,Kx,$x,Xx,Af;function Sf(e){e.monsterinfo.current_move=Uc}function Yx(e){e.monsterinfo.current_move=pf}function vn(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Uc;return}e.monsterinfo.current_move=yf}function qx(e){e.monsterinfo.aiflags&4||e.enemy||Qn()<=.3&&(e.monsterinfo.current_move=Af)}function Zx(e,t){Qn()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function jx(e,t){let n={x:Dx,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),ar(e,n,10+Math.floor(Qn()*6),100,t)}function Jx(e,t){let{forward:n,right:i}=Z(e.angles),r={x:0,y:20,z:40},a=F(e.origin,D(n,r.x)),s=D(i,r.y),o=F(a,s),u={...o,z:o.z+r.z},c=e.skin>1?500:650,l=!!e.monsterinfo.blindfire,m=W;if(l&&e.monsterinfo.blind_fire_target)m=e.monsterinfo.blind_fire_target;else if(e.enemy)m=e.enemy.origin;else return;let d=P(m,u);!l&&e.enemy&&(Qn()<.33||u.z<e.enemy.absmin.z?d={...d,z:d.z+e.enemy.viewheight}:d={...d,z:e.enemy.absmin.z+1-u.z});let f=G(d);e.skin>1?M6(e,u,f,50,c,0,.075,t):rr(e,u,f,50,c,0,t)}function Qx(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=P(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=jn(n).y}}function e3(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function t3(e){e.monsterinfo.current_move=Bc}function n3(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=hc;return}if(e.enemy&&e.enemy.health>0&&Qn()<=.6){e.monsterinfo.current_move=Bc;return}e.monsterinfo.current_move=hc}function i3(e){if(e.enemy&&e.enemy.health>0&&Qn()<=.9){e.monsterinfo.current_move=Gc;return}e.monsterinfo.current_move=wf}function r3(e){e.monsterinfo.current_move=Gc}var a3=Array.from({length:30},(e,t)=>({ai:vf,dist:0,think:t===8?(n,i)=>Zx(n,i):null}));Af={firstframe:201,lastframe:230,frames:a3,endfunc:Sf};var s3=Array.from({length:30},(e,t)=>({ai:vf,dist:0,think:t===29?qx:null}));Uc={firstframe:101,lastframe:130,frames:s3,endfunc:Sf};var o3=Array.from({length:10},()=>({ai:Fx,dist:6}));pf={firstframe:171,lastframe:180,frames:o3,endfunc:Yx};var c3=Array.from({length:10},()=>({ai:Ux,dist:12}));yf={firstframe:171,lastframe:180,frames:c3,endfunc:vn};var u3=Array.from({length:5},()=>({ai:ei,dist:0}));Hx={firstframe:90,lastframe:94,frames:u3,endfunc:vn};var l3=Array.from({length:5},()=>({ai:ei,dist:0}));Vx={firstframe:95,lastframe:99,frames:l3,endfunc:vn};var d3=Array.from({length:21},()=>({ai:ei,dist:0}));Wx={firstframe:100,lastframe:120,frames:d3,endfunc:vn};var m3=Array.from({length:12},()=>({ai:ei,dist:0}));Kx={firstframe:48,lastframe:59,frames:m3,endfunc:Ef};var h3=Array.from({length:23},()=>({ai:ei,dist:0}));$x={firstframe:60,lastframe:82,frames:h3,endfunc:Ef};function Ef(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var f3=[{ai:Y,dist:0,think:Qx},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:4},{ai:Y,dist:0},{ai:Y,dist:-3},{ai:Y,dist:3},{ai:Y,dist:5},{ai:Y,dist:7},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0,think:t3}];Bx={firstframe:0,lastframe:12,frames:f3,endfunc:null};var _3=[{ai:Y,dist:19,think:Jx},{ai:Y,dist:-6},{ai:Y,dist:-5},{ai:Y,dist:-2},{ai:Y,dist:-7},{ai:Y,dist:0},{ai:Y,dist:1},{ai:Y,dist:10,think:e3},{ai:Y,dist:4},{ai:Y,dist:5},{ai:Y,dist:6},{ai:Y,dist:6},{ai:Y,dist:4},{ai:Y,dist:3,think:n3}];Bc={firstframe:13,lastframe:26,frames:_3,endfunc:null};var g3=[{ai:Y,dist:-3},{ai:Y,dist:0},{ai:Y,dist:-6},{ai:Y,dist:-4},{ai:Y,dist:-2}];hc={firstframe:27,lastframe:31,frames:g3,endfunc:vn};var v3=[{ai:Y,dist:1},{ai:Y,dist:8},{ai:Y,dist:3}];Gx={firstframe:32,lastframe:34,frames:v3,endfunc:r3};var p3=[{ai:Y,dist:1},{ai:Y,dist:7,think:jx},{ai:Y,dist:-7},{ai:Y,dist:1},{ai:Y,dist:-1},{ai:Y,dist:1},{ai:Y,dist:0},{ai:Y,dist:1},{ai:Y,dist:-2,think:i3}];Gc={firstframe:35,lastframe:43,frames:p3,endfunc:null};var y3=[{ai:Y,dist:-6},{ai:Y,dist:-1},{ai:Y,dist:-6},{ai:Y,dist:0}];wf={firstframe:44,lastframe:47,frames:y3,endfunc:vn};var w3=Array.from({length:7},()=>({ai:ei,dist:0}));Xx={firstframe:83,lastframe:89,frames:w3,endfunc:vn};var za=.1,A3=80,S3=24;function E3(e,t,n){R(e,za,n)}function k3(e,t,n){z(e,t,za,n)}function kf(e,t,n){oe(e,t,za,n)}function Ae(e,t,n){le(e,t,za,n)}function Hc(e,t,n){_(e,t)}var b3,x3,bf,xf,T3,M3,R3,L3;function N3(e){e.monsterinfo.current_move=xf}function Vc(e){e.monsterinfo.current_move=bf}function lh(e,t){ar(e,{x:A3,y:0,z:0},5,0,t)}function z3(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var O3=[{ai:E3,dist:0}];b3={firstframe:41,lastframe:41,frames:O3,endfunc:null};var I3=Array.from({length:24},()=>({ai:kf,dist:S3}));xf={firstframe:70,lastframe:93,frames:I3,endfunc:null};var C3=Array.from({length:6},()=>({ai:kf,dist:8}));bf={firstframe:65,lastframe:70,frames:C3,endfunc:N3};var P3=Array.from({length:24},()=>({ai:k3,dist:4}));x3={firstframe:41,lastframe:64,frames:P3,endfunc:null};var D3=Array.from({length:5},()=>({ai:Hc,dist:0}));M3={firstframe:99,lastframe:103,frames:D3,endfunc:Vc};var F3=Array.from({length:5},()=>({ai:Hc,dist:0}));R3={firstframe:94,lastframe:98,frames:F3,endfunc:Vc};var U3=[{ai:Ae,dist:0,think:z3},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0,think:lh},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0,think:lh},{ai:Ae,dist:0}];T3={firstframe:0,lastframe:19,frames:U3,endfunc:Vc};function B3(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var G3=Array.from({length:56},()=>({ai:Hc,dist:0}));L3={firstframe:104,lastframe:159,frames:G3,endfunc:B3};U();var Oa=.1;function H3(e,t,n){R(e,Oa,n)}function V3(e,t,n){z(e,t,Oa,n)}function W3(e,t,n){oe(e,t,Oa,n)}function K3(e,t,n){le(e,t,Oa,n)}function Tf(e,t,n){_(e,t)}var Wc,Mf,Rf,$3,X3,Lf;function Y3(e){e.monsterinfo.current_move=Wc}function q3(e){e.monsterinfo.current_move=Mf}function Kc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Rf:e.monsterinfo.current_move=Wc}function Z3(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(P(e.enemy.origin,n));pt(e,n,i,5,1e3,0,0,t,1)}function j3(e){e.monsterinfo.nextframe=Lf.lastframe,e.nextthink=-1}var J3=Array.from({length:46},()=>({ai:H3,dist:0}));Wc={firstframe:0,lastframe:45,frames:J3,endfunc:Y3};var Q3=Array.from({length:46},()=>({ai:V3,dist:5}));Mf={firstframe:0,lastframe:45,frames:Q3,endfunc:q3};var e8=Array.from({length:46},()=>({ai:W3,dist:10}));Rf={firstframe:0,lastframe:45,frames:e8,endfunc:Kc};var t8=Array.from({length:20},(e,t)=>({ai:K3,dist:0,think:t===10?Z3:null}));$3={firstframe:46,lastframe:65,frames:t8,endfunc:Kc};var n8=Array.from({length:6},()=>({ai:Tf,dist:0}));X3={firstframe:66,lastframe:71,frames:n8,endfunc:Kc};var i8=Array.from({length:10},()=>({ai:Tf,dist:0}));Lf={firstframe:84,lastframe:93,frames:i8,endfunc:j3};U();var Ia=.1;function r8(e,t,n){R(e,Ia,n)}function a8(e,t,n){z(e,t,Ia,n)}function s8(e,t,n){oe(e,t,Ia,n)}function o8(e,t,n){le(e,t,Ia,n)}function Nf(e,t,n){_(e,t)}var $c,zf,Of,c8,u8,If;function l8(e){e.monsterinfo.current_move=$c}function d8(e){e.monsterinfo.current_move=zf}function Xc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Of:e.monsterinfo.current_move=$c}function m8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(P(e.enemy.origin,n));pt(e,n,i,5,1e3,0,0,t,1)}function h8(e,t){if(!e.enemy)return;let n=5+Math.random()*5;qt(e,e.enemy)<=80&&qi(e,e.enemy)&&fe(e.enemy,e,e,G(P(e.enemy.origin,e.origin)),e.enemy.origin,W,n,5,2,0,t.timeSeconds)}function f8(e){e.monsterinfo.nextframe=If.lastframe,e.nextthink=-1}var _8=Array.from({length:46},()=>({ai:r8,dist:0}));$c={firstframe:0,lastframe:45,frames:_8,endfunc:l8};var g8=Array.from({length:46},()=>({ai:a8,dist:5}));zf={firstframe:0,lastframe:45,frames:g8,endfunc:d8};var v8=Array.from({length:46},()=>({ai:s8,dist:10}));Of={firstframe:0,lastframe:45,frames:v8,endfunc:Xc};var p8=Array.from({length:20},(e,t)=>({ai:o8,dist:0,think:t===10?m8:t===12?h8:null}));c8={firstframe:46,lastframe:65,frames:p8,endfunc:Xc};var y8=Array.from({length:6},()=>({ai:Nf,dist:0}));u8={firstframe:66,lastframe:71,frames:y8,endfunc:Xc};var w8=Array.from({length:10},()=>({ai:Nf,dist:0}));If={firstframe:84,lastframe:93,frames:w8,endfunc:f8};U();var Ca=.1;function A8(e,t,n){R(e,Ca,n)}function S8(e,t,n){z(e,t,Ca,n)}function E8(e,t,n){oe(e,t,Ca,n)}function Cf(e,t,n){le(e,t,Ca,n)}function Pf(e,t,n){_(e,t)}var Yc,Df,Ff,k8,b8,x8,Uf;function T8(e){e.monsterinfo.current_move=Yc}function M8(e){e.monsterinfo.current_move=Df}function Pa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ff:e.monsterinfo.current_move=Yc}function R8(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function L8(e,t){if(!e.enemy||!qi(e,e.enemy))return;let n=qt(e,e.enemy);if(R8(n)!=="melee")return;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=G(P(e.enemy.origin,i));fe(e.enemy,e,e,r,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function N8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=G(P(e.enemy.origin,n));ef(e,n,i,50,100,0,t)}function z8(e){e.monsterinfo.nextframe=Uf.lastframe,e.nextthink=-1}var O8=Array.from({length:30},()=>({ai:A8,dist:0}));Yc={firstframe:0,lastframe:29,frames:O8,endfunc:T8};var I8=Array.from({length:40},()=>({ai:S8,dist:3}));Df={firstframe:30,lastframe:69,frames:I8,endfunc:M8};var C8=Array.from({length:20},()=>({ai:E8,dist:12}));Ff={firstframe:70,lastframe:89,frames:C8,endfunc:Pa};var P8=Array.from({length:10},(e,t)=>({ai:Cf,dist:0,think:t===5?L8:null}));k8={firstframe:90,lastframe:99,frames:P8,endfunc:Pa};var D8=Array.from({length:12},(e,t)=>({ai:Cf,dist:0,think:t===6?N8:null}));b8={firstframe:100,lastframe:111,frames:D8,endfunc:Pa};var F8=Array.from({length:6},()=>({ai:Pf,dist:0}));x8={firstframe:112,lastframe:117,frames:F8,endfunc:Pa};var U8=Array.from({length:12},()=>({ai:Pf,dist:0}));Uf={firstframe:118,lastframe:129,frames:U8,endfunc:z8};U();var Da=.1;function Bf(e,t,n){R(e,Da,n)}function B8(e,t,n){z(e,t,Da,n)}function Gf(e,t,n){oe(e,t,Da,n)}function Fa(e,t,n){le(e,t,Da,n)}function Se(e,t,n){_(e,t)}var qc,Hf,G8,Vf,H8,V8,W8,Zc,Wf,K8,$8,X8,Kf,Y8,$f;function q8(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function Z8(e){e.monsterinfo.current_move=qc}function j8(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=Hf)}function pn(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=qc:e.monsterinfo.current_move=Vf}function J8(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function Q8(e,t){e.monsterinfo.current_move=Zc}function eT(e,t){if(e.enemy&&e.enemy.health>0&&gn(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=Zc;return}e.monsterinfo.current_move=Wf}function tT(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},i=G(P(e.enemy.origin,n)),r=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),Xt(e,n,i,r,a,300,500,0,t,5)}function Xf(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(P(e.enemy.origin,n)),r=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),Lc(t,e,n,i,r,a)}function nT(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&Xf(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function iT(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function rT(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function aT(e,t){if(!e.enemy)return;let n=P(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),r=600,a=G({x:n.x,y:n.y,z:0}),s=jn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*r,y:a.y*r,z:270},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3}function sT(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049;return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=214:e.monsterinfo.nextframe=212}function oT(e,t){if(e.spawnflags&16||!e.enemy||!e.groundentity)return;Math.sqrt(Math.pow(e.enemy.origin.x-e.origin.x,2)+Math.pow(e.enemy.origin.y-e.origin.y,2))>256&&Math.random()<.02&&(t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),e.monsterinfo.current_move=$f)}var cT=Array.from({length:30},(e,t)=>({ai:Bf,dist:0,think:t===29?j8:null}));qc={firstframe:0,lastframe:29,frames:cT,endfunc:null};var uT=Array.from({length:40},(e,t)=>({ai:Bf,dist:0,think:t===7?q8:null}));Hf={firstframe:30,lastframe:69,frames:uT,endfunc:Z8};var lT=[0,3,4,5,7,2,6,4,2,7,5,7,4],dT=lT.map(e=>({ai:B8,dist:e}));G8={firstframe:76,lastframe:88,frames:dT,endfunc:null};var mT=[26,9,9,9,15,10,13,6],hT=mT.map((e,t)=>({ai:Gf,dist:e,think:t%4===0?oT:null}));Vf={firstframe:94,lastframe:101,frames:hT,endfunc:null};var fT=[32,15,10,18,8,20],_T=fT.map(e=>({ai:Gf,dist:e}));H8={firstframe:102,lastframe:107,frames:_T,endfunc:null};var gT=Array.from({length:21},(e,t)=>({ai:Fa,dist:0,think:[4,7,10,13].includes(t)?Xf:null}));W8={firstframe:108,lastframe:128,frames:gT,endfunc:pn};var vT=Array.from({length:7},(e,t)=>({ai:Fa,dist:0,think:t===0?J8:null}));V8={firstframe:137,lastframe:143,frames:vT,endfunc:Q8};var pT=Array.from({length:8},()=>({ai:Fa,dist:0,think:tT}));Zc={firstframe:144,lastframe:151,frames:pT,endfunc:eT};var yT=Array.from({length:7},()=>({ai:Fa,dist:0}));Wf={firstframe:152,lastframe:158,frames:yT,endfunc:pn};var wT=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],AT=wT.map(e=>({ai:Se,dist:e}));K8={firstframe:159,lastframe:176,frames:AT,endfunc:pn};var ST=[-2,11,6,2,-1,-7,-2,-7],ET=ST.map(e=>({ai:Se,dist:e}));$8={firstframe:177,lastframe:184,frames:ET,endfunc:pn};var kT=[-3,1,1,0,1],bT=kT.map(e=>({ai:Se,dist:e}));X8={firstframe:185,lastframe:189,frames:bT,endfunc:pn};var xT=[0,0,0,-7,-3,-5,8,6,0,0,0],TT=xT.map(e=>({ai:Se,dist:e}));function MT(e){e.monsterinfo.nextframe=Kf.lastframe,e.nextthink=-1,e.solid=0}Kf={firstframe:190,lastframe:200,frames:TT,endfunc:MT};var RT=[{ai:Se,dist:1,think:nT},{ai:Se,dist:1},{ai:Se,dist:1,think:iT},{ai:Se,dist:0},{ai:Se,dist:-1},{ai:Se,dist:-1},{ai:Se,dist:0,think:rT},{ai:Se,dist:-1}];Y8={firstframe:201,lastframe:208,frames:RT,endfunc:pn};var LT=[{ai:Se,dist:0,think:aT},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0,think:sT},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0}];$f={firstframe:209,lastframe:216,frames:LT,endfunc:pn};U();var Ua=.1;function NT(e,t,n){R(e,Ua,n)}function zT(e,t,n){z(e,t,Ua,n)}function OT(e,t,n){oe(e,t,Ua,n)}function IT(e,t,n){le(e,t,Ua,n)}function Yf(e,t,n){_(e,t)}var jc,qf,Zf,CT,PT,jf;function DT(e){e.monsterinfo.current_move=jc}function FT(e){e.monsterinfo.current_move=qf}function Jc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Zf:e.monsterinfo.current_move=jc}function UT(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(P(e.enemy.origin,n));pt(e,n,i,5,1e3,0,0,t,1)}function BT(e){e.monsterinfo.nextframe=jf.lastframe,e.nextthink=-1}var GT=Array.from({length:46},()=>({ai:NT,dist:0}));jc={firstframe:0,lastframe:45,frames:GT,endfunc:DT};var HT=Array.from({length:46},()=>({ai:zT,dist:5}));qf={firstframe:0,lastframe:45,frames:HT,endfunc:FT};var VT=Array.from({length:46},()=>({ai:OT,dist:10}));Zf={firstframe:0,lastframe:45,frames:VT,endfunc:Jc};var WT=Array.from({length:20},(e,t)=>({ai:IT,dist:0,think:t===10?UT:null}));CT={firstframe:46,lastframe:65,frames:WT,endfunc:Jc};var KT=Array.from({length:6},()=>({ai:Yf,dist:0}));PT={firstframe:66,lastframe:71,frames:KT,endfunc:Jc};var $T=Array.from({length:10},()=>({ai:Yf,dist:0}));jf={firstframe:84,lastframe:93,frames:$T,endfunc:BT};U();var Ba=.1;function XT(e,t,n){R(e,Ba,n)}function YT(e,t,n){z(e,t,Ba,n)}function qT(e,t,n){oe(e,t,Ba,n)}function ZT(e,t,n){le(e,t,Ba,n)}function Jf(e,t,n){_(e,t)}var Qc,Qf,e1,jT,JT,t1;function QT(e){e.monsterinfo.current_move=Qc}function eM(e){e.monsterinfo.current_move=Qf}function eu(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=e1:e.monsterinfo.current_move=Qc}function tM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(P(e.enemy.origin,n));pt(e,n,i,5,1e3,0,0,t,1)}function nM(e){e.monsterinfo.nextframe=t1.lastframe,e.nextthink=-1}var iM=Array.from({length:46},()=>({ai:XT,dist:0}));Qc={firstframe:0,lastframe:45,frames:iM,endfunc:QT};var rM=Array.from({length:46},()=>({ai:YT,dist:5}));Qf={firstframe:0,lastframe:45,frames:rM,endfunc:eM};var aM=Array.from({length:46},()=>({ai:qT,dist:10}));e1={firstframe:0,lastframe:45,frames:aM,endfunc:eu};var sM=Array.from({length:20},(e,t)=>({ai:ZT,dist:0,think:t===10?tM:null}));jT={firstframe:46,lastframe:65,frames:sM,endfunc:eu};var oM=Array.from({length:6},()=>({ai:Jf,dist:0}));JT={firstframe:66,lastframe:71,frames:oM,endfunc:eu};var cM=Array.from({length:10},()=>({ai:Jf,dist:0}));t1={firstframe:84,lastframe:93,frames:cM,endfunc:nM};U();var Ga=.1;function uM(e,t,n){R(e,Ga,n)}function lM(e,t,n){z(e,t,Ga,n)}function dM(e,t,n){oe(e,t,Ga,n)}function mM(e,t,n){le(e,t,Ga,n)}function tu(e,t,n){_(e,t)}var nu,n1,i1,hM,fM,r1,_M;function gM(e){e.monsterinfo.current_move=nu}function vM(e){e.monsterinfo.current_move=n1}function Ha(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=i1:e.monsterinfo.current_move=nu}function pM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)},r=G(P(i,n));Xt(e,n,r,5,2,.05,.05,0,t,4)}var yM=Array.from({length:22},()=>({ai:uM,dist:0}));nu={firstframe:0,lastframe:21,frames:yM,endfunc:gM};var wM=Array.from({length:15},()=>({ai:lM,dist:4}));n1={firstframe:22,lastframe:36,frames:wM,endfunc:vM};var AM=Array.from({length:8},()=>({ai:dM,dist:12}));i1={firstframe:37,lastframe:44,frames:AM,endfunc:Ha};var SM=Array.from({length:15},(e,t)=>({ai:mM,dist:0,think:t>=5&&t<=7?pM:null}));hM={firstframe:45,lastframe:59,frames:SM,endfunc:Ha};var EM=Array.from({length:10},()=>({ai:tu,dist:0}));fM={firstframe:60,lastframe:69,frames:EM,endfunc:Ha};var kM=Array.from({length:20},()=>({ai:tu,dist:0}));function bM(e){e.monsterinfo.nextframe=r1.lastframe,e.nextthink=-1}r1={firstframe:70,lastframe:89,frames:kM,endfunc:bM};var xM=Array.from({length:5},()=>({ai:tu,dist:0}));_M={firstframe:90,lastframe:94,frames:xM,endfunc:Ha};U();var or=.1,TM={x:30,y:28,z:24},MM={x:26,y:16,z:24},RM={x:26,y:-14,z:24};function LM(e,t,n){R(e,or,n)}function NM(e,t,n){z(e,t,or,n)}function zM(e,t,n){oe(e,t,or,n)}function a1(e,t,n){le(e,t,or,n)}function ti(e,t,n){_(e,t)}var iu,s1,o1,c1,ru,u1,l1,d1,m1,au,fc;function h1(e){e.monsterinfo.current_move=iu}function f1(e){e.monsterinfo.current_move=s1}function Nt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=o1:e.monsterinfo.current_move=iu}function OM(e){if(!e.enemy)return;let t=Math.random();t<=.3?e.monsterinfo.current_move=c1:t<=.6?e.monsterinfo.current_move=ru:e.monsterinfo.current_move=u1}function su(e,t){let{forward:n,right:i,up:r}=Z(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),u=D(r,t.z);return F(F(F(a,s),o),u)}function IM(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=su(e,TM),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=G(P(i,n));Qh(e,n,r,50,300,100,300,0,t)}function CM(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=su(e,RM),i=G(P(e.pos1,n));ef(e,n,i,50,100,0,t)}function PM(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function DM(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=su(e,MM),i=(e.monsterinfo.nextframe||0)-ru.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=P(s,n),c={...jn(o)};i<=12?c.y-=5*(i-4):c.y-=40-5*(i-12),a=Z(c).forward}else{let{forward:s}=Z(e.angles);a=s}pt(e,n,a,15,1e3,0,0,t,1)}function FM(e,t,n,i,r){e.health<e.max_health/2&&(e.skin=1),!(e.timestamp<(e.pain_finished_time||0))&&(i<=25&&Math.random()<.2||(e.pain_finished_time=e.timestamp+3,i<=40?(r.engine.sound?.(e,0,"makron/pain1.wav",1,1,0),e.monsterinfo.current_move=l1):i<=110?(r.engine.sound?.(e,0,"makron/pain2.wav",1,1,0),e.monsterinfo.current_move=d1):Math.random()<=.45&&(r.engine.sound?.(e,0,"makron/pain3.wav",1,1,0),e.monsterinfo.current_move=m1)))}function UM(e,t){++e.frame>=365&&(e.frame=346),e.nextthink=t.timeSeconds+.1,e.angles.x>0&&(e.angles={...e.angles,x:Math.max(0,e.angles.x-15)})}function BM(e,t){e.frame=346,e.model="models/monsters/boss3/rider/tris.md2",e.skin=1,e.think=UM,e.nextthink=t.timeSeconds+.1,t.sound(e,0,"makron/spine.wav",1,1,0),e.movetype=7;let{forward:n,up:i}=Z(e.angles),r=D(i,120),a=D(n,-120);e.velocity=F(F(e.velocity,r),a),e.origin=F(e.origin,D(n,-10)),e.angles={...e.angles,x:90},e.avelocity=W,t.linkentity(e)}function GM(e,t){let n=t.spawn();n.classname="makron_torso",n.origin={...e.origin},n.angles={...e.angles},n.origin.z+=e.maxs.z-15,BM(n,t)}function HM(e,t){t.engine.sound?.(e,0,"makron/death.wav",1,1,0),GM(e,t),e.monsterinfo.current_move=au,e.mins={x:-60,y:-60,z:0},e.maxs={x:60,y:60,z:48}}function VM(e){e.monsterinfo.nextframe=au.lastframe,e.nextthink=-1}var WM=Array.from({length:60},()=>({ai:LM,dist:0}));iu={firstframe:0,lastframe:59,frames:WM,endfunc:h1};var KM=Array.from({length:10},()=>({ai:NM,dist:8}));s1={firstframe:60,lastframe:69,frames:KM,endfunc:f1};var $M=Array.from({length:10},()=>({ai:zM,dist:8}));o1={firstframe:60,lastframe:69,frames:$M,endfunc:Nt};var XM=Array.from({length:8},(e,t)=>({ai:a1,dist:0,think:t===3?IM:null}));c1={firstframe:70,lastframe:77,frames:XM,endfunc:Nt};var YM=Array.from({length:26},(e,t)=>({ai:ti,dist:0,think:t>=4&&t<=20?DM:null}));ru={firstframe:78,lastframe:103,frames:YM,endfunc:Nt};var qM=Array.from({length:16},(e,t)=>({ai:a1,dist:0,think:t===7?PM:t===8?CM:null}));u1={firstframe:104,lastframe:119,frames:qM,endfunc:Nt};var ZM=Array.from({length:4},()=>({ai:ti,dist:0}));l1={firstframe:120,lastframe:123,frames:ZM,endfunc:Nt};var jM=Array.from({length:4},()=>({ai:ti,dist:0}));d1={firstframe:124,lastframe:127,frames:jM,endfunc:Nt};var JM=Array.from({length:27},()=>({ai:ti,dist:0}));m1={firstframe:128,lastframe:154,frames:JM,endfunc:Nt};var QM=Array.from({length:95},()=>({ai:ti,dist:0}));au={firstframe:155,lastframe:249,frames:QM,endfunc:VM};var e4=Array.from({length:13},()=>({ai:ti,dist:0}));fc={firstframe:250,lastframe:262,frames:e4,endfunc:Nt};function t4(e,t){e.classname="monster_makron",e.model="models/monsters/boss3/rider/tris.md2",e.mins={x:-30,y:-30,z:0},e.maxs={x:30,y:30,z:90},e.movetype=5,e.solid=2,e.health=3e3,e.max_health=3e3,e.mass=500,e.takedamage=!0,e.viewheight=90,e.pain=(n,i,r,a)=>FM(n,i,r,a,t.entities),e.die=(n,i,r,a,s)=>{if(n.health<=-2e3){Wh(t.entities,n.origin,a),t.entities.free(n);return}n.deadflag=2,n.solid=0,HM(n,t.entities)},e.monsterinfo.stand=h1,e.monsterinfo.walk=f1,e.monsterinfo.run=Nt,e.monsterinfo.attack=OM,e.monsterinfo.sight=(n,i)=>{t.entities.sound?.(n,0,"makron/sight.wav",1,1,0),n.monsterinfo.current_move=fc},e.think=qb,e.monsterinfo.current_move=fc,e.nextthink=e.timestamp+or}U();var Va=.1,n4={x:40,y:-20,z:20},i4={x:40,y:20,z:20},r4={x:30,y:0,z:40};function a4(e,t,n){R(e,Va,n)}function s4(e,t,n){z(e,t,Va,n)}function o4(e,t,n){oe(e,t,Va,n)}function ou(e,t,n){le(e,t,Va,n)}function cr(e,t,n){_(e,t)}var cu,_1,g1,uu,_c,c4,u4,l4,d4,v1;function m4(e){e.monsterinfo.current_move=cu}function h4(e){e.monsterinfo.current_move=_1}function ni(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=g1:e.monsterinfo.current_move=cu}function f4(e,t){let n=(i,r,a,s,o,u)=>{let c=t.trace(i,r,a,s,o,u);return{fraction:c.fraction,ent:c.ent}};e.enemy&&gn(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=uu:e.monsterinfo.current_move=_c}function gc(e,t){let{forward:n,right:i,up:r}=Z(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),u=D(r,t.z);return F(F(F(a,s),o),u)}function _4(e,t){if(!e.enemy)return;let n=gc(e,i4),i=G(P(e.enemy.origin,n));pa(e,n,i,6,4,.05,.05,0,t,4);let r=gc(e,n4),a=G(P(e.enemy.origin,r));pa(e,r,a,6,4,.05,.05,0,t,4)}function g4(e,t){if(!e.enemy)return;let n=gc(e,r4),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=G(P(i,n));Qh(e,n,r,50,300,100,200,0,t)}function v4(e){e.monsterinfo.nextframe=v1.lastframe,e.nextthink=-1}function p4(e,t){let n=t.spawn();if(n.classname="monster_makron",n.origin={...e.origin},n.target=e.target,n.enemy=e.enemy,t4(n,{entities:t}),n.enemy&&n.enemy.health>0){let r=P(n.enemy.origin,n.origin);n.angles={...n.angles,y:er(r)};let a=G(r),s=D(a,400);n.velocity={x:s.x,y:s.y,z:200},n.groundentity=null,n.monsterinfo.sight&&n.monsterinfo.sight(n,n.enemy)}}var y4=Array.from({length:51},()=>({ai:a4,dist:0}));cu={firstframe:0,lastframe:50,frames:y4,endfunc:m4};var w4=Array.from({length:14},()=>({ai:s4,dist:10}));_1={firstframe:51,lastframe:64,frames:w4,endfunc:h4};var A4=Array.from({length:14},()=>({ai:o4,dist:10}));g1={firstframe:51,lastframe:64,frames:A4,endfunc:ni};var S4=Array.from({length:8},()=>({ai:ou,dist:0})),E4={firstframe:65,lastframe:72,frames:S4,endfunc:null},k4=Array.from({length:6},()=>({ai:ou,dist:0,think:_4}));uu={firstframe:73,lastframe:78,frames:k4,endfunc:f4};E4.endfunc=e=>{e.monsterinfo.current_move=uu};var b4=Array.from({length:4},()=>({ai:cr,dist:0}));_c={firstframe:79,lastframe:82,frames:b4,endfunc:ni};var x4=Array.from({length:13},(e,t)=>({ai:ou,dist:0,think:t===6?g4:null}));c4={firstframe:83,lastframe:95,frames:x4,endfunc:ni};var T4=Array.from({length:3},()=>({ai:cr,dist:0}));u4={firstframe:96,lastframe:98,frames:T4,endfunc:ni};var M4=Array.from({length:3},()=>({ai:cr,dist:0}));l4={firstframe:99,lastframe:101,frames:M4,endfunc:ni};var R4=Array.from({length:25},()=>({ai:cr,dist:0}));d4={firstframe:102,lastframe:126,frames:R4,endfunc:ni};var L4=Array.from({length:50},(e,t)=>({ai:cr,dist:0,think:t===49?((n,i)=>{}):t===48?p4:null}));v1={firstframe:127,lastframe:176,frames:L4,endfunc:v4};var lu=.1,Wa=4,p1=8,Ka=16,N4=32,du=64,z4=0,O4=39,I4=40,C4=58,P4=59,y1=64,D4=93,F4=95,mu=99,w1=159,A1=160,S1=172,E1=173,k1=198,U4=199,B4=209,G4=210,H4=226,hu=227,fu=235,b1=236,ya=244,V4=245,W4=251,K4=252,$4=266,X4=267,Y4=281,x1,T1,M1,R1,L1,ur,N1,z1,O1,I1,q4,Z4,C1,P1,j4,J4,_u,D1,Q4="insane/insane11.wav",eR="insane/insane5.wav",tR="insane/insane7.wav",dh=["insane/insane1.wav","insane/insane2.wav","insane/insane3.wav","insane/insane4.wav","insane/insane6.wav","insane/insane8.wav","insane/insane9.wav","insane/insane10.wav"];function vc(e,t){t.sound(e,2,Q4,1,1,0)}function nR(e,t){(e.spawnflags&du)===0&&t.sound(e,2,eR,1,1,0)}function gu(e,t){e.spawnflags&du||(e.monsterinfo.attack_finished??0)<t.timeSeconds&&(t.sound(e,2,tR,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2)}function jt(e,t){if(!(e.spawnflags&du)&&(e.monsterinfo.attack_finished??0)<t.timeSeconds){let n=dh[Math.floor(Math.random()*dh.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function $e(e,t){}function F1(e,t){e.spawnflags&N4||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=M1:e.monsterinfo.current_move=L1)}function iR(e,t){e.spawnflags&Wa&&e.spawnflags&Ka||Math.random()<.5&&(e.monsterinfo.current_move=R1)}function vu(e,t){e.monsterinfo.current_move=ur}function U1(e,t){Math.random()<.8?e.monsterinfo.current_move=_u:e.monsterinfo.current_move=D1}function pu(e,t){e.spawnflags&p1?(e.monsterinfo.current_move=_u,e.monsterinfo.aiflags|=1):e.spawnflags&Wa&&e.spawnflags&Ka?e.monsterinfo.current_move=ur:Math.random()<.5?e.monsterinfo.current_move=x1:e.monsterinfo.current_move=T1}function yu(e,t){if(e.spawnflags&Ka&&e.frame===ya){e.monsterinfo.current_move=ur;return}e.spawnflags&Wa?e.monsterinfo.current_move=C1:Math.random()<=.5?e.monsterinfo.current_move=N1:e.monsterinfo.current_move=O1}function lr(e,t){if(e.spawnflags&Ka&&e.frame===ya){e.monsterinfo.current_move=ur;return}let n=e.frame;e.spawnflags&Wa||n>=b1&&n<=ya||n>=hu&&n<=fu||n>=mu&&n<=w1?e.monsterinfo.current_move=P1:Math.random()<=.5?e.monsterinfo.current_move=z1:e.monsterinfo.current_move=I1}function B1(e,t){e.spawnflags&p1?e.flags|=1:(e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,t.linkentity(e)),e.nextthink=-1}function h(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,lu,a)},dist:t}}var rR=[h(R),h(R),h(R),h(R),h(R),h(R,0,F1)];x1={firstframe:P4,lastframe:y1,frames:rR,endfunc:pu};var aR=[h(R,0,nR),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R,0,F1)];T1={firstframe:y1,lastframe:D4,frames:aR,endfunc:pu};var sR=[h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,0,gu),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,2.7),h(_,4.1),h(_,6),h(_,7.6),h(_,3.6),h(_),h(_),h(_,0,vc),h(_),h(_),h(_),h(_),h(_),h(_,0,vc),h(_),h(_),h(_),h(_),h(_),h(_)];M1={firstframe:z4,lastframe:O4,frames:sR,endfunc:vu};var oR=[h(_,-.7),h(_,-1.2),h(_,-1.5),h(_,-4.5),h(_,-3.5),h(_,-.2),h(_),h(_,-1.3),h(_,-3),h(_,-2),h(_),h(_),h(_),h(_,-3.3),h(_,-1.6),h(_,-.3),h(_),h(_),h(_)];R1={firstframe:I4,lastframe:C4,frames:oR,endfunc:pu};var cR=[h(_,.2),h(_,11.5),h(_,5.1),h(_,7.1),h(_)];L1={firstframe:F4,lastframe:mu,frames:cR,endfunc:vu};var uR=[h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,-1.7),h(_,-1.6),h(_),h(_),h(_),h(_,0,vc),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,0,gu),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,.5),h(_),h(_,-.2,jt),h(_),h(_,.2),h(_,.4),h(_,.6),h(_,.8),h(_,.7),h(_,0,iR)];ur={firstframe:mu,lastframe:w1,frames:uR,endfunc:vu};var pc=[h(z,0,jt),h(z,2.5),h(z,3.5),h(z,1.7),h(z,2.3),h(z,2.4),h(z,2.2,$e),h(z,4.2),h(z,5.6),h(z,3.3),h(z,2.4),h(z,.9),h(z,0,$e)];N1={firstframe:A1,lastframe:S1,frames:pc,endfunc:yu};z1={firstframe:A1,lastframe:S1,frames:pc.map(e=>({ai:(t,n,i)=>{e.ai===pc[0].ai&&jt(t,i),oe(t,n,lu,i)},dist:e.dist})),endfunc:lr};var yc=[h(z,0,jt),h(z,3.4),h(z,3.6),h(z,2.9),h(z,2.2),h(z,2.6,$e),h(z),h(z,.7),h(z,4.8),h(z,5.3),h(z,1.1),h(z,2,$e),h(z,.5),h(z),h(z),h(z,4.9),h(z,6.7),h(z,3.8),h(z,2,$e),h(z,.2),h(z),h(z,3.4),h(z,6.4),h(z,5),h(z,1.8,$e),h(z)];O1={firstframe:E1,lastframe:k1,frames:yc,endfunc:yu};I1={firstframe:E1,lastframe:k1,frames:yc.map(e=>({ai:(t,n,i)=>{e.ai===yc[0].ai&&jt(t,i),oe(t,n,lu,i)},dist:e.dist})),endfunc:lr};var lR=[h(_),h(_),h(_),h(_),h(_,0,$e),h(_),h(_),h(_),h(_),h(_),h(_,0,$e)];q4={firstframe:U4,lastframe:B4,frames:lR,endfunc:lr};var dR=[h(_),h(_),h(_),h(_),h(_,0,$e),h(_),h(_),h(_),h(_),h(_),h(_,0,$e),h(_),h(_,0,$e),h(_),h(_),h(_),h(_)];Z4={firstframe:G4,lastframe:H4,frames:dR,endfunc:B1};var G1=[h(z,0,jt),h(z,1.5),h(z,2.1),h(z,3.6),h(z,2,$e),h(z,.9),h(z,3),h(z,3.4),h(z,2.4,$e)];C1={firstframe:hu,lastframe:fu,frames:G1,endfunc:yu};P1={firstframe:hu,lastframe:fu,frames:G1,endfunc:lr};var mR=[h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_)];j4={firstframe:b1,lastframe:ya,frames:mR,endfunc:lr};var hR=[h(_),h(_),h(_),h(_),h(_,0,jt),h(_),h(_)];J4={firstframe:V4,lastframe:W4,frames:hR,endfunc:B1};var fR=[h(_,0,gu),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_)];_u={firstframe:K4,lastframe:$4,frames:fR,endfunc:U1};var _R=[h(_,0,jt),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_)];D1={firstframe:X4,lastframe:Y4,frames:_R,endfunc:U1};U();U();var gR=.1,vR=0;var wc=0,H1=39,pR=40,yR=47,wR=48,AR=53,SR=54,ER=56,kR=57,bR=59,xR=60,TR=62,MR=63,RR=76,LR=77,NR=93,zR=94,OR=100,IR=101,CR=113,PR=114,DR=117,V1,W1,K1,FR,UR,BR,GR,HR,VR,WR,KR;function A(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,gR,a)},dist:t}}function mh(e,t){e.monsterinfo.current_move=V1,t.timeSeconds<1&&(e.frame=wc+Math.floor(Math.random()*(H1-wc+1)))}function $R(e,t){e.monsterinfo.current_move=W1}function ii(e,t){if(t.timeSeconds<e.pain_debounce_time&&!e.enemy){e.movetarget?$R(e,t):mh(e,t);return}if(e.monsterinfo.aiflags&1){mh(e,t);return}e.monsterinfo.current_move=K1}function XR(e,t){let n={x:0,y:0,z:0},r=Z(e.angles).forward,a=Zn(e.origin);a.z+=e.viewheight;let s;if(e.enemy){let o;e.enemy.health>0?(o=P(e.enemy.origin,D(e.enemy.velocity,.2)),o.z+=e.enemy.viewheight):(o=Zn(e.enemy.absmin),o.z+=e.enemy.size.z/2+1),s=P(o,a),s=G(s)}else s=r;Xt(e,a,s,3,4,0,0,vR,t)}function $1(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.svflags|=1,e.nextthink=-1,t.linkentity(e)}function YR(e,t){XR(e,t);let n=e.monsterinfo.fire_wait??0;t.timeSeconds>=n?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}var qR=[A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R)];V1={firstframe:wc,lastframe:H1,frames:qR,endfunc:null};var ZR=[A(z),A(z,6),A(z,10),A(z,3),A(z,2),A(z,7),A(z,10),A(z,1)];W1={firstframe:pR,lastframe:yR,frames:ZR,endfunc:null};var jR=[A(oe,4),A(oe,15),A(oe,15),A(oe,8),A(oe,20),A(oe,15)];K1={firstframe:wR,lastframe:AR,frames:jR,endfunc:null};var JR=[A(_,-5),A(_,4),A(_,1)];FR={firstframe:SR,lastframe:ER,frames:JR,endfunc:ii};var QR=[A(_,-4),A(_,4),A(_)];UR={firstframe:kR,lastframe:bR,frames:QR,endfunc:ii};var eL=[A(_,-1),A(_,1),A(_,0)];BR={firstframe:xR,lastframe:TR,frames:eL,endfunc:ii};var tL=[A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae)];GR={firstframe:MR,lastframe:RR,frames:tL,endfunc:ii};var nL=[A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae)];HR={firstframe:LR,lastframe:NR,frames:nL,endfunc:ii};var iL=[A(_),A(_),A(_,-13),A(_,14),A(_,3),A(_,-2),A(_,1)];VR={firstframe:zR,lastframe:OR,frames:iL,endfunc:$1};var rL=[A(_),A(_,7),A(_,-6),A(_,-5),A(_,1),A(_),A(_,-1),A(_,-2),A(_,-1),A(_,-9),A(_,-13),A(_,-13),A(_)];WR={firstframe:IR,lastframe:CR,frames:rL,endfunc:$1};var aL=[A(le,-2,YR),A(le,-2),A(le,3),A(le,2)];KR={firstframe:PR,lastframe:DR,frames:aL,endfunc:ii};U();U();var ji=.1;function sL(e,t,n){if(e.classname==="monster_medic"&&Z1(e,n)){e.monsterinfo.current_move=dr;return}R(e,ji,n)}function oL(e,t,n){z(e,t,ji,n)}function cL(e,t,n){e.classname==="monster_medic"&&Z1(e,n)?e.monsterinfo.current_move=dr:oe(e,t,ji,n)}function ft(e,t,n){le(e,t,ji,n)}function wu(e,t,n){_(e,t)}var Au,X1,dr,uL,Y1,lL,dL,q1;function mL(e){e.monsterinfo.current_move=Au}function hL(e){e.monsterinfo.current_move=X1}function mr(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&qt(e,e.enemy)<80){e.monsterinfo.current_move=Y1;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=dr:e.monsterinfo.current_move=Au}function fL(e,t){if(!e.enemy||e.enemy.health<=0)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(P(e.enemy.origin,n));pt(e,n,i,2,1e3,0,0,t,10)}function Vt(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(qt(e,e.enemy)>400){e.monsterinfo.current_move=dr;return}let i=Z(e.angles),r=i.forward,a=i.right,s=i.up,o={x:24,y:0,z:6},u=F(e.origin,F(D(r,o.x),F(D(a,o.y),D(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,se.temp_entity,{te:we.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:u,end:c})}function _L(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),Vt(e,t)}function gL(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,i=t.getSpawnFunction(n.classname);if(qt(e,n)>400){e.enemy=null;return}if(!i)n.deadflag=0,n.health=n.max_health,n.takedamage=!0,n.solid=2,n.nextthink=t.timeSeconds+.1,n.monsterinfo&&n.monsterinfo.stand&&n.monsterinfo.stand(n,t),n.bad_medic=e;else{let r={entities:t,keyValues:{classname:n.classname},warn:o=>{},free:o=>t.free(o)},a={...n.origin},s={...n.angles};i(n,r),n.origin=a,n.angles=s,t.linkentity(n),n.deadflag=0,n.takedamage=!0,t.finalizeSpawn(n)}e.enemy=null}function Z1(e,t){if(e.enemy&&e.enemy.deadflag===2)return!0;if(Math.random()>.2)return!1;let n=null,i=1024,r=(a,s,o,u,c,l)=>{let m=t.trace(a,s,o,u,c,l);return{fraction:m.fraction,ent:m.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!gn(e,a,r))return;let s=qt(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function vL(e,t){let n=Math.random(),i="monster_soldier_light";n>.8?i="monster_soldier_ssg":n>.5&&(i="monster_soldier");let r=t.getSpawnFunction(i);if(r){let a=Z(e.angles),s=D(a.forward,64),o=F(e.origin,s),u={...o,z:o.z+8},c=t.trace(e.origin,{x:-16,y:-16,z:-24},{x:16,y:16,z:32},u,e,De|Wt|Xi);if(c.fraction<1||c.startsolid||c.allsolid)return;let l=t.spawn();l.origin=u,l.angles={...e.angles},r(l,{entities:t,keyValues:{classname:i},warn:()=>{},free:d=>t.free(d)}),l.enemy=e.enemy,t.multicast(u,1,se.muzzleflash,{entId:l.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function pL(e){e.monsterinfo.nextframe=q1.lastframe,e.nextthink=-1}var yL=Array.from({length:30},()=>({ai:sL,dist:0}));Au={firstframe:0,lastframe:29,frames:yL,endfunc:mL};var wL=Array.from({length:40},()=>({ai:oL,dist:3}));X1={firstframe:30,lastframe:69,frames:wL,endfunc:hL};var AL=Array.from({length:20},()=>({ai:cL,dist:12}));dr={firstframe:70,lastframe:89,frames:AL,endfunc:mr};var SL=Array.from({length:16},(e,t)=>({ai:ft,dist:0,think:t>=4&&t<=13?fL:null}));uL={firstframe:90,lastframe:105,frames:SL,endfunc:mr};var EL=[{ai:ft,dist:0,think:_L},{ai:ft,dist:0,think:Vt},{ai:ft,dist:0,think:Vt},{ai:ft,dist:0,think:Vt},{ai:ft,dist:0,think:Vt},{ai:ft,dist:0,think:Vt},{ai:ft,dist:0,think:Vt},{ai:ft,dist:0,think:Vt},{ai:ft,dist:0,think:gL}];Y1={firstframe:106,lastframe:114,frames:EL,endfunc:mr};var kL=Array.from({length:6},()=>({ai:wu,dist:0}));dL={firstframe:116,lastframe:121,frames:kL,endfunc:mr};var bL=Array.from({length:23},(e,t)=>({ai:wu,dist:0,think:t===11?vL:null}));lL={firstframe:122,lastframe:144,frames:bL,endfunc:mr};var xL=Array.from({length:30},()=>({ai:wu,dist:0}));q1={firstframe:161,lastframe:190,frames:xL,endfunc:pL};U();var hr=.1;function K(e,t,n){R(e,hr,n)}function We(e,t,n){z(e,t,hr,n)}function Hn(e,t,n){oe(e,t,hr,n)}function Ht(e,t,n){le(e,t,hr,n)}function ue(e,t,n){_(e,t)}function ac(e,t,n){ak(e,null,t,hr)}var j1,J1,wa,TL,ML,RL,LL,Q1,e_;function NL(e){e.monsterinfo.current_move=J1}function zL(e){e.monsterinfo.current_move=j1}function ri(e){e.monsterinfo.current_move=wa}function t_(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let i=P(e.enemy.origin,e.origin);if(Ge(i)>100)return;let a=G(i);fe(e.enemy,e,e,a,e.enemy.origin,W,t,0,0,0,n.timeSeconds)}function OL(e,t){t_(e,30,t)}function hh(e,t){t_(e,30,t)}function $n(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=wa),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=wa)}function IL(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),fe(t,e,e,G(e.velocity),e.origin,W,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function CL(e,t){let n=Z(e.angles).forward;e.movetype=7,e.touch=IL,e.velocity=F(D(n,300),{x:0,y:0,z:300}),e.velocity=F(D(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function PL(e){e.monsterinfo.nextframe=Q1.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var DL=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0}];j1={firstframe:0,lastframe:50,frames:DL,endfunc:zL};var FL=[{ai:We,dist:3},{ai:We,dist:1},{ai:We,dist:5},{ai:We,dist:10},{ai:We,dist:13},{ai:We,dist:12},{ai:We,dist:0},{ai:We,dist:0},{ai:We,dist:5},{ai:We,dist:6},{ai:We,dist:16},{ai:We,dist:15},{ai:We,dist:6}];J1={firstframe:51,lastframe:63,frames:FL,endfunc:NL};var UL=[{ai:Hn,dist:20},{ai:Hn,dist:15},{ai:Hn,dist:35},{ai:Hn,dist:20},{ai:Hn,dist:10},{ai:Hn,dist:20}];wa={firstframe:64,lastframe:69,frames:UL,endfunc:ri};var BL=[{ai:Ht,dist:0},{ai:Ht,dist:0},{ai:Ht,dist:0,think:hh},{ai:Ht,dist:0},{ai:Ht,dist:0,think:OL},{ai:Ht,dist:0},{ai:Ht,dist:0,think:hh},{ai:Ht,dist:0}];TL={firstframe:70,lastframe:77,frames:BL,endfunc:ri};var GL=[{ai:ac,dist:0},{ai:ac,dist:0},{ai:ac,dist:0,think:CL},{ai:ue,dist:0,think:$n},{ai:ue,dist:0,think:$n},{ai:ue,dist:0,think:$n},{ai:ue,dist:0,think:$n},{ai:ue,dist:0,think:$n}];e_={firstframe:93,lastframe:100,frames:GL,endfunc:ri};e_.frames[3].ai=(e,t,n)=>{$n(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var HL=[{ai:ue,dist:4},{ai:ue,dist:-3},{ai:ue,dist:-8},{ai:ue,dist:2},{ai:ue,dist:5}];ML={firstframe:78,lastframe:82,frames:HL,endfunc:ri};var VL=[{ai:ue,dist:-24},{ai:ue,dist:11},{ai:ue,dist:5},{ai:ue,dist:-2}];RL={firstframe:83,lastframe:86,frames:VL,endfunc:ri};var WL=[{ai:ue,dist:11},{ai:ue,dist:0},{ai:ue,dist:-2},{ai:ue,dist:0},{ai:ue,dist:0},{ai:ue,dist:0}];LL={firstframe:87,lastframe:92,frames:WL,endfunc:ri};var KL=[{ai:ue,dist:0},{ai:ue,dist:0},{ai:ue,dist:0},{ai:ue,dist:0},{ai:ue,dist:0},{ai:ue,dist:0},{ai:ue,dist:0},{ai:ue,dist:0},{ai:ue,dist:0}];Q1={firstframe:101,lastframe:109,frames:KL,endfunc:PL};U();var $a=.1,$L=()=>Math.random();function ne(e,t,n){R(e,$a,n)}function xt(e,t,n){z(e,t,$a,n)}function Tt(e,t,n){oe(e,t,$a,n)}function Me(e,t,n){le(e,t,$a,n)}function Re(e,t,n){_(e,t)}var Su,n_,i_,XL,YL,r_,a_,qL,ZL,Eu,s_;function jL(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function JL(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function Vn(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function Ac(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function QL(e){e.monsterinfo.current_move=Eu}function eN(e){$L()<=.8?e.monsterinfo.current_move=Eu:e.monsterinfo.current_move=s_}function o_(e){e.monsterinfo.current_move=Su}function ku(e){e.monsterinfo.current_move=n_}function c_(e){e.monsterinfo.current_move=a_}function u_(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Su:e.monsterinfo.current_move=i_}function sc(e,t){let n=P(t,e);if(Ge(n)>256)return!1;let a=jn(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function nt(e,t){if(!e.enemy)return;let n=Z(e.angles),i=n.forward,r=n.right,a=n.up,s={x:24,y:0,z:6},o=F(e.origin,F(D(i,s.x),F(D(r,s.y),D(a,s.z)))),u=Zn(e.enemy.origin);if(!sc(o,u)&&(u={...u,z:e.enemy.origin.z+e.enemy.maxs.z-8},!sc(o,u)&&(u={...u,z:e.enemy.origin.z+e.enemy.mins.z+8},!sc(o,u)))||t.trace(o,u,W,W,e,Rt).ent!==e.enemy)return;let l=2,m=e.frame;m===41?(l=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(m===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),l=2),t.multicast(e.origin,0,se.temp_entity,{te:we.PARASITE_ATTACK,entId:e.index,start:o,end:u});let d=G(P(o,u));fe(e.enemy,e,e,d,e.enemy.origin,W,l,0,8,0,t.timeSeconds),e.health<e.max_health&&(e.health+=l,e.health>e.max_health&&(e.health=e.max_health))}function tN(e){e.monsterinfo.nextframe=r_.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var nN=[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Vn},{ai:ne,dist:0},{ai:ne,dist:0,think:Vn},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Vn},{ai:ne,dist:0},{ai:ne,dist:0,think:Vn},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Vn},{ai:ne,dist:0},{ai:ne,dist:0,think:Vn}];Su={firstframe:83,lastframe:99,frames:nN,endfunc:o_};var iN=[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}];ZL={firstframe:100,lastframe:103,frames:iN,endfunc:QL};var rN=[{ai:ne,dist:0,think:Ac},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Ac},{ai:ne,dist:0},{ai:ne,dist:0}];Eu={firstframe:104,lastframe:109,frames:rN,endfunc:eN};var aN=[{ai:ne,dist:0,think:Ac},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}];s_={firstframe:110,lastframe:117,frames:aN,endfunc:o_};var sN=[{ai:Tt,dist:0},{ai:Tt,dist:30}];a_={firstframe:68,lastframe:69,frames:sN,endfunc:u_};var oN=[{ai:Tt,dist:30},{ai:Tt,dist:30},{ai:Tt,dist:22},{ai:Tt,dist:19},{ai:Tt,dist:24},{ai:Tt,dist:28},{ai:Tt,dist:25}];i_={firstframe:70,lastframe:76,frames:oN,endfunc:u_};var cN=[{ai:xt,dist:0},{ai:xt,dist:30,think:ku}];qL={firstframe:68,lastframe:69,frames:cN,endfunc:ku};var uN=[{ai:xt,dist:30},{ai:xt,dist:30},{ai:xt,dist:22},{ai:xt,dist:19},{ai:xt,dist:24},{ai:xt,dist:28},{ai:xt,dist:25}];n_={firstframe:70,lastframe:76,frames:uN,endfunc:ku};var lN=[{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:6},{ai:Re,dist:16},{ai:Re,dist:-6},{ai:Re,dist:-7},{ai:Re,dist:0}];YL={firstframe:57,lastframe:67,frames:lN,endfunc:c_};var dN=[{ai:Me,dist:0,think:jL},{ai:Me,dist:0},{ai:Me,dist:15,think:nt},{ai:Me,dist:0,think:nt},{ai:Me,dist:0,think:nt},{ai:Me,dist:0,think:nt},{ai:Me,dist:0,think:nt},{ai:Me,dist:-2,think:nt},{ai:Me,dist:-2,think:nt},{ai:Me,dist:-3,think:nt},{ai:Me,dist:-2,think:nt},{ai:Me,dist:0,think:nt},{ai:Me,dist:-1,think:nt},{ai:Me,dist:0,think:JL},{ai:Me,dist:-2},{ai:Me,dist:-2},{ai:Me,dist:-3},{ai:Me,dist:0}];XL={firstframe:39,lastframe:56,frames:dN,endfunc:c_};var mN=[{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0}];r_={firstframe:32,lastframe:38,frames:mN,endfunc:tN};U();var Xa=.1;var hN=2,fN=4;function _N(e,t,n){R(e,Xa,n)}function gN(e,t,n){z(e,t,Xa,n)}function vN(e,t,n){oe(e,t,Xa,n)}function l_(e,t,n){le(e,t,Xa,n)}function d_(e,t,n){_(e,t)}var bu,m_,h_,pN,yN,wN,f_;function AN(e){e.monsterinfo.current_move=bu}function SN(e){e.monsterinfo.current_move=m_}function Ya(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=h_:e.monsterinfo.current_move=bu}function fr(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function _r(e,t){if(!e.enemy){let{forward:i}=Z(e.angles);return i}let n={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)};return G(P(n,t))}function EN(e,t){if(!e.enemy)return;let n=fr(e),i=_r(e,n);pt(e,n,i,5,600,0,0,t,1)}function kN(e,t){if(!e.enemy)return;let n=fr(e),i=_r(e,n),r=2,a=4,s=20,o=.15,u=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),k6(e,n,i,r,a,o,u,s,0,t,3)}function bN(e,t){if(!e.enemy)return;let n=fr(e),i=_r(e,n),r=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),Xt(e,n,i,r,a,s,o,0,t,4)}function xN(e,t){let n=e.owner;if(!n||!n.enemy)return;let{forward:i,right:r,up:a}=Z(n.angles),s={...n.origin};s=F(s,D(i,16)),s.z+=n.viewheight;let o={...n.enemy.origin};o.z+=n.enemy.viewheight||0;let u=G(P(o,s));e.origin=s,e.movedir=u,t.linkentity(e)}function TN(e,t){if(!e.enemy)return;let n=fr(e),i=_r(e,n);x6(e,n,i,5,600,0,0,t)}function MN(e,t){if(!e.enemy)return;let n=fr(e),i=_r(e,n),r=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),b6(e,n,i,r,a,0,0,t)}function RN(e,t){e.enemy&&dc(e,1,!1,xN,t)}function LN(e,t){e.count<2?TN(e,t):e.count<4?MN(e,t):RN(e,t)}function __(e,t){if(e.style===1){LN(e,t);return}e.spawnflags&hN?kN(e,t):e.spawnflags&fN?bN(e,t):EN(e,t)}var NN=Array.from({length:30},()=>({ai:_N,dist:0}));bu={firstframe:0,lastframe:29,frames:NN,endfunc:AN};var zN=Array.from({length:40},()=>({ai:gN,dist:2}));m_={firstframe:30,lastframe:69,frames:zN,endfunc:SN};var ON=Array.from({length:20},()=>({ai:vN,dist:10}));h_={firstframe:70,lastframe:89,frames:ON,endfunc:Ya};var IN=Array.from({length:10},(e,t)=>({ai:l_,dist:0,think:t===5?__:null}));pN={firstframe:90,lastframe:99,frames:IN,endfunc:Ya};var CN=Array.from({length:10},(e,t)=>({ai:l_,dist:0,think:t>=4&&t<=8?__:null}));yN={firstframe:90,lastframe:99,frames:CN,endfunc:Ya};var PN=Array.from({length:6},()=>({ai:d_,dist:0}));wN={firstframe:100,lastframe:105,frames:PN,endfunc:Ya};var DN=Array.from({length:10},()=>({ai:d_,dist:0}));function FN(e){e.monsterinfo.nextframe=f_.lastframe,e.nextthink=-1}f_={firstframe:106,lastframe:115,frames:DN,endfunc:FN};U();var g_=.1,UN={x:30,y:30,z:40},BN={x:30,y:-30,z:40},GN={x:20,y:0,z:70};function HN(e,t,n){R(e,g_,n)}function VN(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Tu:e.monsterinfo.current_move=qa}function xu(e,t,n){le(e,t,g_,n)}function gr(e,t,n){_(e,t)}var qa,Tu,WN,KN,v_,p_,$N,XN,YN,y_;function qN(e){e.monsterinfo.current_move=qa}function yn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Tu:e.monsterinfo.current_move=qa}function Mu(e,t){let{forward:n,right:i,up:r}=Z(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),u=D(r,t.z);return F(F(F(a,s),o),u)}function ZN(e,t){if(!e.enemy)return;let n=Mu(e,BN),i=G(P(e.enemy.origin,n));rr(e,n,i,50,650,0,t)}function jN(e,t){if(!e.enemy)return;let n=Mu(e,GN),i=G(P(e.enemy.origin,n));T6(e,n,i,50,600,0,t)}function JN(e,t){if(!e.enemy)return;let n=Mu(e,UN),i=G(P(e.enemy.origin,n));pa(e,n,i,6,4,.05,.05,0,t,4)}function QN(e,t){let n=(i,r,a,s,o,u)=>{let c=t.trace(i,r,a,s,o,u);return{fraction:c.fraction,ent:c.ent}};e.enemy&&gn(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=v_:e.monsterinfo.current_move=p_}function ez(e){e.monsterinfo.nextframe=y_.lastframe,e.nextthink=-1}var tz=Array.from({length:60},()=>({ai:HN,dist:0}));qa={firstframe:0,lastframe:59,frames:tz,endfunc:qN};var nz=Array.from({length:18},()=>({ai:VN,dist:12}));Tu={firstframe:60,lastframe:77,frames:nz,endfunc:yn};var iz=Array.from({length:4},()=>({ai:gr,dist:0}));YN={firstframe:78,lastframe:81,frames:iz,endfunc:yn};var rz=Array.from({length:4},()=>({ai:gr,dist:0}));XN={firstframe:82,lastframe:85,frames:rz,endfunc:yn};var az=Array.from({length:4},()=>({ai:gr,dist:0}));$N={firstframe:86,lastframe:89,frames:az,endfunc:yn};var sz=Array.from({length:24},()=>({ai:gr,dist:0}));y_={firstframe:90,lastframe:113,frames:sz,endfunc:ez};var oz=Array.from({length:6},(e,t)=>({ai:xu,dist:0,think:t===0||t===3?jN:null}));KN={firstframe:114,lastframe:119,frames:oz,endfunc:yn};var cz=Array.from({length:27},(e,t)=>({ai:xu,dist:0,think:t===7||t===10||t===13?ZN:null}));WN={firstframe:120,lastframe:146,frames:cz,endfunc:yn};var uz=Array.from({length:6},()=>({ai:xu,dist:0,think:JN}));v_={firstframe:147,lastframe:152,frames:uz,endfunc:QN};var lz=Array.from({length:14},()=>({ai:gr,dist:0}));p_={firstframe:153,lastframe:166,frames:lz,endfunc:yn};U();var Ru=.1;function w_(e,t,n,i,r){let a=r.trace(t,n,W,W,e,Rt);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return G(P(n,t));let s=F(n,D(i,-20)),o=r.trace(t,s,W,W,e,Rt);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return G(P(s,t));let u=F(n,D(i,20)),c=r.trace(t,u,W,W,e,Rt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?G(P(u,t)):null}function A_(e,t){if(e.monsterinfo.aiflags&32768&&e.monsterinfo.blind_fire_target){let n=P(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=er(n)}}function dz(e,t,n){R(e,Ru,n)}function mz(e,t,n){z(e,t,Ru,n)}function hz(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Nu:e.monsterinfo.current_move=Za}function Lu(e,t,n){le(e,t,Ru,n)}function S_(e,t,n){_(e,t)}var Za,E_,Nu,fz,_z,gz,vz,k_;function pz(e){e.monsterinfo.current_move=Za}function yz(e){e.monsterinfo.current_move=E_}function vr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Nu:e.monsterinfo.current_move=Za}function wz(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:u}=Z(o),c=e.monsterinfo.blind_fire_target,l=w_(e,n,c,u,t);if(!l)return;i=l}else i=G(P(e.enemy.origin,n));pt(e,n,i,30,1e3,0,0,t,1)}function Az(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=G(P(e.enemy.origin,n));Xt(e,n,i,20,2,.05,.05,0,t,4)}function Sz(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:u}=Z(o),c=e.monsterinfo.blind_fire_target,l=w_(e,n,c,u,t);if(!l)return;i=l}else i=G(P(e.enemy.origin,n));rr(e,n,i,50,650,0,t)}function Ez(e){e.monsterinfo.nextframe=k_.lastframe,e.nextthink=-1}function kz(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),vr(e)}var bz=Array.from({length:30},()=>({ai:dz,dist:0}));Za={firstframe:0,lastframe:29,frames:bz,endfunc:pz};var xz=Array.from({length:16},()=>({ai:mz,dist:5}));E_={firstframe:30,lastframe:45,frames:xz,endfunc:yz};var Tz=Array.from({length:16},()=>({ai:hz,dist:10}));Nu={firstframe:46,lastframe:61,frames:Tz,endfunc:vr};var Mz=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=A_:t>5&&t<12&&(n=wz),{ai:Lu,dist:0,think:n}});fz={firstframe:62,lastframe:77,frames:Mz,endfunc:vr};var Rz=Array.from({length:20},(e,t)=>({ai:Lu,dist:0,think:t%2===0&&t>5?Az:null}));_z={firstframe:78,lastframe:97,frames:Rz,endfunc:vr};var Lz=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=A_:(t===8||t===12||t===16)&&(n=Sz),{ai:Lu,dist:0,think:n}});gz={firstframe:98,lastframe:115,frames:Lz,endfunc:kz};var Nz=Array.from({length:6},()=>({ai:S_,dist:0}));vz={firstframe:116,lastframe:121,frames:Nz,endfunc:vr};var zz=Array.from({length:16},()=>({ai:S_,dist:0}));k_={firstframe:122,lastframe:137,frames:zz,endfunc:Ez};U();var zu=.1;function Oz(e,t,n){R(e,zu,n)}function Ou(e,t,n){oe(e,t,zu,n)}function Iz(e,t,n){le(e,t,zu,n)}var Iu,b_,Cz,Pz,x_;function Dz(e){e.monsterinfo.current_move=Iu}function Cu(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=b_:e.monsterinfo.current_move=Iu}function Fz(e,t){if(!e.enemy)return;let n=Z(e.angles).forward,i={x:e.origin.x+n.x*8,y:e.origin.y+n.y*8,z:e.origin.z+e.viewheight},r=G(P(e.enemy.origin,i));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),pt(e,i,r,2,1e3,1,0,t)}var Uz=Array.from({length:1},()=>({ai:Oz,dist:0}));Iu={firstframe:0,lastframe:0,frames:Uz,endfunc:Dz};var Bz=Array.from({length:1},()=>({ai:Ou,dist:0}));b_={firstframe:0,lastframe:0,frames:Bz,endfunc:Cu};var Gz=Array.from({length:8},(e,t)=>({ai:Iz,dist:0,think:t===4?Fz:void 0}));Cz={firstframe:1,lastframe:8,frames:Gz,endfunc:Cu};var Hz=Array.from({length:2},()=>({ai:Ou,dist:0}));Pz={firstframe:9,lastframe:10,frames:Hz,endfunc:Cu};var Vz=Array.from({length:4},()=>({ai:Ou,dist:0}));function Wz(e){e.monsterinfo.nextframe=x_.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}x_={firstframe:11,lastframe:14,frames:Vz,endfunc:Wz};U();var ja=.1;var Ji=()=>Math.random(),Ja=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;function ai(e,t,n){R(e,ja,n)}function Wn(e,t,n){z(e,t,ja,n)}function Ke(e,t,n){oe(e,t,ja,n)}function $(e,t,n){le(e,t,ja,n)}function Fe(e,t,n){_(e,t)}var Pu,T_,M_,Qa,Du,Kz,R_,$z,L_,N_,z_,O_,I_,Xz,Yz,qz,Zz,jz,Jz,Qz,eO,tO,nO,es=2,C_=80,iO=100;var rO=8;var Fu=32;function si(e,t){!(e.spawnflags&Fu)&&e.waterlevel>=es&&vO(e)}function aO(e){e.waterlevel>=es?(e.flags|=2,e.monsterinfo.current_move=T_):e.monsterinfo.current_move!==Du&&(e.monsterinfo.current_move=Pu)}function P_(e){e.flags|=2,e.monsterinfo.current_move=M_}function ts(e,t){if(!e.enemy)return;let n=Ja(5,10),i=100,r=P(e.enemy.origin,e.origin);Ge(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck2.wav",1,1,0),fe(e.enemy,e,e,G(r),e.enemy.origin,W,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function Uu(e,t){if(!e.enemy)return;let n=Ja(5,10),i=100,r=P(e.enemy.origin,e.origin);Ge(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck3.wav",1,1,0),fe(e.enemy,e,e,G(r),e.enemy.origin,W,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function Bu(e,t){if(!e.enemy)return;let n=5,i=C_,r=P(e.enemy.origin,e.origin);Ge(r)<=i&&fe(e.enemy,e,e,G(r),e.enemy.origin,W,n,0,0,0,t.timeSeconds)}function sO(e){e.monsterinfo.current_move=Du}function D_(e){Ji()>.75&&e.health<e.max_health&&(e.monsterinfo.nextframe=0)}function F_(e,t){let n=Ja(0,2),i=["gek/gk_step1.wav","gek/gk_step2.wav","gek/gk_step3.wav"];t.engine.sound?.(e,0,i[n],1,1,0)}function U_(e,t){if(e.spawnflags&rO){let n=Ji();n<.33?t.engine.sound?.(e,0,"gek/gek_low.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"gek/gek_mid.wav",1,1,0):t.engine.sound?.(e,0,"gek/gek_high.wav",1,1,0)}else t.engine.sound?.(e,0,"gek/gk_idle1.wav",1,1,0);e.health+=Ja(10,20),e.health>e.max_health&&(e.health=e.max_health),e.health<e.max_health/4?e.skin=2:e.health<e.max_health/2?e.skin=1:e.skin=0}function zt(e){!(e.spawnflags&Fu)&&e.waterlevel>=es?e.monsterinfo.current_move=Qa:e.monsterinfo.current_move=N_}function oO(e){!(e.spawnflags&Fu)&&e.waterlevel>=es?e.monsterinfo.current_move=Qa:e.monsterinfo.current_move=L_}function B_(e){if(!e.enemy||e.enemy.health<=0)return;Ge(P(e.enemy.origin,e.origin))<=C_&&(e.frame===114?e.monsterinfo.current_move=O_:e.frame===123&&(e.monsterinfo.current_move=z_))}function cO(e,t,n,i,r,a){let s=nr(a,e,t,n,i,r,0);s.model="models/objects/loogy/tris.md2"}function uO(e,t){if(!e.enemy||e.enemy.health<=0)return;let n=Z(e.angles),i=n.forward,r=n.right,a=n.up,s={x:-18,y:-.8,z:24},o=F(e.origin,F(D(i,s.x),F(D(r,s.y),D(a,s.z))));o.z+=2;let u=Zn(e.enemy.origin);u.z+=e.enemy.viewheight||0;let c=G(P(u,o));cO(e,o,c,5,550,t),t.engine.sound?.(e,0,"gek/gk_atck4.wav",1,1,0)}function lO(e){if(Ji()>.8&&e.health<e.max_health){e.monsterinfo.current_move=R_;return}if(e.enemy&&e.enemy.health>0){let t=Ge(P(e.enemy.origin,e.origin));Ji()>.7&&t<=iO&&(e.monsterinfo.current_move=I_)}}function dO(e,t,n,i){if(e.health<=0){e.touch=void 0;return}e.touch=void 0}function mO(e,t){let i=Z(e.angles).forward;t.engine.sound?.(e,0,"gek/gk_sght1.wav",1,1,0),e.origin.z+=1,e.velocity=F(D(i,700),{x:0,y:0,z:250}),e.groundentity=null,e.touch=dO}function hO(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.velocity=W;return}}function dn(e){e.groundentity&&(e.velocity=W)}function fO(e,t){}function ns(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.nextthink=-1}function G_(e,t){Wh(t,e.origin,20),e.deadflag=2}function _O(e,t){Ji()>.9&&G_(e,t)}function gO(e){e.maxs.z=0}function vO(e){e.flags|=2,e.yaw_speed=10,e.viewheight=10,e.monsterinfo.current_move=Qa,e.mins={x:-18,y:-18,z:-24},e.maxs={x:18,y:18,z:16}}var H_=Array(38).fill({ai,dist:0});H_[38]={ai,dist:0,think:si};Pu={firstframe:0,lastframe:38,frames:H_,endfunc:null};var pO=Array(32).fill({ai,dist:14});T_={firstframe:39,lastframe:70,frames:pO,endfunc:null};var yO=Array(32).fill({ai:Ke,dist:14});M_={firstframe:39,lastframe:70,frames:yO,endfunc:P_};var is=Array(32).fill({ai:Ke,dist:14});is[8]={ai:Ke,dist:18,think:ts};is[14]={ai:Ke,dist:24,think:Uu};is[20]={ai:Ke,dist:22,think:Bu};Qa={firstframe:39,lastframe:70,frames:is,endfunc:P_};var Gu=Array(32).fill({ai,dist:0});Gu[0]={ai,dist:0,think:U_};Gu[31]={ai,dist:0,think:D_};Kz={firstframe:71,lastframe:102,frames:Gu,endfunc:aO};var rs=Array(32).fill({ai:Fe,dist:0});rs[0]={ai:Fe,dist:0,think:U_};rs[31]={ai:Fe,dist:0,think:D_};R_={firstframe:71,lastframe:102,frames:rs,endfunc:e=>MO(e,Pu)};Du={firstframe:71,lastframe:102,frames:rs,endfunc:sO};var wO=[{ai:Wn,dist:3.8,think:si},{ai:Wn,dist:19.6},{ai:Wn,dist:25.5},{ai:Wn,dist:34.6,think:F_},{ai:Wn,dist:27.3},{ai:Wn,dist:28.4}];$z={firstframe:103,lastframe:108,frames:wO,endfunc:null};var AO=[{ai:Ke,dist:3.8,think:si},{ai:Ke,dist:19.6},{ai:Ke,dist:25.5},{ai:Ke,dist:34.6,think:F_},{ai:Ke,dist:27.3},{ai:Ke,dist:28.4}];L_={firstframe:103,lastframe:108,frames:AO,endfunc:null};var SO=[{ai:Ke,dist:.2},{ai:Ke,dist:19.7}];N_={firstframe:0,lastframe:1,frames:SO,endfunc:oO};var EO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:uO},{ai:$,dist:0,think:lO}];I_={firstframe:133,lastframe:139,frames:EO,endfunc:zt};var kO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:ts},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:B_}];z_={firstframe:109,lastframe:117,frames:kO,endfunc:zt};var bO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:ts},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:Uu},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:B_}];O_={firstframe:118,lastframe:126,frames:bO,endfunc:zt};var V_=[{ai:$,dist:0},{ai:$,dist:-.3},{ai:$,dist:-1.1},{ai:$,dist:-.2},{ai:$,dist:6.7,think:mO},{ai:$,dist:6.4},{ai:$,dist:.1},{ai:$,dist:28.3},{ai:$,dist:24.1},{ai:$,dist:31.7},{ai:$,dist:35.9,think:hO},{ai:$,dist:12.3,think:dn},{ai:$,dist:20.1,think:dn},{ai:$,dist:-1,think:dn},{ai:$,dist:2.5,think:dn},{ai:$,dist:.5,think:dn},{ai:$,dist:1.8,think:dn},{ai:$,dist:1.2,think:dn},{ai:$,dist:-.4,think:si}];Xz={firstframe:140,lastframe:158,frames:V_,endfunc:zt};Yz={firstframe:140,lastframe:158,frames:V_,endfunc:zt};var oi=Array(21).fill({ai:$,dist:16});oi[0]={ai:$,dist:16,think:fO};oi[4]={ai:$,dist:16,think:Bu};oi[9]={ai:$,dist:16,think:Bu};oi[13]={ai:$,dist:16,think:ts};oi[18]={ai:$,dist:16,think:Uu};qz={firstframe:159,lastframe:179,frames:oi,endfunc:zt};var xO=Array(6).fill({ai:Fe,dist:0});Zz={firstframe:180,lastframe:185,frames:xO,endfunc:zt};var W_=Array(11).fill({ai:Fe,dist:0});W_[10]={ai:Fe,dist:0,think:si};jz={firstframe:186,lastframe:196,frames:W_,endfunc:zt};var K_=Array(13).fill({ai:Fe,dist:0});K_[12]={ai:Fe,dist:0,think:si};Jz={firstframe:197,lastframe:209,frames:K_,endfunc:zt};var $_=Array(10).fill({ai:Fe,dist:0});$_[5]={ai:Fe,dist:-7,think:gO};Qz={firstframe:210,lastframe:219,frames:$_,endfunc:ns};var X_=Array(7).fill({ai:Fe,dist:0});X_[5]={ai:Fe,dist:-7,think:_O};eO={firstframe:220,lastframe:226,frames:X_,endfunc:ns};var Y_=Array(35).fill({ai:Fe,dist:0});Y_[34]={ai:Fe,dist:0,think:G_};tO={firstframe:227,lastframe:261,frames:Y_,endfunc:ns};var TO=Array(45).fill({ai:Fe,dist:0});nO={firstframe:262,lastframe:306,frames:TO,endfunc:ns};function MO(e,t){e.monsterinfo.current_move=t}U();var Hu=.1,RO=()=>Math.random(),fh=()=>Math.random();function LO(e,t,n){z(e,t,Hu,n)}function NO(e,t,n){oe(e,t,Hu,n)}function as(e,t,n){le(e,t,Hu,n)}function rt(e,t,n){_(e,t)}var Qi,zO,Vu,q_,Z_,OO,IO,CO,PO,DO,FO,UO,BO=1;function GO(e,t){let i=t.findByRadius(e.origin,1024),r=null;for(let a of i)if(a!==e&&a.monsterinfo&&!(a.monsterinfo.aiflags&256)&&!(a.health>0)&&!(a.nextthink&&a.think===t.free)&&!(a.health<=-40)&&gn(e,a,t.trace)){if(!r){r=a;continue}a.max_health<=r.max_health||(r=a)}return r}function HO(e,t){if(e.enemy)return;let n=GO(e,t);n?(e.enemy=n,e.monsterinfo.aiflags|=8192,pr(e),void 0):RO()<.1&&t.engine.sound?.(e,0,"flyer/flysght1.wav",1,1,0)}function VO(e,t){if(!e.enemy||!e.enemy.inUse){e.monsterinfo.current_move=Vu;return}let n=Z(e.angles),i=F(e.origin,F(D(n.forward,0),F(D(n.right,0),D(n.up,0)))),r=Zn(e.enemy.origin);r.z+=e.enemy.viewheight||0;let a=G(P(r,i));pt(e,i,a,15,1e3,BO,0,t)}function WO(e,t){if(!e.enemy||!e.enemy.inUse||e.enemy.health<=-40){e.monsterinfo.current_move=Qi,e.monsterinfo.aiflags&=-8193;return}e.enemy.health<e.enemy.max_health?(e.enemy.health+=5,e.enemy.health>e.enemy.max_health&&(e.enemy.health=e.enemy.max_health)):(e.enemy.deadflag===2&&(e.enemy.deadflag=0,e.enemy.solid=2,e.enemy.takedamage=!0,e.enemy.health=e.enemy.max_health,e.enemy.monsterinfo.aiflags&=-129),e.monsterinfo.current_move=Qi,e.monsterinfo.aiflags&=-8193,e.enemy=null)}function KO(e,t){if(fh()>.8){let n=fh();n<.33?t.engine.sound?.(e,0,"misc/welder1.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"misc/welder2.wav",1,1,0):t.engine.sound?.(e,0,"misc/welder3.wav",1,1,0)}}function pr(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Qi:e.monsterinfo.current_move=Vu}function $O(e){e.monsterinfo.aiflags&8192?e.monsterinfo.current_move=Z_:e.monsterinfo.current_move=q_}function Wu(e){e.goalentity&&e.goalentity.health>0||(e.monsterinfo.current_move=Qi)}var j_=Array(19).fill({ai:rt,dist:0});j_[18]={ai:rt,dist:0,think:HO};Qi={firstframe:58,lastframe:76,frames:j_,endfunc:null};var XO=[{ai:LO,dist:5}];zO={firstframe:0,lastframe:0,frames:XO,endfunc:null};var YO=[{ai:NO,dist:10}];Vu={firstframe:0,lastframe:0,frames:YO,endfunc:null};var J_=Array(31).fill({ai:as,dist:0});J_[20]={ai:as,dist:0,think:VO};q_={firstframe:121,lastframe:151,frames:J_,endfunc:pr};var qO=Array(6).fill({ai:as,dist:0,think:WO});Z_={firstframe:115,lastframe:120,frames:qO,endfunc:null};var Q_=Array(10).fill({ai:rt,dist:0});Q_[9]={ai:rt,dist:0,think:Wu};OO={firstframe:77,lastframe:86,frames:Q_,endfunc:null};var eg=Array(7).fill({ai:rt,dist:0,think:KO});eg[6]={ai:rt,dist:0,think:Wu};IO={firstframe:87,lastframe:93,frames:eg,endfunc:null};var tg=Array(7).fill({ai:rt,dist:-2});tg[6]={ai:rt,dist:-2,think:Wu};CO={firstframe:94,lastframe:100,frames:tg,endfunc:null};var ZO=[{ai:as,dist:0}];PO={firstframe:0,lastframe:0,frames:ZO,endfunc:$O};var jO=[{ai:rt,dist:-1}];DO={firstframe:0,lastframe:0,frames:jO,endfunc:pr};var JO=Array(8).fill({ai:rt,dist:0});FO={firstframe:107,lastframe:114,frames:JO,endfunc:pr};var QO=Array(6).fill({ai:rt,dist:0});UO={firstframe:101,lastframe:106,frames:QO,endfunc:pr};U();U();var Ku=.1;function eI(e,t,n){R(e,Ku,n)}function tI(e,t,n){z(e,t,Ku,n)}function nI(e,t,n){oe(e,t,Ku,n)}var y7=Array.from({length:1},()=>({ai:eI,dist:0})),w7=Array.from({length:1},()=>({ai:tI,dist:5})),A7=Array.from({length:1},()=>({ai:nI,dist:10}));var S7=new Map(Tc.map(e=>[e.name,e]));U();var iI=2166136261,rI=16777619;function ng(e,t){let n=e>>>0;for(let i=0;i<t.length;i+=1)n^=t[i]&255,n=Math.imul(n,rI)>>>0;return n>>>0}function Xn(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let r=new Uint8Array(n);return ng(e,r)}function Sc(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i)&255;return ng(e,n)}var oc=2,aI=1;function Xe(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function ve(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function Yn(e,t,n){return e===void 0?n:ve(e,t)}function Aa(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function _a(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)ve(n,`${t} element`);return e}function sI(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Xe(e,"level");return{frameNumber:Yn(t.frameNumber,"level.frameNumber",0),timeSeconds:Yn(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:Yn(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:Yn(t.deltaSeconds,"level.deltaSeconds",0)}}function oI(e){if(e===void 0)return new bc().getState();let t=Xe(e,"rng"),n=Xe(t.mt,"rng.mt"),i=_a(n.state,"rng.mt.state");return{mt:{index:ve(n.index,"rng.mt.index"),state:i}}}function cI(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("thinks must be an array");return e.map((t,n)=>{let i=Xe(t,`thinks[${n}]`);return{time:ve(i.time,`thinks[${n}].time`),entityIndex:ve(i.entityIndex,`thinks[${n}].entityIndex`)}})}function uI(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=Xe(e,"awareness"),n=(i,r)=>i===null?null:ve(i,r);return{frameNumber:ve(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:ve(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:ve(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:ve(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function lI(e){if(e===void 0)return{};let t=Xe(e,"entity.fields"),n={};for(let[i,r]of Object.entries(t)){if(r===null){n[i]=null;continue}switch(typeof r){case"number":case"string":case"boolean":n[i]=r;break;default:{if(!Array.isArray(r)){let a=Xe(r,i),s={};for(let[o,u]of Object.entries(a))s[o]=ve(u,`${i}.${o}`);n[i]=s;break}if(Array.isArray(r)&&r.length===3){let[a,s,o]=r;n[i]=[ve(a,`${i}[0]`),ve(s,`${i}[1]`),ve(o,`${i}[2]`)];break}throw new Error(`Unsupported entity field value for ${i}`)}}}return n}function dI(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let i=Xe(t,`entities[${n}]`);return{index:ve(i.index,`entities[${n}].index`),fields:lI(i.fields)}})}function mI(e){let t=Xe(e,"pool");return{capacity:ve(t.capacity,"pool.capacity"),activeOrder:_a(t.activeOrder,"pool.activeOrder"),freeList:_a(t.freeList,"pool.freeList"),pendingFree:_a(t.pendingFree,"pool.pendingFree")}}function hI(e){let t=Xe(e,"entities");return{timeSeconds:ve(t.timeSeconds,"entities.timeSeconds"),pool:mI(t.pool),entities:dI(t.entities),thinks:cI(t.thinks),awareness:uI(t.awareness),crossLevelFlags:Yn(t.crossLevelFlags,"entities.crossLevelFlags",0),crossUnitFlags:Yn(t.crossUnitFlags,"entities.crossUnitFlags",0),level:{next_auto_save:0,health_bar_entities:[null,null,null,null]}}}function fI(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("cvars must be an array");return e.map((t,n)=>{let i=Xe(t,`cvars[${n}]`);return{name:Aa(i.name,`cvars[${n}].name`),value:Aa(i.value,`cvars[${n}].value`),flags:ve(i.flags,`cvars[${n}].flags`)}})}function _I(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>Aa(t,`configstrings[${n}]`))}function gI(e){return e===void 0?{}:Xe(e,"gameState")}function Mt(e,t){if(t==null)return e;if(typeof t=="number")return Xn(e,t);if(typeof t=="string")return Sc(e,t);if(typeof t=="boolean")return Xn(e,t?1:0);if(Array.isArray(t)){let n=e;for(let i of t)n=Mt(n,i);return n}if(typeof t=="object"){let n=e,i=Object.keys(t).sort();for(let r of i)n=Sc(n,r),n=Mt(n,t[r]);return n}return e}function vI(e){let t=iI;return t=Xn(t,e.version),t=Xn(t,e.timestamp),t=Sc(t,e.map),t=Xn(t,e.difficulty),t=Xn(t,e.playtimeSeconds),t=Mt(t,e.gameState),t=Mt(t,e.level),t=Mt(t,e.rng),t=Mt(t,e.entities),t=Mt(t,e.cvars),t=Mt(t,e.configstrings),e.player&&(t=Mt(t,e.player)),t>>>0}function ig(e,t={}){let{allowNewerVersion:n=!0}=t,i=typeof e=="string"?JSON.parse(e):e,r=Xe(i,"save"),a=r.version??oc,s=ve(a,"version");if(s<aI)throw new Error(`Unsupported save version ${s}`);if(s>oc&&!n)throw new Error(`Save version ${s} is newer than supported ${oc}`);let o={version:s,timestamp:ve(r.timestamp,"timestamp"),map:Aa(r.map,"map"),difficulty:ve(r.difficulty,"difficulty"),playtimeSeconds:ve(r.playtimeSeconds,"playtimeSeconds"),gameState:gI(r.gameState),level:sI(r.level),rng:oI(r.rng),entities:hI(r.entities),cvars:fI(r.cvars),configstrings:_I(r.configstrings),player:r.player?r.player:void 0,checksum:r.checksum!==void 0?ve(r.checksum,"checksum"):void 0};if(o.checksum!==void 0){let u=vI(o);if(u!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${u}`)}return o}U();var E7=new Set(Tc.filter(e=>e.save).map(e=>e.name));var _h=globalThis.TextEncoder;function qn(e){return ig({...e},{allowNewerVersion:!0})}function pI(e){return _h?new _h().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var yI=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:qn(e.save)};this.records.set(e.id,t)}async get(e){let t=this.records.get(e);return t?{id:t.id,metadata:{...t.metadata},save:qn(t.save)}:null}async delete(e){return this.records.delete(e)}async list(){return Array.from(this.records.values()).map(e=>({id:e.id,metadata:{...e.metadata},save:qn(e.save)}))}},wI=class{constructor(e,t,n){this.indexedDB=e,this.dbName=t,this.storeName=n,this.db=null}async init(){this.db||(this.db=await new Promise((e,t)=>{let n=this.indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{n.result.createObjectStore(this.storeName,{keyPath:"id"})},n.onerror=()=>t(n.error??new Error("Failed to open IndexedDB")),n.onsuccess=()=>e(n.result)}))}async runTransaction(e,t){await this.init();let n=this.db;return new Promise((i,r)=>{let s=n.transaction(this.storeName,e).objectStore(this.storeName),o=t(s);o.onsuccess=()=>i(o.result),o.onerror=()=>r(o.error??new Error("IndexedDB request failed"))})}async put(e){await this.runTransaction("readwrite",t=>t.put(e))}async get(e){let t=await this.runTransaction("readonly",n=>n.get(e));return t?{id:t.id,metadata:{...t.metadata},save:qn(t.save)}:null}async delete(e){return await this.get(e)?(await this.runTransaction("readwrite",n=>n.delete(e)),!0):!1}async list(){return(await this.runTransaction("readonly",t=>t.getAll())).map(t=>({id:t.id,metadata:{...t.metadata},save:qn(t.save)}))}},$u=class Wi{constructor(t={}){let{dbName:n=Wi.DEFAULT_DB_NAME,storeName:i=Wi.DEFAULT_STORE}=t,r=t.indexedDB??globalThis.indexedDB;r?this.adapter=new wI(r,n,i):this.adapter=new yI}async save(t,n,i={}){let r=qn(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:pI(r)};return await this.adapter.init(),await this.adapter.put({id:t,metadata:a,save:r}),a}async load(t,n={}){await this.adapter.init();let i=await this.adapter.get(t);if(!i)throw new Error(`Save slot ${t} not found`);return ig(i.save,n)}async delete(t){return await this.adapter.init(),this.adapter.delete(t)}async list(){return await this.adapter.init(),(await this.adapter.list()).map(n=>({...n.metadata})).sort((n,i)=>i.timestamp-n.timestamp||n.id.localeCompare(i.id))}async quickSave(t){return this.save(Wi.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(Wi.QUICK_SLOT,t)}};$u.DEFAULT_DB_NAME="quake2ts-saves";$u.DEFAULT_STORE="saves";$u.QUICK_SLOT="quicksave";U();Yt();U();U();var k7=tr();U();Yt();var b7=[{id:ie.QuadDamage,priority:1},{id:ie.Invulnerability,priority:2},{id:ie.EnviroSuit,priority:3},{id:ie.Rebreather,priority:4},{id:ie.Silencer,priority:5}];U();U();var AI=new Map,SI=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],rg=async(e,t)=>{for(let n of SI)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);AI.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var EI=new Map,kI=["d_left","d_right","d_up","d_down"],ag=async(e,t)=>{for(let n of kI)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);EI.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Xu=[],bI=0,sg=async(e,t)=>{for(let n=0;n<10;n++)try{let i=await t.loadTexture(`pics/hud/num_${n}.pcx`),r=e.registerTexture(`hud_num_${n}`,i);Xu.push(r)}catch(i){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,i)}Xu.length>0&&(bI=Xu[0].width),await jm(e,t),await rg(e,t),await ag(e,t)};var Yu=[{type:"null"},{type:"armor",id:hn.BODY},{type:"armor",id:hn.COMBAT},{type:"armor",id:hn.JACKET},{type:"armor",id:hn.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:V.Grapple},{type:"weapon",id:V.Blaster},{type:"weapon",id:V.ChainFist},{type:"weapon",id:V.Shotgun},{type:"weapon",id:V.SuperShotgun},{type:"weapon",id:V.Machinegun},{type:"weapon",id:V.EtfRifle},{type:"weapon",id:V.Chaingun},{type:"ammo",id:I.Grenades},{type:"ammo",id:I.Trap},{type:"ammo",id:I.Tesla},{type:"weapon",id:V.GrenadeLauncher},{type:"weapon",id:V.ProxLauncher},{type:"weapon",id:V.RocketLauncher},{type:"weapon",id:V.HyperBlaster},{type:"weapon",id:V.IonRipper},{type:"weapon",id:V.PlasmaBeam},{type:"weapon",id:V.Railgun},{type:"weapon",id:V.Phalanx},{type:"weapon",id:V.BFG10K},{type:"weapon",id:V.Disruptor},{type:"ammo",id:I.Shells},{type:"ammo",id:I.Bullets},{type:"ammo",id:I.Cells},{type:"ammo",id:I.Rockets},{type:"ammo",id:I.Slugs},{type:"ammo",id:I.MagSlugs},{type:"ammo",id:I.Flechettes},{type:"ammo",id:I.Prox},{type:"ammo",id:I.Nuke},{type:"ammo",id:I.Rounds},{type:"powerup",id:ie.QuadDamage},{type:"powerup",id:ie.QuadFire},{type:"powerup",id:ie.Invulnerability},{type:"powerup",id:ie.Invisibility},{type:"powerup",id:ie.Silencer},{type:"powerup",id:ie.Rebreather},{type:"powerup",id:ie.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:ie.Bandolier},{type:"powerup",id:ie.AmmoPack},{type:"powerup",id:ie.IRGoggles},{type:"powerup",id:ie.DoubleDamage},{type:"powerup",id:ie.SphereVengeance},{type:"powerup",id:ie.SphereHunter},{type:"powerup",id:ie.SphereDefender},{type:"powerup",id:ie.Doppelganger},{type:"powerup",id:ie.TagToken},{type:"key",id:Ee.DataCD},{type:"key",id:Ee.PowerCube},{type:"key",id:Ee.ExplosiveCharges},{type:"key",id:Ee.Yellow},{type:"key",id:Ee.PowerCore},{type:"key",id:Ee.Pyramid},{type:"key",id:Ee.DataSpinner},{type:"key",id:Ee.Pass},{type:"key",id:Ee.Blue},{type:"key",id:Ee.Red},{type:"key",id:Ee.Green},{type:"key",id:Ee.CommanderHead},{type:"key",id:Ee.Airstrike},{type:"key",id:Ee.NukeContainer},{type:"key",id:Ee.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:Ee.RedFlag},{type:"key",id:Ee.BlueFlag},{type:"powerup",id:ie.TechResistance},{type:"powerup",id:ie.TechStrength},{type:"powerup",id:ie.TechHaste},{type:"powerup",id:ie.TechRegeneration},{type:"powerup",id:ie.Flashlight},{type:"powerup",id:ie.Compass}];function ci(e,t,n){return e+(t-e)*n}function qu(e,t,n){return ci(e,t,n)}function ss(e,t,n,i,r){let a=[],s=r.engine.assets;if(!s)return a;let o;t instanceof Map?o=t:o=new Map(t.map(u=>[u.number,u]));for(let u of e){let c=o.get(u.number)??u,l=u.modelIndex??u.modelindex,m=u.skinNum??u.skinnum;if(l===void 0)continue;let d=i.getModelName(l);if(!d)continue;let f=s.getMd2Model(d)||s.getMd3Model(d);if(!f)continue;let g={x:ci(c.origin.x,u.origin.x,n),y:ci(c.origin.y,u.origin.y,n),z:ci(c.origin.z,u.origin.z,n)},p={x:qu(c.angles.x,u.angles.x,n),y:qu(c.angles.y,u.angles.y,n),z:qu(c.angles.z,u.angles.z,n)},v=u.frame,w=c.frame,L=c.scale!==void 0?c.scale:1,E=u.scale!==void 0?u.scale:1,y=ci(L,E,n),k=j=>j===void 0||j===0?255:j,x=k(c.alpha),T=k(u.alpha),b=ci(x,T,n)/255,S=me.create();me.translate(S,S,[g.x,g.y,g.z]),me.rotateZ(S,S,p.z*Math.PI/180),me.rotateY(S,S,p.y*Math.PI/180),me.rotateX(S,S,p.x*Math.PI/180),me.scale(S,S,[y,y,y]);let N=m!==void 0&&m>0?i.getImageName(m):void 0;f.header.magic===844121161?a.push({type:"md2",model:f,blend:{frame0:w,frame1:v,lerp:n},transform:S,skin:N,alpha:b}):f.header.magic===860898377&&a.push({type:"md3",model:f,blend:{frame0:w,frame1:v,lerp:n},transform:S,alpha:b})}return a}var xI=32768,os=class{constructor(t,n){this.configstrings=new Array(xI).fill("");this.entities=new Map;this.previousEntities=new Map;this.baselines=new Map;this.previousFrame=null;this.latestFrame=null;this.stats=new Array(32).fill(0);this.inventory=new Array(256).fill(0);this.playerNum=0;this.imports=t,this.callbacks=n}setImports(t){this.imports=t}setCallbacks(t){this.callbacks=t}setView(t){this.view=t}onServerData(t,n,i,r,a,s,o,u){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}, Tick: ${o??10}`),this.configstrings.fill(""),this.entities.clear(),this.previousEntities.clear(),this.baselines.clear(),this.latestFrame=null,this.previousFrame=null,this.playerNum=a,this.callbacks?.onServerData&&this.callbacks.onServerData(t,o)}onConfigString(t,n){this.configstrings[t]=n,this.callbacks?.onConfigString&&this.callbacks.onConfigString(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,structuredClone(t))}onFrame(t){this.latestFrame&&(this.previousFrame=this.latestFrame,this.previousEntities=this.entities),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,i=new Map;if(n.delta)for(let[r,a]of this.entities)i.set(r,structuredClone(a));for(let r of n.entities){if(r.bits&Wd){i.delete(r.number);continue}let a=r.number,s;n.delta&&this.entities.has(a)?s=this.entities.get(a):this.baselines.has(a)?s=this.baselines.get(a):s=bn();let o=structuredClone(s);this.applyDelta(o,r),i.set(a,o)}this.entities=i}applyDelta(t,n){let i=n.bits,r=n.bitsHigh;t.number=n.number,i&yo&&(t.modelindex=n.modelindex),i&So&&(t.modelindex2=n.modelindex2),i&Eo&&(t.modelindex3=n.modelindex3),i&ko&&(t.modelindex4=n.modelindex4),i&_o&&(t.frame=n.frame),i&Ao&&(t.frame=n.frame),(i&Pr||i&Ur)&&(t.skinnum=n.skinnum),(i&Cr||i&Fr)&&(t.effects=n.effects),(i&Ir||i&Dr)&&(t.renderfx=n.renderfx),i&lo&&(t.origin.x=n.origin.x),i&mo&&(t.origin.y=n.origin.y),i&vo&&(t.origin.z=n.origin.z),i&po&&(t.angles.x=n.angles.x),i&ho&&(t.angles.y=n.angles.y),i&fo&&(t.angles.z=n.angles.z),i&bo&&(t.old_origin.x=n.old_origin.x,t.old_origin.y=n.old_origin.y,t.old_origin.z=n.old_origin.z),i&xo&&(t.sound=n.sound),i&go&&(t.event=n.event),i&To&&(t.solid=n.solid),i&wo&&(t.alpha=n.alpha),i&Mo&&(t.scale=n.scale),i&Ro&&(t.instanceBits=n.instanceBits),i&Lo&&(t.loopVolume=n.loopVolume),r&No&&(t.loopAttenuation=n.loopAttenuation),r&zo&&(t.owner=n.owner),r&Oo&&(t.oldFrame=n.oldFrame)}onCenterPrint(t){this.callbacks?.onCenterPrint?this.callbacks.onCenterPrint(t):console.log(`[Center]: ${t}`)}onStuffText(t){this.imports?.engine.cmd&&this.imports.engine.cmd.executeText(t)}onPrint(t,n){this.callbacks?.onPrint?this.callbacks.onPrint(t,n):console.log(`[Print ${t}]: ${n}`)}onSound(t,n,i,r,a,s,o){if(!this.imports?.engine.audio)return;let u=i??1,c=r??1,l=a??0;s&&s>0?this.imports.engine.audio.sound(s,0,n,u,c,l):o&&this.imports.engine.audio.positioned_sound(o,n,u,c)}onTempEntity(t,n,i,r,a,s,o,u,c){}onLayout(t){}onInventory(t){this.inventory=[...t]}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onMuzzleFlash3(t,n){if(t===this.playerNum+1&&this.view){let r=0,a=0,s=0,o=Ut,c=ta(this.stats,Fi.QuadDamage)?4:1;switch(n){case dm:r=-2,o={x:-2,y:0,z:0};break;case pm:r=-4,o={x:-4,y:0,z:0};break;case lm:r=-1,a=Math.random()-.5;break;case mm:case hm:case fm:r=-.5,a=Math.random()-.5;break;case _m:r=-3,o={x:-3,y:0,z:0};break;case gm:case vm:r=-2,o={x:-2,y:0,z:0};break;case ym:r=-5,o={x:-2,y:0,z:0};break;case wm:case um:r=-.5;break}(r!==0||a!==0||s!==0)&&this.view.addKick({pitch:r*c,roll:s*c,durationMs:200,origin:o})}this.callbacks?.onMuzzleFlash3&&this.callbacks.onMuzzleFlash3(t,n)}onFog(t){this.callbacks?.onFog&&this.callbacks.onFog(t)}onDamage(t){this.callbacks?.onDamage&&this.callbacks.onDamage(t)}onLocPrint(t,n,i){this.callbacks?.onLocPrint&&this.callbacks.onLocPrint(t,n,i)}onLevelRestart(){this.callbacks?.onLevelRestart&&this.callbacks.onLevelRestart()}onWaitingForPlayers(t){this.callbacks?.onWaitingForPlayers&&this.callbacks.onWaitingForPlayers()}onDisconnect(){console.log("Demo disconnected")}onReconnect(){console.log("Demo reconnect")}onDownload(t,n,i){}convertFrameToPredictionState(t){let n=t.playerState,i={ammo:{caps:[],counts:[]},ownedWeapons:new Set,armor:null,powerups:new Map,keys:new Set,items:new Set};for(let u=0;u<this.inventory.length;u++){let c=this.inventory[u];if(c<=0)continue;if(u>=Yu.length)break;let l=Yu[u];switch(l.type){case"weapon":i.ownedWeapons.add(l.id);break;case"ammo":i.ammo.counts[l.id]||(i.ammo.counts[l.id]=0),i.ammo.counts[l.id]=c;break;case"armor":i.armor={armorType:l.id,armorCount:c};break;case"powerup":i.powerups.set(l.id,c);break;case"key":i.keys.add(l.id);break;case"health":break;case"item":i.items.add(l.id);break}}let r={...n.origin},a={...n.velocity},s={...n.viewangles},o={...n.delta_angles};return{origin:r,velocity:a,viewAngles:s,pmFlags:n.pm_flags,pmType:n.pm_type,waterLevel:Di.None,gravity:n.gravity,deltaAngles:o,client:{inventory:i,weaponStates:{states:new Map},buttons:0,pm_type:n.pm_type,pm_time:n.pm_time,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov},health:n.stats[1],armor:n.stats[4],ammo:n.stats[2],blend:[0,0,0,0],damageAlpha:0,damageIndicators:[],stats:[...n.stats],kick_angles:Ut,kick_origin:Ut,gunoffset:Ut,gunangles:Ut,gunindex:0,onGround:!1,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},pm_time:n.pm_time,pm_type:n.pm_type,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov}}getPredictionState(t){if(!this.latestFrame)return cn();let n=this.convertFrameToPredictionState(this.latestFrame);if(this.previousFrame&&t!==void 0){let i=this.latestFrame.serverFrame*100,r=this.previousFrame.serverFrame*100;if(t<=1){let a=this.convertFrameToPredictionState(this.previousFrame);return un(a,n,Math.max(0,Math.min(1,t)))}else if(t>=r&&t<=i){let a=(t-r)/(i-r),s=this.convertFrameToPredictionState(this.previousFrame);return un(s,n,Math.max(0,Math.min(1,a)))}}return n}getRenderableEntities(t,n){if(!this.latestFrame)return[];if(!this.imports)return[];let i=Array.from(this.entities.values()),r=this.previousEntities.size>0?this.previousEntities:i;return ss(i,r,t,n,this.imports)}getDemoCamera(t){let n=this.getPredictionState(t);return{origin:n.origin,angles:n.viewAngles,fov:n.fov??90}}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var ui=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=ye.Models&&t<ye.Models+Ii){let i=t-ye.Models;this.models[i]=n}else if(t>=ye.Sounds&&t<ye.Sounds+Ci){let i=t-ye.Sounds;this.sounds[i]=n}else if(t>=ye.Images&&t<ye.Images+Pi){let i=t-ye.Images;this.images[i]=n}}get(t){return this.strings.get(t)}getModelName(t){return this.models[t]}getSoundName(t){return this.sounds[t]}getImageName(t){return this.images[t]}clear(){this.strings.clear(),this.models.length=0,this.sounds.length=0,this.images.length=0}};var cs=class{constructor(t,n,i){this.menuSystem=t;this.saveLoadFactory=n;this.options=i}createMainMenu(){let t=[{label:"New Game",action:()=>{this.menuSystem.pushMenu(this.createDifficultyMenu())}},{label:"Multiplayer",action:()=>{this.options.multiplayerFactory?this.menuSystem.pushMenu(this.options.multiplayerFactory.createMultiplayerMenu()):console.warn("Multiplayer factory not configured")}},{label:"Load Game",action:()=>{this.saveLoadFactory.createLoadMenu().then(n=>{this.menuSystem.pushMenu(n)})}}];return this.options.showSaveOption!==!1&&t.push({label:"Save Game",action:()=>{this.saveLoadFactory.createSaveMenu().then(n=>{this.menuSystem.pushMenu(n)})}}),t.push({label:"Options",action:()=>{this.menuSystem.pushMenu(this.options.optionsFactory.createOptionsMenu())}},{label:"Quit",action:()=>{this.options.onQuit()}}),{title:"Main Menu",items:t}}createDifficultyMenu(){return{title:"Select Difficulty",items:[{label:"Easy",action:()=>this.startNewGame(0)},{label:"Medium",action:()=>this.startNewGame(1)},{label:"Hard",action:()=>this.startNewGame(2)},{label:"Map Select...",action:()=>{this.menuSystem.pushMenu(this.options.mapsFactory.createMapsMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}startNewGame(t){this.options.onSetDifficulty&&this.options.onSetDifficulty(t),this.options.onNewGame()}};var us=class{constructor(t,n,i,r,a){this.menuSystem=t;this.storage=n;this.onSave=i;this.onLoad=r;this.onDelete=a}async createSaveMenu(){let t=await this.storage.list(),n=[];return n.push({label:"New Save...",action:()=>{this.menuSystem.pushMenu(this.createNewSaveInputMenu())}}),t.forEach(i=>{n.push({label:`${i.name} - ${i.map} (${og(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createConfirmOverwriteMenu(i))}})}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Save Game",items:n}}async createLoadMenu(){let t=await this.storage.list(),n=[];return t.forEach(i=>{n.push({label:`${i.name} - ${i.map} (${og(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createLoadActionMenu(i))}})}),t.length===0&&n.push({label:"No saves found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Load Game",items:n}}createLoadActionMenu(t){return{title:`Slot: ${t.name}`,items:[{label:"Load Game",action:()=>{this.onLoad(t.id).then(()=>{this.menuSystem.closeAll()})}},{label:"Delete Save",action:()=>{this.menuSystem.pushMenu(this.createConfirmDeleteMenu(t))}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createConfirmDeleteMenu(t){return{title:`Delete ${t.name}?`,items:[{label:"Yes, Delete",action:()=>{this.onDelete(t.id).then(()=>{this.menuSystem.popMenu(),this.menuSystem.popMenu(),this.menuSystem.popMenu()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}createNewSaveInputMenu(){let t={name:`Save ${new Date().toLocaleString()}`};return{title:"Enter Save Name",items:[{label:"Name",type:"input",getValue:()=>t.name,onUpdate:n=>{t.name=n}},{label:"Save",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"Cancel",action:()=>this.menuSystem.popMenu()}]}}createConfirmOverwriteMenu(t){return{title:`Overwrite ${t.name}?`,items:[{label:"Yes, Overwrite",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}};function og(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),i=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}`}var ls=class{constructor(){this.activeMenu=null;this.selectedIndex=0;this.menuStack=[]}pushMenu(t){this.activeMenu&&(this.menuStack.push(this.activeMenu),t.parent||(t.parent=this.activeMenu)),this.activeMenu=t,this.selectedIndex=0}popMenu(){this.menuStack.length>0?(this.activeMenu=this.menuStack.pop(),this.selectedIndex=0):this.activeMenu=null}closeAll(){this.activeMenu=null,this.menuStack=[],this.selectedIndex=0}handleInput(t,n){if(!this.activeMenu)return!1;let i=this.activeMenu.items[this.selectedIndex];if(t==="up")return this.selectedIndex=(this.selectedIndex-1+this.activeMenu.items.length)%this.activeMenu.items.length,!0;if(t==="down")return this.selectedIndex=(this.selectedIndex+1)%this.activeMenu.items.length,!0;if(t==="select")return i.action&&i.action(),!0;if(t==="back")return this.popMenu(),!0;if(i.type==="input"&&i.onUpdate&&i.getValue){let r=i.getValue();if(t==="char"&&n){let a=(r||"")+n;i.onUpdate(a)}else if(t==="left"){let a=String(r||"");a.length>0&&i.onUpdate(a.slice(0,-1))}}return!0}isActive(){return this.activeMenu!==null}getState(){return{activeMenu:this.activeMenu,selectedIndex:this.selectedIndex}}};var yr=class{constructor(t,n){this.menuSystem=t;this.host=n}createOptionsMenu(){return{title:"Options",items:[{label:"Video Options",action:()=>{this.menuSystem.pushMenu(this.createVideoMenu())}},{label:"Audio Options",action:()=>{this.menuSystem.pushMenu(this.createAudioMenu())}},{label:"Controls",action:()=>{this.menuSystem.pushMenu(this.createControlsMenu())}},{label:"Gameplay",action:()=>{this.menuSystem.pushMenu(this.createGameplayMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createVideoMenu(){let t=this.host.cvars;return{title:"Video Options",items:[{label:"Field of View",type:"input",getValue:()=>t?.get("fov")?.string??"90",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("fov",n)}},{label:"Fullscreen",type:"toggle",getValue:()=>document.fullscreenElement?"On":"Off",onUpdate:()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(n=>{console.error(`Error attempting to enable fullscreen: ${n.message}`)})}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createAudioMenu(){let t=this.host.cvars;return{title:"Audio Options",items:[{label:"Master Volume",type:"input",getValue:()=>t?.get("s_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("s_volume",n)}},{label:"Music Volume",type:"input",getValue:()=>t?.get("ogg_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("ogg_volume",n)}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createControlsMenu(){let t=this.host.cvars;return{title:"Controls",items:[{label:"Sensitivity",type:"input",getValue:()=>t?.get("sensitivity")?.string??"3",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("sensitivity",n)}},{label:"Invert Mouse",type:"toggle",getValue:()=>t?.get("m_pitch")?.string.startsWith("-")?"Yes":"No",onUpdate:()=>{let n=parseFloat(t?.get("m_pitch")?.string??"0.022");t?.setValue("m_pitch",(-n).toString())}},{label:"Always Run",type:"toggle",getValue:()=>t?.get("cl_run")?.integer?"Yes":"No",onUpdate:()=>{let n=t?.get("cl_run")?.integer??1;t?.setValue("cl_run",n?"0":"1")}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createGameplayMenu(){let t=this.host.cvars;return{title:"Gameplay Options",items:[{label:"Crosshair",type:"toggle",getValue:()=>t?.get("crosshair")?.integer?"On":"Off",onUpdate:()=>{let n=t?.get("crosshair")?.integer??1;t?.setValue("crosshair",n?"0":"1")}},{label:"Handedness",type:"toggle",getValue:()=>t?.get("hand")?.integer===1?"Left":t?.get("hand")?.integer===2?"Center":"Right",onUpdate:()=>{let i=((t?.get("hand")?.integer??0)+1)%3;t?.setValue("hand",i.toString())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}};var ds=class{constructor(t,n,i){this.menuSystem=t;this.vfs=n;this.onStartMap=i}createMapsMenu(){let n=this.vfs.findByExtension(".bsp").map(i=>({label:i.path.replace(/^maps\//,"").replace(/\.bsp$/,""),action:()=>{this.onStartMap(i.path.replace(/^maps\//,"").replace(/\.bsp$/,"")),this.menuSystem.closeAll()}}));return n.length===0&&n.push({label:"No maps found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Select Map",items:n}}};var ms=class{constructor(t,n,i){this.menuSystem=t;this.optionsFactory=n;this.host=i}createPauseMenu(){return{title:"Game Paused",items:[{label:"Resume Game",action:()=>{this.menuSystem.closeAll()}},{label:"Options",action:()=>{this.menuSystem.pushMenu(this.optionsFactory.createOptionsMenu())}},{label:"Restart Level",action:()=>{this.host?.commands.execute("restart"),this.menuSystem.closeAll()}},{label:"Quit to Main Menu",action:()=>{this.host?.commands.execute("disconnect"),this.menuSystem.closeAll()}}]}}};var hs=class{constructor(t,n){this.menuSystem=t;this.connection=n}createMultiplayerMenu(t="localhost:27910",n=""){let i=t,r=[];return n&&r.push({label:n,action:()=>{}}),r.push({label:"Address: "+i,action:()=>{if(typeof window<"u"){let a=window.prompt("Enter Server Address",i);a&&(i=a,this.refreshMenu(i))}}},{label:"Connect",action:()=>{this.refreshMenu(i,"Connecting..."),this.connection.connect("ws://"+i).then(()=>{this.menuSystem.closeAll()}).catch(a=>{console.error(a);let s="Failed: "+(a.message||"Unknown error");this.refreshMenu(i,s)})}},{label:"Disconnect",action:()=>{this.connection.disconnect(),this.refreshMenu(i,"Disconnected")}},{label:"Back",action:()=>{this.menuSystem.popMenu()}}),{title:"Multiplayer",items:r}}refreshMenu(t,n=""){this.menuSystem.popMenu(),this.menuSystem.pushMenu(this.createMultiplayerMenu(t,n))}};function cg(e,t,n,i){if(!t.activeMenu)return;let r=t.activeMenu,a=n/2,s=i/2,o=20,u=r.items.length*o+40,c=s-u/2;e.drawfillRect(0,0,n,i,[0,0,0,.7]),e.drawCenterString(c,r.title),r.items.forEach((l,m)=>{let d=c+40+m*o,f=l.label;if(l.type==="input"&&l.getValue){if(f+=`: ${l.getValue()}`,m===t.selectedIndex){let g=Date.now();Math.floor(g/500)%2===0&&(f+="_")}}else l.type==="toggle"&&l.getValue&&(f+=`: ${l.getValue()}`);if(m===t.selectedIndex){let w=f.replace(/\^[0-9]/g,"").length*8,L=(n-w)/2;e.drawString(L-16,d,"\r")}e.drawCenterString(d,f)})}var wr=class{constructor(t){this.storage=t}loadCvars(t){try{let n=this.storage.getItem("quake2ts_cvars");if(n){let i=JSON.parse(n);for(let[r,a]of Object.entries(i)){let s=t.get(r);s&&s.setValue(a)}}}catch(n){console.warn("Failed to load settings",n)}}saveCvars(t){let n={};for(let i of t)i.flags&Oi.Archive&&(n[i.name]=i.value);try{this.storage.setItem("quake2ts_cvars",JSON.stringify(n))}catch(i){console.warn("Failed to save settings",i)}}};var fs=class{getItem(t){try{return localStorage.getItem(t)}catch(n){return console.warn("localStorage not available",n),null}}setItem(t,n){try{localStorage.setItem(t,n)}catch(i){console.warn("Failed to write to localStorage",i)}}};var _s=class{constructor(){this.total=0;this.current=0;this.message="";this.active=!1}start(t,n="Loading..."){this.total=t,this.current=0,this.message=n,this.active=!0}update(t,n){this.current=t,n&&(this.message=n)}finish(){this.active=!1,this.current=this.total}render(t){if(!this.active)return;let n=t.width,i=t.height;t.drawfillRect(0,0,n,i,[.1,.1,.1,1]);let r=n*.6,a=20,s=(n-r)/2,o=i*.7;t.drawfillRect(s,o,r,a,[.3,.3,.3,1]);let u=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,r*u,a,[.8,.5,.1,1]),t.drawCenterString(o-30,this.message);let c=Math.floor(u*100);t.drawCenterString(o+a+10,`${c}%`)}};var gs=class{constructor(){this.state={active:!1,title:"",message:""}}show(t,n){this.state={active:!0,title:t,message:n}}hide(){this.state.active=!1}render(t){if(!this.state.active)return;let n=t.width,i=t.height,r=n/2,a=i/2,s=400,o=200;t.drawfillRect(0,0,n,i,[0,0,0,.5]),t.drawfillRect(r-s/2,a-o/2,s,o,[.2,0,0,1]),t.drawCenterString(a-40,`^1${this.state.title}`),t.drawCenterString(a,this.state.message),t.drawCenterString(a+60,"Press ESC to close")}};var vs=class{constructor(){this.state={active:!1,type:"weapon",selectedIndex:-1}}open(t){this.state.active=!0,this.state.type=t}close(){this.state.active=!1}isOpen(){return this.state.active}handleInput(t,n){this.state.active}render(t,n,i,r){if(!this.state.active)return;let a=n/2,s=i/2;t.drawfillRect(a-100,s-100,200,200,[0,0,0,.5]),t.drawCenterString(s,`Select ${this.state.type}`)}};var ps=class{constructor(){this.socket=null;this.messageCallback=null;this.closeCallback=null;this.errorCallback=null}async connect(t){return new Promise((n,i)=>{try{this.socket=new WebSocket(t),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{n()},this.socket.onerror=r=>{let a=new Error("WebSocket connection error");this.errorCallback&&this.errorCallback(a),i(a)},this.socket.onclose=()=>{this.closeCallback&&this.closeCallback(),this.socket=null},this.socket.onmessage=r=>{this.messageCallback&&(r.data instanceof ArrayBuffer?this.messageCallback(new Uint8Array(r.data)):console.warn("Received non-binary message from server"))}}catch(r){i(r)}})}disconnect(){this.socket&&(this.socket.close(),this.socket=null)}send(t){this.socket&&this.socket.readyState===WebSocket.OPEN?this.socket.send(t):console.warn("Attempted to send data on closed or connecting socket")}onMessage(t){this.messageCallback=t}onClose(t){this.closeCallback=t}onError(t){this.errorCallback=t}isConnected(){return this.socket!==null&&this.socket.readyState===WebSocket.OPEN}};var ys=class{constructor(t){this.state=0;this.parser=null;this.serverProtocol=0;this.serverCount=0;this.gameDir="";this.playerNum=0;this.levelName="";this.configStrings=new Map;this.baselines=new Map;this.challenge=0;this.connectPacketCount=0;this.connectPacketTime=0;this.latestServerFrame=0;this.commandHistory=[];this.driver=new ps,this.options=t,this.netchan=new Rm,this.driver.onMessage(n=>this.handleMessage(n)),this.driver.onClose(()=>this.handleDisconnect()),this.driver.onError(n=>console.error("Network Error:",n))}async connect(t){this.state!==0&&this.disconnect(),console.log(`Connecting to ${t}...`),this.state=1,this.netchan.reset();try{await this.driver.connect(t),console.log("WebSocket connected."),this.state=2,this.sendChallenge()}catch(n){throw console.error("Connection failed:",n),this.state=0,n}}disconnect(){this.state!==0&&(this.driver.disconnect(),this.state=0,this.configStrings.clear(),this.baselines.clear(),this.commandHistory=[],this.latestServerFrame=0)}sendCommand(t){if(this.state!==5)return;let n={...t,serverFrame:t.serverFrame??this.latestServerFrame};this.commandHistory.push(n),this.commandHistory.length>cm&&this.commandHistory.shift();let i=new Vo;i.writeByte(on.move),i.writeByte(0),i.writeLong(this.latestServerFrame),Tm(i,n);let r=this.netchan.transmit(i.getData());this.driver.send(r)}handleMessage(t){let n=t.buffer;if(n instanceof SharedArrayBuffer){let r=new ArrayBuffer(t.byteLength);new Uint8Array(r).set(t),n=r}let i=this.netchan.process(new Uint8Array(n));if(i&&i.byteLength>0){let r=new Mm(i.buffer);this.parser=new Io(r,this),this.parser.parseMessage()}}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new Ui;t.writeByte(on.stringcmd),t.writeString("getchallenge");let n=this.netchan.transmit(t.getData());this.driver.send(n)}sendConnect(t){let n=new Ui;n.writeByte(on.stringcmd);let i=`\\name\\${this.options.username}\\model\\${this.options.model}\\skin\\${this.options.skin}\\hand\\${this.options.hand??0}\\fov\\${this.options.fov??90}`;n.writeString(`connect ${Or} ${t} ${i}`);let r=this.netchan.transmit(n.getData());this.driver.send(r)}isConnected(){return this.state===5}onServerData(t,n,i,r,a,s){console.log(`Server Data: Protocol ${t}, Level ${s}`),this.serverProtocol=t,this.serverCount=n,this.gameDir=r,this.playerNum=a,this.levelName=s,this.state=3;let o=new Ui;o.writeByte(on.stringcmd),o.writeString("new");let u=this.netchan.transmit(o.getData());this.driver.send(u),this.state=4}onConfigString(t,n){this.configStrings.set(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,t)}onStuffText(t){if(console.log(`Server StuffText: ${t}`),t.startsWith("precache")&&this.finishLoading(),t.startsWith("challenge ")){let n=t.split(" ");n.length>1&&(this.challenge=parseInt(n[1],10),this.sendConnect(this.challenge))}}finishLoading(){console.log("Finished loading, sending begin...");let t=new Ui;t.writeByte(on.stringcmd),t.writeString("begin");let n=this.netchan.transmit(t.getData());this.driver.send(n),this.state=5}onFrame(t){t.serverFrame>this.latestServerFrame&&(this.latestServerFrame=t.serverFrame)}onCenterPrint(t){}onPrint(t,n){}onSound(t,n,i,r,a,s,o){}onTempEntity(t,n,i,r,a,s,o,u,c){}onLayout(t){}onInventory(t){}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){this.disconnect()}onReconnect(){}onDownload(t,n,i){}};var TI=[{code:"KeyW",command:"+forward"},{code:"ArrowUp",command:"+forward"},{code:"KeyS",command:"+back"},{code:"ArrowDown",command:"+back"},{code:"KeyA",command:"+moveleft"},{code:"KeyD",command:"+moveright"},{code:"Space",command:"+jump"},{code:"ControlLeft",command:"+crouch"},{code:"ShiftLeft",command:"+speed"},{code:"Mouse1",command:"+attack"},{code:"Mouse2",command:"+use"},{code:"Mouse3",command:"+zoom"},{code:"ArrowLeft",command:"+left"},{code:"ArrowRight",command:"+right"},{code:"PageUp",command:"+lookup"},{code:"PageDown",command:"+lookdown"},{code:"Gamepad0-Button7",command:"+attack"},{code:"Gamepad0-Button6",command:"+zoom"},{code:"Gamepad0-Button0",command:"+jump"},{code:"Gamepad0-Button1",command:"+crouch"},{code:"Gamepad0-Button2",command:"+use"},{code:"Gamepad0-Button4",command:"prevweapon"},{code:"Gamepad0-Button5",command:"nextweapon"},{code:"Digit1",command:"weapon 1"},{code:"Digit2",command:"weapon 2"},{code:"Digit3",command:"weapon 3"},{code:"Digit4",command:"weapon 4"},{code:"Digit5",command:"weapon 5"},{code:"Digit6",command:"weapon 6"},{code:"Digit7",command:"weapon 7"},{code:"Digit8",command:"weapon 8"},{code:"Digit9",command:"weapon 9"},{code:"Digit0",command:"weapon 10"}],wn=class{constructor(t=TI){this.bindings=new Map;for(let n of t)this.bind(n.code,n.command)}bind(t,n){this.bindings.set(t,n)}unbind(t){this.bindings.delete(t)}getBinding(t){return this.bindings.get(t)}entries(){return new Map(this.bindings.entries())}};function ug(){return new wn}function Zu(e){return e}function Ar(e){return e.trim().toLowerCase()}var MI=250,ju=class{constructor(){this.activeCodes=new Set;this.downTime=0;this.msec=0;this.pressed=!1}press(t,n){return this.activeCodes.has(t)?!1:(this.activeCodes.add(t),this.pressed=!0,this.activeCodes.size===1?(this.downTime=n,!0):!1)}release(t,n){return this.activeCodes.delete(t)&&this.activeCodes.size===0?(this.msec+=n-this.downTime,this.downTime=0,!0):!1}sample(t,n){if(t<=0)return{active:this.activeCodes.size>0,wasPressed:this.pressed,fraction:0};let i=this.msec;this.activeCodes.size>0&&(i+=n-this.downTime,this.downTime=n),this.msec=0;let r=Math.min(i/t,1),a=this.pressed;return this.pressed=!1,{active:this.activeCodes.size>0,wasPressed:a,fraction:r}}},ws=(w=>(w.Forward="+forward",w.Back="+back",w.MoveLeft="+moveleft",w.MoveRight="+moveright",w.MoveUp="+moveup",w.MoveDown="+movedown",w.Jump="+jump",w.Crouch="+crouch",w.Attack="+attack",w.Use="+use",w.Holster="+holster",w.TurnLeft="+left",w.TurnRight="+right",w.LookUp="+lookup",w.LookDown="+lookdown",w.SpeedModifier="+speed",w.Zoom="+zoom",w))(ws||{}),RI={"+attack":dt.Attack,"+use":dt.Use,"+holster":dt.Holster,"+jump":dt.Jump,"+crouch":dt.Crouch},LI=new Map(Object.values(ws).map(e=>[Ar(e),e]));function NI(e){return LI.get(Ar(e))}function Sr(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var li=class{constructor(t={},n=new wn){this.buttons=new Map;this.viewAngles={x:0,y:0,z:0};this.pointerLocked=!1;this.mouseDelta={deltaX:0,deltaY:0};this.previousMouseDelta={deltaX:0,deltaY:0};this.anyPressed=!1;this.commandQueue=[];this.gamepadButtons=new Map;this.gamepadMove={x:0,y:0};this.gamepadLook={x:0,y:0};this.touchButtons=new Map;this.touchMove={x:0,y:0};this.touchLook={x:0,y:0};this.bindings=n,this.forwardSpeed=t.forwardSpeed??em,this.sideSpeed=t.sideSpeed??tm,this.upSpeed=t.upSpeed??nm,this.yawSpeed=t.yawSpeed??im,this.pitchSpeed=t.pitchSpeed??rm,this.sensitivity=t.sensitivity??am,this.sensitivityX=t.sensitivityX,this.sensitivityY=t.sensitivityY,this.invertMouseY=t.invertMouseY??!1,this.runByDefault=t.runByDefault??!0,this.requirePointerLock=t.requirePointerLock??!0,this.jumpAddsUpMove=t.jumpAddsUpMove??!0,this.crouchAddsDownMove=t.crouchAddsDownMove??!0,this.mouseFilter=t.mouseFilter??!1,this.getGamepads=t.getGamepads,this.gamepadDeadZone=t.gamepadDeadZone??.15,this.gamepadLookScale=t.gamepadLookScale??1,this.invertGamepadY=t.invertGamepadY??this.invertMouseY}handleKeyDown(t,n=Sr()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!0,i,n)}handleKeyUp(t,n=Sr()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!1,i,n)}handleMouseButtonDown(t,n=Sr()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!0,i,n)}handleMouseButtonUp(t,n=Sr()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!1,i,n)}handleMouseMove(t,n){this.requirePointerLock&&!this.pointerLocked||(this.mouseDelta={deltaX:this.mouseDelta.deltaX+t,deltaY:this.mouseDelta.deltaY+n})}setPointerLocked(t){this.pointerLocked=t}setGamepadState(t){this.pendingGamepads=t}setTouchState(t){this.pendingTouchState=t}buildCommand(t,n=Sr(),i){this.pollGamepads(n),this.applyTouchState(n);let r=this.yawSpeed*t/1e3,a=this.pitchSpeed*t/1e3,s=this.sample("+left",t,n),o=this.sample("+right",t,n),u=this.sample("+lookup",t,n),l={x:(this.sample("+lookdown",t,n).fraction-u.fraction)*a,y:(o.fraction-s.fraction)*r,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let N=this.gamepadLook.y*(this.invertGamepadY?-1:1);l={x:l.x+N*a*this.gamepadLookScale,y:l.y+this.gamepadLook.x*r*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let N=this.touchLook.y*(this.invertMouseY?-1:1);l={x:l.x+N*a,y:l.y+this.touchLook.x*r,z:0}}if(this.pointerLocked||!this.requirePointerLock){let N=this.sampleMouseDelta(),j=om(N,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});l={x:l.x+j.x,y:l.y+j.y,z:0}}let m=sm(this.viewAngles,l);this.viewAngles=m;let d=this.sample("+forward",t,n),f=this.sample("+back",t,n),g=this.sample("+moveleft",t,n),p=this.sample("+moveright",t,n),v=this.sample("+moveup",t,n),w=this.sample("+movedown",t,n),L=this.sample("+speed",t,n),E=this.sample("+jump",t,n),y=this.sample("+crouch",t,n),k=this.runByDefault?L.active?.5:1:L.active?1:.5,x=this.forwardSpeed*(d.fraction-f.fraction)*k,T=this.sideSpeed*(p.fraction-g.fraction)*k,O=this.upSpeed*(v.fraction-w.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(x+=this.forwardSpeed*this.gamepadMove.y*k,T+=this.sideSpeed*this.gamepadMove.x*k),(this.touchMove.x!==0||this.touchMove.y!==0)&&(x+=this.forwardSpeed*this.touchMove.y*k,T+=this.sideSpeed*this.touchMove.x*k),this.jumpAddsUpMove&&E.fraction>0&&(O+=this.upSpeed*E.fraction),this.crouchAddsDownMove&&y.fraction>0&&(O-=this.upSpeed*y.fraction),x=this.clampMove(x,this.forwardSpeed),T=this.clampMove(T,this.sideSpeed),O=this.clampMove(O,this.upSpeed);let b=this.collectButtonBits(t,n),S=Math.min(Math.max(Math.round(t),1),MI);return(this.anyPressed||b!==dt.None)&&(b|=dt.Any),this.anyPressed=!1,{msec:S,buttons:b,angles:{...this.viewAngles},forwardmove:x,sidemove:T,upmove:O,serverFrame:i}}consumeConsoleCommands(){let t=this.commandQueue;return this.commandQueue=[],t}pollGamepads(t){let n=this.getGamepads?.()??this.pendingGamepads??[];this.pendingGamepads=void 0,this.gamepadMove={x:0,y:0},this.gamepadLook={x:0,y:0};let i=new Set;for(let r of n){if(!r||r.connected===!1)continue;let a=r.index??0,s=r.axes??[];this.gamepadMove={x:this.mergeAnalog(this.gamepadMove.x,this.applyDeadZone(s[0]??0)),y:this.mergeAnalog(this.gamepadMove.y,-this.applyDeadZone(s[1]??0))},this.gamepadLook={x:this.mergeAnalog(this.gamepadLook.x,this.applyDeadZone(s[2]??0)),y:this.mergeAnalog(this.gamepadLook.y,this.applyDeadZone(s[3]??0))};let o=r.buttons??[];for(let u=0;u<o.length;u++){let c=o[u];if(!c)continue;let l=c.pressed||c.value>this.gamepadDeadZone,m=this.gamepadButtonCode(a,u);l&&i.add(m);let d=this.gamepadButtons.get(m)??!1;l!==d&&(this.applyCommand(this.bindings.getBinding(m),l,m,t),this.gamepadButtons.set(m,l))}}for(let[r,a]of this.gamepadButtons.entries())a&&!i.has(r)&&(this.applyCommand(this.bindings.getBinding(r),!1,r,t),this.gamepadButtons.set(r,!1))}applyTouchState(t){let n=this.pendingTouchState;if(n&&(this.pendingTouchState=void 0,n.move&&(this.touchMove={x:this.clampAnalog(n.move.x),y:this.clampAnalog(n.move.y)}),n.look&&(this.touchLook={x:this.clampAnalog(n.look.x),y:this.clampAnalog(n.look.y)}),n.buttons))for(let[i,r]of Object.entries(n.buttons)){if(r===void 0)continue;let a=this.touchButtons.get(i)??!1;r!==a&&(this.applyCommand(i,r,this.touchButtonCode(i),t),this.touchButtons.set(i,r))}}applyCommand(t,n,i,r){if(!t)return;let a=NI(t);if(a){let s=this.lookupButton(a);n?(s.press(i,r)&&this.commandQueue.push(a),this.anyPressed=!0):s.release(i,r)&&this.commandQueue.push(a.replace("+","-"))}else n&&this.commandQueue.push(t)}sampleMouseDelta(){let t=this.mouseDelta;if(this.mouseDelta={deltaX:0,deltaY:0},!this.mouseFilter)return this.previousMouseDelta=t,t;let n={deltaX:(t.deltaX+this.previousMouseDelta.deltaX)*.5,deltaY:(t.deltaY+this.previousMouseDelta.deltaY)*.5};return this.previousMouseDelta=t,n}collectButtonBits(t,n){let i=dt.None;for(let[r,a]of Object.entries(RI)){let s=this.sample(r,t,n);(s.fraction>0||s.active||s.wasPressed)&&(i|=a)}return i}lookupButton(t){let n=this.buttons.get(t);return n||(n=new ju,this.buttons.set(t,n)),n}mouseButtonToCode(t){return t===0?"Mouse1":t===1?"Mouse3":t===2?"Mouse2":`Mouse${t+1}`}mouseButtonToCommand(t){return this.bindings.getBinding(t)}sample(t,n,i){return this.lookupButton(t).sample(n,i)}gamepadButtonCode(t,n){return`Gamepad${t}-Button${n}`}touchButtonCode(t){return`Touch-${t}`}clampAnalog(t){return Math.max(-1,Math.min(1,t))}applyDeadZone(t){return Math.abs(t)<this.gamepadDeadZone?0:t}mergeAnalog(t,n){return Math.abs(n)>Math.abs(t)?n:t}clampMove(t,n){return Math.max(-n,Math.min(n,t))}};var As=class{constructor(t,n=new li(t)){this.queued=[];this.controller=n}captureFrame(t,n,i){let r=this.controller.buildCommand(t,n,i),a=this.controller.consumeConsoleCommands(),s={command:r,console:a};return this.queued.push(s),s}consumeQueued(){let t=[...this.queued];return this.queued.length=0,t}getController(){return this.controller}};var Ss={x:0,y:0,z:0},lg=(i=>(i[i.Normal=0]="Normal",i[i.DemoPlayback=1]="DemoPlayback",i[i.Multiplayer=2]="Multiplayer",i))(lg||{});function zI(e){let t=M=>{let H={x:0,y:0,z:0};return e.engine.trace(M,M,H,H).contents||0},n=new ca(e.engine.trace,t),i=new oa,r=new $d,a=new os(e);a.setView(i);let s=!1,o=null,u=0,c=new ls,l=new _s,m=new gs,d=new vs,f=new wr(new fs),g,p,v=new ui,w,L=0,E=!1,k=Zm(e,{get tickRate(){return 10},get frameTimeMs(){return w?.timeMs??0},get serverFrame(){return a.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return v},getClientName:M=>`Player ${M}`,getKeyBinding:M=>`[${M}]`,get inAutoDemo(){return E}}),x=qm(k),T=new ys({get username(){return e.host?.cvars?.get("name")?.string||"Player"},get model(){return e.host?.cvars?.get("model")?.string||"male"},get skin(){return e.host?.cvars?.get("skin")?.string||"grunt"},get fov(){return j}}),O=new hs(c,T);a.setCallbacks({onCenterPrint:M=>x.ParseCenterPrint(M,0,!1),onPrint:(M,H)=>x.NotifyMessage(0,H,!1),onConfigString:(M,H)=>{v.set(M,H),x.ParseConfigString(M,H)},onServerData:(M,H)=>{H&&H>0?r.setFrameDuration(1e3/H):r.setFrameDuration(100)}}),r.setHandler(a);let b,S,N,j=90,ce=!1;if(e.host){p=new yr(c,e.host),g=new ms(c,p,e.host);let M=new Map;if(e.host.cvars){for(let H of e.host.cvars.list())M.set(H.name,{value:H.string,setValue:ee=>e.host.cvars.setValue(H.name,ee)});f.loadCvars(M)}}if(e.host?.commands&&(e.host.commands.register("playdemo",M=>{if(M.length<1){console.log("usage: playdemo <filename>");return}let H=M[0];console.log(`playdemo: ${H}`),console.log("Note: Demo loading requires VFS access which is not yet fully integrated into this console command.")},"Play a recorded demo"),e.host.commands.register("crosshair",()=>{let M=Jm();console.log(`Crosshair changed to index ${M}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{ce=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{ce=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{c.isActive()?c.closeAll():g&&c.pushMenu(g.createPauseMenu())},"Toggle the main/pause menu"),e.host.commands.register("connect",M=>{if(M.length<1){console.log("usage: connect <address>");return}let H=M[0];console.log(`Connecting to ${H}...`),T.connect(H).catch(ee=>{console.error("Failed to connect:",ee),m.show("Connection Failed",ee instanceof Error?ee.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{T.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Oi.Archive,onChange:H=>{let ee=H.number;isNaN(ee)||(j=Math.max(1,Math.min(179,ee)))},description:"Field of view"});let M=e.host.cvars.get("fov");if(M){let H=M.number;isNaN(H)||(j=Math.max(1,Math.min(179,H)))}}return{loadingScreen:l,errorDialog:m,init(M){this.Init(M)},Init(M){w=M,M?.state&&n.setAuthoritative(M),x.Init(),e.engine.assets&&e.engine.renderer&&(l.start(100,"Loading assets..."),sg(e.engine.renderer,e.engine.assets).then(()=>{l.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(c.isActive()||document.body.requestPointerLock?.())})},predict(M){return c.isActive(),T.isConnected()&&T.sendCommand(M),n.enqueueCommand(M)},handleInput(M,H){if(!c.isActive())return!1;if(!H)return!0;let ee=M.toLowerCase();return ee==="arrowup"||ee==="w"?c.handleInput("up"):ee==="arrowdown"||ee==="s"?c.handleInput("down"):ee==="arrowleft"||ee==="a"?c.handleInput("left"):ee==="arrowright"||ee==="d"?c.handleInput("right"):ee==="enter"||ee===" "?c.handleInput("select"):ee==="escape"?c.getState().activeMenu?.parent?c.handleInput("back"):!1:M.length===1?c.handleInput("char",M):M==="Backspace"?c.handleInput("left"):!0},toggleMenu(){if(c.isActive()){if(c.closeAll(),e.host?.cvars){let M=e.host.cvars.list().map(H=>({name:H.name,value:H.string,flags:H.flags}));f.saveCvars(M)}}else g&&c.pushMenu(g.createPauseMenu())},createMainMenu(M,H,ee,yt,xe){let Le=new us(c,H,ee,yt,xe),wt=p;if(!wt){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");wt=new yr(c,e.host)}let An=e.engine.assets,dg={findByExtension:Sn=>An?An.listFiles(Sn):[]},mg=new ds(c,dg,Sn=>{console.log(`Starting map: ${Sn}`),e.host?.commands.execute(`map ${Sn}`)}),hg=new cs(c,Le,{...M,optionsFactory:wt,mapsFactory:mg,multiplayerFactory:O,onSetDifficulty:Sn=>{e.host?.cvars&&e.host.cvars.setValue("skill",Sn.toString())}});return{menuSystem:c,factory:hg}},render(M){let H=[];if(s){let xe=M.nowMs,Le=L>0?Math.max(0,xe-L):0;L=xe,r.update(Le),b=a.getPredictionState(r.getCurrentTime())}else L=M.nowMs,M.latest?.state&&(n.setAuthoritative(M.latest),w=M.latest),M.previous?.state&&M.latest?.state?(b=un(M.previous.state,M.latest.state,M.alpha),M.latest.state.packetEntities&&M.previous.state.packetEntities&&(H=ss(M.latest.state.packetEntities,M.previous.state.packetEntities,M.alpha,v,e))):b=M.latest?.state??M.previous?.state??n.getPredictedState();let ee=M.latest&&M.previous?Math.max(0,M.latest.timeMs-M.previous.timeMs):0;S=i.sample(b,ee);let yt={};if(b){let{origin:xe,viewAngles:Le}=b;N=new cd,N.position=_e.fromValues(xe.x,xe.y,xe.z);let wt=S?.offset??{x:0,y:0,z:0};_e.add(N.position,N.position,[wt.x,wt.y,wt.z]);let An=S?.angles??{x:0,y:0,z:0};N.angles=_e.fromValues(Le.x+An.x,Le.y+An.y,Le.z+An.z),N.fov=ce?40:j,N.aspect=4/3,e.engine.renderer&&(N.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&N){let xe;if(e.engine.assets){let Le=v.getModelName(1);if(Le){let wt=e.engine.assets.getMap(Le)}}e.engine.renderer.renderFrame({camera:N,world:xe,dlights:[]},H)}if(e.engine.renderer&&b&&b.client){let xe=e.engine.renderer.stats?{...e.engine.renderer.stats,batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0}:{batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0},Le=M.latest?.timeMs??0;this.DrawHUD(xe,Le)}return yt},DrawHUD(M,H){if(!e.engine.renderer)return;let ee=e.engine.renderer,yt=ee.width,xe=ee.height;if(b&&b.client){let Le={origin:b.origin,velocity:b.velocity,viewAngles:b.viewAngles,onGround:Cn(b.pmFlags,kt.OnGround),waterLevel:b.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:b.damageAlpha??0,damageIndicators:b.damageIndicators??[],blend:b.blend??[0,0,0,0],pickupIcon:b.pickupIcon,centerPrint:void 0,notify:void 0,stats:b.stats?[...b.stats]:new Array(32).fill(0),kick_angles:Ss,kick_origin:Ss,gunoffset:Ss,gunangles:Ss,gunindex:0,pm_type:b.pm_type??0,pm_time:b.pm_time??0,pm_flags:b.pmFlags,gun_frame:b.gun_frame??0,rdflags:b.rdflags??0,fov:b.fov??90};Le.stats[Ce.STAT_HEALTH]=b.health??0,Le.stats[Ce.STAT_AMMO]=b.ammo??0,Le.stats[Ce.STAT_ARMOR]=b.armor??0,ee.begin2D(),x.DrawHUD(0,null,{x:0,y:0,width:yt,height:xe},{x:0,y:0,width:yt,height:xe},1,0,Le),ee.end2D()}c.isActive()&&cg(e.engine.renderer,c.getState(),e.engine.renderer.width,e.engine.renderer.height),b&&b.client&&d.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,b.client),m.render(e.engine.renderer),l.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(x.Shutdown(),w=void 0,b=void 0,e.host?.cvars){let M=e.host.cvars.list().map(H=>({name:H.name,value:H.string,flags:H.flags}));f.saveCvars(M)}},get prediction(){return n},get lastRendered(){return b},get view(){return i},get lastView(){return S},get camera(){return N},demoPlayback:r,get isDemoPlaying(){return s},get currentDemoName(){return o},get mode(){return u},startDemoPlayback(M,H){r.loadDemo(M),r.setHandler(a),s=!0,o=H,u=1,L=0,v.clear()},stopDemoPlayback(){r.stop(),s=!1,o=null,u=0},ParseCenterPrint(M){x.ParseCenterPrint(M,0,!1)},ParseNotify(M){x.NotifyMessage(0,M,!1)},showSubtitle(M,H){x.ShowSubtitle(M,H)},ParseConfigString(M,H){v.set(M,H),x.ParseConfigString(M,H)},demoHandler:a,multiplayer:T,configStrings:v}}return pg(OI);})();
|
|
169
|
+
}`;var ud=class{constructor(){this._position=_e.create(),this._angles=_e.create(),this._bobAngles=_e.create(),this._bobOffset=_e.create(),this._kickAngles=_e.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=me.create(),this._projectionMatrix=me.create(),this._viewProjectionMatrix=me.create(),this._dirty=!0}get position(){return this._position}set position(e){_e.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){_e.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){_e.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){_e.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){_e.copy(this._bobOffset,e),this._dirty=!0}get rollAngle(){return this._rollAngle}set rollAngle(e){this._rollAngle=e,this._dirty=!0}get fov(){return this._fov}set fov(e){this._fov=e,this._dirty=!0}get aspect(){return this._aspect}set aspect(e){this._aspect=e,this._dirty=!0}get viewMatrix(){return this.updateMatrices(),this._viewMatrix}get projectionMatrix(){return this.updateMatrices(),this._projectionMatrix}get viewProjectionMatrix(){return this.updateMatrices(),this._viewProjectionMatrix}getViewmodelProjectionMatrix(e){let t=me.create();return me.perspective(t,e*hi,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;me.perspective(this._projectionMatrix,this._fov*hi,this._aspect,this._near,this._far);let e=me.fromValues(0,-1,0,0,0,0,1,0,-1,0,0,0,0,0,0,1),t=this._angles[0]+this._bobAngles[0]+this._kickAngles[0],n=this._angles[1]+this._bobAngles[1]+this._kickAngles[1],i=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,r=t*hi,a=n*hi,s=i*hi,o=me.create();me.identity(o),me.rotateZ(o,o,-a),me.rotateY(o,o,-r),me.rotateX(o,o,-s);let l=me.create();me.multiply(l,e,o);let c=_e.add(_e.create(),this._position,this._bobOffset),u=_e.negate(_e.create(),c),m=_e.create();_e.transformMat4(m,u,o);let d=_e.fromValues(m[1]||0,m[2]||0,m[0]||0);me.copy(this._viewMatrix,l),this._viewMatrix[12]=d[0],this._viewMatrix[13]=d[1],this._viewMatrix[14]=d[2],me.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var Jp=class{constructor(e){this.buffer=e,this.view=new DataView(e),this.offset=0}hasMore(){return this.offset<this.buffer.byteLength}readNextBlock(){if(this.offset+4>this.buffer.byteLength)return null;let e=this.view.getInt32(this.offset,!0);if(this.offset+=4,e<0||e>2097152)return console.warn(`DemoReader: Invalid block length ${e} at offset ${this.offset-4}`),null;if(this.offset+e>this.buffer.byteLength)return console.warn(`DemoReader: Incomplete block. Expected ${e} bytes, but only ${this.buffer.byteLength-this.offset} remain.`),null;let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new $s(t)}}reset(){this.offset=0}getOffset(){return this.offset}},Qp=4,gu=0,vu=1,ey=2;function Nn(e){let t=e.length;for(;--t>=0;)e[t]=0}var ty=0,dd=1,ny=2,iy=3,ry=258,ao=29,Ri=256,Ai=Ri+1+ao,Mn=30,so=19,md=2*Ai+1,Qt=15,Ns=16,ay=7,oo=256,hd=16,fd=17,_d=18,Ys=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Nr=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),sy=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),gd=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),oy=512,St=new Array((Ai+2)*2);Nn(St);var vi=new Array(Mn*2);Nn(vi);var Si=new Array(oy);Nn(Si);var ki=new Array(ry-iy+1);Nn(ki);var co=new Array(ao);Nn(co);var zr=new Array(Mn);Nn(zr);function zs(e,t,n,i,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}var vd,pd,yd;function Os(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var wd=e=>e<256?Si[e]:Si[256+(e>>>7)],Ei=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Ue=(e,t,n)=>{e.bi_valid>Ns-n?(e.bi_buf|=t<<e.bi_valid&65535,Ei(e,e.bi_buf),e.bi_buf=t>>Ns-e.bi_valid,e.bi_valid+=n-Ns):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},st=(e,t,n)=>{Ue(e,n[t*2],n[t*2+1])},Ad=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},cy=e=>{e.bi_valid===16?(Ei(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},ly=(e,t)=>{let n=t.dyn_tree,i=t.max_code,r=t.stat_desc.static_tree,a=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,o=t.stat_desc.extra_base,l=t.stat_desc.max_length,c,u,m,d,f,g,p=0;for(d=0;d<=Qt;d++)e.bl_count[d]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<md;c++)u=e.heap[c],d=n[n[u*2+1]*2+1]+1,d>l&&(d=l,p++),n[u*2+1]=d,!(u>i)&&(e.bl_count[d]++,f=0,u>=o&&(f=s[u-o]),g=n[u*2],e.opt_len+=g*(d+f),a&&(e.static_len+=g*(r[u*2+1]+f)));if(p!==0){do{for(d=l-1;e.bl_count[d]===0;)d--;e.bl_count[d]--,e.bl_count[d+1]+=2,e.bl_count[l]--,p-=2}while(p>0);for(d=l;d!==0;d--)for(u=e.bl_count[d];u!==0;)m=e.heap[--c],!(m>i)&&(n[m*2+1]!==d&&(e.opt_len+=(d-n[m*2+1])*n[m*2],n[m*2+1]=d),u--)}},Sd=(e,t,n)=>{let i=new Array(Qt+1),r=0,a,s;for(a=1;a<=Qt;a++)r=r+n[a-1]<<1,i[a]=r;for(s=0;s<=t;s++){let o=e[s*2+1];o!==0&&(e[s*2]=Ad(i[o]++,o))}},uy=()=>{let e,t,n,i,r,a=new Array(Qt+1);for(n=0,i=0;i<ao-1;i++)for(co[i]=n,e=0;e<1<<Ys[i];e++)ki[n++]=i;for(ki[n-1]=i,r=0,i=0;i<16;i++)for(zr[i]=r,e=0;e<1<<Nr[i];e++)Si[r++]=i;for(r>>=7;i<Mn;i++)for(zr[i]=r<<7,e=0;e<1<<Nr[i]-7;e++)Si[256+r++]=i;for(t=0;t<=Qt;t++)a[t]=0;for(e=0;e<=143;)St[e*2+1]=8,e++,a[8]++;for(;e<=255;)St[e*2+1]=9,e++,a[9]++;for(;e<=279;)St[e*2+1]=7,e++,a[7]++;for(;e<=287;)St[e*2+1]=8,e++,a[8]++;for(Sd(St,Ai+1,a),e=0;e<Mn;e++)vi[e*2+1]=5,vi[e*2]=Ad(e,5);vd=new zs(St,Ys,Ri+1,Ai,Qt),pd=new zs(vi,Nr,0,Mn,Qt),yd=new zs(new Array(0),sy,0,so,ay)},kd=e=>{let t;for(t=0;t<Ai;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Mn;t++)e.dyn_dtree[t*2]=0;for(t=0;t<so;t++)e.bl_tree[t*2]=0;e.dyn_ltree[oo*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Ed=e=>{e.bi_valid>8?Ei(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},pu=(e,t,n,i)=>{let r=t*2,a=n*2;return e[r]<e[a]||e[r]===e[a]&&i[t]<=i[n]},Is=(e,t,n)=>{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r<e.heap_len&&pu(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!pu(t,i,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=i},yu=(e,t,n)=>{let i,r,a=0,s,o;if(e.sym_next!==0)do i=e.pending_buf[e.sym_buf+a++]&255,i+=(e.pending_buf[e.sym_buf+a++]&255)<<8,r=e.pending_buf[e.sym_buf+a++],i===0?st(e,r,t):(s=ki[r],st(e,s+Ri+1,t),o=Ys[s],o!==0&&(r-=co[s],Ue(e,r,o)),i--,s=wd(i),st(e,s,n),o=Nr[s],o!==0&&(i-=zr[s],Ue(e,i,o)));while(a<e.sym_next);st(e,oo,t)},qs=(e,t)=>{let n=t.dyn_tree,i=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.elems,s,o,l=-1,c;for(e.heap_len=0,e.heap_max=md,s=0;s<a;s++)n[s*2]!==0?(e.heap[++e.heap_len]=l=s,e.depth[s]=0):n[s*2+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=l<2?++l:0,n[c*2]=1,e.depth[c]=0,e.opt_len--,r&&(e.static_len-=i[c*2+1]);for(t.max_code=l,s=e.heap_len>>1;s>=1;s--)Is(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Is(e,n,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,n[c*2]=n[s*2]+n[o*2],e.depth[c]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,n[s*2+1]=n[o*2+1]=c,e.heap[1]=c++,Is(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],ly(e,t),Sd(n,l,e.bl_count)},wu=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),t[(n+1)*2+1]=65535,i=0;i<=n;i++)a=s,s=t[(i+1)*2+1],!(++o<l&&a===s)&&(o<c?e.bl_tree[a*2]+=o:a!==0?(a!==r&&e.bl_tree[a*2]++,e.bl_tree[hd*2]++):o<=10?e.bl_tree[fd*2]++:e.bl_tree[_d*2]++,o=0,r=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4))},Au=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),i=0;i<=n;i++)if(a=s,s=t[(i+1)*2+1],!(++o<l&&a===s)){if(o<c)do st(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(st(e,a,e.bl_tree),o--),st(e,hd,e.bl_tree),Ue(e,o-3,2)):o<=10?(st(e,fd,e.bl_tree),Ue(e,o-3,3)):(st(e,_d,e.bl_tree),Ue(e,o-11,7));o=0,r=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4)}},dy=e=>{let t;for(wu(e,e.dyn_ltree,e.l_desc.max_code),wu(e,e.dyn_dtree,e.d_desc.max_code),qs(e,e.bl_desc),t=so-1;t>=3&&e.bl_tree[gd[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},my=(e,t,n,i)=>{let r;for(Ue(e,t-257,5),Ue(e,n-1,5),Ue(e,i-4,4),r=0;r<i;r++)Ue(e,e.bl_tree[gd[r]*2+1],3);Au(e,e.dyn_ltree,t-1),Au(e,e.dyn_dtree,n-1)},hy=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return gu;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return vu;for(n=32;n<Ri;n++)if(e.dyn_ltree[n*2]!==0)return vu;return gu},Su=!1,fy=e=>{Su||(uy(),Su=!0),e.l_desc=new Os(e.dyn_ltree,vd),e.d_desc=new Os(e.dyn_dtree,pd),e.bl_desc=new Os(e.bl_tree,yd),e.bi_buf=0,e.bi_valid=0,kd(e)},bd=(e,t,n,i)=>{Ue(e,(ty<<1)+(i?1:0),3),Ed(e),Ei(e,n),Ei(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},_y=e=>{Ue(e,dd<<1,3),st(e,oo,St),cy(e)},gy=(e,t,n,i)=>{let r,a,s=0;e.level>0?(e.strm.data_type===ey&&(e.strm.data_type=hy(e)),qs(e,e.l_desc),qs(e,e.d_desc),s=dy(e),r=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=r&&(r=a)):r=a=n+5,n+4<=r&&t!==-1?bd(e,t,n,i):e.strategy===Qp||a===r?(Ue(e,(dd<<1)+(i?1:0),3),yu(e,St,vi)):(Ue(e,(ny<<1)+(i?1:0),3),my(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),yu(e,e.dyn_ltree,e.dyn_dtree)),kd(e),i&&Ed(e)},vy=(e,t,n)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(ki[n]+Ri+1)*2]++,e.dyn_dtree[wd(t)*2]++),e.sym_next===e.sym_end),py=fy,yy=bd,wy=gy,Ay=vy,Sy=_y,ky={_tr_init:py,_tr_stored_block:yy,_tr_flush_block:wy,_tr_tally:Ay,_tr_align:Sy},Ey=(e,t,n,i)=>{let r=e&65535|0,a=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do r=r+t[i++]|0,a=a+r|0;while(--s);r%=65521,a%=65521}return r|a<<16|0},bi=Ey,by=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},xy=new Uint32Array(by()),Ty=(e,t,n,i)=>{let r=xy,a=i+n;e^=-1;for(let s=i;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},Te=Ty,nn={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},sn={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},{_tr_init:My,_tr_stored_block:js,_tr_flush_block:Ry,_tr_tally:Ct,_tr_align:Ly}=ky,{Z_NO_FLUSH:Pt,Z_PARTIAL_FLUSH:Ny,Z_FULL_FLUSH:zy,Z_FINISH:je,Z_BLOCK:ku,Z_OK:Ne,Z_STREAM_END:Eu,Z_STREAM_ERROR:ot,Z_DATA_ERROR:Oy,Z_BUF_ERROR:Cs,Z_DEFAULT_COMPRESSION:Iy,Z_FILTERED:Cy,Z_HUFFMAN_ONLY:xr,Z_RLE:Py,Z_FIXED:Dy,Z_DEFAULT_STRATEGY:Fy,Z_UNKNOWN:Uy,Z_DEFLATED:Kr}=sn,By=9,Gy=15,Hy=8,Vy=29,Wy=256,Zs=Wy+1+Vy,Ky=30,$y=19,Xy=2*Zs+1,Yy=15,te=3,It=258,ct=It+te+1,qy=32,Rn=42,lo=57,Js=69,Qs=73,eo=91,to=103,en=113,_i=666,Oe=1,zn=2,rn=3,On=4,jy=3,tn=(e,t)=>(e.msg=nn[t],t),bu=e=>e*2-(e>4?9:0),Ot=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Zy=e=>{let t,n,i,r=e.w_size;t=e.hash_size,i=t;do n=e.head[--i],e.head[i]=n>=r?n-r:0;while(--t);t=r,i=t;do n=e.prev[--i],e.prev[i]=n>=r?n-r:0;while(--t)},Jy=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,Dt=Jy,He=e=>{let t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},Ve=(e,t)=>{Ry(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,He(e.strm)},re=(e,t)=>{e.pending_buf[e.pending++]=t},fi=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},no=(e,t,n,i)=>{let r=e.avail_in;return r>i&&(r=i),r===0?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),n),e.state.wrap===1?e.adler=bi(e.adler,t,r,n):e.state.wrap===2&&(e.adler=Te(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},xd=(e,t)=>{let n=e.max_chain_length,i=e.strstart,r,a,s=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-ct?e.strstart-(e.w_size-ct):0,c=e.window,u=e.w_mask,m=e.prev,d=e.strstart+It,f=c[i+s-1],g=c[i+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(c[r+s]!==g||c[r+s-1]!==f||c[r]!==c[i]||c[++r]!==c[i+1])){i+=2,r++;do;while(c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&i<d);if(a=It-(d-i),i=d-It,a>s){if(e.match_start=t,s=a,a>=o)break;f=c[i+s-1],g=c[i+s]}}while((t=m[t&u])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},Ln=e=>{let t=e.w_size,n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-ct)&&(e.window.set(e.window.subarray(t,t+t-i),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Zy(e),i+=t),e.strm.avail_in===0)break;if(n=no(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=te)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=Dt(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=Dt(e,e.ins_h,e.window[r+te-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<te)););}while(e.lookahead<ct&&e.strm.avail_in!==0)},Td=(e,t)=>{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,i,r,a,s=0,o=e.strm.avail_in;do{if(i=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,r=e.strstart-e.block_start,i>r+e.strm.avail_in&&(i=r+e.strm.avail_in),i>a&&(i=a),i<n&&(i===0&&t!==je||t===Pt||i!==r+e.strm.avail_in)))break;s=t===je&&i===r+e.strm.avail_in?1:0,js(e,0,0,s),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,He(e.strm),r&&(r>i&&(r=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,i-=r),i&&(no(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(s===0);return o-=e.strm.avail_in,o&&(o>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=o&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-o,e.strm.next_in),e.strstart),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),s?On:t!==Pt&&t!==je&&e.strm.avail_in===0&&e.strstart===e.block_start?zn:(a=e.window_size-e.strstart,e.strm.avail_in>a&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,a+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),a>e.strm.avail_in&&(a=e.strm.avail_in),a&&(no(e.strm,e.window,e.strstart,a),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.high_water<e.strstart&&(e.high_water=e.strstart),a=e.bi_valid+42>>3,a=e.pending_buf_size-a>65535?65535:e.pending_buf_size-a,n=a>e.w_size?e.w_size:a,r=e.strstart-e.block_start,(r>=n||(r||t===je)&&t!==Pt&&e.strm.avail_in===0&&r<=a)&&(i=r>a?a:r,s=t===je&&e.strm.avail_in===0&&i===r?1:0,js(e,e.block_start,i,s),e.block_start+=i,He(e.strm)),s?rn:Oe)},Ps=(e,t)=>{let n,i;for(;;){if(e.lookahead<ct){if(Ln(e),e.lookahead<ct&&t===Pt)return Oe;if(e.lookahead===0)break}if(n=0,e.lookahead>=te&&(e.ins_h=Dt(e,e.ins_h,e.window[e.strstart+te-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-ct&&(e.match_length=xd(e,n)),e.match_length>=te)if(i=Ct(e,e.strstart-e.match_start,e.match_length-te),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=te){e.match_length--;do e.strstart++,e.ins_h=Dt(e,e.ins_h,e.window[e.strstart+te-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Dt(e,e.ins_h,e.window[e.strstart+1]);else i=Ct(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Ve(e,!1),e.strm.avail_out===0))return Oe}return e.insert=e.strstart<te-1?e.strstart:te-1,t===je?(Ve(e,!0),e.strm.avail_out===0?rn:On):e.sym_next&&(Ve(e,!1),e.strm.avail_out===0)?Oe:zn},bn=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<ct){if(Ln(e),e.lookahead<ct&&t===Pt)return Oe;if(e.lookahead===0)break}if(n=0,e.lookahead>=te&&(e.ins_h=Dt(e,e.ins_h,e.window[e.strstart+te-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=te-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-ct&&(e.match_length=xd(e,n),e.match_length<=5&&(e.strategy===Cy||e.match_length===te&&e.strstart-e.match_start>4096)&&(e.match_length=te-1)),e.prev_length>=te&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-te,i=Ct(e,e.strstart-1-e.prev_match,e.prev_length-te),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=Dt(e,e.ins_h,e.window[e.strstart+te-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=te-1,e.strstart++,i&&(Ve(e,!1),e.strm.avail_out===0))return Oe}else if(e.match_available){if(i=Ct(e,0,e.window[e.strstart-1]),i&&Ve(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Oe}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=Ct(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<te-1?e.strstart:te-1,t===je?(Ve(e,!0),e.strm.avail_out===0?rn:On):e.sym_next&&(Ve(e,!1),e.strm.avail_out===0)?Oe:zn},Qy=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=It){if(Ln(e),e.lookahead<=It&&t===Pt)return Oe;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=te&&e.strstart>0&&(r=e.strstart-1,i=s[r],i===s[++r]&&i===s[++r]&&i===s[++r])){a=e.strstart+It;do;while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&r<a);e.match_length=It-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=te?(n=Ct(e,1,e.match_length-te),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=Ct(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Ve(e,!1),e.strm.avail_out===0))return Oe}return e.insert=0,t===je?(Ve(e,!0),e.strm.avail_out===0?rn:On):e.sym_next&&(Ve(e,!1),e.strm.avail_out===0)?Oe:zn},ew=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(Ln(e),e.lookahead===0)){if(t===Pt)return Oe;break}if(e.match_length=0,n=Ct(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Ve(e,!1),e.strm.avail_out===0))return Oe}return e.insert=0,t===je?(Ve(e,!0),e.strm.avail_out===0?rn:On):e.sym_next&&(Ve(e,!1),e.strm.avail_out===0)?Oe:zn};function at(e,t,n,i,r){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=i,this.func=r}var gi=[new at(0,0,0,0,Td),new at(4,4,8,4,Ps),new at(4,5,16,8,Ps),new at(4,6,32,32,Ps),new at(4,4,16,16,bn),new at(8,16,32,32,bn),new at(8,16,128,128,bn),new at(8,32,128,256,bn),new at(32,128,258,1024,bn),new at(32,258,258,4096,bn)],tw=e=>{e.window_size=2*e.w_size,Ot(e.head),e.max_lazy_match=gi[e.level].max_lazy,e.good_match=gi[e.level].good_length,e.nice_match=gi[e.level].nice_length,e.max_chain_length=gi[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=te-1,e.match_available=0,e.ins_h=0};function nw(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Kr,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(Xy*2),this.dyn_dtree=new Uint16Array((2*Ky+1)*2),this.bl_tree=new Uint16Array((2*$y+1)*2),Ot(this.dyn_ltree),Ot(this.dyn_dtree),Ot(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(Yy+1),this.heap=new Uint16Array(2*Zs+1),Ot(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Zs+1),Ot(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var Li=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==Rn&&t.status!==lo&&t.status!==Js&&t.status!==Qs&&t.status!==eo&&t.status!==to&&t.status!==en&&t.status!==_i?1:0},Md=e=>{if(Li(e))return tn(e,ot);e.total_in=e.total_out=0,e.data_type=Uy;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?lo:t.wrap?Rn:en,e.adler=t.wrap===2?0:1,t.last_flush=-2,My(t),Ne},Rd=e=>{let t=Md(e);return t===Ne&&tw(e.state),t},iw=(e,t)=>Li(e)||e.state.wrap!==2?ot:(e.state.gzhead=t,Ne),Ld=(e,t,n,i,r,a)=>{if(!e)return ot;let s=1;if(t===Iy&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>By||n!==Kr||i<8||i>15||t<0||t>9||a<0||a>Dy||i===8&&s!==1)return tn(e,ot);i===8&&(i=9);let o=new nw;return e.state=o,o.strm=e,o.status=Rn,o.wrap=s,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=r+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+te-1)/te),o.window=new Uint8Array(o.w_size*2),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<r+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=(o.lit_bufsize-1)*3,o.level=t,o.strategy=a,o.method=n,Rd(e)},rw=(e,t)=>Ld(e,t,Kr,Gy,Hy,Fy),aw=(e,t)=>{if(Li(e)||t>ku||t<0)return e?tn(e,ot):ot;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===_i&&t!==je)return tn(e,e.avail_out===0?Cs:ot);let i=n.last_flush;if(n.last_flush=t,n.pending!==0){if(He(e),e.avail_out===0)return n.last_flush=-1,Ne}else if(e.avail_in===0&&bu(t)<=bu(i)&&t!==je)return tn(e,Cs);if(n.status===_i&&e.avail_in!==0)return tn(e,Cs);if(n.status===Rn&&n.wrap===0&&(n.status=en),n.status===Rn){let r=Kr+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=xr||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,r|=a<<6,n.strstart!==0&&(r|=qy),r+=31-r%31,fi(n,r),n.strstart!==0&&(fi(n,e.adler>>>16),fi(n,e.adler&65535)),e.adler=1,n.status=en,He(e),n.pending!==0)return n.last_flush=-1,Ne}if(n.status===lo){if(e.adler=0,re(n,31),re(n,139),re(n,8),n.gzhead)re(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),re(n,n.gzhead.time&255),re(n,n.gzhead.time>>8&255),re(n,n.gzhead.time>>16&255),re(n,n.gzhead.time>>24&255),re(n,n.level===9?2:n.strategy>=xr||n.level<2?4:0),re(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(re(n,n.gzhead.extra.length&255),re(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=Te(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Js;else if(re(n,0),re(n,0),re(n,0),re(n,0),re(n,0),re(n,n.level===9?2:n.strategy>=xr||n.level<2?4:0),re(n,jy),n.status=en,He(e),n.pending!==0)return n.last_flush=-1,Ne}if(n.status===Js){if(n.gzhead.extra){let r=n.pending,a=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+a>n.pending_buf_size;){let o=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex+=o,He(e),n.pending!==0)return n.last_flush=-1,Ne;r=0,a-=o}let s=new Uint8Array(n.gzhead.extra);n.pending_buf.set(s.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending+=a,n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=Qs}if(n.status===Qs){if(n.gzhead.name){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),He(e),n.pending!==0)return n.last_flush=-1,Ne;r=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,re(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=eo}if(n.status===eo){if(n.gzhead.comment){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),He(e),n.pending!==0)return n.last_flush=-1,Ne;r=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,re(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r))}n.status=to}if(n.status===to){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(He(e),n.pending!==0))return n.last_flush=-1,Ne;re(n,e.adler&255),re(n,e.adler>>8&255),e.adler=0}if(n.status=en,He(e),n.pending!==0)return n.last_flush=-1,Ne}if(e.avail_in!==0||n.lookahead!==0||t!==Pt&&n.status!==_i){let r=n.level===0?Td(n,t):n.strategy===xr?ew(n,t):n.strategy===Py?Qy(n,t):gi[n.level].func(n,t);if((r===rn||r===On)&&(n.status=_i),r===Oe||r===rn)return e.avail_out===0&&(n.last_flush=-1),Ne;if(r===zn&&(t===Ny?Ly(n):t!==ku&&(js(n,0,0,!1),t===zy&&(Ot(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),He(e),e.avail_out===0))return n.last_flush=-1,Ne}return t!==je?Ne:n.wrap<=0?Eu:(n.wrap===2?(re(n,e.adler&255),re(n,e.adler>>8&255),re(n,e.adler>>16&255),re(n,e.adler>>24&255),re(n,e.total_in&255),re(n,e.total_in>>8&255),re(n,e.total_in>>16&255),re(n,e.total_in>>24&255)):(fi(n,e.adler>>>16),fi(n,e.adler&65535)),He(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?Ne:Eu)},sw=e=>{if(Li(e))return ot;let t=e.state.status;return e.state=null,t===en?tn(e,Oy):Ne},ow=(e,t)=>{let n=t.length;if(Li(e))return ot;let i=e.state,r=i.wrap;if(r===2||r===1&&i.status!==Rn||i.lookahead)return ot;if(r===1&&(e.adler=bi(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){r===0&&(Ot(i.head),i.strstart=0,i.block_start=0,i.insert=0);let l=new Uint8Array(i.w_size);l.set(t.subarray(n-i.w_size,n),0),t=l,n=i.w_size}let a=e.avail_in,s=e.next_in,o=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,Ln(i);i.lookahead>=te;){let l=i.strstart,c=i.lookahead-(te-1);do i.ins_h=Dt(i,i.ins_h,i.window[l+te-1]),i.prev[l&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=l,l++;while(--c);i.strstart=l,i.lookahead=te-1,Ln(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=te-1,i.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,i.wrap=r,Ne},cw=rw,lw=Ld,uw=Rd,dw=Md,mw=iw,hw=aw,fw=sw,_w=ow,gw="pako deflate (from Nodeca project)",pi={deflateInit:cw,deflateInit2:lw,deflateReset:uw,deflateResetKeep:dw,deflateSetHeader:mw,deflate:hw,deflateEnd:fw,deflateSetDictionary:_w,deflateInfo:gw},vw=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),pw=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(let i in n)vw(n,i)&&(e[i]=n[i])}}return e},yw=e=>{let t=0;for(let i=0,r=e.length;i<r;i++)t+=e[i].length;let n=new Uint8Array(t);for(let i=0,r=0,a=e.length;i<a;i++){let s=e[i];n.set(s,r),r+=s.length}return n},$r={assign:pw,flattenChunks:yw},Nd=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Nd=!1}var xi=new Uint8Array(256);for(let e=0;e<256;e++)xi[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;xi[254]=xi[254]=1;var ww=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,i,r,a,s=e.length,o=0;for(r=0;r<s;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),o+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(o),a=0,r=0;a<o;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t},Aw=(e,t)=>{if(t<65534&&e.subarray&&Nd)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let i=0;i<t;i++)n+=String.fromCharCode(e[i]);return n},Sw=(e,t)=>{let n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let i,r,a=new Array(n*2);for(r=0,i=0;i<n;){let s=e[i++];if(s<128){a[r++]=s;continue}let o=xi[s];if(o>4){a[r++]=65533,i+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&i<n;)s=s<<6|e[i++]&63,o--;if(o>1){a[r++]=65533;continue}s<65536?a[r++]=s:(s-=65536,a[r++]=55296|s>>10&1023,a[r++]=56320|s&1023)}return Aw(a,r)},kw=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+xi[e[n]]>t?n:t},Ti={string2buf:ww,buf2string:Sw,utf8border:kw};function Ew(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var zd=Ew,Od=Object.prototype.toString,{Z_NO_FLUSH:bw,Z_SYNC_FLUSH:xw,Z_FULL_FLUSH:Tw,Z_FINISH:Mw,Z_OK:Or,Z_STREAM_END:Rw,Z_DEFAULT_COMPRESSION:Lw,Z_DEFAULT_STRATEGY:Nw,Z_DEFLATED:zw}=sn;function Ni(e){this.options=$r.assign({level:Lw,method:zw,chunkSize:16384,windowBits:15,memLevel:8,strategy:Nw},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new zd,this.strm.avail_out=0;let n=pi.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Or)throw new Error(nn[n]);if(t.header&&pi.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(typeof t.dictionary=="string"?i=Ti.string2buf(t.dictionary):Od.call(t.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(t.dictionary):i=t.dictionary,n=pi.deflateSetDictionary(this.strm,i),n!==Or)throw new Error(nn[n]);this._dict_set=!0}}Ni.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?Mw:bw,typeof e=="string"?n.input=Ti.string2buf(e):Od.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),(a===xw||a===Tw)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(r=pi.deflate(n,a),r===Rw)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=pi.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===Or;if(n.avail_out===0){this.onData(n.output);continue}if(a>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0};Ni.prototype.onData=function(e){this.chunks.push(e)};Ni.prototype.onEnd=function(e){e===Or&&(this.result=$r.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function uo(e,t){let n=new Ni(t);if(n.push(e,!0),n.err)throw n.msg||nn[n.err];return n.result}function Ow(e,t){return t=t||{},t.raw=!0,uo(e,t)}function Iw(e,t){return t=t||{},t.gzip=!0,uo(e,t)}var Cw=Ni,Pw=uo,Dw=Ow,Fw=Iw,Uw=sn,Bw={Deflate:Cw,deflate:Pw,deflateRaw:Dw,gzip:Fw,constants:Uw},Tr=16209,Gw=16191,Hw=function(t,n){let i,r,a,s,o,l,c,u,m,d,f,g,p,v,w,L,k,y,E,x,T,O,b,S,N=t.state;i=t.next_in,b=t.input,r=i+(t.avail_in-5),a=t.next_out,S=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),l=N.dmax,c=N.wsize,u=N.whave,m=N.wnext,d=N.window,f=N.hold,g=N.bits,p=N.lencode,v=N.distcode,w=(1<<N.lenbits)-1,L=(1<<N.distbits)-1;e:do{g<15&&(f+=b[i++]<<g,g+=8,f+=b[i++]<<g,g+=8),k=p[f&w];t:for(;;){if(y=k>>>24,f>>>=y,g-=y,y=k>>>16&255,y===0)S[a++]=k&65535;else if(y&16){E=k&65535,y&=15,y&&(g<y&&(f+=b[i++]<<g,g+=8),E+=f&(1<<y)-1,f>>>=y,g-=y),g<15&&(f+=b[i++]<<g,g+=8,f+=b[i++]<<g,g+=8),k=v[f&L];n:for(;;){if(y=k>>>24,f>>>=y,g-=y,y=k>>>16&255,y&16){if(x=k&65535,y&=15,g<y&&(f+=b[i++]<<g,g+=8,g<y&&(f+=b[i++]<<g,g+=8)),x+=f&(1<<y)-1,x>l){t.msg="invalid distance too far back",N.mode=Tr;break e}if(f>>>=y,g-=y,y=a-s,x>y){if(y=x-y,y>u&&N.sane){t.msg="invalid distance too far back",N.mode=Tr;break e}if(T=0,O=d,m===0){if(T+=c-y,y<E){E-=y;do S[a++]=d[T++];while(--y);T=a-x,O=S}}else if(m<y){if(T+=c+m-y,y-=m,y<E){E-=y;do S[a++]=d[T++];while(--y);if(T=0,m<E){y=m,E-=y;do S[a++]=d[T++];while(--y);T=a-x,O=S}}}else if(T+=m-y,y<E){E-=y;do S[a++]=d[T++];while(--y);T=a-x,O=S}for(;E>2;)S[a++]=O[T++],S[a++]=O[T++],S[a++]=O[T++],E-=3;E&&(S[a++]=O[T++],E>1&&(S[a++]=O[T++]))}else{T=a-x;do S[a++]=S[T++],S[a++]=S[T++],S[a++]=S[T++],E-=3;while(E>2);E&&(S[a++]=S[T++],E>1&&(S[a++]=S[T++]))}}else if((y&64)===0){k=v[(k&65535)+(f&(1<<y)-1)];continue n}else{t.msg="invalid distance code",N.mode=Tr;break e}break}}else if((y&64)===0){k=p[(k&65535)+(f&(1<<y)-1)];continue t}else if(y&32){N.mode=Gw;break e}else{t.msg="invalid literal/length code",N.mode=Tr;break e}break}}while(i<r&&a<o);E=g>>3,i-=E,g-=E<<3,f&=(1<<g)-1,t.next_in=i,t.next_out=a,t.avail_in=i<r?5+(r-i):5-(i-r),t.avail_out=a<o?257+(o-a):257-(a-o),N.hold=f,N.bits=g},xn=15,xu=852,Tu=592,Mu=0,Ds=1,Ru=2,Vw=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),Ww=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),Kw=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),$w=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),Xw=(e,t,n,i,r,a,s,o)=>{let l=o.bits,c=0,u=0,m=0,d=0,f=0,g=0,p=0,v=0,w=0,L=0,k,y,E,x,T,O=null,b,S=new Uint16Array(xn+1),N=new Uint16Array(xn+1),Z=null,ce,Q,M;for(c=0;c<=xn;c++)S[c]=0;for(u=0;u<i;u++)S[t[n+u]]++;for(f=l,d=xn;d>=1&&S[d]===0;d--);if(f>d&&(f=d),d===0)return r[a++]=1<<24|64<<16|0,r[a++]=1<<24|64<<16|0,o.bits=1,0;for(m=1;m<d&&S[m]===0;m++);for(f<m&&(f=m),v=1,c=1;c<=xn;c++)if(v<<=1,v-=S[c],v<0)return-1;if(v>0&&(e===Mu||d!==1))return-1;for(N[1]=0,c=1;c<xn;c++)N[c+1]=N[c]+S[c];for(u=0;u<i;u++)t[n+u]!==0&&(s[N[t[n+u]]++]=u);if(e===Mu?(O=Z=s,b=20):e===Ds?(O=Vw,Z=Ww,b=257):(O=Kw,Z=$w,b=0),L=0,u=0,c=m,T=a,g=f,p=0,E=-1,w=1<<f,x=w-1,e===Ds&&w>xu||e===Ru&&w>Tu)return 1;for(;;){ce=c-p,s[u]+1<b?(Q=0,M=s[u]):s[u]>=b?(Q=Z[s[u]-b],M=O[s[u]-b]):(Q=96,M=0),k=1<<c-p,y=1<<g,m=y;do y-=k,r[T+(L>>p)+y]=ce<<24|Q<<16|M|0;while(y!==0);for(k=1<<c-1;L&k;)k>>=1;if(k!==0?(L&=k-1,L+=k):L=0,u++,--S[c]===0){if(c===d)break;c=t[n+s[u]]}if(c>f&&(L&x)!==E){for(p===0&&(p=f),T+=m,g=c-p,v=1<<g;g+p<d&&(v-=S[g+p],!(v<=0));)g++,v<<=1;if(w+=1<<g,e===Ds&&w>xu||e===Ru&&w>Tu)return 1;E=L&x,r[E]=f<<24|g<<16|T-a|0}}return L!==0&&(r[T+L]=c-p<<24|64<<16|0),o.bits=f,0},yi=Xw,Yw=0,Id=1,Cd=2,{Z_FINISH:Lu,Z_BLOCK:qw,Z_TREES:Mr,Z_OK:an,Z_STREAM_END:jw,Z_NEED_DICT:Zw,Z_STREAM_ERROR:Ze,Z_DATA_ERROR:Pd,Z_MEM_ERROR:Dd,Z_BUF_ERROR:Jw,Z_DEFLATED:Nu}=sn,Xr=16180,zu=16181,Ou=16182,Iu=16183,Cu=16184,Pu=16185,Du=16186,Fu=16187,Uu=16188,Bu=16189,Ir=16190,At=16191,Fs=16192,Gu=16193,Us=16194,Hu=16195,Vu=16196,Wu=16197,Ku=16198,Rr=16199,Lr=16200,$u=16201,Xu=16202,Yu=16203,qu=16204,ju=16205,Bs=16206,Zu=16207,Ju=16208,ge=16209,Fd=16210,Ud=16211,Qw=852,eA=592,tA=15,nA=tA,Qu=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function iA(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var on=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<Xr||t.mode>Ud?1:0},Bd=e=>{if(on(e))return Ze;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=Xr,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(Qw),t.distcode=t.distdyn=new Int32Array(eA),t.sane=1,t.back=-1,an},Gd=e=>{if(on(e))return Ze;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Bd(e)},Hd=(e,t)=>{let n;if(on(e))return Ze;let i=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Ze:(i.window!==null&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,Gd(e))},Vd=(e,t)=>{if(!e)return Ze;let n=new iA;e.state=n,n.strm=e,n.window=null,n.mode=Xr;let i=Hd(e,t);return i!==an&&(e.state=null),i},rA=e=>Vd(e,nA),ed=!0,Gs,Hs,aA=e=>{if(ed){Gs=new Int32Array(512),Hs=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(yi(Id,e.lens,0,288,Gs,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;yi(Cd,e.lens,0,32,Hs,0,e.work,{bits:5}),ed=!1}e.lencode=Gs,e.lenbits=9,e.distcode=Hs,e.distbits=5},Wd=(e,t,n,i)=>{let r,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),i>=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(r=a.wsize-a.wnext,r>i&&(r=i),a.window.set(t.subarray(n-i,n-i+r),a.wnext),i-=r,i?(a.window.set(t.subarray(n-i,n),0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=r))),0},sA=(e,t)=>{let n,i,r,a,s,o,l,c,u,m,d,f,g,p,v=0,w,L,k,y,E,x,T,O,b=new Uint8Array(4),S,N,Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(on(e)||!e.output||!e.input&&e.avail_in!==0)return Ze;n=e.state,n.mode===At&&(n.mode=Fs),s=e.next_out,r=e.output,l=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,u=n.bits,m=o,d=l,O=an;e:for(;;)switch(n.mode){case Xr:if(n.wrap===0){n.mode=Fs;break}for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.wrap&2&&c===35615){n.wbits===0&&(n.wbits=15),n.check=0,b[0]=c&255,b[1]=c>>>8&255,n.check=Te(n.check,b,2,0),c=0,u=0,n.mode=zu;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=ge;break}if((c&15)!==Nu){e.msg="unknown compression method",n.mode=ge;break}if(c>>>=4,u-=4,T=(c&15)+8,n.wbits===0&&(n.wbits=T),T>15||T>n.wbits){e.msg="invalid window size",n.mode=ge;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?Bu:At,c=0,u=0;break;case zu:for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.flags=c,(n.flags&255)!==Nu){e.msg="unknown compression method",n.mode=ge;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=ge;break}n.head&&(n.head.text=c>>8&1),n.flags&512&&n.wrap&4&&(b[0]=c&255,b[1]=c>>>8&255,n.check=Te(n.check,b,2,0)),c=0,u=0,n.mode=Ou;case Ou:for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.head&&(n.head.time=c),n.flags&512&&n.wrap&4&&(b[0]=c&255,b[1]=c>>>8&255,b[2]=c>>>16&255,b[3]=c>>>24&255,n.check=Te(n.check,b,4,0)),c=0,u=0,n.mode=Iu;case Iu:for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.head&&(n.head.xflags=c&255,n.head.os=c>>8),n.flags&512&&n.wrap&4&&(b[0]=c&255,b[1]=c>>>8&255,n.check=Te(n.check,b,2,0)),c=0,u=0,n.mode=Cu;case Cu:if(n.flags&1024){for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.length=c,n.head&&(n.head.extra_len=c),n.flags&512&&n.wrap&4&&(b[0]=c&255,b[1]=c>>>8&255,n.check=Te(n.check,b,2,0)),c=0,u=0}else n.head&&(n.head.extra=null);n.mode=Pu;case Pu:if(n.flags&1024&&(f=n.length,f>o&&(f=o),f&&(n.head&&(T=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(i.subarray(a,a+f),T)),n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,f,a)),o-=f,a+=f,n.length-=f),n.length))break e;n.length=0,n.mode=Du;case Du:if(n.flags&2048){if(o===0)break e;f=0;do T=i[a+f++],n.head&&T&&n.length<65536&&(n.head.name+=String.fromCharCode(T));while(T&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,f,a)),o-=f,a+=f,T)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=Fu;case Fu:if(n.flags&4096){if(o===0)break e;f=0;do T=i[a+f++],n.head&&T&&n.length<65536&&(n.head.comment+=String.fromCharCode(T));while(T&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,f,a)),o-=f,a+=f,T)break e}else n.head&&(n.head.comment=null);n.mode=Uu;case Uu:if(n.flags&512){for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.check&65535)){e.msg="header crc mismatch",n.mode=ge;break}c=0,u=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=At;break;case Bu:for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}e.adler=n.check=Qu(c),c=0,u=0,n.mode=Ir;case Ir:if(n.havedict===0)return e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,Zw;e.adler=n.check=1,n.mode=At;case At:if(t===qw||t===Mr)break e;case Fs:if(n.last){c>>>=u&7,u-=u&7,n.mode=Bs;break}for(;u<3;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}switch(n.last=c&1,c>>>=1,u-=1,c&3){case 0:n.mode=Gu;break;case 1:if(aA(n),n.mode=Rr,t===Mr){c>>>=2,u-=2;break e}break;case 2:n.mode=Vu;break;case 3:e.msg="invalid block type",n.mode=ge}c>>>=2,u-=2;break;case Gu:for(c>>>=u&7,u-=u&7;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",n.mode=ge;break}if(n.length=c&65535,c=0,u=0,n.mode=Us,t===Mr)break e;case Us:n.mode=Hu;case Hu:if(f=n.length,f){if(f>o&&(f=o),f>l&&(f=l),f===0)break e;r.set(i.subarray(a,a+f),s),o-=f,a+=f,l-=f,s+=f,n.length-=f;break}n.mode=At;break;case Vu:for(;u<14;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.nlen=(c&31)+257,c>>>=5,u-=5,n.ndist=(c&31)+1,c>>>=5,u-=5,n.ncode=(c&15)+4,c>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=ge;break}n.have=0,n.mode=Wu;case Wu:for(;n.have<n.ncode;){for(;u<3;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.lens[Z[n.have++]]=c&7,c>>>=3,u-=3}for(;n.have<19;)n.lens[Z[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,S={bits:n.lenbits},O=yi(Yw,n.lens,0,19,n.lencode,0,n.work,S),n.lenbits=S.bits,O){e.msg="invalid code lengths set",n.mode=ge;break}n.have=0,n.mode=Ku;case Ku:for(;n.have<n.nlen+n.ndist;){for(;v=n.lencode[c&(1<<n.lenbits)-1],w=v>>>24,L=v>>>16&255,k=v&65535,!(w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(k<16)c>>>=w,u-=w,n.lens[n.have++]=k;else{if(k===16){for(N=w+2;u<N;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(c>>>=w,u-=w,n.have===0){e.msg="invalid bit length repeat",n.mode=ge;break}T=n.lens[n.have-1],f=3+(c&3),c>>>=2,u-=2}else if(k===17){for(N=w+3;u<N;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=w,u-=w,T=0,f=3+(c&7),c>>>=3,u-=3}else{for(N=w+7;u<N;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=w,u-=w,T=0,f=11+(c&127),c>>>=7,u-=7}if(n.have+f>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=ge;break}for(;f--;)n.lens[n.have++]=T}}if(n.mode===ge)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=ge;break}if(n.lenbits=9,S={bits:n.lenbits},O=yi(Id,n.lens,0,n.nlen,n.lencode,0,n.work,S),n.lenbits=S.bits,O){e.msg="invalid literal/lengths set",n.mode=ge;break}if(n.distbits=6,n.distcode=n.distdyn,S={bits:n.distbits},O=yi(Cd,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,S),n.distbits=S.bits,O){e.msg="invalid distances set",n.mode=ge;break}if(n.mode=Rr,t===Mr)break e;case Rr:n.mode=Lr;case Lr:if(o>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,Hw(e,d),s=e.next_out,r=e.output,l=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,u=n.bits,n.mode===At&&(n.back=-1);break}for(n.back=0;v=n.lencode[c&(1<<n.lenbits)-1],w=v>>>24,L=v>>>16&255,k=v&65535,!(w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(L&&(L&240)===0){for(y=w,E=L,x=k;v=n.lencode[x+((c&(1<<y+E)-1)>>y)],w=v>>>24,L=v>>>16&255,k=v&65535,!(y+w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=y,u-=y,n.back+=y}if(c>>>=w,u-=w,n.back+=w,n.length=k,L===0){n.mode=ju;break}if(L&32){n.back=-1,n.mode=At;break}if(L&64){e.msg="invalid literal/length code",n.mode=ge;break}n.extra=L&15,n.mode=$u;case $u:if(n.extra){for(N=n.extra;u<N;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.length+=c&(1<<n.extra)-1,c>>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Xu;case Xu:for(;v=n.distcode[c&(1<<n.distbits)-1],w=v>>>24,L=v>>>16&255,k=v&65535,!(w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if((L&240)===0){for(y=w,E=L,x=k;v=n.distcode[x+((c&(1<<y+E)-1)>>y)],w=v>>>24,L=v>>>16&255,k=v&65535,!(y+w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=y,u-=y,n.back+=y}if(c>>>=w,u-=w,n.back+=w,L&64){e.msg="invalid distance code",n.mode=ge;break}n.offset=k,n.extra=L&15,n.mode=Yu;case Yu:if(n.extra){for(N=n.extra;u<N;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.offset+=c&(1<<n.extra)-1,c>>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=ge;break}n.mode=qu;case qu:if(l===0)break e;if(f=d-l,n.offset>f){if(f=n.offset-f,f>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=ge;break}f>n.wnext?(f-=n.wnext,g=n.wsize-f):g=n.wnext-f,f>n.length&&(f=n.length),p=n.window}else p=r,g=s-n.offset,f=n.length;f>l&&(f=l),l-=f,n.length-=f;do r[s++]=p[g++];while(--f);n.length===0&&(n.mode=Lr);break;case ju:if(l===0)break e;r[s++]=n.length,l--,n.mode=Lr;break;case Bs:if(n.wrap){for(;u<32;){if(o===0)break e;o--,c|=i[a++]<<u,u+=8}if(d-=l,e.total_out+=d,n.total+=d,n.wrap&4&&d&&(e.adler=n.check=n.flags?Te(n.check,r,d,s-d):bi(n.check,r,d,s-d)),d=l,n.wrap&4&&(n.flags?c:Qu(c))!==n.check){e.msg="incorrect data check",n.mode=ge;break}c=0,u=0}n.mode=Zu;case Zu:if(n.wrap&&n.flags){for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=ge;break}c=0,u=0}n.mode=Ju;case Ju:O=jw;break e;case ge:O=Pd;break e;case Fd:return Dd;case Ud:default:return Ze}return e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,(n.wsize||d!==e.avail_out&&n.mode<ge&&(n.mode<Bs||t!==Lu))&&Wd(e,e.output,e.next_out,d-e.avail_out),m-=e.avail_in,d-=e.avail_out,e.total_in+=m,e.total_out+=d,n.total+=d,n.wrap&4&&d&&(e.adler=n.check=n.flags?Te(n.check,r,d,e.next_out-d):bi(n.check,r,d,e.next_out-d)),e.data_type=n.bits+(n.last?64:0)+(n.mode===At?128:0)+(n.mode===Rr||n.mode===Us?256:0),(m===0&&d===0||t===Lu)&&O===an&&(O=Jw),O},oA=e=>{if(on(e))return Ze;let t=e.state;return t.window&&(t.window=null),e.state=null,an},cA=(e,t)=>{if(on(e))return Ze;let n=e.state;return(n.wrap&2)===0?Ze:(n.head=t,t.done=!1,an)},lA=(e,t)=>{let n=t.length,i,r,a;return on(e)||(i=e.state,i.wrap!==0&&i.mode!==Ir)?Ze:i.mode===Ir&&(r=1,r=bi(r,t,n,0),r!==i.check)?Pd:(a=Wd(e,t,n,n),a?(i.mode=Fd,Dd):(i.havedict=1,an))},uA=Gd,dA=Hd,mA=Bd,hA=rA,fA=Vd,_A=sA,gA=oA,vA=cA,pA=lA,yA="pako inflate (from Nodeca project)",kt={inflateReset:uA,inflateReset2:dA,inflateResetKeep:mA,inflateInit:hA,inflateInit2:fA,inflate:_A,inflateEnd:gA,inflateGetHeader:vA,inflateSetDictionary:pA,inflateInfo:yA};function wA(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var AA=wA,Kd=Object.prototype.toString,{Z_NO_FLUSH:SA,Z_FINISH:kA,Z_OK:Mi,Z_STREAM_END:Vs,Z_NEED_DICT:Ws,Z_STREAM_ERROR:EA,Z_DATA_ERROR:td,Z_MEM_ERROR:bA}=sn;function zi(e){this.options=$r.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15)===0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new zd,this.strm.avail_out=0;let n=kt.inflateInit2(this.strm,t.windowBits);if(n!==Mi)throw new Error(nn[n]);if(this.header=new AA,kt.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Ti.string2buf(t.dictionary):Kd.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=kt.inflateSetDictionary(this.strm,t.dictionary),n!==Mi)))throw new Error(nn[n])}zi.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r=this.options.dictionary,a,s,o;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?kA:SA,Kd.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),a=kt.inflate(n,s),a===Ws&&r&&(a=kt.inflateSetDictionary(n,r),a===Mi?a=kt.inflate(n,s):a===td&&(a=Ws));n.avail_in>0&&a===Vs&&n.state.wrap>0&&e[n.next_in]!==0;)kt.inflateReset(n),a=kt.inflate(n,s);switch(a){case EA:case td:case Ws:case bA:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===Vs))if(this.options.to==="string"){let l=Ti.utf8border(n.output,n.next_out),c=n.next_out-l,u=Ti.buf2string(n.output,l);n.next_out=c,n.avail_out=i-c,c&&n.output.set(n.output.subarray(l,l+c),0),this.onData(u)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(a===Mi&&o===0)){if(a===Vs)return a=kt.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};zi.prototype.onData=function(e){this.chunks.push(e)};zi.prototype.onEnd=function(e){e===Mi&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=$r.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function mo(e,t){let n=new zi(t);if(n.push(e),n.err)throw n.msg||nn[n.err];return n.result}function xA(e,t){return t=t||{},t.raw=!0,mo(e,t)}var TA=zi,MA=mo,RA=xA,LA=mo,NA=sn,zA={Inflate:TA,inflate:MA,inflateRaw:RA,ungzip:LA,constants:NA},{Deflate:OA,deflate:IA,deflateRaw:CA,gzip:PA}=Bw,{Inflate:DA,inflate:FA,inflateRaw:UA,ungzip:BA}=zA,GA=OA,HA=IA,VA=CA,WA=PA,KA=DA,$A=FA,XA=UA,YA=BA,qA=sn,nd={Deflate:GA,deflate:HA,deflateRaw:VA,gzip:WA,Inflate:KA,inflate:$A,inflateRaw:XA,ungzip:YA,constants:qA},Cr=2023,ho=1,fo=2,_o=4,go=8,vo=16,po=32,$d=64,jA=128,ZA=256,yo=512,wo=1024,Ao=2048,Pr=4096,So=8192,Dr=16384,JA=32768,Fr=65536,ko=1<<17,Ur=1<<18,Br=1<<19,Eo=1<<20,bo=1<<21,xo=1<<22,QA=1<<23,To=1<<24,Gr=1<<25,Mo=1<<26,Ro=1<<27,Lo=1<<28,No=1<<29,zo=1<<30,eS=-2147483648,Oo=1,Io=2,Co=4,tS=1,nS=2,iS=128,Tn=()=>({number:0,modelindex:0,modelindex2:0,modelindex3:0,modelindex4:0,frame:0,skinnum:0,effects:0,renderfx:0,origin:{x:0,y:0,z:0},old_origin:{x:0,y:0,z:0},angles:{x:0,y:0,z:0},sound:0,event:0,solid:0,bits:0,bitsHigh:0,alpha:0,scale:0,instanceBits:0,loopVolume:0,loopAttenuation:0,owner:0,oldFrame:0}),id=()=>({pm_type:0,origin:{x:0,y:0,z:0},velocity:{x:0,y:0,z:0},pm_time:0,pm_flags:0,gravity:0,delta_angles:{x:0,y:0,z:0},viewoffset:{x:0,y:0,z:0},viewangles:{x:0,y:0,z:0},kick_angles:{x:0,y:0,z:0},gun_index:0,gun_frame:0,gun_offset:{x:0,y:0,z:0},gun_angles:{x:0,y:0,z:0},blend:[0,0,0,0],fov:0,rdflags:0,stats:new Array(32).fill(0),gunskin:0,gunrate:0,damage_blend:[0,0,0,0],team_id:0}),Po=class Xd{constructor(t,n){this.protocolVersion=0,this.isDemo=tS,this.stream=t,this.handler=n}setProtocolVersion(t){this.protocolVersion=t}getProtocolVersion(){return this.protocolVersion}translateCommand(t){return this.protocolVersion===0&&(t===7||t===12)?J.serverdata:this.protocolVersion===Cr?t:this.protocolVersion===34||this.protocolVersion===25?t<=J.frame?t:J.bad:(this.protocolVersion===0,t)}parseMessage(){for(;this.stream.hasMore();){let t=this.stream.readByte();if(t===-1)break;let n=t;t=this.translateCommand(t);try{switch(t){case J.bad:return;case J.nop:break;case J.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case J.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case J.print:this.parsePrint();break;case J.serverdata:this.parseServerData();break;case J.configstring:this.parseConfigString();break;case J.spawnbaseline:this.parseSpawnBaseline();break;case J.centerprint:this.parseCenterPrint();break;case J.download:this.parseDownload();break;case J.frame:this.parseFrame();break;case J.packetentities:this.parsePacketEntities(!1);break;case J.deltapacketentities:this.parsePacketEntities(!0);break;case J.playerinfo:this.parsePlayerState();break;case J.stufftext:this.parseStuffText();break;case J.layout:this.parseLayout();break;case J.inventory:this.parseInventory();break;case J.sound:this.parseSound();break;case J.muzzleflash:this.parseMuzzleFlash();break;case J.muzzleflash2:this.parseMuzzleFlash2();break;case J.temp_entity:this.parseTempEntity();break;case J.splitclient:this.parseSplitClient();break;case J.configblast:this.parseConfigBlast();break;case J.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case J.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case J.damage:this.parseDamage();break;case J.locprint:this.parseLocPrint();break;case J.fog:this.parseFog();break;case J.waitingforplayers:this.parseWaitingForPlayers();break;case J.bot_chat:this.parseBotChat();break;case J.poi:this.parsePoi();break;case J.help_path:this.parseHelpPath();break;case J.muzzleflash3:this.parseMuzzleFlash3();break;case J.achievement:this.parseAchievement();break;default:console.warn(`Unknown server command: ${n} (translated: ${t}) at offset ${this.stream.getPosition()-1}`);return}}catch(i){console.warn(`Error parsing command ${t}: ${i.message}`);return}}}parsePrint(){let t=this.stream.readByte(),n=this.stream.readString();this.handler&&this.handler.onPrint(t,n)}parseStuffText(){let t=this.stream.readString();this.handler&&this.handler.onStuffText(t)}parseLayout(){let t=this.stream.readString();this.handler&&this.handler.onLayout(t)}parseCenterPrint(){let t=this.stream.readString();this.handler&&this.handler.onCenterPrint(t)}parseServerData(){if(this.protocolVersion=this.stream.readLong(),this.protocolVersion===Cr){let t=this.stream.readLong(),n=this.stream.readByte();this.isDemo=n;let i=this.stream.readByte(),r=this.stream.readString(),a=this.stream.readShort();if(a===-2){let o=this.stream.readShort();for(let l=0;l<o;l++)this.stream.readShort();a=0}else a===-1&&(a=-1);let s=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,0,r,a,s,i,n):console.log(`Server Data (Rerelease): Protocol ${this.protocolVersion}, Level ${s}, Tick ${i}`)}else{let t=this.stream.readLong();this.isDemo=this.stream.readByte();let n=0,i=this.stream.readString(),r=this.stream.readShort(),a=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,n,i,r,a):console.log(`Server Data: Protocol ${this.protocolVersion}, Level ${a}, GameDir ${i}`)}}parseConfigString(){let t=this.stream.readShort(),n=this.stream.readString();this.handler&&this.handler.onConfigString(t,n)}parseSplitClient(){let t=this.stream.readByte();this.handler&&this.handler.onSplitClient&&this.handler.onSplitClient(t)}parseConfigBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=nd.inflate(i);r.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new $s(r.buffer);for(;a.hasMore();){let s=a.readUShort(),o=a.readString();this.handler&&this.handler.onConfigString(s,o)}}catch(r){console.error("svc_configblast: Failed to decompress data",r)}}parseSpawnBaselineBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=nd.inflate(i);r.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new $s(r.buffer),s=new Xd(a,this.handler);for(;a.hasMore();)s.parseSpawnBaseline()}catch(r){console.error("svc_spawnbaselineblast: Failed to decompress data",r)}}parseLocPrint(){let t=this.stream.readByte(),n=this.stream.readString(),i=this.stream.readByte(),r=[];for(let a=0;a<i;a++)r.push(this.stream.readString());this.handler&&this.handler.onLocPrint&&this.handler.onLocPrint(t,n,r)}parseWaitingForPlayers(){let t=this.stream.readByte();this.handler&&this.handler.onWaitingForPlayers&&this.handler.onWaitingForPlayers(t)}parseBotChat(){let t=this.stream.readString(),n=this.stream.readShort(),i=this.stream.readString();this.handler&&this.handler.onBotChat&&this.handler.onBotChat(i)}parsePoi(){let t=this.stream.readUShort(),n=this.stream.readUShort(),i={x:0,y:0,z:0};this.stream.readPos(i);let r=this.stream.readUShort(),a=this.stream.readByte(),s=this.stream.readByte();this.handler&&this.handler.onPoi&&this.handler.onPoi(s,i)}parseHelpPath(){let t=this.stream.readByte(),n={x:0,y:0,z:0};this.stream.readPos(n);let i={x:0,y:0,z:0};this.stream.readDir(i),this.handler&&this.handler.onHelpPath&&this.handler.onHelpPath(n)}parseAchievement(){let t=this.stream.readString();this.handler&&this.handler.onAchievement&&this.handler.onAchievement(t)}parseDownload(){let t=this.stream.readShort(),n=this.stream.readByte(),i;t>0&&(i=this.stream.readData(t)),this.handler&&this.handler.onDownload(t,n,i)}parseInventory(){let n=new Array(256);for(let i=0;i<256;i++)n[i]=this.stream.readShort();this.handler&&this.handler.onInventory(n)}parseSound(){let t=this.stream.readByte(),n=this.stream.readByte(),i,r,a,s,o;if(t&1&&(i=this.stream.readByte()),t&2&&(r=this.stream.readByte()),t&16&&(a=this.stream.readByte()),t&8&&(s=this.stream.readShort()),t&4){let l={x:0,y:0,z:0};this.stream.readPos(l),o=l}this.handler&&this.handler.onSound(t,n,i,r,a,s,o)}parseMuzzleFlash(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(t,n)}parseMuzzleFlash2(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(t,n)}parseMuzzleFlash3(){let t=this.stream.readShort(),n=this.stream.readShort();this.handler&&this.handler.onMuzzleFlash3&&this.handler.onMuzzleFlash3(t,n)}parseFog(){let t=this.stream.readByte();if(t&128){let i=this.stream.readByte();t|=i<<8}let n={};t&1&&(n.density=this.stream.readFloat(),n.skyfactor=this.stream.readByte()),t&2&&(n.red=this.stream.readByte()),t&4&&(n.green=this.stream.readByte()),t&8&&(n.blue=this.stream.readByte()),t&16&&(n.time=this.stream.readShort()),t&32&&(n.hf_falloff=this.stream.readFloat()),t&64&&(n.hf_density=this.stream.readFloat()),t&256&&(n.hf_start_r=this.stream.readByte()),t&512&&(n.hf_start_g=this.stream.readByte()),t&1024&&(n.hf_start_b=this.stream.readByte()),t&2048&&(n.hf_start_dist=this.stream.readLong()),t&4096&&(n.hf_end_r=this.stream.readByte()),t&8192&&(n.hf_end_g=this.stream.readByte()),t&16384&&(n.hf_end_b=this.stream.readByte()),t&32768&&(n.hf_end_dist=this.stream.readLong()),this.handler&&this.handler.onFog&&this.handler.onFog(n)}parseDamage(){let t=this.stream.readByte(),n=[];for(let i=0;i<t;i++){let r=this.stream.readByte(),a={x:0,y:0,z:0};this.stream.readDir(a);let s=r&31,o=(r&32)!==0,l=(r&64)!==0,c=(r&128)!==0;n.push({damage:s,health:o,armor:l,power:c,dir:a})}this.handler&&this.handler.onDamage&&this.handler.onDamage(n)}parseTempEntity(){let t=this.stream.readByte(),n={x:0,y:0,z:0},i={x:0,y:0,z:0},r={x:0,y:0,z:0},a,s,o,l,c;switch(t){case B.EXPLOSION1:case B.EXPLOSION2:case B.ROCKET_EXPLOSION:case B.GRENADE_EXPLOSION:case B.ROCKET_EXPLOSION_WATER:case B.GRENADE_EXPLOSION_WATER:case B.BFG_EXPLOSION:case B.BFG_BIGEXPLOSION:case B.BOSSTPORT:case B.PLASMA_EXPLOSION:case B.PLAIN_EXPLOSION:case B.CHAINFIST_SMOKE:case B.TRACKER_EXPLOSION:case B.TELEPORT_EFFECT:case B.DBALL_GOAL:case B.NUKEBLAST:case B.WIDOWSPLASH:case B.EXPLOSION1_BIG:case B.EXPLOSION1_NP:this.stream.readPos(n);break;case B.GUNSHOT:case B.BLOOD:case B.BLASTER:case B.SHOTGUN:case B.SPARKS:case B.BULLET_SPARKS:case B.SCREEN_SPARKS:case B.SHIELD_SPARKS:case B.BLASTER2:case B.FLECHETTE:case B.MOREBLOOD:case B.ELECTRIC_SPARKS:case B.HEATBEAM_SPARKS:case B.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(r);break;case B.SPLASH:case B.LASER_SPARKS:case B.WELDING_SPARKS:case B.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte();break;case B.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(i)):(this.stream.readPos(n),this.stream.readDir(r));break;case B.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(r)):(this.stream.readPos(n),this.stream.readPos(i));break;case B.RAILTRAIL:case B.BUBBLETRAIL:case B.BFG_LASER:case B.DEBUGTRAIL:case B.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(i);break;case B.PARASITE_ATTACK:case B.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case B.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;case B.LIGHTNING:l=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case B.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case B.FORCEWALL:this.stream.readPos(n),this.stream.readPos(i),s=this.stream.readByte();break;case B.STEAM:let u=this.stream.readShort();a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte(),this.stream.readShort(),u!==-1&&this.stream.readLong();break;case B.WIDOWBEAMOUT:this.stream.readShort();case B.HEATBEAM:case B.MONSTER_HEATBEAM:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;default:break}this.handler&&this.handler.onTempEntity(t,n,i,r,a,s,o,l,c)}parseSpawnBaseline(){let t=this.parseEntityBits(),n=Tn();this.parseDelta(Tn(),n,t.number,t.bits,t.bitsHigh),this.handler&&this.handler.onSpawnBaseline(n)}parseFrame(){let t=this.stream.readLong(),n=this.stream.readLong(),i=this.stream.readByte(),r=this.stream.readByte(),a=this.stream.readData(r),s=this.stream.readByte();if(s=this.translateCommand(s),s!==J.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s} (translated)`);let o=this.parsePlayerState();if(this.isDemo===iS){let l=this.stream.readByte();for(let c=0;c<l;c++)this.stream.readByte()}this.isDemo===nS&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:n,surpressCount:i,areaBytes:r,areaBits:a,playerState:o,packetEntities:{delta:!1,entities:[]}})}parsePlayerState(){let t=id(),n=this.stream.readShort();n&1&&(t.pm_type=this.stream.readByte()),n&2&&(t.origin.x=this.stream.readShort()*.125,t.origin.y=this.stream.readShort()*.125,t.origin.z=this.stream.readShort()*.125),n&4&&(t.velocity.x=this.stream.readShort()*.125,t.velocity.y=this.stream.readShort()*.125,t.velocity.z=this.stream.readShort()*.125),n&8&&(t.pm_time=this.stream.readByte()),n&16&&(t.pm_flags=this.stream.readByte()),n&32&&(t.gravity=this.stream.readShort()),n&64&&(t.delta_angles.x=this.stream.readShort()*(180/32768),t.delta_angles.y=this.stream.readShort()*(180/32768),t.delta_angles.z=this.stream.readShort()*(180/32768)),n&128&&(t.viewoffset.x=this.stream.readChar()*.25,t.viewoffset.y=this.stream.readChar()*.25,t.viewoffset.z=this.stream.readChar()*.25),n&256&&(t.viewangles.x=this.stream.readAngle16(),t.viewangles.y=this.stream.readAngle16(),t.viewangles.z=this.stream.readAngle16()),n&512&&(t.kick_angles.x=this.stream.readChar()*.25,t.kick_angles.y=this.stream.readChar()*.25,t.kick_angles.z=this.stream.readChar()*.25),n&4096&&(t.gun_index=this.stream.readByte()),n&8192&&(t.gun_frame=this.stream.readByte(),t.gun_offset.x=this.stream.readChar()*.25,t.gun_offset.y=this.stream.readChar()*.25,t.gun_offset.z=this.stream.readChar()*.25,t.gun_angles.x=this.stream.readChar()*.25,t.gun_angles.y=this.stream.readChar()*.25,t.gun_angles.z=this.stream.readChar()*.25),n&1024&&(t.blend[0]=this.stream.readByte(),t.blend[1]=this.stream.readByte(),t.blend[2]=this.stream.readByte(),t.blend[3]=this.stream.readByte()),n&2048&&(t.fov=this.stream.readByte()),n&16384&&(t.rdflags=this.stream.readByte());let i=this.stream.readLong();for(let r=0;r<32;r++)i&1<<r&&(t.stats[r]=this.stream.readShort());return t}parsePacketEntities(t){let n=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:id(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let i=Tn();this.parseDelta(Tn(),i,n.number,n.bits,n.bitsHigh),t.push(i)}return t}parseEntityBits(){let t=this.stream.readByte();t&jA&&(t|=this.stream.readByte()<<8),t&JA&&(t|=this.stream.readByte()<<16),t&QA&&(t|=this.stream.readByte()<<24);let n=0;t&eS&&(n=this.stream.readByte());let i;return t&ZA?i=this.stream.readShort():i=this.stream.readByte(),{number:i,bits:t,bitsHigh:n}}parseDelta(t,n,i,r,a=0){n.number=t.number,n.modelindex=t.modelindex,n.modelindex2=t.modelindex2,n.modelindex3=t.modelindex3,n.modelindex4=t.modelindex4,n.frame=t.frame,n.skinnum=t.skinnum,n.effects=t.effects,n.renderfx=t.renderfx,n.origin.x=t.origin.x,n.origin.y=t.origin.y,n.origin.z=t.origin.z,n.old_origin.x=t.origin.x,n.old_origin.y=t.origin.y,n.old_origin.z=t.origin.z,n.angles.x=t.angles.x,n.angles.y=t.angles.y,n.angles.z=t.angles.z,n.sound=t.sound,n.event=t.event,n.solid=t.solid,n.alpha=t.alpha,n.scale=t.scale,n.instanceBits=t.instanceBits,n.loopVolume=t.loopVolume,n.loopAttenuation=t.loopAttenuation,n.owner=t.owner,n.oldFrame=t.oldFrame,n.number=i,n.bits=r,n.bitsHigh=a,r&Ao&&(n.modelindex=this.stream.readByte()),r&Eo&&(n.modelindex2=this.stream.readByte()),r&bo&&(n.modelindex3=this.stream.readByte()),r&xo&&(n.modelindex4=this.stream.readByte()),r&vo&&(n.frame=this.stream.readByte()),r&ko&&(n.frame=this.stream.readShort()),r&Fr&&r&Gr?n.skinnum=this.stream.readLong():r&Fr?n.skinnum=this.stream.readByte():r&Gr&&(n.skinnum=this.stream.readShort()),r&Dr&&r&Br?n.effects=this.stream.readLong():r&Dr?n.effects=this.stream.readByte():r&Br&&(n.effects=this.stream.readShort()),r&Pr&&r&Ur?n.renderfx=this.stream.readLong():r&Pr?n.renderfx=this.stream.readByte():r&Ur&&(n.renderfx=this.stream.readShort()),r&ho&&(n.origin.x=this.stream.readCoord()),r&fo&&(n.origin.y=this.stream.readCoord()),r&yo&&(n.origin.z=this.stream.readCoord()),r&wo&&(n.angles.x=this.stream.readAngle()),r&_o&&(n.angles.y=this.stream.readAngle()),r&go&&(n.angles.z=this.stream.readAngle()),r&To&&this.stream.readPos(n.old_origin),r&Mo&&(n.sound=this.stream.readByte()),r&po?n.event=this.stream.readByte():n.event=0,r&Ro&&(n.solid=this.stream.readShort()),r&So&&(n.alpha=this.stream.readByte()/255),r&Lo&&(n.scale=this.stream.readFloat()),r&No&&(n.instanceBits=this.stream.readLong()),r&zo&&(n.loopVolume=this.stream.readByte()/255),a&Oo&&(n.loopAttenuation=this.stream.readByte()/255),a&Io&&(n.owner=this.stream.readShort()),a&Co&&(n.oldFrame=this.stream.readShort())}};var Yd=class{constructor(){this.reader=null,this.state=0,this.playbackSpeed=1,this.currentProtocolVersion=0,this.accumulatedTime=0,this.frameDuration=100}setHandler(e){this.handler=e}loadDemo(e){this.reader=new Jp(e),this.state=0,this.accumulatedTime=0,this.currentProtocolVersion=0}play(){this.reader&&(this.state=1)}pause(){this.state===1&&(this.state=2)}stop(){this.state=0,this.reader&&this.reader.reset(),this.accumulatedTime=0,this.currentProtocolVersion=0}setFrameDuration(e){this.frameDuration=e}setSpeed(e){this.playbackSpeed=Math.max(.1,Math.min(e,16))}getSpeed(){return this.playbackSpeed}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.processNextFrame())return;this.accumulatedTime-=this.frameDuration}}stepForward(){this.reader&&this.processNextFrame()}stepBackward(){console.warn("stepBackward not implemented")}processNextFrame(){if(!this.reader||!this.reader.hasMore())return this.state=3,!1;let e=this.reader.readNextBlock();if(!e)return this.state=3,!1;let t=new Po(e.data,this.handler);return t.setProtocolVersion(this.currentProtocolVersion),t.parseMessage(),this.currentProtocolVersion=t.getProtocolVersion(),!0}getState(){return this.state}getCurrentTime(){return this.accumulatedTime}};var rS=Object.defineProperty,qd=(e,t)=>{for(var n in t)rS(e,n,{get:t[n],enumerable:!0})},Ut={x:0,y:0,z:0};var NC=Math.PI/180;function Yr(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function jr(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Ii(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function aS(e){return Ii(e,e)}function Zr(e){return Math.sqrt(aS(e))}function jd(e){let t=Zr(e);return t===0?e:jr(e,1/t)}var Zd=0,Jd=1,Qd=2,sS=Math.PI/180,zC=180/Math.PI;function Do(e,t){switch(t){case Zd:return e.x;case Jd:return e.y;case Qd:default:return e.z}}function Fo(e){return e*sS}function Cn(e){let t=e%360;return t<0?360+t:t}function Jr(e){let t=Fo(Do(e,Jd)),n=Fo(Do(e,Zd)),i=Fo(Do(e,Qd)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(i),c=Math.cos(i),u={x:o*a,y:o*r,z:-s},m={x:-l*s*a-c*-r,y:-l*s*r-c*a,z:-l*o},d={x:c*s*a-l*-r,y:c*s*r-l*a,z:c*o};return{forward:u,right:m,up:d}}var In=[[-.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]];var ut=1,Bt=2;var Go=8,Ho=16,oS=32;var cS=16384;var Qr=65536,em=1<<17,lS=1<<18,uS=1<<19,dS=1<<20,mS=1<<21,hS=1<<22,fS=1<<23,OC=1<<24,ea=1<<25,_S=1<<26,IC=1<<27,CC=1<<28,PC=1<<29,ta=1<<30,DC=1<<31;var FC=1<<25,UC=1<<28,BC=1<<29,GC=1<<30,HC=1<<31;var VC=ut|Bt,WC=ut|Qr|Bt|ea|ta,KC=ut|Qr|Bt,$C=ut|em|Bt|ea|ta,XC=oS|Go|Ho,YC=ut|Ho|Go,gS=ut|ea|ta|Bt|_S,qC=lS|uS|dS|mS|hS|fS,jC=ut|Go|Ho|ea|ta,ZC=ut|Qr|Bt,JC=ut|Bt,QC=ut|Qr|Bt|em,e7=gS|cS;var t7=Number.MAX_SAFE_INTEGER-1;var Ci=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(Ci||{});var tm=256;var vS=256,Pi=8192,Di=2048,Fi=512,pS=256,yS=tm*2,wS=256,Uo=32;var ye=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.HealthBarName=55]="HealthBarName",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+Pi]="Sounds",e[e.Images=e.Sounds+Di]="Images",e[e.Lights=e.Images+Fi]="Lights",e[e.ShadowLights=e.Lights+vS]="ShadowLights",e[e.Items=e.ShadowLights+wS]="Items",e[e.PlayerSkins=e.Items+pS]="PlayerSkins",e[e.General=e.PlayerSkins+tm]="General",e[e.WheelWeapons=e.General+yS]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Uo]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Uo]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Uo]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ye||{}),n7=ye.MaxConfigStrings;var AS={};qd(AS,{addReplayFrame:()=>bS,createReplaySession:()=>ES,deserializeReplay:()=>kS,serializeReplay:()=>SS});function SS(e){return JSON.stringify(e,null,2)}function kS(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function ES(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function bS(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var Ui=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(Ui||{});var Et=(e=>(e[e.Ducked=1]="Ducked",e[e.JumpHeld=2]="JumpHeld",e[e.OnGround=4]="OnGround",e[e.TimeWaterJump=8]="TimeWaterJump",e[e.TimeLand=16]="TimeLand",e[e.TimeTeleport=32]="TimeTeleport",e[e.NoPositionalPrediction=64]="NoPositionalPrediction",e[e.OnLadder=128]="OnLadder",e[e.NoAngularPrediction=256]="NoAngularPrediction",e[e.IgnorePlayerCollision=512]="IgnorePlayerCollision",e[e.TimeTrick=1024]="TimeTrick",e))(Et||{});function Dn(e,t){return(e&t)!==0}var na=(e=>(e[e.Normal=0]="Normal",e[e.Grapple=1]="Grapple",e[e.NoClip=2]="NoClip",e[e.Spectator=3]="Spectator",e[e.Dead=4]="Dead",e[e.Gib=5]="Gib",e[e.Freeze=6]="Freeze",e))(na||{}),dt=(e=>(e[e.None=0]="None",e[e.Attack=1]="Attack",e[e.Use=2]="Use",e[e.Holster=4]="Holster",e[e.Jump=8]="Jump",e[e.Crouch=16]="Crouch",e[e.Any=128]="Any",e))(dt||{});function xS(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=Zr(t);if(u<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let g=u<l?l:u;m+=g*o*n}s>0&&!a&&(m+=u*c*s*n);let d=u-m;if(d<0&&(d=0),d===u)return t;let f=d/u;return jr(t,f)}function TS(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=Ii(t,n),o=i-s;if(o<=0)return t;let l=r*a*i;return l>o&&(l=o),{x:t.x+n.x*l,y:t.y+n.y*l,z:t.z+n.z*l}}function MS(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=Zr(a);if(s>r){let o=r/s;a=jr(a,o),s=r}return{wishdir:s===0?a:jd(a),wishspeed:s}}function RS(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:t.z*i.forwardmove+n.z*i.sidemove};i.upmove>10?a=Yr(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=Yr(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=Yr(a,{x:0,y:0,z:-60}):a=Yr(a,{x:0,y:0,z:10});let s=Zr(a);if(s>r){let o=r/s;a=jr(a,o),s=r}return s*=.5,{wishdir:s===0?a:jd(a),wishspeed:s}}function LS(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function NS(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function Vo(e){let{pmFlags:t,cmdAngles:n,deltaAngles:i}=e,r;(t&32)!==0?r={x:0,y:n.y+i.y,z:0}:(r=LS(n,i),r={...r,x:NS(r.x)});let a=Jr(r);return{viewangles:r,...a}}var nm=200,im=200,rm=200,am=140,sm=150,om=3;function zS(e){let t=Cn(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function cm(e,t){return{x:zS(e.x+t.x),y:Cn(e.y+t.y),z:Cn(e.z+t.z)}}function lm(e,t){let n=t.sensitivityX??t.sensitivity,i=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*i,y:e.deltaX*n,z:0}}var cn=(e=>(e[e.bad=0]="bad",e[e.nop=1]="nop",e[e.move=2]="move",e[e.userinfo=3]="userinfo",e[e.stringcmd=4]="stringcmd",e))(cn||{});var um=64;var dm=0,mm=1,hm=2,fm=3,_m=4,gm=5,vm=6,pm=7,ym=8;var wm=11,Am=12,Sm=13;function OS(e,t,n){let i=Math.floor(n/2),r=n%2!==0,a=t+i,s=e[a]||0;if(r){let o=e[a+1]||0,l=s>>>8&255;return(o&255)<<8|l}else return s&65535}function km(e,t,n,i){let r=i*n,a=Math.floor(r/8),s=r%8,o=(1<<i)-1<<s;return(OS(e,t,a)&o)>>>s}var Bi=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(Bi||{}),Ce=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(Ce||{}),Em=12,bm=9,i7=Math.ceil(Em*bm/16),xm=23,Tm=2,r7=Math.ceil(xm*Tm/16),IS={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,bandolier:10,ammo_pack:10,ir_goggles:11,double_damage:12,sphere_vengeance:13,sphere_hunter:14,sphere_defender:15,doppelganger:16,flashlight:17,compass:18,tech_resistance:19,tech_strength:20,tech_haste:21,tech_regeneration:22,tag_token:-1};function Mm(e,t){return t<0||t>=Em?0:km(e,34,t,bm)}function ia(e,t){let n;return typeof t=="number"?n=t:n=IS[t],n===void 0||n<0||n>=xm?0:km(e,41,n,Tm)}function Rm(e,t){e.writeByte(t.msec),e.writeByte(t.buttons),e.writeAngle16(t.angles.x),e.writeAngle16(t.angles.y),e.writeAngle16(t.angles.z),e.writeShort(t.forwardmove),e.writeShort(t.sidemove),e.writeShort(t.upmove),e.writeByte(0),e.writeByte(0)}var CS={};qd(CS,{U_ANGLE1:()=>HS,U_ANGLE2:()=>VS,U_ANGLE3:()=>WS,U_EFFECTS:()=>XS,U_EVENT:()=>jS,U_FRAME:()=>KS,U_MODEL:()=>DS,U_MODEL2:()=>JS,U_MODEL3:()=>QS,U_MODEL4:()=>e2,U_MOREBITS:()=>ZS,U_NUMBER:()=>PS,U_ORIGIN1:()=>US,U_ORIGIN2:()=>BS,U_ORIGIN3:()=>GS,U_REMOVE:()=>t2,U_RENDERFX:()=>YS,U_SKIN:()=>$S,U_SOLID:()=>qS,U_SOUND:()=>FS});var PS=1,DS=2,FS=4,US=8,BS=16,GS=32,HS=64,VS=128,WS=256,KS=512,$S=1024,XS=2048,YS=4096,qS=8192,jS=16384,ZS=32768,JS=1,QS=2,e2=4,t2=32768,Oi=.025,Bo=33554432,qr={None:0,Feet:1,Waist:2,Under:3},n2=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},i2=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&Bo))return{...e,waterLevel:qr.None};let s=qr.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&Bo){s=qr.Waist;let c=e.origin.z+22;n.z=c,t(n)&Bo&&(s=qr.Under)}return{...e,waterLevel:s}},Wo=(e,t,n,i)=>{let r={...e};r=n2(r,n),r=i2(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:l,viewAngles:c}=r,u=l>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:m,right:d}=Jr(u),f=xS({velocity:s,frametime:Oi,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:l,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=l>=2?RS({forward:m,right:d,cmd:t,maxSpeed:320}):MS({forward:m,right:d,cmd:t,maxSpeed:320}),p=TS({velocity:f,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||l>=2?10:1,frametime:Oi}),v=n(a,{x:a.x+p.x*Oi,y:a.y+p.y*Oi,z:a.z+p.z*Oi});return{...r,origin:v.endpos,velocity:p}},Lm=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=In[t];e.x=n[0],e.y=n[1],e.z=n[2]}},Ko=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let i=0;i<In.length;i++){let r=In[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},Gi=class{constructor(e=1024){this.buffer=new Uint8Array(e),this.view=new DataView(this.buffer.buffer),this.offset=0}ensureCapacity(e){if(this.offset+e>this.buffer.length){let t=Math.max(this.buffer.length*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer)}}getData(){return this.buffer.slice(0,this.offset)}writeByte(e){this.ensureCapacity(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureCapacity(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureCapacity(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeUShort(e){this.ensureCapacity(2),this.view.setUint16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureCapacity(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureCapacity(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length+1;this.ensureCapacity(t);for(let n=0;n<e.length;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+e.length,0),this.offset+=t}writeData(e){this.ensureCapacity(e.length),this.buffer.set(e,this.offset),this.offset+=e.length}writeCoord(e){this.writeShort(Math.round(e*8))}writeAngle(e){this.writeByte(Math.round(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.round(e*65536/360))}writeDir(e,t,n){let i=0,r=-999999,a=Math.sqrt(e*e+t*t+n*n);if(a>0){e/=a,t/=a,n/=a;for(let s=0;s<162;s++){let o=e*In[s][0]+t*In[s][1]+n*In[s][2];o>r&&(r=o,i=s)}}this.writeByte(i)}},Pn=class Ie{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new Ko(Ie.MAX_MSGLEN);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=Ie.PACKET_HEADER,i=this.reliableLength>0?this.reliableLength+2:0,r=t?t.length:0;n+i+r>Ie.MAX_MSGLEN&&(r=Ie.MAX_MSGLEN-n-i,r<0&&(r=0));let a=new ArrayBuffer(n+i+r),s=new DataView(a),o=new Uint8Array(a),l=this.outgoingSequence;this.reliableLength>0&&(l|=2147483648,(this.outgoingReliableSequence&1)!==0&&(l|=1073741824)),s.setUint32(0,l,!0);let c=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(c|=2147483648),s.setUint32(4,c,!0),s.setUint16(8,this.qport,!0);let u=n;if(this.reliableLength>0){s.setUint16(u,this.reliableLength,!0),u+=2;let d=this.reliableMessage.getBuffer().subarray(0,this.reliableLength);o.set(d,u),u+=this.reliableLength}if(t&&r>0){let m=t.slice(0,r);o.set(m,u)}return o}process(t){if(t.length<Ie.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,l=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let g=l?1:0,p=this.outgoingReliableSequence&1;g!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1)}let c=(i&2147483648)!==0,u=(i&1073741824)!==0?1:0,m=Ie.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let g=n.getUint16(m,!0);m+=2;let p=this.incomingReliableSequence&1;if(u===p){if(this.incomingReliableSequence++,m+g>t.byteLength)return null;d=t.slice(m,m+g)}m+=g}let f=t.slice(m);if(d&&d.length>0){let g=d.length+f.length,p=new Uint8Array(g);return p.set(d,0),p.set(f,d.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Ie.MAX_MSGLEN-Ie.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Ie.MAX_MSGLEN-Ie.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Ie.MAX_MSGLEN-Ie.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>Ie.MAX_MSGLEN-Ie.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}};Pn.MAX_MSGLEN=1400;Pn.FRAGMENT_SIZE=1024;Pn.PACKET_HEADER=10;Pn.HEADER_OVERHEAD=Pn.PACKET_HEADER+2;var Nm=Pn;var zm=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(zm||{}),a7=Object.keys(zm).length/2;var ra=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],Om={blaster:null,shotgun:1,supershotgun:1,machinegun:0,chaingun:0,grenades:3,grenadelauncher:3,rocketlauncher:2,hyperblaster:4,railgun:5,bfg10k:4,grapple:null,chainfist:null,etf_rifle:8,prox_launcher:11,ionripper:4,plasmabeam:4,phalanx:6,disruptor:10,trap:7};var r2=Object.defineProperty,a2=(e,t)=>{for(var n in t)r2(e,n,{get:t[n],enumerable:!0})},sa=null,aa=[1,1,1,1],Im=["ch1","ch2","ch3"],$o=[null,null,null],s2=e=>{for(let t=0;t<Im.length;t++){let n=Im[t];try{$o[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{$o[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
|
|
170
|
+
`)}}}sa=$o[0]},o2=(e,t,n)=>{if(sa){let i=e.Draw_GetPicSize(sa),r=(t-i.width)/2,a=(n-i.height)/2;e.SCR_DrawColorPic(r,a,sa,{x:aa[0],y:aa[1],z:aa[2]},aa[3])}},Bm=new Map,c2=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],l2=e=>{for(let t of c2)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);Bm.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
|
|
171
|
+
`)}},u2=new Map,d2=["d_left","d_right","d_up","d_down"],m2=e=>{for(let t of d2)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);u2.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
|
|
172
|
+
`)}},h2=(e,t,n,i)=>{(!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length)},Cm=3e3,Pm=5e3,Dm=4,f2=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:Cm}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:Pm}),this.notifyMessages.length>Dm&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:Cm}}addNotification(e,t,n){this.notifyMessages.push({text:e,startTime:n,duration:Pm}),this.notifyMessages.length>Dm&&this.notifyMessages.shift()}clearNotifications(){this.notifyMessages=[]}clearCenterPrint(){this.centerPrintMsg=null}drawCenterPrint(e,t,n){if(!this.centerPrintMsg)return;if(t>this.centerPrintMsg.startTime+this.centerPrintMsg.duration){this.centerPrintMsg=null;return}let i=n.CENTER_PRINT_Y;e.SCR_DrawCenterString(i,this.centerPrintMsg.text)}drawNotifications(e,t){for(;this.notifyMessages.length>0&&t>this.notifyMessages[0].startTime+this.notifyMessages[0].duration;)this.notifyMessages.shift();let n=10;for(let i of this.notifyMessages)e.SCR_DrawFontString(10,n,i.text),n+=10}},_2=3e3,g2=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:_2}}drawSubtitles(e,t){if(!this.subtitle)return;if(t>this.subtitle.startTime+this.subtitle.duration){this.subtitle=null;return}e.SCR_DrawCenterString(200,this.subtitle.text)}},v2=(e,t,n,i)=>{if(!t.blend)return;let[r,a,s,o]=t.blend},p2=(e,t,n,i)=>{if(!t.pickupIcon)return;let r=Bm.get(t.pickupIcon);if(r){let a=e.Draw_GetPicSize(r),s=n-a.width-10,o=i-a.height-10;e.SCR_DrawPic(s,o,r)}},Xo=(e,t,n,i,r,a,s)=>{let o=Math.abs(i).toString();for(let l=0;l<o.length;l++){let c=parseInt(o[l]),u=r[c];u&&(s?e.SCR_DrawColorPic(t+l*a,n,u,{x:s[0],y:s[1],z:s[2]},s[3]):e.SCR_DrawPic(t+l*a,n,u))}},y2=(e,t,n,i,r,a)=>{let s=t.stats[Ce.STAT_HEALTH]||0,o=t.stats[Ce.STAT_ARMOR]||0,l=t.stats[Ce.STAT_AMMO]||0,c=t.stats[Ce.STAT_ARMOR_ICON]||0,u;if(s<=25&&(u=[1,0,0,1]),n.length>0&&(Xo(e,a.HEALTH_X,a.HEALTH_Y,s,n,i,u),Xo(e,a.ARMOR_X,a.ARMOR_Y,o,n,i),Xo(e,a.AMMO_X,a.AMMO_Y,l,n,i)),c>0){let m=e.get_configstring(ye.Images+c);if(m){let d=e.Draw_RegisterPic(m);d&&e.SCR_DrawPic(a.ARMOR_X-24,a.ARMOR_Y-2,d)}}if(t.pickupIcon){let m=e.Draw_RegisterPic(t.pickupIcon);m&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,m)}else{let m=t.stats[Ce.STAT_SELECTED_ICON]||0;if(m>0){let d=e.get_configstring(ye.Images+m);if(d){let f=e.Draw_RegisterPic(d);f&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,f)}}}},Yo=640,Fn=480,w2=(e,t)=>{let n=e/Yo,i=t/Fn,r=Math.min(n,i);return{HEALTH_X:100*r,HEALTH_Y:t-(Fn-450)*r,ARMOR_X:200*r,ARMOR_Y:t-(Fn-450)*r,AMMO_X:e-(Yo-540)*r,AMMO_Y:t-(Fn-450)*r,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*r,WEAPON_ICON_X:10*r,WEAPON_ICON_Y:t-(Fn-450)*r,POWERUP_X:e-(Yo-610)*r,POWERUP_Y:t-(Fn-450)*r,scale:r}},Ee=null,Jo=[],Gm=0,Qo=new f2,Hm=new g2;function A2(e){Ee=e}function S2(){if(Ee){Jo.length=0;for(let e=0;e<10;e++)try{let t=Ee.Draw_RegisterPic(`pics/hud/num_${e}.pcx`);Jo.push(t),e===0&&(Gm=Ee.Draw_GetPicSize(t).width)}catch{Ee.Com_Print(`Warning: Failed to load HUD image: pics/hud/num_${e}.pcx
|
|
173
|
+
`)}s2(Ee),l2(Ee),m2(Ee)}}function k2(e,t,n,i,r,a,s){if(!Ee){console.error("CG_DrawHUD: cgame imports not initialized");return}let o=Ee.CL_ClientTime(),l=w2(n.width,n.height);if(v2(Ee,s,n.width,n.height),y2(Ee,s,Jo,Gm,o,l),p2(Ee,s,n.width,n.height),h2(Ee,s,n.width,n.height),s.centerPrint){let c=s.centerPrint.split(`
|
|
174
|
+
`),u=n.height/2-c.length*10;for(let m of c)Ee.SCR_DrawCenterString(u,m),u+=16}Qo.drawCenterPrint(Ee,o,l),Qo.drawNotifications(Ee,o),Hm.drawSubtitles(Ee,o),o2(Ee,n.width,n.height)}function ca(){return Qo}function E2(){return Hm}function b2(e,t,n){t>=ye.Models&&t<ye.Models+Pi?e.RegisterModel(n):t>=ye.Sounds&&t<ye.Sounds+Di?e.RegisterSound(n):t>=ye.Images&&t<ye.Images+Fi&&e.Draw_RegisterPic(n)}var qo=1e-6,oa=typeof Float32Array<"u"?Float32Array:Array,Fm=Math.random;function jo(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var x2={};a2(x2,{add:()=>N2,angle:()=>e5,bezier:()=>$2,ceil:()=>z2,clone:()=>T2,copy:()=>R2,create:()=>Vm,cross:()=>H2,dist:()=>c5,distance:()=>Ym,div:()=>o5,divide:()=>Xm,dot:()=>ec,equals:()=>r5,exactEquals:()=>i5,floor:()=>O2,forEach:()=>m5,fromValues:()=>M2,hermite:()=>K2,inverse:()=>B2,len:()=>u5,length:()=>Wm,lerp:()=>V2,max:()=>C2,min:()=>I2,mul:()=>s5,multiply:()=>$m,negate:()=>U2,normalize:()=>G2,random:()=>X2,rotateX:()=>Z2,rotateY:()=>J2,rotateZ:()=>Q2,round:()=>P2,scale:()=>D2,scaleAndAdd:()=>F2,set:()=>L2,slerp:()=>W2,sqrDist:()=>l5,sqrLen:()=>d5,squaredDistance:()=>qm,squaredLength:()=>jm,str:()=>n5,sub:()=>a5,subtract:()=>Km,transformMat3:()=>q2,transformMat4:()=>Y2,transformQuat:()=>j2,zero:()=>t5});function Vm(){var e=new oa(3);return oa!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function T2(e){var t=new oa(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Wm(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function M2(e,t,n){var i=new oa(3);return i[0]=e,i[1]=t,i[2]=n,i}function R2(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function L2(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function N2(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Km(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function $m(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Xm(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function z2(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function O2(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function I2(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function C2(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function P2(e,t){return e[0]=jo(t[0]),e[1]=jo(t[1]),e[2]=jo(t[2]),e}function D2(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function F2(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function Ym(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function qm(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function jm(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function U2(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function B2(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function G2(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function ec(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function H2(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=r*l-a*o,e[1]=a*s-i*l,e[2]=i*o-r*s,e}function V2(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function W2(e,t,n,i){var r=Math.acos(Math.min(Math.max(ec(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function K2(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,l=s*(a-2)+a,c=s*(a-1),u=s*(3-2*a);return e[0]=t[0]*o+n[0]*l+i[0]*c+r[0]*u,e[1]=t[1]*o+n[1]*l+i[1]*c+r[1]*u,e[2]=t[2]*o+n[2]*l+i[2]*c+r[2]*u,e}function $2(e,t,n,i,r,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,m=3*l*s,d=l*a;return e[0]=t[0]*c+n[0]*u+i[0]*m+r[0]*d,e[1]=t[1]*c+n[1]*u+i[1]*m+r[1]*d,e[2]=t[2]*c+n[2]*u+i[2]*m+r[2]*d,e}function X2(e,t){t=t===void 0?1:t;var n=Fm()*2*Math.PI,i=Fm()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function Y2(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function q2(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function j2(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=r*c-a*l,m=a*o-i*c,d=i*l-r*o;return u=u+u,m=m+m,d=d+d,e[0]=o+s*u+r*d-a*m,e[1]=l+s*m+a*u-i*d,e[2]=c+s*d+i*m-r*u,e}function Z2(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function J2(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Q2(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function e5(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=l&&ec(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function t5(e){return e[0]=0,e[1]=0,e[2]=0,e}function n5(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function i5(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function r5(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=qo*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=qo*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=qo*Math.max(1,Math.abs(r),Math.abs(o))}var a5=Km,s5=$m,o5=Xm,c5=Ym,l5=qm,u5=Wm,d5=jm,m5=(function(){var e=Vm();return function(t,n,i,r,a,s){var o,l;for(n||(n=3),i||(i=0),r?l=Math.min(r*n+i,t.length):l=t.length,o=i;o<l;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var h5={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function f5(e){return{x:Math.max(-14,Math.min(14,e.x)),y:Math.max(-14,Math.min(14,e.y)),z:Math.max(-22,Math.min(30,e.z))}}function _5(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function g5(e,t,n,i,r){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=_5(t,i,r),s=e+a,l=Dn(n,Et.Ducked)&&i?s*4:s;return{bobTime:s,bobCycle:Math.floor(l),bobCycleRun:Math.floor(s),bobFracSin:Math.abs(Math.sin(l*Math.PI))}}var la=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...h5,...e}}addKick(e){e.durationMs<=0||(this.kick={...e,remainingMs:e.durationMs})}get last(){return this.lastSample}sample(e,t){let{forward:n,right:i}=Jr(Vo({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??Ut}).viewangles),r=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=Dn(e.pmFlags,Et.OnGround),s=g5(this.bobTime,r,e.pmFlags,a,t);this.bobTime=s.bobTime,this.bobCycle=s.bobCycle,this.bobCycleRun=s.bobCycleRun,this.bobFracSin=s.bobFracSin;let o=Ii(e.velocity,n)*this.settings.runPitch,l=Ii(e.velocity,i),c=l<0?-1:1,m=Math.abs(l)*this.settings.runRoll;m>2&&(m=2),m*=c;let d=this.bobFracSin*this.settings.bobPitch*r,f=this.bobFracSin*this.settings.bobRoll*r;Dn(e.pmFlags,Et.Ducked)&&a&&(d*=6,f*=6),o+=Math.min(d,this.settings.maxBobAngle),f=Math.min(f,this.settings.maxBobAngle),this.bobCycle&1&&(f=-f),m+=f;let g=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),p=0,v=0,w=0,L=0,k=0;if(this.kick&&this.kick.remainingMs>0){let T=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));p+=T*this.kick.pitch,v+=T*this.kick.roll,this.kick.origin&&(w+=T*this.kick.origin.x,L+=T*this.kick.origin.y,k+=T*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let y={x:o+p,y:0,z:m+v},E={x:w,y:L,z:g+k},x={angles:y,offset:f5(E),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:r};return this.lastSample=x,x}},v5={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},p5=800,mt={x:0,y:0,z:0};function ln(){return{origin:mt,velocity:mt,viewAngles:mt,onGround:!1,pmFlags:Et.OnGround,pmType:na.Normal,waterLevel:Ui.None,gravity:p5,deltaAngles:mt,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:0,damageIndicators:[],blend:[0,0,0,0],stats:[],kick_angles:mt,kick_origin:mt,gunoffset:mt,gunangles:mt,gunindex:0,pm_time:0,pm_type:na.Normal,pm_flags:Et.OnGround,gun_frame:0,rdflags:0,fov:90,pickupIcon:void 0,centerPrint:void 0,notify:void 0,client:void 0,health:0,armor:0,ammo:0}}function Um(e){return e?{...ln(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:mt,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:ln()}function Be(e,t,n){return e+(t-e)*n}function Zo(e,t,n){let i=Cn(t-e);return i>180&&(i-=360),Cn(e+i*n)}function un(e,t,n){let i=Math.max(0,Math.min(n,1));return{...t,origin:{x:Be(e.origin.x,t.origin.x,i),y:Be(e.origin.y,t.origin.y,i),z:Be(e.origin.z,t.origin.z,i)},velocity:{x:Be(e.velocity.x,t.velocity.x,i),y:Be(e.velocity.y,t.velocity.y,i),z:Be(e.velocity.z,t.velocity.z,i)},viewAngles:{x:Zo(e.viewAngles.x,t.viewAngles.x,i),y:Zo(e.viewAngles.y,t.viewAngles.y,i),z:Zo(e.viewAngles.z,t.viewAngles.z,i)},damageAlpha:Be(e.damageAlpha,t.damageAlpha,i),blend:[Be(e.blend[0],t.blend[0],i),Be(e.blend[1],t.blend[1],i),Be(e.blend[2],t.blend[2],i),Be(e.blend[3],t.blend[3],i)],health:Be(e.health||0,t.health||0,i),armor:Be(e.armor||0,t.armor||0,i),ammo:Be(e.ammo||0,t.ammo||0,i)}}function y5(e,t,n,i,r){let a={forwardmove:t.forwardmove,sidemove:t.sidemove,upmove:t.upmove,buttons:t.buttons},s=Wo(e,a,i,r),{viewangles:o}=Vo({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??mt});return{...s,viewAngles:o}}var ua=class{constructor(e,t,n={}){this.baseFrame={frame:0,timeMs:0,state:ln()},this.commands=[],this.predicted=ln(),this.settings={...v5,...n},this.trace=e,this.pointContents=t,this.predicted=this.baseFrame.state??ln()}setAuthoritative(e){let t=Um(e.state);return this.baseFrame={...e,state:t},this.commands=this.commands.filter(n=>(n.serverFrame??Number.MAX_SAFE_INTEGER)>e.frame),this.recompute()}enqueueCommand(e){return this.commands.push(e),this.recompute()}getPredictedState(){return this.predicted}recompute(){let e=Um(this.baseFrame.state);for(let t of this.commands)e=y5(e,t,this.settings,this.trace,this.pointContents);return this.predicted=e,e}},be=null;function w5(){if(!be){console.error("CGame Init: cgame imports not set");return}be.Com_Print(`===== CGame Initialization =====
|
|
175
|
+
`),A2(be),be.Com_Print(`CGame initialized
|
|
176
|
+
`)}function A5(){be&&be.Com_Print(`CGame shutdown
|
|
177
|
+
`),be=null}function S5(e,t,n,i,r,a,s){k2(e,t,n,i,r,a,s)}function k5(){S2()}function E5(e){return 0}function b5(e){return e.stats[Ce.STAT_ACTIVE_WHEEL_WEAPON]??0}function x5(e){let t=[],n=e.stats[Ce.STAT_WEAPONS_OWNED_1]||0,i=e.stats[Ce.STAT_WEAPONS_OWNED_2]||0,r=n|i<<16;for(let a=0;a<ra.length;a++)r&1<<a&&t.push(a);return t}function T5(e,t){if(t<0||t>=ra.length)return 0;let n=ra[t],i=Om[n];return i===null?-1:Mm(e.stats,i)}function M5(e){let t=0,n=Object.values(Bi);for(let i of n)ia(e.stats,i)>0&&t++;return t}function R5(e){return e.stats[Ce.STAT_HIT_MARKER]??0}function L5(e){let t=e;if(!t||!t.s||!t.cmd||!be)return;let n=(a,s,o,l)=>{let c={x:0,y:0,z:0};return be.PM_Trace(a,s,o||c,l||c)},i=a=>{let s={x:0,y:0,z:0};return be.PM_Trace(a,a,s,s).contents||0},r=Wo(t.s,t.cmd,n,i);t.s.origin=r.origin,t.s.velocity=r.velocity,t.s.onGround=r.onGround,t.s.waterLevel=r.waterLevel}function N5(e,t){be&&b2(be,e,t)}function z5(e,t,n){if(!be)return;ca().setCenterPrint(e,be.CL_ClientTime())}function O5(e,t,n){if(!be)return;ca().addNotification(t,n,be.CL_ClientTime())}function I5(e){ca().clearNotifications()}function C5(e){ca().clearCenterPrint()}function P5(e,t){if(!be)return;E2().addSubtitle(e,be.CL_ClientTime())}function D5(e){return{x:0,y:0,z:0}}function F5(e){return null}function Zm(e){return be=e,{Init:w5,Shutdown:A5,DrawHUD:S5,TouchPics:k5,LayoutFlags:E5,GetActiveWeaponWheelWeapon:b5,GetOwnedWeaponWheelWeapons:x5,GetWeaponWheelAmmoCount:T5,GetPowerupWheelCount:M5,GetHitMarkerDamage:R5,Pmove:L5,ParseConfigString:N5,ParseCenterPrint:z5,NotifyMessage:O5,ShowSubtitle:P5,ClearNotify:I5,ClearCenterprint:C5,GetMonsterFlashOffset:D5,GetExtension:F5}}function Jm(e,t){let n=new Map,i=new Set,r=()=>e.engine.renderer;return{get tick_rate(){return t.tickRate},get frame_time_s(){return t.frameTimeMs/1e3},get frame_time_ms(){return t.frameTimeMs},Com_Print:a=>{console.log(`[CGAME] ${a}`)},Com_Error:a=>{console.error(`[CGAME ERROR] ${a}`)},get_configstring:a=>t.configStrings.get(a)||"",TagMalloc:(a,s)=>({}),TagFree:a=>{},FreeTags:a=>{},cvar:(a,s,o)=>{if(!e.host||!e.host.cvars)return null;let l=e.host.cvars.get(a);return l||e.host.cvars.register({name:a,defaultValue:s,flags:o})},cvar_set:(a,s)=>{e.host?.cvars?.setValue(a,s)},cvar_forceset:(a,s)=>{e.host?.cvars?.setValue(a,s)},CL_FrameValid:()=>!0,CL_FrameTime:()=>t.frameTimeMs,CL_ClientTime:()=>t.frameTimeMs,CL_ServerFrame:()=>t.serverFrame,CL_ServerProtocol:()=>t.serverProtocol,CL_GetClientName:a=>t.getClientName(a),CL_GetClientPic:a=>"",CL_GetClientDogtag:a=>"",CL_GetKeyBinding:a=>t.getKeyBinding(a),RegisterModel:a=>{if(!e.engine.assets)return;let s=a.split(".").pop()?.toLowerCase();s==="md2"?e.engine.assets.loadMd2Model(a).catch(o=>console.warn(`Failed to precache MD2 ${a}`,o)):s==="sp2"?e.engine.assets.loadSprite(a).catch(o=>console.warn(`Failed to precache Sprite ${a}`,o)):s==="md3"&&e.engine.assets.loadMd3Model(a).catch(o=>console.warn(`Failed to precache MD3 ${a}`,o))},RegisterSound:a=>{e.engine.assets&&e.engine.assets.loadSound(a).catch(s=>console.warn(`Failed to precache sound ${a}`,s))},Draw_RegisterPic:a=>(n.has(a)||i.has(a)||(i.add(a),e.engine.assets&&e.engine.assets.loadTexture(a).then(s=>{if(e.engine.renderer){let o=e.engine.renderer.registerTexture(a,s);n.set(a,o)}i.delete(a)}).catch(s=>{console.warn(`[CGameImport] Failed to load pic: ${a}`,s),i.delete(a)})),a),Draw_GetPicSize:a=>{let s=a,o=n.get(s);return o?{width:o.width,height:o.height}:{width:0,height:0}},SCR_DrawChar:(a,s,o)=>{r()?.drawString(a,s,String.fromCharCode(o))},SCR_DrawPic:(a,s,o)=>{let l=o,c=n.get(l);c&&r()?.drawPic(a,s,c)},SCR_DrawColorPic:(a,s,o,l,c)=>{let u=o,m=n.get(u);m&&r()?.drawPic(a,s,m,[l.x,l.y,l.z,c])},SCR_DrawFontString:(a,s,o)=>{r()?.drawString(a,s,o)},SCR_DrawCenterString:(a,s)=>{r()?.drawCenterString(a,s)},SCR_MeasureFontString:a=>a.replace(/\^[0-9]/g,"").length*8,SCR_FontLineHeight:()=>8,SCR_SetAltTypeface:a=>{},SCR_DrawBind:(a,s,o)=>{let l=t.getKeyBinding(o);r()?.drawString(a,s,`[${o}]`)},Localize:a=>a,CL_GetTextInput:()=>"",CL_GetWarnAmmoCount:()=>5,CL_InAutoDemoLoop:()=>t.inAutoDemo,PM_Trace:(a,s,o,l)=>e.engine.trace(a,s,o,l)}}var Un=null,Gt=0;var Hi=!0,Vi=["ch1","ch2","ch3"],Bn=[null,null,null],Qm=async(e,t)=>{for(let n=0;n<Vi.length;n++){let i=Vi[n];try{let r=await t.loadTexture(`pics/${i}.pcx`);Bn[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");Bn[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}Un=Bn[0]};var e0=()=>{if(Hi?(Gt++,Gt>=Vi.length&&(Hi=!1,Gt=0)):(Hi=!0,Gt=0),Hi){if(Un=Bn[Gt],!Un){let e=!1;for(let t=0;t<Vi.length;t++){let n=(Gt+t)%Vi.length;if(Bn[n]){Gt=n,Un=Bn[n],e=!0;break}}e||(Un=null)}}else Un=null;return Hi?Gt:-1};var U5=Object.defineProperty,B5=Object.getOwnPropertyNames,gn=(e,t)=>function(){return e&&(t=(0,e[B5(e)[0]])(e=0)),t},G5=(e,t)=>{for(var n in t)U5(e,n,{get:t[n],enumerable:!0})};function Jn(e){return{x:e.x,y:e.y,z:e.z}}function F(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function P(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function D(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function bc(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function H5(e){return bc(e,e)}function Ge(e){return Math.sqrt(H5(e))}function G(e){let t=Ge(e);return t===0?e:D(e,1/t)}function V5(e,t,n){return{x:e.x<t.x?t.x:e.x>n.x?n.x:e.x,y:e.y<t.y?t.y:e.y>n.y?n.y:e.y,z:e.z<t.z?t.z:e.z>n.z?n.z:e.z}}function W5(e,t,n,i){let r=0;if(t.x<n.x){let a=t.x-n.x;r+=a*a}else if(e.x>i.x){let a=e.x-i.x;r+=a*a}if(t.y<n.y){let a=t.y-n.y;r+=a*a}else if(e.y>i.y){let a=e.y-i.y;r+=a*a}if(t.z<n.z){let a=t.z-n.z;r+=a*a}else if(e.z>i.z){let a=e.z-i.z;r+=a*a}return r}function Xi(e,t){switch(t){case Ea:return e.x;case ba:return e.y;case xc:default:return e.z}}function ga(e){return e*vh}function uc(e){return e*ph}function dc(e){let t=e%360;return t<0?360+t:t}function j(e){let t=ga(Xi(e,ba)),n=ga(Xi(e,Ea)),i=ga(Xi(e,xc)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(i),c=Math.cos(i),u={x:o*a,y:o*r,z:-s},m={x:-l*s*a-c*-r,y:-l*s*r-c*a,z:-l*o},d={x:c*s*a-l*-r,y:c*s*r-l*a,z:c*o};return{forward:u,right:m,up:d}}function nr(e){let t=Xi(e,Ea),n=Xi(e,ba);if(t===0)return n===0?0:n>0?90:270;let i=uc(Math.atan2(n,t));return i<0?i+360:i}function Qn(e){let t=e.x,n=e.y,i=e.z;if(n===0&&t===0)return{x:i>0?-90:-270,y:0,z:0};let r;t?r=uc(Math.atan2(n,t)):n>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+n*n),s=uc(Math.atan2(i,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}function ir(e){return new Tc(e)}function K5(e){return JSON.stringify(e,null,2)}function $5(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function X5(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Y5(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}function q5(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=Ge(t);if(u<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let g=u<l?l:u;m+=g*o*n}s>0&&!a&&(m+=u*c*s*n);let d=u-m;if(d<0&&(d=0),d===u)return t;let f=d/u;return D(t,f)}function j5(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=bc(t,n),o=i-s;if(o<=0)return t;let l=r*a*i;return l>o&&(l=o),{x:t.x+n.x*l,y:t.y+n.y*l,z:t.z+n.z*l}}function Z5(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=Ge(a);if(s>r){let o=r/s;a=D(a,o),s=r}return{wishdir:s===0?a:G(a),wishspeed:s}}function J5(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:t.z*i.forwardmove+n.z*i.sidemove};i.upmove>10?a=F(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=F(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=F(a,{x:0,y:0,z:-60}):a=F(a,{x:0,y:0,z:10});let s=Ge(a);if(s>r){let o=r/s;a=D(a,o),s=r}return s*=.5,{wishdir:s===0?a:G(a),wishspeed:s}}var t0,tc,W,Q5,ek,Ea,ba,xc,vh,ph,nc,Je,n0,i0,r0,a0,da,s0,Tc,De,bt,tk,ma,ha,o0,nk,ik,c0,rk,Wi,ic,l0,u0,d0,m0,h0,f0,ak,Kt,qi,sk,ok,ck,fn,lk,uk,dk,mk,hk,fk,_k,gk,vk,pk,yk,wk,Ak,Sk,Mc,kk,Ek,ji,yh,bk,Rt,xk,Tk,Mk,Rk,Lk,Nk,zk,_0,rc,g0,v0,p0,y0,w0,A0,S0,fa,ac,Ok,k0,E0,Ik,se,we,wh,Ah,Sh,kh,Eh,bh,xh,Th,Mh,Rh,ie,b0,x0,T0,Ck,M0,R0,Pk,Dk,L0,N0,z0,O0,I0,C0,P0,D0,F0,U0,B0,G0,H0,V0,W0,K0,$0,X0,Y0,q0,j0,Z0,Gn,_a,Ki,J0,Q0,Fk,eh,Hn,V,I,Uk,he,Bk,th,Gk,Hk,U=gn({"../shared/dist/esm/index.js"(){"use strict";t0=Object.defineProperty,tc=(e,t)=>{for(var n in t)t0(e,n,{get:t[n],enumerable:!0})},W={x:0,y:0,z:0},Q5=.1,ek=Math.PI/180,Ea=0,ba=1,xc=2,vh=Math.PI/180,ph=180/Math.PI,nc=[[-.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]],Je=624,n0=397,i0=2567483615,r0=2147483648,a0=2147483647,da=4294967296,s0=class{constructor(e=5489){this.state=new Uint32Array(Je),this.index=Je,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<Je;t++){let n=this.state[t-1]^this.state[t-1]>>>30,i=Math.imul(n>>>0,1812433253)+t;this.state[t]=i>>>0}this.index=Je}nextUint32(){this.index>=Je&&this.twist();let e=this.state[this.index++];return e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0}twist(){for(let e=0;e<Je;e++){let t=this.state[e]&r0|this.state[(e+1)%Je]&a0,n=this.state[(e+n0)%Je]^t>>>1;(t&1)!==0&&(n^=i0),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==Je)throw new Error(`Expected ${Je} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},Tc=class{constructor(e={}){this.mt=new s0(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/da}frandomRange(e,t){return e+(t-e)*this.frandom()}frandomMax(e){return this.frandomRange(0,e)}crandom(){return this.frandomRange(-1,1)}crandomOpen(){let e=Number.EPSILON;return this.frandomRange(-1+e,1)}irandomUint32(){return this.mt.nextUint32()}irandomRange(e,t){if(t-e<=1)return e;let n=t-e,i=da-da%n,r;do r=this.mt.nextUint32();while(r>=i);return e+r%n}irandom(e){return e<=0?0:this.irandomRange(0,e)}randomTimeRange(e,t){return t<=e?e:this.irandomRange(e,t)}randomTime(e){return this.irandom(e)}randomIndex(e){return this.irandom(e.length)}getState(){return{mt:this.mt.getState()}}setState(e){this.mt.setState(e.mt)}},De=1,bt=2,tk=4,ma=8,ha=16,o0=32,nk=64,ik=8192,c0=16384,rk=32768,Wi=65536,ic=1<<17,l0=1<<18,u0=1<<19,d0=1<<20,m0=1<<21,h0=1<<22,f0=1<<23,ak=1<<24,Kt=1<<25,qi=1<<26,sk=1<<27,ok=1<<28,ck=1<<29,fn=1<<30,lk=1<<31,uk=1,dk=2,mk=4,hk=8,fk=16,_k=32,gk=64,vk=128,pk=1<<25,yk=1<<28,wk=1<<29,Ak=1<<30,Sk=1<<31,Mc=De|bt,kk=De|Wi|bt|Kt|fn,Ek=De|Wi|bt,ji=De|ic|bt|Kt|fn,yh=o0|ma|ha,bk=De|ha|ma,Rt=De|Kt|fn|bt|qi,xk=l0|u0|d0|m0|h0|f0,Tk=De|ma|ha|Kt|fn,Mk=De|Wi|bt,Rk=De|bt,Lk=De|Wi|bt|ic,Nk=Rt|c0,zk=Number.MAX_SAFE_INTEGER-1,_0=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(_0||{}),rc=256,g0=256,v0=8192,p0=2048,y0=512,w0=256,A0=rc*2,S0=256,fa=32,ac=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.HealthBarName=55]="HealthBarName",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+v0]="Sounds",e[e.Images=e.Sounds+p0]="Images",e[e.Lights=e.Images+y0]="Lights",e[e.ShadowLights=e.Lights+g0]="ShadowLights",e[e.Items=e.ShadowLights+S0]="Items",e[e.PlayerSkins=e.Items+w0]="PlayerSkins",e[e.General=e.PlayerSkins+rc]="General",e[e.WheelWeapons=e.General+A0]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+fa]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+fa]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+fa]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ac||{}),Ok=ac.MaxConfigStrings,k0={},tc(k0,{addReplayFrame:()=>Y5,createReplaySession:()=>X5,deserializeReplay:()=>$5,serializeReplay:()=>K5}),E0=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(E0||{}),Ik=1080,se=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(se||{}),we=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(we||{}),wh=0,Ah=1,Sh=2,kh=3,Eh=6,bh=7,xh=8,Th=11,Mh=12,Rh=13,ie=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(ie||{}),b0=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(b0||{}),x0=12,T0=9,Ck=Math.ceil(x0*T0/16),M0=23,R0=2,Pk=Math.ceil(M0*R0/16),Dk={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,bandolier:10,ammo_pack:10,ir_goggles:11,double_damage:12,sphere_vengeance:13,sphere_hunter:14,sphere_defender:15,doppelganger:16,flashlight:17,compass:18,tech_resistance:19,tech_strength:20,tech_haste:21,tech_regeneration:22,tag_token:-1},L0=(e=>(e[e.MinLight=1]="MinLight",e[e.ViewerModel=2]="ViewerModel",e[e.WeaponModel=4]="WeaponModel",e[e.FullBright=8]="FullBright",e[e.DepthHack=16]="DepthHack",e[e.Translucent=32]="Translucent",e[e.FrameLerp=64]="FrameLerp",e[e.Beam=128]="Beam",e[e.CustomLight=256]="CustomLight",e[e.Glow=512]="Glow",e[e.ShellRed=1024]="ShellRed",e[e.ShellGreen=2048]="ShellGreen",e[e.ShellBlue=4096]="ShellBlue",e[e.IrVisible=32768]="IrVisible",e[e.ShellDouble=65536]="ShellDouble",e[e.ShellHalfDam=131072]="ShellHalfDam",e[e.MinLightPlus=262144]="MinLightPlus",e[e.ExtraLight=524288]="ExtraLight",e[e.BeamLightning=1048576]="BeamLightning",e))(L0||{}),N0={},tc(N0,{U_ANGLE1:()=>F0,U_ANGLE2:()=>U0,U_ANGLE3:()=>B0,U_EFFECTS:()=>V0,U_EVENT:()=>$0,U_FRAME:()=>G0,U_MODEL:()=>O0,U_MODEL2:()=>Y0,U_MODEL3:()=>q0,U_MODEL4:()=>j0,U_MOREBITS:()=>X0,U_NUMBER:()=>z0,U_ORIGIN1:()=>C0,U_ORIGIN2:()=>P0,U_ORIGIN3:()=>D0,U_REMOVE:()=>Z0,U_RENDERFX:()=>W0,U_SKIN:()=>H0,U_SOLID:()=>K0,U_SOUND:()=>I0}),z0=1,O0=2,I0=4,C0=8,P0=16,D0=32,F0=64,U0=128,B0=256,G0=512,H0=1024,V0=2048,W0=4096,K0=8192,$0=16384,X0=32768,Y0=1,q0=2,j0=4,Z0=32768,Gn=.025,_a=33554432,Ki={None:0,Feet:1,Waist:2,Under:3},J0=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},Q0=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&_a))return{...e,waterLevel:Ki.None};let s=Ki.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&_a){s=Ki.Waist;let c=e.origin.z+22;n.z=c,t(n)&_a&&(s=Ki.Under)}return{...e,waterLevel:s}},Fk=(e,t,n,i)=>{let r={...e};r=J0(r,n),r=Q0(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:l,viewAngles:c}=r,u=l>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:m,right:d}=j(u),f=q5({velocity:s,frametime:Gn,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:l,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=l>=2?J5({forward:m,right:d,cmd:t,maxSpeed:320}):Z5({forward:m,right:d,cmd:t,maxSpeed:320}),p=j5({velocity:f,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||l>=2?10:1,frametime:Gn}),v=n(a,{x:a.x+p.x*Gn,y:a.y+p.y*Gn,z:a.z+p.z*Gn});return{...r,origin:v.endpos,velocity:p}},eh=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let i=0;i<nc.length;i++){let r=nc[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},Hn=class Pe{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new eh(Pe.MAX_MSGLEN);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=Pe.PACKET_HEADER,i=this.reliableLength>0?this.reliableLength+2:0,r=t?t.length:0;n+i+r>Pe.MAX_MSGLEN&&(r=Pe.MAX_MSGLEN-n-i,r<0&&(r=0));let a=new ArrayBuffer(n+i+r),s=new DataView(a),o=new Uint8Array(a),l=this.outgoingSequence;this.reliableLength>0&&(l|=2147483648,(this.outgoingReliableSequence&1)!==0&&(l|=1073741824)),s.setUint32(0,l,!0);let c=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(c|=2147483648),s.setUint32(4,c,!0),s.setUint16(8,this.qport,!0);let u=n;if(this.reliableLength>0){s.setUint16(u,this.reliableLength,!0),u+=2;let d=this.reliableMessage.getBuffer().subarray(0,this.reliableLength);o.set(d,u),u+=this.reliableLength}if(t&&r>0){let m=t.slice(0,r);o.set(m,u)}return o}process(t){if(t.length<Pe.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,l=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let g=l?1:0,p=this.outgoingReliableSequence&1;g!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1)}let c=(i&2147483648)!==0,u=(i&1073741824)!==0?1:0,m=Pe.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let g=n.getUint16(m,!0);m+=2;let p=this.incomingReliableSequence&1;if(u===p){if(this.incomingReliableSequence++,m+g>t.byteLength)return null;d=t.slice(m,m+g)}m+=g}let f=t.slice(m);if(d&&d.length>0){let g=d.length+f.length,p=new Uint8Array(g);return p.set(d,0),p.set(f,d.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Pe.MAX_MSGLEN-Pe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Pe.MAX_MSGLEN-Pe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Pe.MAX_MSGLEN-Pe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>Pe.MAX_MSGLEN-Pe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}},Hn.MAX_MSGLEN=1400,Hn.FRAGMENT_SIZE=1024,Hn.PACKET_HEADER=10,Hn.HEADER_OVERHEAD=Hn.PACKET_HEADER+2,V=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="supershotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.HandGrenade="grenades",e.GrenadeLauncher="grenadelauncher",e.RocketLauncher="rocketlauncher",e.HyperBlaster="hyperblaster",e.Railgun="railgun",e.BFG10K="bfg10k",e.Grapple="grapple",e.ChainFist="chainfist",e.EtfRifle="etf_rifle",e.ProxLauncher="prox_launcher",e.IonRipper="ionripper",e.PlasmaBeam="plasmabeam",e.Phalanx="phalanx",e.Disruptor="disruptor",e.Trap="trap",e))(V||{}),I=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(I||{}),Uk=Object.keys(I).length/2,he=(e=>(e.Shells="ammo_shells",e.Bullets="ammo_bullets",e.Rockets="ammo_rockets",e.Grenades="ammo_grenades",e.Cells="ammo_cells",e.Slugs="ammo_slugs",e.MagSlugs="ammo_magslug",e.Flechettes="ammo_flechettes",e.Disruptor="ammo_disruptor",e.Tesla="ammo_tesla",e.Trap="ammo_trap",e.Prox="ammo_prox",e))(he||{}),Bk=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],th=(e=>(e[e.Auto=0]="Auto",e[e.Weapon=1]="Weapon",e[e.Voice=2]="Voice",e[e.Item=3]="Item",e[e.Body=4]="Body",e[e.Aux=5]="Aux",e[e.Footstep=6]="Footstep",e[e.Aux3=7]="Aux3",e[e.NoPhsAdd=8]="NoPhsAdd",e[e.Reliable=16]="Reliable",e[e.ForcePos=32]="ForcePos",e))(th||{}),Gk=1,Hk=2}});var Vk,vn=gn({"src/inventory/ammo.ts"(){"use strict";U(),Vk={[he.Shells]:{id:he.Shells,ammoType:I.Shells,quantity:10,weaponAmmo:!1},[he.Bullets]:{id:he.Bullets,ammoType:I.Bullets,quantity:50,weaponAmmo:!1},[he.Rockets]:{id:he.Rockets,ammoType:I.Rockets,quantity:5,weaponAmmo:!1},[he.Grenades]:{id:he.Grenades,ammoType:I.Grenades,quantity:5,weaponAmmo:!0},[he.Cells]:{id:he.Cells,ammoType:I.Cells,quantity:50,weaponAmmo:!1},[he.Slugs]:{id:he.Slugs,ammoType:I.Slugs,quantity:10,weaponAmmo:!1},[he.MagSlugs]:{id:he.MagSlugs,ammoType:I.MagSlugs,quantity:10,weaponAmmo:!1},[he.Flechettes]:{id:he.Flechettes,ammoType:I.Flechettes,quantity:50,weaponAmmo:!1},[he.Disruptor]:{id:he.Disruptor,ammoType:I.Disruptor,quantity:15,weaponAmmo:!1},[he.Tesla]:{id:he.Tesla,ammoType:I.Tesla,quantity:5,weaponAmmo:!1},[he.Trap]:{id:he.Trap,ammoType:I.Trap,quantity:5,weaponAmmo:!1},[he.Prox]:{id:he.Prox,ammoType:I.Prox,quantity:5,weaponAmmo:!1}}}});function $t(e,t){return(e&t)!==0}var nh,Lh=gn({"src/combat/damageFlags.ts"(){"use strict";nh=(e=>(e[e.NONE=0]="NONE",e[e.RADIUS=1]="RADIUS",e[e.NO_ARMOR=2]="NO_ARMOR",e[e.ENERGY=4]="ENERGY",e[e.NO_KNOCKBACK=8]="NO_KNOCKBACK",e[e.BULLET=16]="BULLET",e[e.NO_PROTECTION=32]="NO_PROTECTION",e[e.DESTROY_ARMOR=64]="DESTROY_ARMOR",e[e.NO_REG_ARMOR=128]="NO_REG_ARMOR",e[e.NO_POWER_ARMOR=256]="NO_POWER_ARMOR",e[e.NO_INDICATOR=512]="NO_INDICATOR",e[e.NO_DAMAGE_EFFECTS=1024]="NO_DAMAGE_EFFECTS",e))(nh||{})}});function Wk(e,t,n){if(e<=0||$t(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=Nh[n.armorType],r=$t(t,4)?i.energyProtection:i.normalProtection,a=Math.ceil(r*e);return a>=n.armorCount&&(a=n.armorCount),a<=0?{saved:0,remainingArmor:n.armorCount}:{saved:a,remainingArmor:n.armorCount-a}}function Kk(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if($t(t,258))return{saved:0,remainingCells:r.cellCount};if(!r.type||r.cellCount<=0)return{saved:0,remainingCells:r.cellCount};let{forward:s}=j(r.angles),o={x:n.x-r.origin.x,y:n.y-r.origin.y,z:n.z-r.origin.z},l=Math.hypot(o.x,o.y,o.z);if(r.type==="screen"&&l>0){let v={x:o.x/l,y:o.y/l,z:o.z/l};if(v.x*s.x+v.y*s.y+v.z*s.z<=.3)return{saved:0,remainingCells:r.cellCount}}let c=a.ctfMode??!1,u=r.type==="screen"||c?1:2,m=r.type==="screen"?e/3:2*e/3;m=Math.max(1,m);let d=r.cellCount*u;$t(t,4)&&(d=Math.max(1,Math.floor(d/2))),d>m&&(d=Math.floor(m));let f=d/u;$t(t,4)&&(f*=2),f=Math.max(1,Math.floor(f));let g=Math.max(u,f),p=Math.max(0,r.cellCount-g);return{saved:d,remainingCells:p}}var _n,Nh,zh=gn({"src/combat/armor.ts"(){"use strict";U(),Lh(),_n=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(_n||{}),Nh={jacket:{baseCount:25,maxCount:50,normalProtection:.3,energyProtection:0},combat:{baseCount:50,maxCount:100,normalProtection:.6,energyProtection:.3},body:{baseCount:100,maxCount:200,normalProtection:.8,energyProtection:.6}}}});function Oh(e,t){return e.ownedWeapons.has(t)?(e.currentWeapon=t,!0):!1}var ke,qt=gn({"src/inventory/playerInventory.ts"(){"use strict";vn(),U(),zh(),ke=(e=>(e.Blue="key_blue",e.Red="key_red",e.Green="key_green",e.Yellow="key_yellow",e.DataCD="key_data_cd",e.PowerCube="key_power_cube",e.ExplosiveCharges="key_explosive_charges",e.PowerCore="key_power_core",e.Pyramid="key_pyramid",e.DataSpinner="key_data_spinner",e.Pass="key_pass",e.CommanderHead="key_commander_head",e.Airstrike="key_airstrike",e.NukeContainer="key_nuke_container",e.Nuke="key_nuke",e.RedFlag="key_red_flag",e.BlueFlag="key_blue_flag",e))(ke||{})}});function Ih(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var ih,Ch=gn({"src/combat/weapons/state.ts"(){"use strict";ih=(e=>(e[e.WEAPON_READY=0]="WEAPON_READY",e[e.WEAPON_ACTIVATING=1]="WEAPON_ACTIVATING",e[e.WEAPON_DROPPING=2]="WEAPON_DROPPING",e[e.WEAPON_FIRING=3]="WEAPON_FIRING",e))(ih||{})}}),Ph={};G5(Ph,{ChangeWeapon:()=>Xk,NoAmmoWeaponChange:()=>Yk,setInstantSwitch:()=>$k,switchToBestWeapon:()=>Dh});function $k(e){xa=e}function Xk(e,t){if(!e.client)return;let n=e.client;if(n.weaponstate!==2&&t){if(Oh(n.inventory,t),n.weaponstate=1,n.gun_frame=0,xa){n.weaponstate=0,n.weapon_think_time=0;return}n.weapon_think_time=0}}function Yk(e){e.client&&Dh(e)}function Dh(e){if(!e.client)return;let t=e.client.inventory,n=null;t.ownedWeapons.has(V.BFG10K)&&t.ammo.counts[I.Cells]>=50?n=V.BFG10K:t.ownedWeapons.has(V.RocketLauncher)&&t.ammo.counts[I.Rockets]>=1?n=V.RocketLauncher:t.ownedWeapons.has(V.Railgun)&&t.ammo.counts[I.Slugs]>=1?n=V.Railgun:t.ownedWeapons.has(V.Chaingun)&&t.ammo.counts[I.Bullets]>=1?n=V.Chaingun:t.ownedWeapons.has(V.SuperShotgun)&&t.ammo.counts[I.Shells]>=2?n=V.SuperShotgun:t.ownedWeapons.has(V.Machinegun)&&t.ammo.counts[I.Bullets]>=1?n=V.Machinegun:t.ownedWeapons.has(V.Shotgun)&&t.ammo.counts[I.Shells]>=1?n=V.Shotgun:n=V.Blaster,n&&n!==t.currentWeapon&&(Oh(t,n),e.client.weaponstate=1,e.client.gun_frame=0,xa&&(e.client.weaponstate=0),e.client.weapon_think_time=0)}var xa,qk=gn({"src/combat/weapons/switching.ts"(){"use strict";qt(),vn(),xa=!1}});U();qt();vn();var jk={...W};var p7=Object.freeze({aiflags:0,last_sighting:jk,trail_time:0,pausetime:0});var Rc=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"killtarget",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"pathtarget",type:"string",save:!0},{name:"model",type:"string",save:!0},{name:"item",type:"string",save:!0},{name:"map",type:"string",save:!0},{name:"inventory",type:"inventory",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"pos1",type:"vec3",save:!0},{name:"pos2",type:"vec3",save:!0},{name:"viewheight",type:"int",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"absmin",type:"vec3",save:!0},{name:"absmax",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"movedir",type:"vec3",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"spawn_count",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"speed",type:"float",save:!0},{name:"accel",type:"float",save:!0},{name:"decel",type:"float",save:!0},{name:"height",type:"float",save:!0},{name:"deadflag",type:"int",save:!0},{name:"count",type:"int",save:!0},{name:"wait",type:"float",save:!0},{name:"delay",type:"float",save:!0},{name:"random",type:"float",save:!0},{name:"timestamp",type:"float",save:!0},{name:"lip",type:"int",save:!0},{name:"state",type:"int",save:!0},{name:"style",type:"int",save:!0},{name:"sounds",type:"int",save:!0},{name:"noise_index",type:"int",save:!0},{name:"attenuation",type:"float",save:!0},{name:"volume",type:"float",save:!0},{name:"fly_sound_debounce_time",type:"float",save:!0},{name:"last_move_time",type:"float",save:!0},{name:"damage_debounce_time",type:"float",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"target_ent",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"search_time",type:"float",save:!0},{name:"attack_finished_time",type:"float",save:!0},{name:"pain_finished_time",type:"float",save:!0},{name:"pain_debounce_time",type:"float",save:!0},{name:"trail_time",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"blocked",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1},{name:"postthink",type:"callback",save:!1},{name:"beam",type:"entity",save:!0},{name:"beam2",type:"entity",save:!0}];U();U();U();U();var Zk=20,Jk=440,Qk=940,sc=32,eE=1<<24,pa=1;U();U();function rh(e){return{mins:{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},maxs:{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}}}function jt(e,t){let n=rh(e),i=rh(t),r=W5(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function tE(e){return e<=Zk?"melee":e<=Jk?"near":e<=Qk?"mid":"far"}function Zi(e,t){let{forward:n}=j(e.angles),i=G(P(t.origin,e.origin)),r=bc(i,n);return(e.spawnflags&pa)!==0&&e.trail_time===0&&e.enemy===null?r>.15:r>-.3}function pn(e,t,n,i){if((t.flags&eE)!==0)return!1;let r={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},a={x:t.origin.x,y:t.origin.y,z:t.origin.z+t.viewheight},s=i?.throughGlass?1:3,o=n(r,null,null,a,e,s);return o.fraction===1||o.ent===t}U();function nE(e,t){let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=nr(n)}function Fh(e){e.angles.y=dc(e.ideal_yaw)}function iE(e,t,n){e.enemy&&(e.goalentity=e.enemy,nE(e,e.enemy),Fh(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function rE(e,t,n,i){if(!e.enemy)return;(e.enemy.svflags&8)!==0&&(t.sightEntity=e,t.sightEntityFrame=t.frameNumber,e.light_level=128),e.show_hostile=t.timeSeconds+1;let r=e.monsterinfo.last_sighting;if(r.x=e.enemy.origin.x,r.y=e.enemy.origin.y,r.z=e.enemy.origin.z,e.trail_time=t.timeSeconds,e.monsterinfo.trail_time=t.timeSeconds,!e.combattarget){iE(e,t,n);return}let a=i?.pickTarget,s=a?.(e.combattarget)??e.enemy;e.goalentity=s,e.movetarget=s,e.combattarget=void 0,e.monsterinfo.aiflags|=4096,e.movetarget&&(e.movetarget.targetname=void 0),e.monsterinfo.pausetime=0,e.monsterinfo.run?.(e,n)}function aE(e,t,n,i){let r=jt(e,t),a=tE(r);return a==="far"||t.light_level<=5||!pn(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||Zi(e,t):a==="mid"?Zi(e,t):!0}function sE(e,t,n,i,r){if((e.spawnflags&pa)!==0){if(!pn(e,t,r))return!1}else if(i.canHear&&!i.canHear(e,t))return!1;let a=P(t.origin,e.origin);return Ge(a)>1e3||i.areasConnected&&!i.areasConnected(e,t)?!1:(e.ideal_yaw=nr(a),Fh(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function oE(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&pa)===0?t.sightEntity.enemy!==e.enemy?{candidate:t.sightEntity,heardit:!1}:{candidate:null,heardit:!1}:t.soundEntity&&t.soundEntityFrame>=t.frameNumber-1?{candidate:t.soundEntity,heardit:!0}:!e.enemy&&t.sound2Entity&&t.sound2EntityFrame>=t.frameNumber-1&&(e.spawnflags&pa)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function cE(e){return(e.flags&sc)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&sc)!==0:!!(e.enemy&&(e.enemy.flags&sc)!==0)}function Lc(e,t,n,i,r={}){if((e.monsterinfo.aiflags&256)!==0)return e.goalentity?.classname==="target_actor",!1;if((e.monsterinfo.aiflags&4096)!==0)return!1;let{candidate:a,heardit:s}=oE(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(cE(a))return!1;if(s){if(!sE(e,a,t,r,i))return!1}else{if(!aE(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return rE(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}function Uh(e,t){if(t===0)return{x:0,y:0,z:0};let n=ga(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function Ta(e,t,n){let i=Uh(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function ei(e,t){let n=dc(e.angles.y),i=e.ideal_yaw;if(n===i){e.angles.y=n;return}let r=e.yaw_speed*t*10,a=i-n;i>n?a>=180&&(a-=360):a<=-180&&(a+=360),a>r?a=r:a<-r&&(a=-r),e.angles.y=dc(n+a)}function _(e,t){Ta(e,e.angles.y,t)}function Ma(e,t){if(!t)return;let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=nr(n)}function R(e,t,n){Lc(e,n.targetAwareness,n,n.trace)||ei(e,t)}function z(e,t,n,i){if(!Lc(e,i.targetAwareness,i,i.trace)&&(Ma(e,e.goalentity),ei(e,n),t!==0&&Ta(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&jt(e,e.goalentity)<64&&e.goalentity.target)){let a=i.pickTarget(e.goalentity.target);a&&(e.goalentity=a,e.ideal_yaw=e.angles.y)}}function ae(e,t,n){t!==0&&Ta(e,e.angles.y,t),(e.monsterinfo.aiflags&32768)===0&&ei(e,n)}function oe(e,t,n,i){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,i);return}Lc(e,i.targetAwareness,i,i.trace),(e.monsterinfo.aiflags&32768)===0&&Ma(e,e.enemy??e.goalentity),ei(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Bh(e,e.angles.y,t,i)}function lE(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&Ma(e,t),ei(e,i),n!==0&&Ta(e,e.angles.y,n)}function ue(e,t,n,i){(e.monsterinfo.aiflags&32768)===0&&Ma(e,e.enemy),ei(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Bh(e,e.angles.y,t,i)}function uE(e,t){if(e.movetype===1)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.mins.z-1},i=t.trace(e.origin,e.mins,e.maxs,n,e,ji);if(e.groundentity=i.ent,!e.groundentity&&!i.allsolid&&!i.startsolid&&i.fraction===1){let r=t.pointcontents(n);r&yh?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function dE(e,t){let n={x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},i={x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z},r={x:0,y:0,z:0},a={x:0,y:0,z:0};for(let s=0;s<2;s++)if(s===1?r={x:n.x,y:n.y,z:0}:r={x:i.x,y:n.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,ji).fraction<1)||(s===1?r={x:n.x,y:i.y,z:0}:r={x:i.x,y:i.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0)||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,ji).fraction<1))return!0;return!1}function Bh(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=Uh(t,n);(e.monsterinfo.aiflags&1024)!==0&&e.monsterinfo.aiflags&1073741824;let a={x:e.origin.x+r.x,y:e.origin.y+r.y,z:e.origin.z+r.z};if(i.trace(e.origin,e.mins,e.maxs,a,e,ji).fraction<1)return!1;let o={...e.origin};return e.origin.x=a.x,e.origin.y=a.y,e.origin.z=a.z,(e.flags&3)===0&&e.movetype!==1&&!dE(e,i)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&uE(e,i),!0)}U();U();var mE=Rc.filter(e=>e.save||e.type==="callback"),y7=new Map(mE.map(e=>[e.name,e]));U();U();zh();Lh();U();function hE(e,t){if(!e)return 1;let n=e.client;if(!n)return 1;let i=1;return n.quad_time&&n.quad_time>t&&(i*=4),n.double_time&&n.double_time>t&&(i*=2),i}function fE(e,t,n,i,r){if($t(r,8)||((e.flags??0)&4)!==0||i===0)return{x:0,y:0,z:0};let s=Math.max(50,e.mass??200),o=G(n),c=D(o,(t===e?1600:500)*i/s);return e.velocity=F(e.velocity,c),c}function _E(e,t,n,i,r){let a=i,s=0,o=0,l,c;if(e.powerArmor){let u=Kk(i,r,t,n,e.powerArmor);s=u.saved,l=u.remainingCells,a-=s}if(e.regularArmor){let u=Wk(a,r,e.regularArmor);o=u.saved,c=u.remainingArmor,a-=o}return[Math.max(0,a),s,o,l,c]}function ah(e){return e.mins&&e.maxs?{x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5}:e.origin}function fe(e,t,n,i,r,a,s,o,l,c,u,m){if(!e.takedamage)return null;let d=hE(n,u),f=s*d,g=o*d;if(!$t(l,32)&&((e.flags??0)&1)!==0&&f>0)return{take:0,psave:0,asave:f,knocked:{x:0,y:0,z:0},killed:!1};let v=fE(e,n,i,g,l),[w,L,k,y,E]=_E(e,r,a,f,l);e.monsterinfo&&e.monsterinfo.freeze_time>u&&f>0&&(w=e.health+100,L=0,k=0),e.powerArmor&&y!==void 0&&(e.powerArmor.cellCount=y),e.regularArmor&&(e.regularArmor.armorCount=E??e.regularArmor.armorCount);let x=w;x>0&&(e.health-=x,m&&!$t(l,1024)&&(e.classname==="player"||e.monsterinfo)&&m(r,1,se.temp_entity,we.BLOOD,r,a));let T=e.health<=0;return T?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,x,r,c):x>0&&e.pain&&e.pain(e,n,o,x,c),{take:x,psave:L,asave:k,knocked:v,killed:T,remainingCells:y,remainingArmor:E}}function Nc(e,t,n,i,r,a,s,o,l,c={},u){let m=[],d=ah(t),f=c.canDamage??(()=>!0);for(let g of e){if(g===r||!g.takedamage||!f(g,t))continue;let p=g.mins&&g.maxs?V5(d,F(g.origin,g.mins),F(g.origin,g.maxs)):ah(g),v=P(d,p),w=Ge(v);if(a>0&&w>a)continue;let L=i-.5*w;if(L<=0)continue;let k=g===n?L*.5:L,y=G(P(g.origin,d)),E=fe(g,t,n,y,p,y,k,k,s|1,o,l,u);m.push({target:g,result:E,appliedDamage:k})}return m}var w7=ir();U();U();U();function Gh(e,t,n,i,r,a,s,o=0){let l=e.spawn();l.classname="rocket",l.movetype=8,l.solid=2,l.owner=t,l.origin={...n},l.velocity={x:i.x*s,y:i.y*s,z:i.z*s},l.mins={x:-4,y:-4,z:-4},l.maxs={x:4,y:4,z:4},l.touch=(c,u,m,d)=>{if(u===c.owner)return;u&&u.takedamage&&fe(u,c,c.owner,c.velocity,c.origin,m?m.normal:W,r,0,0,8,e.timeSeconds,e.multicast.bind(e));let f=e.findByRadius(c.origin,120);Nc(f,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,se.temp_entity,we.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(l)}function zc(e,t,n,i,r,a,s=2.5){let o=e.spawn();o.classname="grenade",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=9,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("models/objects/grenade/tris.md2"),o.mins={x:-4,y:-4,z:-4},o.maxs={x:4,y:4,z:4},o.avelocity={x:300,y:300,z:300};let l=c=>{let u=e.findByRadius(c.origin,120);Nc(u,c,c.owner,r,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,se.temp_entity,we.GRENADE_EXPLOSION,c.origin),e.free(c)};o.touch=(c,u,m,d)=>{if(u!==c.owner){if(u&&u.takedamage){l(c);return}c.groundentity||e.sound(c,0,"weapons/grenlb1b.wav",1,1,0)}},o.think=c=>{l(c)},e.scheduleThink(o,e.timeSeconds+s),e.finalizeSpawn(o)}function rr(e,t,n,i,r,a,s){let o=e.spawn();return s===10?o.classname="hyperblaster_bolt":s===58?(o.classname="blueblaster_bolt",o.modelindex=e.modelIndex("models/objects/laser/tris.md2"),o.skin=1):o.classname="blaster_bolt",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.solid=2,o.mins={x:-2,y:-2,z:-2},o.maxs={x:2,y:2,z:2},o.touch=(l,c,u,m)=>{if(c!==l.owner){if(c&&c.takedamage)fe(c,l,l.owner,l.velocity,l.origin,u?u.normal:W,r,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(u){let d=we.BLASTER;s===58&&(d=we.BLUEHYPERBLASTER),e.multicast(l.origin,1,se.temp_entity,d,l.origin,u.normal)}e.free(l)}},e.finalizeSpawn(o),o}function gE(e,t,n,i,r,a){let s=e.spawn();s.classname="ionripper",s.owner=t,s.origin={...n},s.velocity={x:i.x*a,y:i.y*a,z:i.z*a},s.movetype=10,s.solid=2,s.modelindex=e.modelIndex("models/objects/boomrang/tris.md2"),s.mins={x:-2,y:-2,z:-2},s.maxs={x:2,y:2,z:2},s.touch=(o,l,c,u)=>{if(l!==o.owner){if(l&&l.takedamage){fe(l,o,o.owner,o.velocity,o.origin,c?c.normal:W,r,1,4,35,e.timeSeconds,e.multicast.bind(e)),e.free(o);return}if(o.count=(o.count||0)+1,o.count>5){e.multicast(o.origin,1,se.temp_entity,we.WELDING_SPARKS,o.origin,W,228),e.free(o);return}e.sound(o,0,"weapons/ripphit.wav",1,1,0),c&&e.multicast(o.origin,1,se.temp_entity,we.WELDING_SPARKS,o.origin,c.normal,228)}},s.think=o=>{e.multicast(o.origin,1,se.temp_entity,we.WELDING_SPARKS,o.origin,W,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function vE(e,t,n,i,r,a){rr(e,t,n,i,r,a,58)}function pE(e,t,n,i){let r={...t.origin},a={x:(n.absmin.x+n.absmax.x)*.5,y:(n.absmin.y+n.absmax.y)*.5,z:(n.absmin.z+n.absmax.z)*.5},s=G(P(a,r)),o={x:r.x+s.x*2048,y:r.y+s.y*2048,z:r.z+s.z*2048},l=16,c=[],u=[],m={...r};try{for(let f=0;f<l;f++){let g=e.trace(m,null,null,o,t,De|Kt|fn|qi);if(!g.ent||g.fraction>=1||(g.ent.takedamage&&g.ent!==t.owner&&fe(g.ent,t,t.owner,s,g.endpos,W,i,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(g.ent.svflags&4)&&!g.ent.client&&g.ent.classname!=="misc_explobox"))break;c.push(g.ent),u.push(g.ent.solid),g.ent.solid=0,m={...g.endpos}}let d=e.trace(r,null,null,o,t,De);e.multicast(t.origin,2,se.temp_entity,we.BFG_LASER,r,d.endpos)}finally{for(let d=0;d<c.length;d++)c[d].solid=u[d]}}function yE(e,t){let n=t.deathmatch?5:10,i=t.findByRadius(e.origin,256);for(let r of i){if(r===e||r===e.owner||!r.takedamage||!(r.svflags&4)&&!r.client&&r.classname!=="misc_explobox")continue;let a={x:(r.absmin.x+r.absmax.x)*.5,y:(r.absmin.y+r.absmax.y)*.5,z:(r.absmin.z+r.absmax.z)*.5};t.trace(e.origin,null,null,a,null,Mc).fraction<1||pE(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function wE(e,t){if((e.frame===void 0||e.frame<0)&&(e.frame=0),e.frame===0){let n=t.findByRadius(e.origin,e.dmg_radius||100);for(let i of n){if(!i.takedamage||i===e.owner||!(i.svflags&4)&&!i.client&&i.classname!=="misc_explobox")continue;let r={x:(i.absmin.x+i.absmax.x)*.5,y:(i.absmin.y+i.absmax.y)*.5,z:(i.absmin.z+i.absmax.z)*.5},a=P(e.origin,r),s=Ge(a),o=e.dmg_radius||100,l=(e.radius_dmg||200)*(1-Math.sqrt(s/o));l>0&&fe(i,e,e.owner,e.velocity,r,W,Math.floor(l),0,4,14,t.timeSeconds,t.multicast.bind(t))}}if(e.frame++,e.frame>=5){t.free(e);return}t.scheduleThink(e,t.timeSeconds+.1)}function Hh(e,t,n,i,r,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("sprites/s_bfg1.sp2"),o.svflags=128,o.radius_dmg=r,o.dmg_radius=s,o.mins={x:-10,y:-10,z:-10},o.maxs={x:10,y:10,z:10},o.touch=(l,c,u,m)=>{if(c===l.owner)return;c&&c.takedamage&&fe(c,l,l.owner,l.velocity,l.origin,u?u.normal:W,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let d=e.findByRadius(l.origin,100);Nc(d,l,l.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(l.origin,2,se.temp_entity,we.BFG_BIGEXPLOSION,l.origin),l.solid=0,l.touch=void 0,l.velocity=W,l.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),l.frame=0,l.enemy=c,l.think=(f,g)=>wE(f,g),e.scheduleThink(l,e.timeSeconds+.1)},o.think=(l,c)=>yE(l,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}U();var A7=1/40;vn();qt();Ch();qt();var AE=1;qt();Ch();qt();vn();U();U();var SE=22;function _t(e,t,n,i,r,a){let s=Jn(t.origin),o={...s,z:s.z+(t.viewheight??SE)},l=D(i,n.x),c=D(r,n.y),u=D(a,n.z),m=F(F(F(o,l),c),u),d=e.trace(o,null,null,m,t,Mc);return d.fraction<1?{x:d.endpos.x-i.x,y:d.endpos.y-i.y,z:d.endpos.z-i.z}:m}var kE=7,EE=18,bE=36,xE=39,TE=5,ME=28,RE=52,LE=57,NE=3,zE=23,OE=52,IE=61,CE=5,PE=21,DE=52,FE=61,UE=3,BE=18,GE=51,HE=56,VE=3,WE=12,KE=34,$E=38,XE=6,YE=9,qE=28,jE=32,ZE=8,JE=32,QE=54,eb=58,tb=5,nb=16,ib=36,rb=39,ab=4,sb=8,ob=52,cb=55;var lb=46,ub=53;var db=109,mb=117;var hb=1;var Xt=ir();function gt(e,t,n=0,i=0){e.client&&(e.client.kick_angles={x:t,y:n,z:0},e.client.kick_origin={x:i,y:0,z:0})}function vt(e){if(!e.client)return;let t=(e.client.pm_flags&2)!==0;e.client.anim_priority=hb,t?(e.frame=db-1,e.client.anim_end=mb):(e.frame=lb-1,e.client.anim_end=ub)}function Vh(e,t,n,i,r,a,s){let o={x:n.x+i.x*8192,y:n.y+i.y*8192,z:n.z+i.z*8192},l=e.trace(n,null,null,o,t,0);l.ent&&l.ent.takedamage?fe(l.ent,t,t,W,l.endpos,l.plane?l.plane.normal:W,r,a,16,s,e.time,e.multicast):l.plane&&e.multicast(l.endpos,1,se.temp_entity,we.GUNSHOT,l.endpos,l.plane.normal)}function mc(e,t,n,i,r,a,s,o,l,c,u,m){for(let d=0;d<s;d++){let f=F(D(r,Xt.crandom()*c),D(a,Xt.crandom()*u)),g=F(i,f),p={x:n.x+g.x*8192,y:n.y+g.y*8192,z:n.z+g.z*8192},v=e.trace(n,null,null,p,t,0);v.ent&&v.ent.takedamage?fe(v.ent,t,t,W,v.endpos,v.plane?v.plane.normal:W,o,l,16,m,e.time,e.multicast):v.plane&&Xt.frandom()>.9&&e.multicast(v.endpos,1,se.temp_entity,we.GUNSHOT,v.endpos,v.plane.normal)}}function fb(e,t,n,i,r,a){let s={...n},o={...n},l={x:n.x+i.x*8192,y:n.y+i.y*8192,z:n.z+i.z*8192},c=t,u=0,m=l;for(;u<16;){u++;let d=e.trace(o,null,null,l,c,0);if(m=d.endpos,d.fraction>=1||(d.ent&&d.ent.takedamage&&fe(d.ent,t,t,W,d.endpos,d.plane?d.plane.normal:W,r,a,4,11,e.time,e.multicast),c=d.ent,o=d.endpos,!d.ent||d.ent===e.entities.world))break}e.multicast(s,2,se.temp_entity,we.RAILTRAIL,s,m)}function _b(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Shells]<1)return;n.ammo.counts[I.Shells]--,e.multicast(t.origin,1,se.muzzleflash,t.index,Sh),gt(t,-2,0,-2),vt(t);let{forward:i,right:r,up:a}=j(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a);mc(e,t,s,i,r,a,12,4,1,500,500,2)}function gb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Shells]<2)return;n.ammo.counts[I.Shells]-=2,e.multicast(t.origin,1,se.muzzleflash,t.index,Th),gt(t,-4,0,-4),vt(t);let{forward:i,right:r,up:a}=j(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a),{forward:o,right:l,up:c}=j({...t.angles,y:t.angles.y-5});mc(e,t,s,o,l,c,10,6,1,700,700,3);let{forward:u,right:m,up:d}=j({...t.angles,y:t.angles.y+5});mc(e,t,s,u,m,d,10,6,1,700,700,3)}function vb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Bullets]<1)return;n.ammo.counts[I.Bullets]--,e.multicast(t.origin,1,se.muzzleflash,t.index,Ah),gt(t,-1,Xt.crandom()*.5,0),vt(t);let{forward:i,right:r,up:a}=j(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a);Vh(e,t,s,i,8,1,4)}function pb(e,t){if(!t.client)return;let n=t.client.inventory,i=Ih(t.client.weaponStates,V.Chaingun);e.time-i.lastFireTime>200&&(i.spinupCount=0);let r=(i.spinupCount||0)+1;i.spinupCount=r;let a;if(r<=5?(a=1,r===1&&e.sound(t,0,"weapons/chngnu1a.wav",1,0,0)):(r<=10?a=2:a=3,e.sound(t,0,"weapons/chngnl1a.wav",1,0,0)),n.ammo.counts[I.Bullets]<a&&(a=n.ammo.counts[I.Bullets]),a===0)return;n.ammo.counts[I.Bullets]-=a;let s=e.deathmatch?6:8,o=1;gt(t,-.5,Xt.crandom()*(.5+a*.15),0),vt(t);let{forward:l,right:c,up:u}=j(t.angles),m=_t(e,t,{x:8,y:8,z:-8},l,c,u);for(let f=0;f<a;f++){let g=F(D(c,Xt.crandom()*4),D(u,Xt.crandom()*4)),p=F(l,g);Vh(e,t,m,p,s,o,5)}let d=kh+a-1;e.multicast(t.origin,1,se.muzzleflash,t.index,d)}function yb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Slugs]<1)return;n.ammo.counts[I.Slugs]--,e.multicast(t.origin,1,se.muzzleflash,t.index,Eh),gt(t,-3,0,-3),vt(t);let{forward:i,right:r,up:a}=j(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?100:125,l=e.deathmatch?200:225;fb(e,t,s,i,o,l)}function wb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Cells]<1)return;n.ammo.counts[I.Cells]--,e.multicast(t.origin,1,se.muzzleflash,t.index,Rh),gt(t,-.5,0,0),vt(t);let{forward:i,right:r,up:a}=j(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?15:20;rr(e.entities,t,s,i,o,1e3,10)}function Ab(e,t){if(!t.client)return;e.multicast(t.origin,1,se.muzzleflash,t.index,wh),gt(t,-.5,0,0),vt(t);let{forward:n,right:i,up:r}=j(t.angles),a=_t(e,t,{x:8,y:8,z:-8},n,i,r);rr(e.entities,t,a,n,15,1500,1)}function Sb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Rockets]<1)return;n.ammo.counts[I.Rockets]--,e.multicast(t.origin,1,se.muzzleflash,t.index,bh),gt(t,-2,0,-2),vt(t);let{forward:i,right:r,up:a}=j(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a),o=100+e.random.irandom(21);Gh(e.entities,t,s,i,o,120,650)}function kb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Grenades]<1)return;n.ammo.counts[I.Grenades]--,e.multicast(t.origin,1,se.muzzleflash,t.index,xh),gt(t,-2,0,-2),vt(t);let{forward:i,right:r,up:a}=j(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a);zc(e.entities,t,s,i,120,600)}function Eb(e,t){if(!t.client)return;let n=t.client.inventory,i=t.client.gun_frame,r=i===9||i===0||i===void 0,a=i===22||i===0||i===void 0;if(r){if(n.ammo.counts[I.Cells]<50)return;n.ammo.counts[I.Cells]-=50,e.sound(t,0,"weapons/bfg__f1y.wav",1,0,0)}if(a){e.multicast(t.origin,1,se.muzzleflash,t.index,Mh),gt(t,-5,0,-2),vt(t);let{forward:s,right:o,up:l}=j(t.angles),c=_t(e,t,{x:8,y:8,z:-8},s,o,l),u=e.deathmatch?200:500;Hh(e.entities,t,c,s,u,400,200)}}function dn(e){let t=.1;return e.client?.inventory.powerups.has(ie.TechHaste)&&(t*=.5),e.client?.inventory.powerups.has(ie.QuadFire)&&(t*=.25),t}function Lt(e,t,n,i,r,a,s,o,l){if(!e.client)return;let c=e.client,u=l.timeSeconds;if(c.weapon_think_time&&c.weapon_think_time<=u&&(c.weapon_think_time=0),!(c.weapon_think_time&&c.weapon_think_time>u)){if(c.weaponstate===1){if(c.gun_frame<t){c.gun_frame++,c.weapon_think_time=u+dn(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=u+dn(e);return}if(c.weaponstate===2){if(c.gun_frame<r){c.gun_frame++,c.weapon_think_time=u+dn(e);return}Promise.resolve().then(()=>(qk(),Ph)).then(({ChangeWeapon:m})=>{m(e)});return}if(c.weaponstate===0){if(c.buttons&1){c.weaponstate=3,c.gun_frame=t+1;return}if(c.gun_frame<i){if(c.gun_frame++,c.weapon_think_time=u+dn(e),a){for(let m of a)if(c.gun_frame===m&&Xt.frandom()<.5)return}return}c.gun_frame=n+1,c.weapon_think_time=u+dn(e);return}if(c.weaponstate===3){if(s){for(let m of s)if(c.gun_frame===m){o&&o(e);break}}if(c.gun_frame<n){c.gun_frame++,c.weapon_think_time=u+dn(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=u+dn(e);return}}}function Wh(e,t,n,i,r,a,s,o){if(!e.client)return;let l=e.client;l.weaponstate===3?(l.gun_frame===n||l.gun_frame===i?l.gun_frame=t:l.gun_frame++,s&&s(e),l.buttons&1||(l.gun_frame=i+1,l.weaponstate=0)):Lt(e,t-1,n,i,r,null,null,s,o)}function bb(e,t){let n=Ih(e.client.weaponStates,V.Chaingun);!(e.client.buttons&AE)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0),Wh(e,CE,PE,DE,FE,0,i=>pb(t.game,i),t)}var xb=[22,28,34],Tb=[8];function Mb(e,t){Lt(e,kE,EE,bE,xE,xb,Tb,n=>_b(t.game,n),t)}var Rb=[29,42,57],Lb=[22,28];function Nb(e,t){Lt(e,TE,ME,RE,LE,Rb,Lb,n=>gb(t.game,n),t)}var zb=[23,45],Ob=[4,5,30,31];function Ib(e,t){Lt(e,NE,zE,OE,IE,zb,Ob,n=>vb(t.game,n),t)}var Cb=[25,33],Pb=[4];function Db(e,t){Lt(e,VE,WE,KE,$E,Cb,Pb,n=>Sb(t.game,n),t)}function Fb(e,t){Wh(e,XE,YE,qE,jE,0,n=>wb(t.game,n),t)}var Ub=[56],Bb=[4];function Gb(e,t){Lt(e,UE,BE,GE,HE,Ub,Bb,n=>yb(t.game,n),t)}var Hb=[39,45,50,54],Vb=[9,22];function Wb(e,t){Lt(e,ZE,JE,QE,eb,Hb,Vb,n=>Eb(t.game,n),t)}var Kb=[34,51,59],$b=[6];function Xb(e,t){Lt(e,tb,nb,ib,rb,Kb,$b,n=>kb(t.game,n),t)}var Yb=[19,32],qb=[5];function jb(e,t){Lt(e,ab,sb,ob,cb,Yb,qb,n=>Ab(t.game,n),t)}var S7={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:V.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5,think:jb},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:V.Shotgun,ammoType:I.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Mb},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:V.SuperShotgun,ammoType:I.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Nb},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:V.Machinegun,ammoType:I.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Ib},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:V.Chaingun,ammoType:I.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:bb},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:V.HandGrenade,ammoType:I.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:V.GrenadeLauncher,ammoType:I.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Xb},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:V.RocketLauncher,ammoType:I.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1,think:Db},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:V.HyperBlaster,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Fb},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:V.Railgun,ammoType:I.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5,think:Gb},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:V.BFG10K,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1,think:Wb},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:V.IonRipper,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:V.Phalanx,ammoType:I.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:V.PlasmaBeam,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:V.EtfRifle,ammoType:I.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:V.ProxLauncher,ammoType:I.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};vn();vn();U();U();var Ke=ir(),Wt=0;function Kh(e){let t=100*Ke.crandom(),n=100*Ke.crandom(),i=200+100*Ke.frandom();return e<50?(t*=.7,n*=.7,i*=.7):(t*=1.2,n*=1.2,i*=1.2),{x:t,y:n,z:i}}function $h(e){let{x:t,y:n,z:i}=e.velocity;t<-300?t=-300:t>300&&(t=300),n<-300?n=-300:n>300&&(n=300),i<200?i=200:i>500&&(i=500),e.velocity={x:t,y:n,z:i}}function Xh(e,t,n,i,r){e.groundentity&&(e.touch=void 0,n&&r.sound(e,0,"misc/fhit3.wav",1,1,0))}function mn(e,t,n,i,r=Wt){let a=e.spawn();a.classname="gib",a.origin={x:t.x+Ke.crandom()*20,y:t.y+Ke.crandom()*20,z:t.z+Ke.crandom()*20};let s=i||"models/objects/gibs/sm_meat/tris.md2";a.modelindex=e.modelIndex(s),a.mins={x:-2,y:-2,z:-2},a.maxs={x:2,y:2,z:2},a.solid=0,a.takedamage=!0,a.die=(c,u,m,d,f,g)=>{e.free(c)},a.clipmask=1;let o=1;r===Wt?(a.movetype=7,a.touch=(c,u,m,d)=>Xh(c,u,m,d,e),o=.5):(a.movetype=9,o=1);let l=Kh(n);return a.velocity={x:l.x*o,y:l.y*o,z:l.z*o},$h(a),a.avelocity={x:Ke.frandom()*600,y:Ke.frandom()*600,z:Ke.frandom()*600},a.think=c=>{e.free(c)},e.scheduleThink(a,e.timeSeconds+10+Ke.frandom()*10),e.finalizeSpawn(a),a}function Zb(e,t,n){let i=e.spawn(),r;Ke.irandom(2)===1?(r="models/objects/gibs/head2/tris.md2",i.skin=1):(r="models/objects/gibs/skull/tris.md2",i.skin=0),i.frame=0,i.modelindex=e.modelIndex(r),i.mins={x:-16,y:-16,z:0},i.maxs={x:16,y:16,z:16},i.origin={x:t.x,y:t.y,z:t.z+32},i.solid=0,i.takedamage=!0,i.die=(o,l,c,u,m,d)=>{e.free(o)};let a=.5;i.movetype=7,i.touch=(o,l,c,u)=>Xh(o,l,c,u,e);let s=Kh(n);return i.velocity={x:s.x*a,y:s.y*a,z:s.z*a},$h(i),i.avelocity={x:0,y:Ke.crandom()*600,z:0},i.think=o=>{e.free(o)},e.scheduleThink(i,e.timeSeconds+10+Ke.frandom()*10),e.finalizeSpawn(i),i}function Yh(e,t,n){if(typeof n=="number"){let i=n;mn(e,t,i,"models/objects/gibs/sm_meat/tris.md2",Wt),mn(e,t,i,"models/objects/gibs/sm_meat/tris.md2",Wt),mn(e,t,i,"models/objects/gibs/sm_meat/tris.md2",Wt),mn(e,t,i,"models/objects/gibs/sm_meat/tris.md2",Wt),mn(e,t,i,"models/objects/gibs/meat/tris.md2",Wt),mn(e,t,i,"models/objects/gibs/bone/tris.md2",Wt),Zb(e,t,i)}else{let i=n;for(let r of i)for(let a=0;a<r.count;a++)mn(e,t,0,r.model,r.flags)}}U();function Jb(e,t){let n=e.monsterinfo.current_move;if(!n||((e.frame<n.firstframe||e.frame>n.lastframe)&&(e.monsterinfo.aiflags&=-129,e.frame=n.firstframe),(e.monsterinfo.aiflags&128)!==0))return;let i=e.frame-n.firstframe,r=n.frames[i];r.ai&&r.ai(e,r.dist,t),r.think&&r.think(e,t),e.inUse&&(e.frame++,e.frame>n.lastframe&&n.endfunc&&(n.endfunc(e,t),e.monsterinfo.current_move))}function Qb(e,t){Jb(e,t),e.nextthink=t.timeSeconds+.1}var Ra=.1,Yi=80;var qh=ir();function e6(){return qh.frandom()}function jh(e,t){return Math.floor(qh.frandom()*(t-e+1)+e)}function Xn(e,t,n){R(e,Ra,n)}function Qe(e,t,n){z(e,t,Ra,n)}function Vn(e,t,n){oe(e,t,Ra,n)}function pe(e,t,n){ue(e,t,Ra,n)}function q(e,t,n){_(e,t)}var Ji={pain:"berserk/berpain2.wav",die:"berserk/berdeth2.wav",idle:"berserk/beridle1.wav",idle2:"berserk/idle.wav",punch:"berserk/attack.wav",search:"berserk/bersrch1.wav",sight:"berserk/sight.wav",thud:"mutant/thud1.wav",explod:"world/explod2.wav",jump:"berserk/jump.wav",footstep:"misc/step1.wav"};function it(e,t){t.sound(e,2,Ji.footstep,1,1,0)}function ya(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function t6(e,t){}var Oc,Zh,n6,Jh,i6,r6,a6,s6,o6,Qh,c6;function l6(e,t){ya(e,Oc)}function u6(e,t){e.monsterinfo.aiflags&1||e.enemy||e6()>.15||(ya(e,Zh),t.sound(e,1,Ji.idle,1,2,0))}var d6=[{ai:Xn,dist:0,think:u6},{ai:Xn,dist:0},{ai:Xn,dist:0},{ai:Xn,dist:0},{ai:Xn,dist:0}];Oc={firstframe:0,lastframe:4,frames:d6,endfunc:null};var m6=Array.from({length:20},()=>({ai:Xn,dist:0}));Zh={firstframe:5,lastframe:24,frames:m6,endfunc:l6};var h6=[{ai:Qe,dist:9.1},{ai:Qe,dist:6.3},{ai:Qe,dist:4.9},{ai:Qe,dist:6.7,think:it},{ai:Qe,dist:6},{ai:Qe,dist:8.2},{ai:Qe,dist:7.2},{ai:Qe,dist:6.1},{ai:Qe,dist:4.9},{ai:Qe,dist:4.7,think:it},{ai:Qe,dist:4.7}];n6={firstframe:25,lastframe:35,frames:h6,endfunc:null};var f6=[{ai:Vn,dist:21},{ai:Vn,dist:11,think:it},{ai:Vn,dist:21},{ai:Vn,dist:25,think:t6},{ai:Vn,dist:18,think:it},{ai:Vn,dist:19}];Jh={firstframe:36,lastframe:41,frames:f6,endfunc:null};function ar(e,t){e.monsterinfo.aiflags&1?ya(e,Oc):ya(e,Jh)}function ef(e,t,n,i,r){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=j(e.angles).forward,o={x:a.x+s.x+t.x,y:a.y+s.y+t.y,z:a.z+s.z+t.z},l={x:a.x+s.x*Yi,y:a.y+s.y*Yi,z:a.z+s.z*Yi},c=r.trace(a,null,null,l,e,536870913);return!c.ent||!c.ent.takedamage?!1:(fe(c.ent,e,e,s,c.endpos,c.plane?.normal||W,n,i,0,0,r.timeSeconds,r.multicast.bind(r)),!0)}function _6(e,t){ef(e,{x:Yi,y:0,z:-24},jh(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function tf(e,t){t.sound(e,1,Ji.punch,1,1,0)}var g6=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:tf},{ai:pe,dist:0,think:_6},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];i6={firstframe:67,lastframe:74,frames:g6,endfunc:ar};function v6(e,t){ef(e,{x:Yi,y:0,z:-4},jh(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var p6=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:it},{ai:pe,dist:0},{ai:pe,dist:0,think:tf},{ai:pe,dist:0},{ai:pe,dist:0,think:v6},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];r6={firstframe:75,lastframe:86,frames:p6,endfunc:ar};function y6(e,t,n,i,r,a){let s=a.findByRadius(e.origin,i);for(let o of s){if(o===e||!o.takedamage)continue;let l=Math.sqrt(Math.pow(o.origin.x-e.origin.x,2)+Math.pow(o.origin.y-e.origin.y,2)+Math.pow(o.origin.z-e.origin.z,2)),c=Math.max(0,1-l/i);if(c<=0)continue;let u=Math.max(1,n*c*c),m=r*c*c,d=G(P(o.origin,e.origin));fe(o,e,t,d,o.origin,d,u,m,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function Ic(e,t){t.sound(e,1,Ji.thud,1,1,0),t.sound(e,2,Ji.explod,.75,1,0);let{forward:n,right:i}=j(e.angles),r={x:20,y:-14.3,z:-21},a={x:e.origin.x+n.x*r.x+i.x*r.y,y:e.origin.y+n.y*r.x+i.y*r.y,z:e.origin.z+n.z*r.x+i.z*r.y+r.z},s=t.trace(e.origin,null,null,a,e,1);t.multicast(s.endpos,2,se.temp_entity,we.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},y6(e,e,8,165,300,t)}function w6(e,t,n,i,r){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,Ic(e,r))}function Cc(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function A6(e,t){if(!e.enemy)return;let n=P(e.enemy.origin,e.origin),r=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=G({x:n.x,y:n.y,z:0}),s=Qn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*r,y:a.y*r,z:450},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3,e.touch=(l,c,u,m)=>{w6(l,c,u,m,t),l.groundentity&&(l.frame=104,Ic(l,t),l.touch=void 0)},Cc(e,t)}function S6(e,t){if(Cc(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(Ic(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var k6=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:q,dist:0,think:A6},{ai:q,dist:0,think:Cc},{ai:q,dist:0,think:S6},{ai:q,dist:0,think:it},{ai:q,dist:0},{ai:q,dist:0,think:it},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0,think:it}];a6={firstframe:87,lastframe:109,frames:k6,endfunc:ar};var E6=[{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0}];s6={firstframe:149,lastframe:152,frames:E6,endfunc:ar};var b6=Array.from({length:20},(e,t)=>({ai:q,dist:0,think:t%5===4?it:void 0}));o6={firstframe:153,lastframe:172,frames:b6,endfunc:ar};function nf(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=Qh.lastframe,e.nextthink=-1,e.deadflag=2}var x6=[{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0,think:it},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0}];Qh={firstframe:173,lastframe:185,frames:x6,endfunc:nf};var T6=[{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0,think:it},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0}];c6={firstframe:186,lastframe:193,frames:T6,endfunc:nf};U();function sh(){return 2*Math.random()-1}function wa(e,t,n,i,r,a,s,o,l,c=0){let u=n;if(a>0||s>0){let f=Qn(n),{right:g,up:p}=j(f),v=sh()*a,w=sh()*s;u={x:n.x+g.x*v+p.x*w,y:n.y+g.y*v+p.y*w,z:n.z+g.z*v+p.z*w},u=G(u)}let m=F(t,D(u,8192)),d=l.trace(t,m,W,W,e,Rt);!d.ent||d.fraction===1||fe(d.ent,e,e,u,d.endpos,d.plane?.normal||W,i,r,18,c,l.timeSeconds)}var Yt=wa;function M6(e,t,n,i,r,a,s,o,l,c,u=2){for(let m=0;m<o;m++)Yt(e,t,n,i,r,a,s,l,c,u)}function pt(e,t,n,i,r,a,s,o,l=1){rr(o,e,t,n,i,r,l)}function R6(e,t,n,i,r,a,s,o){vE(o,e,t,n,i,r)}function L6(e,t,n,i,r,a,s,o){gE(o,e,t,n,i,r)}function N6(e,t,n,i,r,a,s){zc(s,e,t,n,i,r)}function sr(e,t,n,i,r,a,s){Gh(s,e,t,n,i,120,r)}function rf(e,t,n,i,r,a,s,o,l){Hh(l,e,t,n,i,r,s)}function af(e,t,n,i,r,a,s){let o=F(t,D(n,8192)),l=s.trace(t,o,W,W,e,Rt);s.multicast(t,2,se.temp_entity,we.RAILTRAIL,t,l.endpos),l.ent&&l.ent.takedamage&&fe(l.ent,e,e,n,l.endpos,W,i,r,6,11,s.timeSeconds)}function or(e,t,n,i,r){if(!e.enemy)return!1;let{forward:a}=j(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,l=F(s,D(a,o)),c=r.trace(s,l,W,W,e,Rt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let u=G(P(c.endpos,s));return fe(c.ent,e,e,u,c.endpos,c.plane?.normal||W,n,i,0,0,r.timeSeconds),!0}return!1}function z6(e,t,n,i,r,a,s,o){sr(e,t,n,i,r,a,o)}function oh(e,t){let n={...e.origin},i=F(n,D(e.movedir,2048)),r={...n},a=16,s=[],o=[];try{for(let l=0;l<a;l++){let c=t.trace(r,i,W,W,e,De|Kt|fn|qi);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&fe(c.ent,e,e.owner,e.movedir,c.endpos,W,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,se.temp_entity,we.LASER_SPARKS,10,c.endpos,c.plane?.normal||W,e.skin);break}if(c.ent&&(c.ent.takedamage||c.ent.client)){s.push(c.ent),o.push(c.ent.solid),c.ent.solid=0,r={...c.endpos};continue}break}}finally{for(let l=0;l<s.length;l++)s[l].solid=o[l]}t.linkentity(e)}function O6(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function hc(e,t,n,i,r){let a=n?e.beam2:e.beam;(!a||!a.inUse)&&(a=r.spawn(),a.classname="laser_beam",a.movetype=0,a.solid=0,a.renderfx|=8,a.modelindex=1,a.owner=e,a.dmg=t,a.frame=2,a.skin=4076007664,a.think=(s,o)=>{s.postthink&&s.postthink(s,o),o.timeSeconds>=s.timestamp?O6(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{i(s,o),oh(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),oh(a,r)}U();var Pc=.1,I6={x:0,y:30,z:-15},C6={x:0,y:15,z:0},P6={x:0,y:-15,z:0},D6={x:0,y:-30,z:-15},F6={x:30,y:20,z:0},U6={x:30,y:-20,z:0};function B6(e,t,n){R(e,Pc,n)}function G6(e,t,n){z(e,t,Pc,n)}function La(e,t,n){ue(e,t,Pc,n)}function Dc(e,t,n){_(e,t)}var Fc,sf,of,H6,cf,lf,V6,W6,K6,uf;function $6(e){e.monsterinfo.current_move=Fc}function X6(e){e.monsterinfo.current_move=sf}function cr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=of:e.monsterinfo.current_move=Fc}function df(e){e.monsterinfo.current_move=cf}function Y6(e){e.enemy&&Zi(e,e.enemy)&&Math.random()<=.7?df(e):e.monsterinfo.current_move=lf}function fc(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),l=D(r,t.z);return F(F(F(a,s),o),l)}function q6(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=fc(e,F6),i=G(P(e.enemy.origin,n));Yt(e,n,i,6,4,.1,.05,0,t,4);let r=fc(e,U6),a=G(P(e.enemy.origin,r));Yt(e,r,a,6,4,.1,.05,0,t,4)}function j6(e,t){if(!e.enemy)return;let n=[I6,C6,P6,D6],i=n[Math.floor(Math.random()*n.length)],r=fc(e,i),a=G(P(e.enemy.origin,r));sr(e,r,a,50,500,0,t)}function Z6(e){e.monsterinfo.nextframe=uf.lastframe,e.nextthink=-1}var mf=Array.from({length:20},()=>({ai:G6,dist:10}));sf={firstframe:0,lastframe:19,frames:mf,endfunc:X6};of={firstframe:0,lastframe:19,frames:mf,endfunc:cr};var J6=Array.from({length:21},()=>({ai:B6,dist:0}));Fc={firstframe:29,lastframe:49,frames:J6,endfunc:$6};var Q6=Array.from({length:9},(e,t)=>({ai:La,dist:2,think:t===8?df:null}));H6={firstframe:50,lastframe:58,frames:Q6,endfunc:null};var ex=Array.from({length:6},()=>({ai:La,dist:2,think:q6}));cf={firstframe:59,lastframe:64,frames:ex,endfunc:Y6};var tx=Array.from({length:4},()=>({ai:La,dist:2}));lf={firstframe:65,lastframe:68,frames:tx,endfunc:cr};var nx=Array.from({length:21},(e,t)=>({ai:La,dist:2,think:t===12?j6:null}));V6={firstframe:69,lastframe:89,frames:nx,endfunc:cr};var ix=Array.from({length:18},()=>({ai:Dc,dist:0}));W6={firstframe:90,lastframe:107,frames:ix,endfunc:cr};var rx=Array.from({length:4},()=>({ai:Dc,dist:0}));K6={firstframe:108,lastframe:111,frames:rx,endfunc:cr};var ax=Array.from({length:49},()=>({ai:Dc,dist:0}));uf={firstframe:112,lastframe:160,frames:ax,endfunc:Z6};U();var Na=.1,Uc=80,za=Math.random;function hf(e,t,n){R(e,Na,n)}function et(e,t,n){z(e,t,Na,n)}function tt(e,t,n){oe(e,t,Na,n)}function C(e,t,n){ue(e,t,Na,n)}function X(e,t,n){_(e,t)}var Bc,sx,ox,ff,_f,cx,lx,ux,dx,mx,hx,fx,_x,gx;function gf(e){e.monsterinfo.current_move=Bc}function Zt(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=Bc:e.monsterinfo.current_move=ff}function vx(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function px(e,t){let n={x:Uc,y:e.maxs.x,z:8};or(e,n,15+Math.floor(za()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function yx(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function wx(e,t){let n={x:Uc,y:e.mins.x,z:8};or(e,n,15+Math.floor(za()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function vf(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function pf(e,t){or(e,{x:Uc,y:0,z:8},10+Math.floor(za()*5),-600,t)?e.count=1:e.monsterinfo.melee_debounce_time=t.timeSeconds+3,t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0)}function yf(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=_f)}function ch(e,t){if(!e.enemy)return;let n=j(e.angles).forward,i={...e.origin};i.z+=24;let r={...e.enemy.origin};if(t.trace(i,r,W,W,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,se.temp_entity,we.PARASITE_ATTACK,e,i,r);let s=P(i,r);fe(e.enemy,e,e,s,e.enemy.origin,W,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=j(e.angles).forward;e.enemy.velocity=D(o,-1200)}var lh=[{x:.7467,y:.23837,z:34.16769},{x:-1.07639,y:.23837,z:33.386372},{x:-1.3355,y:5.3343,z:32.17717},{x:-.17536,y:8.84637,z:30.635479},{x:-2.75759,y:7.80461,z:30.15086},{x:-5.57509,y:5.15284,z:30.05616},{x:-7.01755,y:3.26247,z:30.552521},{x:-7.91574,y:.6388,z:33.176189},{x:-3.91539,y:8.28573,z:33.976349},{x:-.91354,y:10.93303,z:34.141811},{x:-.3699,y:8.9239,z:34.189079}],uh=[{x:-3.36471,y:.32775,z:33.938381},{x:-5.14045,y:.49348,z:32.659851},{x:-5.34198,y:5.64698,z:31.277901},{x:-4.13448,y:9.27744,z:29.925621},{x:-6.59834,y:6.81509,z:29.32262},{x:-8.61084,y:2.52965,z:29.251591},{x:-9.23136,y:.09328,z:29.747959},{x:-11.00411,y:1.93693,z:32.39526},{x:-7.87831,y:7.64819,z:33.148151},{x:-4.94737,y:11.43005,z:33.31361},{x:-4.33282,y:9.44457,z:33.52634}];function Ax(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=j(n.angles),s=n.frame-0;(s<0||s>=lh.length)&&(s=0);let o=lh[s],l=F(n.origin,D(r,o.x));l=F(l,D(i,o.y)),l=F(l,D(a,o.z));let c=G(P(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function Sx(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=j(n.angles),s=n.frame-0;(s<0||s>=uh.length)&&(s=0);let o=uh[s],l=F(n.origin,D(r,o.x));l=F(l,D(i,o.y)),l=F(l,D(a,o.z));let c=G(P(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function ht(e,t){hc(e,1,!1,Ax,t),hc(e,1,!0,Sx,t)}function kx(e){za()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function Ex(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function bx(e){}function xx(e){e.monsterinfo.aiflags&=-17}var Tx=Array.from({length:30},()=>({ai:hf,dist:0}));Bc={firstframe:162,lastframe:191,frames:Tx,endfunc:gf};var Mx=Array.from({length:30},()=>({ai:hf,dist:0}));sx={firstframe:192,lastframe:221,frames:Mx,endfunc:gf};var Rx=[{ai:et,dist:7},{ai:et,dist:2},{ai:et,dist:3},{ai:et,dist:3},{ai:et,dist:1},{ai:et,dist:0},{ai:et,dist:0},{ai:et,dist:9},{ai:et,dist:-4},{ai:et,dist:-1},{ai:et,dist:2}];ox={firstframe:0,lastframe:10,frames:Rx,endfunc:null};var Lx=[{ai:tt,dist:9},{ai:tt,dist:2},{ai:tt,dist:3},{ai:tt,dist:3},{ai:tt,dist:1},{ai:tt,dist:0},{ai:tt,dist:0},{ai:tt,dist:10},{ai:tt,dist:-4},{ai:tt,dist:-1},{ai:tt,dist:2}];ff={firstframe:0,lastframe:10,frames:Lx,endfunc:null};var Nx=[{ai:C,dist:8},{ai:C,dist:3},{ai:C,dist:5},{ai:C,dist:0},{ai:C,dist:-3,think:vx},{ai:C,dist:0},{ai:C,dist:-5},{ai:C,dist:-7,think:px},{ai:C,dist:0},{ai:C,dist:6,think:yx},{ai:C,dist:1},{ai:C,dist:2,think:wx},{ai:C,dist:-3},{ai:C,dist:6},{ai:C,dist:-1},{ai:C,dist:-3},{ai:C,dist:2},{ai:C,dist:-11}];_f={firstframe:53,lastframe:70,frames:Nx,endfunc:Zt};var zx=[{ai:C,dist:5},{ai:C,dist:-4},{ai:C,dist:-4},{ai:C,dist:-3},{ai:C,dist:0,think:vf},{ai:C,dist:0},{ai:C,dist:13,think:pf},{ai:C,dist:0},{ai:C,dist:2},{ai:C,dist:0},{ai:C,dist:-9,think:yf},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];cx={firstframe:71,lastframe:87,frames:zx,endfunc:Zt};var Ox=[{ai:C,dist:5},{ai:C,dist:-4},{ai:C,dist:-4},{ai:C,dist:-3},{ai:C,dist:0,think:vf},{ai:C,dist:0,think:ch},{ai:C,dist:13},{ai:C,dist:0,think:pf},{ai:C,dist:2},{ai:C,dist:0,think:ch},{ai:C,dist:-9,think:yf},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];lx={firstframe:71,lastframe:87,frames:Ox,endfunc:Zt};var Ix=[{ai:C,dist:9,think:ht},{ai:C,dist:2,think:ht},{ai:C,dist:3,think:ht},{ai:C,dist:3,think:ht},{ai:C,dist:1,think:ht},{ai:C,dist:0,think:ht},{ai:C,dist:0,think:ht},{ai:C,dist:10,think:ht},{ai:C,dist:-4,think:ht},{ai:C,dist:-1,think:ht},{ai:C,dist:2,think:kx}];ux={firstframe:0,lastframe:10,frames:Ix,endfunc:Zt};var Cx=[{ai:X,dist:-6},{ai:X,dist:-2},{ai:X,dist:-6},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:2},{ai:X,dist:0},{ai:X,dist:2},{ai:X,dist:1},{ai:X,dist:7},{ai:X,dist:0},{ai:X,dist:3},{ai:X,dist:-1}];dx={firstframe:88,lastframe:108,frames:Cx,endfunc:Zt};var Px=[{ai:X,dist:-2},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:3},{ai:X,dist:1},{ai:X,dist:-2}];mx={firstframe:109,lastframe:116,frames:Px,endfunc:Zt};var Dx=[{ai:X,dist:-2},{ai:X,dist:2},{ai:X,dist:1},{ai:X,dist:3},{ai:X,dist:0},{ai:X,dist:-4}];hx={firstframe:117,lastframe:122,frames:Dx,endfunc:Zt};var Fx=Array.from({length:18},()=>({ai:X,dist:0}));fx={firstframe:123,lastframe:140,frames:Fx,endfunc:wf};var Ux=[{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:9},{ai:X,dist:0}];_x={firstframe:141,lastframe:145,frames:Ux,endfunc:wf};var Bx=[{ai:X,dist:0},{ai:X,dist:-2,think:Ex},{ai:X,dist:17,think:bx},{ai:X,dist:-3},{ai:X,dist:-1,think:xx},{ai:X,dist:-5},{ai:X,dist:-6},{ai:X,dist:-6}];gx={firstframe:146,lastframe:153,frames:Bx,endfunc:Zt};function wf(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}U();var Oa=.1,Gx=80,ti=Math.random;function Af(e,t,n){R(e,Oa,n)}function Hx(e,t,n){z(e,t,Oa,n)}function Vx(e,t,n){oe(e,t,Oa,n)}function Y(e,t,n){ue(e,t,Oa,n)}function ni(e,t,n){_(e,t)}var Gc,Sf,kf,Wx,Hc,_c,Kx,Vc,Ef,$x,Xx,Yx,qx,jx,Zx,bf;function xf(e){e.monsterinfo.current_move=Gc}function Jx(e){e.monsterinfo.current_move=Sf}function yn(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Gc;return}e.monsterinfo.current_move=kf}function Qx(e){e.monsterinfo.aiflags&4||e.enemy||ti()<=.3&&(e.monsterinfo.current_move=bf)}function e3(e,t){ti()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function t3(e,t){let n={x:Gx,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),or(e,n,10+Math.floor(ti()*6),100,t)}function n3(e,t){let{forward:n,right:i}=j(e.angles),r={x:0,y:20,z:40},a=F(e.origin,D(n,r.x)),s=D(i,r.y),o=F(a,s),l={...o,z:o.z+r.z},c=e.skin>1?500:650,u=!!e.monsterinfo.blindfire,m=W;if(u&&e.monsterinfo.blind_fire_target)m=e.monsterinfo.blind_fire_target;else if(e.enemy)m=e.enemy.origin;else return;let d=P(m,l);!u&&e.enemy&&(ti()<.33||l.z<e.enemy.absmin.z?d={...d,z:d.z+e.enemy.viewheight}:d={...d,z:e.enemy.absmin.z+1-l.z});let f=G(d);e.skin>1?z6(e,l,f,50,c,0,.075,t):sr(e,l,f,50,c,0,t)}function i3(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=P(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=Qn(n).y}}function r3(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function a3(e){e.monsterinfo.current_move=Hc}function s3(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=_c;return}if(e.enemy&&e.enemy.health>0&&ti()<=.6){e.monsterinfo.current_move=Hc;return}e.monsterinfo.current_move=_c}function o3(e){if(e.enemy&&e.enemy.health>0&&ti()<=.9){e.monsterinfo.current_move=Vc;return}e.monsterinfo.current_move=Ef}function c3(e){e.monsterinfo.current_move=Vc}var l3=Array.from({length:30},(e,t)=>({ai:Af,dist:0,think:t===8?(n,i)=>e3(n,i):null}));bf={firstframe:201,lastframe:230,frames:l3,endfunc:xf};var u3=Array.from({length:30},(e,t)=>({ai:Af,dist:0,think:t===29?Qx:null}));Gc={firstframe:101,lastframe:130,frames:u3,endfunc:xf};var d3=Array.from({length:10},()=>({ai:Hx,dist:6}));Sf={firstframe:171,lastframe:180,frames:d3,endfunc:Jx};var m3=Array.from({length:10},()=>({ai:Vx,dist:12}));kf={firstframe:171,lastframe:180,frames:m3,endfunc:yn};var h3=Array.from({length:5},()=>({ai:ni,dist:0}));$x={firstframe:90,lastframe:94,frames:h3,endfunc:yn};var f3=Array.from({length:5},()=>({ai:ni,dist:0}));Xx={firstframe:95,lastframe:99,frames:f3,endfunc:yn};var _3=Array.from({length:21},()=>({ai:ni,dist:0}));Yx={firstframe:100,lastframe:120,frames:_3,endfunc:yn};var g3=Array.from({length:12},()=>({ai:ni,dist:0}));qx={firstframe:48,lastframe:59,frames:g3,endfunc:Tf};var v3=Array.from({length:23},()=>({ai:ni,dist:0}));jx={firstframe:60,lastframe:82,frames:v3,endfunc:Tf};function Tf(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var p3=[{ai:Y,dist:0,think:i3},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:4},{ai:Y,dist:0},{ai:Y,dist:-3},{ai:Y,dist:3},{ai:Y,dist:5},{ai:Y,dist:7},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0,think:a3}];Wx={firstframe:0,lastframe:12,frames:p3,endfunc:null};var y3=[{ai:Y,dist:19,think:n3},{ai:Y,dist:-6},{ai:Y,dist:-5},{ai:Y,dist:-2},{ai:Y,dist:-7},{ai:Y,dist:0},{ai:Y,dist:1},{ai:Y,dist:10,think:r3},{ai:Y,dist:4},{ai:Y,dist:5},{ai:Y,dist:6},{ai:Y,dist:6},{ai:Y,dist:4},{ai:Y,dist:3,think:s3}];Hc={firstframe:13,lastframe:26,frames:y3,endfunc:null};var w3=[{ai:Y,dist:-3},{ai:Y,dist:0},{ai:Y,dist:-6},{ai:Y,dist:-4},{ai:Y,dist:-2}];_c={firstframe:27,lastframe:31,frames:w3,endfunc:yn};var A3=[{ai:Y,dist:1},{ai:Y,dist:8},{ai:Y,dist:3}];Kx={firstframe:32,lastframe:34,frames:A3,endfunc:c3};var S3=[{ai:Y,dist:1},{ai:Y,dist:7,think:t3},{ai:Y,dist:-7},{ai:Y,dist:1},{ai:Y,dist:-1},{ai:Y,dist:1},{ai:Y,dist:0},{ai:Y,dist:1},{ai:Y,dist:-2,think:o3}];Vc={firstframe:35,lastframe:43,frames:S3,endfunc:null};var k3=[{ai:Y,dist:-6},{ai:Y,dist:-1},{ai:Y,dist:-6},{ai:Y,dist:0}];Ef={firstframe:44,lastframe:47,frames:k3,endfunc:yn};var E3=Array.from({length:7},()=>({ai:ni,dist:0}));Zx={firstframe:83,lastframe:89,frames:E3,endfunc:yn};var Ia=.1,b3=80,x3=24;function T3(e,t,n){R(e,Ia,n)}function M3(e,t,n){z(e,t,Ia,n)}function Mf(e,t,n){oe(e,t,Ia,n)}function Ae(e,t,n){ue(e,t,Ia,n)}function Wc(e,t,n){_(e,t)}var R3,L3,Rf,Lf,N3,z3,O3,I3;function C3(e){e.monsterinfo.current_move=Lf}function Kc(e){e.monsterinfo.current_move=Rf}function dh(e,t){or(e,{x:b3,y:0,z:0},5,0,t)}function P3(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var D3=[{ai:T3,dist:0}];R3={firstframe:41,lastframe:41,frames:D3,endfunc:null};var F3=Array.from({length:24},()=>({ai:Mf,dist:x3}));Lf={firstframe:70,lastframe:93,frames:F3,endfunc:null};var U3=Array.from({length:6},()=>({ai:Mf,dist:8}));Rf={firstframe:65,lastframe:70,frames:U3,endfunc:C3};var B3=Array.from({length:24},()=>({ai:M3,dist:4}));L3={firstframe:41,lastframe:64,frames:B3,endfunc:null};var G3=Array.from({length:5},()=>({ai:Wc,dist:0}));z3={firstframe:99,lastframe:103,frames:G3,endfunc:Kc};var H3=Array.from({length:5},()=>({ai:Wc,dist:0}));O3={firstframe:94,lastframe:98,frames:H3,endfunc:Kc};var V3=[{ai:Ae,dist:0,think:P3},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0,think:dh},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0,think:dh},{ai:Ae,dist:0}];N3={firstframe:0,lastframe:19,frames:V3,endfunc:Kc};function W3(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var K3=Array.from({length:56},()=>({ai:Wc,dist:0}));I3={firstframe:104,lastframe:159,frames:K3,endfunc:W3};U();var Ca=.1;function $3(e,t,n){R(e,Ca,n)}function X3(e,t,n){z(e,t,Ca,n)}function Y3(e,t,n){oe(e,t,Ca,n)}function q3(e,t,n){ue(e,t,Ca,n)}function Nf(e,t,n){_(e,t)}var $c,zf,Of,j3,Z3,If;function J3(e){e.monsterinfo.current_move=$c}function Q3(e){e.monsterinfo.current_move=zf}function Xc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Of:e.monsterinfo.current_move=$c}function e8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(P(e.enemy.origin,n));pt(e,n,i,5,1e3,0,0,t,1)}function t8(e){e.monsterinfo.nextframe=If.lastframe,e.nextthink=-1}var n8=Array.from({length:46},()=>({ai:$3,dist:0}));$c={firstframe:0,lastframe:45,frames:n8,endfunc:J3};var i8=Array.from({length:46},()=>({ai:X3,dist:5}));zf={firstframe:0,lastframe:45,frames:i8,endfunc:Q3};var r8=Array.from({length:46},()=>({ai:Y3,dist:10}));Of={firstframe:0,lastframe:45,frames:r8,endfunc:Xc};var a8=Array.from({length:20},(e,t)=>({ai:q3,dist:0,think:t===10?e8:null}));j3={firstframe:46,lastframe:65,frames:a8,endfunc:Xc};var s8=Array.from({length:6},()=>({ai:Nf,dist:0}));Z3={firstframe:66,lastframe:71,frames:s8,endfunc:Xc};var o8=Array.from({length:10},()=>({ai:Nf,dist:0}));If={firstframe:84,lastframe:93,frames:o8,endfunc:t8};U();var Pa=.1;function c8(e,t,n){R(e,Pa,n)}function l8(e,t,n){z(e,t,Pa,n)}function u8(e,t,n){oe(e,t,Pa,n)}function d8(e,t,n){ue(e,t,Pa,n)}function Cf(e,t,n){_(e,t)}var Yc,Pf,Df,m8,h8,Ff;function f8(e){e.monsterinfo.current_move=Yc}function _8(e){e.monsterinfo.current_move=Pf}function qc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Df:e.monsterinfo.current_move=Yc}function g8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(P(e.enemy.origin,n));pt(e,n,i,5,1e3,0,0,t,1)}function v8(e,t){if(!e.enemy)return;let n=5+Math.random()*5;jt(e,e.enemy)<=80&&Zi(e,e.enemy)&&fe(e.enemy,e,e,G(P(e.enemy.origin,e.origin)),e.enemy.origin,W,n,5,2,0,t.timeSeconds)}function p8(e){e.monsterinfo.nextframe=Ff.lastframe,e.nextthink=-1}var y8=Array.from({length:46},()=>({ai:c8,dist:0}));Yc={firstframe:0,lastframe:45,frames:y8,endfunc:f8};var w8=Array.from({length:46},()=>({ai:l8,dist:5}));Pf={firstframe:0,lastframe:45,frames:w8,endfunc:_8};var A8=Array.from({length:46},()=>({ai:u8,dist:10}));Df={firstframe:0,lastframe:45,frames:A8,endfunc:qc};var S8=Array.from({length:20},(e,t)=>({ai:d8,dist:0,think:t===10?g8:t===12?v8:null}));m8={firstframe:46,lastframe:65,frames:S8,endfunc:qc};var k8=Array.from({length:6},()=>({ai:Cf,dist:0}));h8={firstframe:66,lastframe:71,frames:k8,endfunc:qc};var E8=Array.from({length:10},()=>({ai:Cf,dist:0}));Ff={firstframe:84,lastframe:93,frames:E8,endfunc:p8};U();var Da=.1;function b8(e,t,n){R(e,Da,n)}function x8(e,t,n){z(e,t,Da,n)}function T8(e,t,n){oe(e,t,Da,n)}function Uf(e,t,n){ue(e,t,Da,n)}function Bf(e,t,n){_(e,t)}var jc,Gf,Hf,M8,R8,L8,Vf;function N8(e){e.monsterinfo.current_move=jc}function z8(e){e.monsterinfo.current_move=Gf}function Fa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Hf:e.monsterinfo.current_move=jc}function O8(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function I8(e,t){if(!e.enemy||!Zi(e,e.enemy))return;let n=jt(e,e.enemy);if(O8(n)!=="melee")return;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=G(P(e.enemy.origin,i));fe(e.enemy,e,e,r,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function C8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=G(P(e.enemy.origin,n));af(e,n,i,50,100,0,t)}function P8(e){e.monsterinfo.nextframe=Vf.lastframe,e.nextthink=-1}var D8=Array.from({length:30},()=>({ai:b8,dist:0}));jc={firstframe:0,lastframe:29,frames:D8,endfunc:N8};var F8=Array.from({length:40},()=>({ai:x8,dist:3}));Gf={firstframe:30,lastframe:69,frames:F8,endfunc:z8};var U8=Array.from({length:20},()=>({ai:T8,dist:12}));Hf={firstframe:70,lastframe:89,frames:U8,endfunc:Fa};var B8=Array.from({length:10},(e,t)=>({ai:Uf,dist:0,think:t===5?I8:null}));M8={firstframe:90,lastframe:99,frames:B8,endfunc:Fa};var G8=Array.from({length:12},(e,t)=>({ai:Uf,dist:0,think:t===6?C8:null}));R8={firstframe:100,lastframe:111,frames:G8,endfunc:Fa};var H8=Array.from({length:6},()=>({ai:Bf,dist:0}));L8={firstframe:112,lastframe:117,frames:H8,endfunc:Fa};var V8=Array.from({length:12},()=>({ai:Bf,dist:0}));Vf={firstframe:118,lastframe:129,frames:V8,endfunc:P8};U();var Ua=.1;function Wf(e,t,n){R(e,Ua,n)}function W8(e,t,n){z(e,t,Ua,n)}function Kf(e,t,n){oe(e,t,Ua,n)}function Ba(e,t,n){ue(e,t,Ua,n)}function Se(e,t,n){_(e,t)}var Zc,$f,K8,Xf,$8,X8,Y8,Jc,Yf,q8,j8,Z8,qf,J8,jf;function Q8(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function eT(e){e.monsterinfo.current_move=Zc}function tT(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=$f)}function wn(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Zc:e.monsterinfo.current_move=Xf}function nT(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function iT(e,t){e.monsterinfo.current_move=Jc}function rT(e,t){if(e.enemy&&e.enemy.health>0&&pn(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=Jc;return}e.monsterinfo.current_move=Yf}function aT(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},i=G(P(e.enemy.origin,n)),r=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),Yt(e,n,i,r,a,300,500,0,t,5)}function Zf(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(P(e.enemy.origin,n)),r=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),zc(t,e,n,i,r,a)}function sT(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&Zf(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function oT(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function cT(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function lT(e,t){if(!e.enemy)return;let n=P(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),r=600,a=G({x:n.x,y:n.y,z:0}),s=Qn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*r,y:a.y*r,z:270},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3}function uT(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049;return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=214:e.monsterinfo.nextframe=212}function dT(e,t){if(e.spawnflags&16||!e.enemy||!e.groundentity)return;Math.sqrt(Math.pow(e.enemy.origin.x-e.origin.x,2)+Math.pow(e.enemy.origin.y-e.origin.y,2))>256&&Math.random()<.02&&(t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),e.monsterinfo.current_move=jf)}var mT=Array.from({length:30},(e,t)=>({ai:Wf,dist:0,think:t===29?tT:null}));Zc={firstframe:0,lastframe:29,frames:mT,endfunc:null};var hT=Array.from({length:40},(e,t)=>({ai:Wf,dist:0,think:t===7?Q8:null}));$f={firstframe:30,lastframe:69,frames:hT,endfunc:eT};var fT=[0,3,4,5,7,2,6,4,2,7,5,7,4],_T=fT.map(e=>({ai:W8,dist:e}));K8={firstframe:76,lastframe:88,frames:_T,endfunc:null};var gT=[26,9,9,9,15,10,13,6],vT=gT.map((e,t)=>({ai:Kf,dist:e,think:t%4===0?dT:null}));Xf={firstframe:94,lastframe:101,frames:vT,endfunc:null};var pT=[32,15,10,18,8,20],yT=pT.map(e=>({ai:Kf,dist:e}));$8={firstframe:102,lastframe:107,frames:yT,endfunc:null};var wT=Array.from({length:21},(e,t)=>({ai:Ba,dist:0,think:[4,7,10,13].includes(t)?Zf:null}));Y8={firstframe:108,lastframe:128,frames:wT,endfunc:wn};var AT=Array.from({length:7},(e,t)=>({ai:Ba,dist:0,think:t===0?nT:null}));X8={firstframe:137,lastframe:143,frames:AT,endfunc:iT};var ST=Array.from({length:8},()=>({ai:Ba,dist:0,think:aT}));Jc={firstframe:144,lastframe:151,frames:ST,endfunc:rT};var kT=Array.from({length:7},()=>({ai:Ba,dist:0}));Yf={firstframe:152,lastframe:158,frames:kT,endfunc:wn};var ET=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],bT=ET.map(e=>({ai:Se,dist:e}));q8={firstframe:159,lastframe:176,frames:bT,endfunc:wn};var xT=[-2,11,6,2,-1,-7,-2,-7],TT=xT.map(e=>({ai:Se,dist:e}));j8={firstframe:177,lastframe:184,frames:TT,endfunc:wn};var MT=[-3,1,1,0,1],RT=MT.map(e=>({ai:Se,dist:e}));Z8={firstframe:185,lastframe:189,frames:RT,endfunc:wn};var LT=[0,0,0,-7,-3,-5,8,6,0,0,0],NT=LT.map(e=>({ai:Se,dist:e}));function zT(e){e.monsterinfo.nextframe=qf.lastframe,e.nextthink=-1,e.solid=0}qf={firstframe:190,lastframe:200,frames:NT,endfunc:zT};var OT=[{ai:Se,dist:1,think:sT},{ai:Se,dist:1},{ai:Se,dist:1,think:oT},{ai:Se,dist:0},{ai:Se,dist:-1},{ai:Se,dist:-1},{ai:Se,dist:0,think:cT},{ai:Se,dist:-1}];J8={firstframe:201,lastframe:208,frames:OT,endfunc:wn};var IT=[{ai:Se,dist:0,think:lT},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0,think:uT},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0}];jf={firstframe:209,lastframe:216,frames:IT,endfunc:wn};U();var Ga=.1;function CT(e,t,n){R(e,Ga,n)}function PT(e,t,n){z(e,t,Ga,n)}function DT(e,t,n){oe(e,t,Ga,n)}function FT(e,t,n){ue(e,t,Ga,n)}function Jf(e,t,n){_(e,t)}var Qc,Qf,e1,UT,BT,t1;function GT(e){e.monsterinfo.current_move=Qc}function HT(e){e.monsterinfo.current_move=Qf}function el(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=e1:e.monsterinfo.current_move=Qc}function VT(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(P(e.enemy.origin,n));pt(e,n,i,5,1e3,0,0,t,1)}function WT(e){e.monsterinfo.nextframe=t1.lastframe,e.nextthink=-1}var KT=Array.from({length:46},()=>({ai:CT,dist:0}));Qc={firstframe:0,lastframe:45,frames:KT,endfunc:GT};var $T=Array.from({length:46},()=>({ai:PT,dist:5}));Qf={firstframe:0,lastframe:45,frames:$T,endfunc:HT};var XT=Array.from({length:46},()=>({ai:DT,dist:10}));e1={firstframe:0,lastframe:45,frames:XT,endfunc:el};var YT=Array.from({length:20},(e,t)=>({ai:FT,dist:0,think:t===10?VT:null}));UT={firstframe:46,lastframe:65,frames:YT,endfunc:el};var qT=Array.from({length:6},()=>({ai:Jf,dist:0}));BT={firstframe:66,lastframe:71,frames:qT,endfunc:el};var jT=Array.from({length:10},()=>({ai:Jf,dist:0}));t1={firstframe:84,lastframe:93,frames:jT,endfunc:WT};U();var Ha=.1;function ZT(e,t,n){R(e,Ha,n)}function JT(e,t,n){z(e,t,Ha,n)}function QT(e,t,n){oe(e,t,Ha,n)}function eM(e,t,n){ue(e,t,Ha,n)}function n1(e,t,n){_(e,t)}var tl,i1,r1,tM,nM,a1;function iM(e){e.monsterinfo.current_move=tl}function rM(e){e.monsterinfo.current_move=i1}function nl(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=r1:e.monsterinfo.current_move=tl}function aM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(P(e.enemy.origin,n));pt(e,n,i,5,1e3,0,0,t,1)}function sM(e){e.monsterinfo.nextframe=a1.lastframe,e.nextthink=-1}var oM=Array.from({length:46},()=>({ai:ZT,dist:0}));tl={firstframe:0,lastframe:45,frames:oM,endfunc:iM};var cM=Array.from({length:46},()=>({ai:JT,dist:5}));i1={firstframe:0,lastframe:45,frames:cM,endfunc:rM};var lM=Array.from({length:46},()=>({ai:QT,dist:10}));r1={firstframe:0,lastframe:45,frames:lM,endfunc:nl};var uM=Array.from({length:20},(e,t)=>({ai:eM,dist:0,think:t===10?aM:null}));tM={firstframe:46,lastframe:65,frames:uM,endfunc:nl};var dM=Array.from({length:6},()=>({ai:n1,dist:0}));nM={firstframe:66,lastframe:71,frames:dM,endfunc:nl};var mM=Array.from({length:10},()=>({ai:n1,dist:0}));a1={firstframe:84,lastframe:93,frames:mM,endfunc:sM};U();var Va=.1;function hM(e,t,n){R(e,Va,n)}function fM(e,t,n){z(e,t,Va,n)}function _M(e,t,n){oe(e,t,Va,n)}function gM(e,t,n){ue(e,t,Va,n)}function il(e,t,n){_(e,t)}var rl,s1,o1,vM,pM,c1,yM;function wM(e){e.monsterinfo.current_move=rl}function AM(e){e.monsterinfo.current_move=s1}function Wa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=o1:e.monsterinfo.current_move=rl}function SM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)},r=G(P(i,n));Yt(e,n,r,5,2,.05,.05,0,t,4)}var kM=Array.from({length:22},()=>({ai:hM,dist:0}));rl={firstframe:0,lastframe:21,frames:kM,endfunc:wM};var EM=Array.from({length:15},()=>({ai:fM,dist:4}));s1={firstframe:22,lastframe:36,frames:EM,endfunc:AM};var bM=Array.from({length:8},()=>({ai:_M,dist:12}));o1={firstframe:37,lastframe:44,frames:bM,endfunc:Wa};var xM=Array.from({length:15},(e,t)=>({ai:gM,dist:0,think:t>=5&&t<=7?SM:null}));vM={firstframe:45,lastframe:59,frames:xM,endfunc:Wa};var TM=Array.from({length:10},()=>({ai:il,dist:0}));pM={firstframe:60,lastframe:69,frames:TM,endfunc:Wa};var MM=Array.from({length:20},()=>({ai:il,dist:0}));function RM(e){e.monsterinfo.nextframe=c1.lastframe,e.nextthink=-1}c1={firstframe:70,lastframe:89,frames:MM,endfunc:RM};var LM=Array.from({length:5},()=>({ai:il,dist:0}));yM={firstframe:90,lastframe:94,frames:LM,endfunc:Wa};U();var lr=.1,NM={x:30,y:28,z:24},zM={x:26,y:16,z:24},OM={x:26,y:-14,z:24};function IM(e,t,n){R(e,lr,n)}function CM(e,t,n){z(e,t,lr,n)}function PM(e,t,n){oe(e,t,lr,n)}function l1(e,t,n){ue(e,t,lr,n)}function ii(e,t,n){_(e,t)}var al,u1,d1,m1,sl,h1,f1,_1,g1,ol,gc;function v1(e){e.monsterinfo.current_move=al}function p1(e){e.monsterinfo.current_move=u1}function Nt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=d1:e.monsterinfo.current_move=al}function DM(e){if(!e.enemy)return;let t=Math.random();t<=.3?e.monsterinfo.current_move=m1:t<=.6?e.monsterinfo.current_move=sl:e.monsterinfo.current_move=h1}function cl(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),l=D(r,t.z);return F(F(F(a,s),o),l)}function FM(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=cl(e,NM),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=G(P(i,n));rf(e,n,r,50,300,100,300,0,t)}function UM(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=cl(e,OM),i=G(P(e.pos1,n));af(e,n,i,50,100,0,t)}function BM(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function GM(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=cl(e,zM),i=(e.monsterinfo.nextframe||0)-sl.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=P(s,n),c={...Qn(o)};i<=12?c.y-=5*(i-4):c.y-=40-5*(i-12),a=j(c).forward}else{let{forward:s}=j(e.angles);a=s}pt(e,n,a,15,1e3,0,0,t,1)}function HM(e,t,n,i,r){e.health<e.max_health/2&&(e.skin=1),!(e.timestamp<(e.pain_finished_time||0))&&(i<=25&&Math.random()<.2||(e.pain_finished_time=e.timestamp+3,i<=40?(r.engine.sound?.(e,0,"makron/pain1.wav",1,1,0),e.monsterinfo.current_move=f1):i<=110?(r.engine.sound?.(e,0,"makron/pain2.wav",1,1,0),e.monsterinfo.current_move=_1):Math.random()<=.45&&(r.engine.sound?.(e,0,"makron/pain3.wav",1,1,0),e.monsterinfo.current_move=g1)))}function VM(e,t){++e.frame>=365&&(e.frame=346),e.nextthink=t.timeSeconds+.1,e.angles.x>0&&(e.angles={...e.angles,x:Math.max(0,e.angles.x-15)})}function WM(e,t){e.frame=346,e.model="models/monsters/boss3/rider/tris.md2",e.skin=1,e.think=VM,e.nextthink=t.timeSeconds+.1,t.sound(e,0,"makron/spine.wav",1,1,0),e.movetype=7;let{forward:n,up:i}=j(e.angles),r=D(i,120),a=D(n,-120);e.velocity=F(F(e.velocity,r),a),e.origin=F(e.origin,D(n,-10)),e.angles={...e.angles,x:90},e.avelocity=W,t.linkentity(e)}function KM(e,t){let n=t.spawn();n.classname="makron_torso",n.origin={...e.origin},n.angles={...e.angles},n.origin.z+=e.maxs.z-15,WM(n,t)}function $M(e,t){t.engine.sound?.(e,0,"makron/death.wav",1,1,0),KM(e,t),e.monsterinfo.current_move=ol,e.mins={x:-60,y:-60,z:0},e.maxs={x:60,y:60,z:48}}function XM(e){e.monsterinfo.nextframe=ol.lastframe,e.nextthink=-1}var YM=Array.from({length:60},()=>({ai:IM,dist:0}));al={firstframe:0,lastframe:59,frames:YM,endfunc:v1};var qM=Array.from({length:10},()=>({ai:CM,dist:8}));u1={firstframe:60,lastframe:69,frames:qM,endfunc:p1};var jM=Array.from({length:10},()=>({ai:PM,dist:8}));d1={firstframe:60,lastframe:69,frames:jM,endfunc:Nt};var ZM=Array.from({length:8},(e,t)=>({ai:l1,dist:0,think:t===3?FM:null}));m1={firstframe:70,lastframe:77,frames:ZM,endfunc:Nt};var JM=Array.from({length:26},(e,t)=>({ai:ii,dist:0,think:t>=4&&t<=20?GM:null}));sl={firstframe:78,lastframe:103,frames:JM,endfunc:Nt};var QM=Array.from({length:16},(e,t)=>({ai:l1,dist:0,think:t===7?BM:t===8?UM:null}));h1={firstframe:104,lastframe:119,frames:QM,endfunc:Nt};var e4=Array.from({length:4},()=>({ai:ii,dist:0}));f1={firstframe:120,lastframe:123,frames:e4,endfunc:Nt};var t4=Array.from({length:4},()=>({ai:ii,dist:0}));_1={firstframe:124,lastframe:127,frames:t4,endfunc:Nt};var n4=Array.from({length:27},()=>({ai:ii,dist:0}));g1={firstframe:128,lastframe:154,frames:n4,endfunc:Nt};var i4=Array.from({length:95},()=>({ai:ii,dist:0}));ol={firstframe:155,lastframe:249,frames:i4,endfunc:XM};var r4=Array.from({length:13},()=>({ai:ii,dist:0}));gc={firstframe:250,lastframe:262,frames:r4,endfunc:Nt};function a4(e,t){e.classname="monster_makron",e.model="models/monsters/boss3/rider/tris.md2",e.mins={x:-30,y:-30,z:0},e.maxs={x:30,y:30,z:90},e.movetype=5,e.solid=2,e.health=3e3,e.max_health=3e3,e.mass=500,e.takedamage=!0,e.viewheight=90,e.pain=(n,i,r,a)=>HM(n,i,r,a,t.entities),e.die=(n,i,r,a,s)=>{if(n.health<=-2e3){Yh(t.entities,n.origin,a),t.entities.free(n);return}n.deadflag=2,n.solid=0,$M(n,t.entities)},e.monsterinfo.stand=v1,e.monsterinfo.walk=p1,e.monsterinfo.run=Nt,e.monsterinfo.attack=DM,e.monsterinfo.sight=(n,i)=>{t.entities.sound?.(n,0,"makron/sight.wav",1,1,0),n.monsterinfo.current_move=gc},e.think=Qb,e.monsterinfo.current_move=gc,e.nextthink=e.timestamp+lr}U();var Ka=.1,s4={x:40,y:-20,z:20},o4={x:40,y:20,z:20},c4={x:30,y:0,z:40};function l4(e,t,n){R(e,Ka,n)}function u4(e,t,n){z(e,t,Ka,n)}function d4(e,t,n){oe(e,t,Ka,n)}function ll(e,t,n){ue(e,t,Ka,n)}function ur(e,t,n){_(e,t)}var ul,y1,w1,dl,vc,m4,h4,f4,_4,A1;function g4(e){e.monsterinfo.current_move=ul}function v4(e){e.monsterinfo.current_move=y1}function ri(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=w1:e.monsterinfo.current_move=ul}function p4(e,t){let n=(i,r,a,s,o,l)=>{let c=t.trace(i,r,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&pn(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=dl:e.monsterinfo.current_move=vc}function pc(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),l=D(r,t.z);return F(F(F(a,s),o),l)}function y4(e,t){if(!e.enemy)return;let n=pc(e,o4),i=G(P(e.enemy.origin,n));wa(e,n,i,6,4,.05,.05,0,t,4);let r=pc(e,s4),a=G(P(e.enemy.origin,r));wa(e,r,a,6,4,.05,.05,0,t,4)}function w4(e,t){if(!e.enemy)return;let n=pc(e,c4),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=G(P(i,n));rf(e,n,r,50,300,100,200,0,t)}function A4(e){e.monsterinfo.nextframe=A1.lastframe,e.nextthink=-1}function S4(e,t){let n=t.spawn();if(n.classname="monster_makron",n.origin={...e.origin},n.target=e.target,n.enemy=e.enemy,a4(n,{entities:t}),n.enemy&&n.enemy.health>0){let r=P(n.enemy.origin,n.origin);n.angles={...n.angles,y:nr(r)};let a=G(r),s=D(a,400);n.velocity={x:s.x,y:s.y,z:200},n.groundentity=null,n.monsterinfo.sight&&n.monsterinfo.sight(n,n.enemy)}}var k4=Array.from({length:51},()=>({ai:l4,dist:0}));ul={firstframe:0,lastframe:50,frames:k4,endfunc:g4};var E4=Array.from({length:14},()=>({ai:u4,dist:10}));y1={firstframe:51,lastframe:64,frames:E4,endfunc:v4};var b4=Array.from({length:14},()=>({ai:d4,dist:10}));w1={firstframe:51,lastframe:64,frames:b4,endfunc:ri};var x4=Array.from({length:8},()=>({ai:ll,dist:0})),T4={firstframe:65,lastframe:72,frames:x4,endfunc:null},M4=Array.from({length:6},()=>({ai:ll,dist:0,think:y4}));dl={firstframe:73,lastframe:78,frames:M4,endfunc:p4};T4.endfunc=e=>{e.monsterinfo.current_move=dl};var R4=Array.from({length:4},()=>({ai:ur,dist:0}));vc={firstframe:79,lastframe:82,frames:R4,endfunc:ri};var L4=Array.from({length:13},(e,t)=>({ai:ll,dist:0,think:t===6?w4:null}));m4={firstframe:83,lastframe:95,frames:L4,endfunc:ri};var N4=Array.from({length:3},()=>({ai:ur,dist:0}));h4={firstframe:96,lastframe:98,frames:N4,endfunc:ri};var z4=Array.from({length:3},()=>({ai:ur,dist:0}));f4={firstframe:99,lastframe:101,frames:z4,endfunc:ri};var O4=Array.from({length:25},()=>({ai:ur,dist:0}));_4={firstframe:102,lastframe:126,frames:O4,endfunc:ri};var I4=Array.from({length:50},(e,t)=>({ai:ur,dist:0,think:t===49?((n,i)=>{}):t===48?S4:null}));A1={firstframe:127,lastframe:176,frames:I4,endfunc:A4};var ml=.1,$a=4,S1=8,Xa=16,C4=32,hl=64,P4=0,D4=39,F4=40,U4=58,B4=59,k1=64,G4=93,H4=95,fl=99,E1=159,b1=160,x1=172,T1=173,M1=198,V4=199,W4=209,K4=210,$4=226,_l=227,gl=235,R1=236,Aa=244,X4=245,Y4=251,q4=252,j4=266,Z4=267,J4=281,L1,N1,z1,O1,I1,dr,C1,P1,D1,F1,Q4,eR,U1,B1,tR,nR,vl,G1,iR="insane/insane11.wav",rR="insane/insane5.wav",aR="insane/insane7.wav",mh=["insane/insane1.wav","insane/insane2.wav","insane/insane3.wav","insane/insane4.wav","insane/insane6.wav","insane/insane8.wav","insane/insane9.wav","insane/insane10.wav"];function yc(e,t){t.sound(e,2,iR,1,1,0)}function sR(e,t){(e.spawnflags&hl)===0&&t.sound(e,2,rR,1,1,0)}function pl(e,t){e.spawnflags&hl||(e.monsterinfo.attack_finished??0)<t.timeSeconds&&(t.sound(e,2,aR,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2)}function Jt(e,t){if(!(e.spawnflags&hl)&&(e.monsterinfo.attack_finished??0)<t.timeSeconds){let n=mh[Math.floor(Math.random()*mh.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function Xe(e,t){}function H1(e,t){e.spawnflags&C4||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=z1:e.monsterinfo.current_move=I1)}function oR(e,t){e.spawnflags&$a&&e.spawnflags&Xa||Math.random()<.5&&(e.monsterinfo.current_move=O1)}function yl(e,t){e.monsterinfo.current_move=dr}function V1(e,t){Math.random()<.8?e.monsterinfo.current_move=vl:e.monsterinfo.current_move=G1}function wl(e,t){e.spawnflags&S1?(e.monsterinfo.current_move=vl,e.monsterinfo.aiflags|=1):e.spawnflags&$a&&e.spawnflags&Xa?e.monsterinfo.current_move=dr:Math.random()<.5?e.monsterinfo.current_move=L1:e.monsterinfo.current_move=N1}function Al(e,t){if(e.spawnflags&Xa&&e.frame===Aa){e.monsterinfo.current_move=dr;return}e.spawnflags&$a?e.monsterinfo.current_move=U1:Math.random()<=.5?e.monsterinfo.current_move=C1:e.monsterinfo.current_move=D1}function mr(e,t){if(e.spawnflags&Xa&&e.frame===Aa){e.monsterinfo.current_move=dr;return}let n=e.frame;e.spawnflags&$a||n>=R1&&n<=Aa||n>=_l&&n<=gl||n>=fl&&n<=E1?e.monsterinfo.current_move=B1:Math.random()<=.5?e.monsterinfo.current_move=P1:e.monsterinfo.current_move=F1}function W1(e,t){e.spawnflags&S1?e.flags|=1:(e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,t.linkentity(e)),e.nextthink=-1}function h(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,ml,a)},dist:t}}var cR=[h(R),h(R),h(R),h(R),h(R),h(R,0,H1)];L1={firstframe:B4,lastframe:k1,frames:cR,endfunc:wl};var lR=[h(R,0,sR),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R),h(R,0,H1)];N1={firstframe:k1,lastframe:G4,frames:lR,endfunc:wl};var uR=[h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,0,pl),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,2.7),h(_,4.1),h(_,6),h(_,7.6),h(_,3.6),h(_),h(_),h(_,0,yc),h(_),h(_),h(_),h(_),h(_),h(_,0,yc),h(_),h(_),h(_),h(_),h(_),h(_)];z1={firstframe:P4,lastframe:D4,frames:uR,endfunc:yl};var dR=[h(_,-.7),h(_,-1.2),h(_,-1.5),h(_,-4.5),h(_,-3.5),h(_,-.2),h(_),h(_,-1.3),h(_,-3),h(_,-2),h(_),h(_),h(_),h(_,-3.3),h(_,-1.6),h(_,-.3),h(_),h(_),h(_)];O1={firstframe:F4,lastframe:U4,frames:dR,endfunc:wl};var mR=[h(_,.2),h(_,11.5),h(_,5.1),h(_,7.1),h(_)];I1={firstframe:H4,lastframe:fl,frames:mR,endfunc:yl};var hR=[h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,-1.7),h(_,-1.6),h(_),h(_),h(_),h(_,0,yc),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,0,pl),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,.5),h(_),h(_,-.2,Jt),h(_),h(_,.2),h(_,.4),h(_,.6),h(_,.8),h(_,.7),h(_,0,oR)];dr={firstframe:fl,lastframe:E1,frames:hR,endfunc:yl};var wc=[h(z,0,Jt),h(z,2.5),h(z,3.5),h(z,1.7),h(z,2.3),h(z,2.4),h(z,2.2,Xe),h(z,4.2),h(z,5.6),h(z,3.3),h(z,2.4),h(z,.9),h(z,0,Xe)];C1={firstframe:b1,lastframe:x1,frames:wc,endfunc:Al};P1={firstframe:b1,lastframe:x1,frames:wc.map(e=>({ai:(t,n,i)=>{e.ai===wc[0].ai&&Jt(t,i),oe(t,n,ml,i)},dist:e.dist})),endfunc:mr};var Ac=[h(z,0,Jt),h(z,3.4),h(z,3.6),h(z,2.9),h(z,2.2),h(z,2.6,Xe),h(z),h(z,.7),h(z,4.8),h(z,5.3),h(z,1.1),h(z,2,Xe),h(z,.5),h(z),h(z),h(z,4.9),h(z,6.7),h(z,3.8),h(z,2,Xe),h(z,.2),h(z),h(z,3.4),h(z,6.4),h(z,5),h(z,1.8,Xe),h(z)];D1={firstframe:T1,lastframe:M1,frames:Ac,endfunc:Al};F1={firstframe:T1,lastframe:M1,frames:Ac.map(e=>({ai:(t,n,i)=>{e.ai===Ac[0].ai&&Jt(t,i),oe(t,n,ml,i)},dist:e.dist})),endfunc:mr};var fR=[h(_),h(_),h(_),h(_),h(_,0,Xe),h(_),h(_),h(_),h(_),h(_),h(_,0,Xe)];Q4={firstframe:V4,lastframe:W4,frames:fR,endfunc:mr};var _R=[h(_),h(_),h(_),h(_),h(_,0,Xe),h(_),h(_),h(_),h(_),h(_),h(_,0,Xe),h(_),h(_,0,Xe),h(_),h(_),h(_),h(_)];eR={firstframe:K4,lastframe:$4,frames:_R,endfunc:W1};var K1=[h(z,0,Jt),h(z,1.5),h(z,2.1),h(z,3.6),h(z,2,Xe),h(z,.9),h(z,3),h(z,3.4),h(z,2.4,Xe)];U1={firstframe:_l,lastframe:gl,frames:K1,endfunc:Al};B1={firstframe:_l,lastframe:gl,frames:K1,endfunc:mr};var gR=[h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_)];tR={firstframe:R1,lastframe:Aa,frames:gR,endfunc:mr};var vR=[h(_),h(_),h(_),h(_),h(_,0,Jt),h(_),h(_)];nR={firstframe:X4,lastframe:Y4,frames:vR,endfunc:W1};var pR=[h(_,0,pl),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_)];vl={firstframe:q4,lastframe:j4,frames:pR,endfunc:V1};var yR=[h(_,0,Jt),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_)];G1={firstframe:Z4,lastframe:J4,frames:yR,endfunc:V1};U();U();var wR=.1,AR=0;var Sc=0,$1=39,SR=40,kR=47,ER=48,bR=53,xR=54,TR=56,MR=57,RR=59,LR=60,NR=62,zR=63,OR=76,IR=77,CR=93,PR=94,DR=100,FR=101,UR=113,BR=114,GR=117,X1,Y1,q1,HR,VR,WR,KR,$R,XR,YR,qR;function A(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,wR,a)},dist:t}}function hh(e,t){e.monsterinfo.current_move=X1,t.timeSeconds<1&&(e.frame=Sc+Math.floor(Math.random()*($1-Sc+1)))}function jR(e,t){e.monsterinfo.current_move=Y1}function ai(e,t){if(t.timeSeconds<e.pain_debounce_time&&!e.enemy){e.movetarget?jR(e,t):hh(e,t);return}if(e.monsterinfo.aiflags&1){hh(e,t);return}e.monsterinfo.current_move=q1}function ZR(e,t){let n={x:0,y:0,z:0},r=j(e.angles).forward,a=Jn(e.origin);a.z+=e.viewheight;let s;if(e.enemy){let o;e.enemy.health>0?(o=P(e.enemy.origin,D(e.enemy.velocity,.2)),o.z+=e.enemy.viewheight):(o=Jn(e.enemy.absmin),o.z+=e.enemy.size.z/2+1),s=P(o,a),s=G(s)}else s=r;Yt(e,a,s,3,4,0,0,AR,t)}function j1(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.svflags|=1,e.nextthink=-1,t.linkentity(e)}function JR(e,t){ZR(e,t);let n=e.monsterinfo.fire_wait??0;t.timeSeconds>=n?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}var QR=[A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R)];X1={firstframe:Sc,lastframe:$1,frames:QR,endfunc:null};var eL=[A(z),A(z,6),A(z,10),A(z,3),A(z,2),A(z,7),A(z,10),A(z,1)];Y1={firstframe:SR,lastframe:kR,frames:eL,endfunc:null};var tL=[A(oe,4),A(oe,15),A(oe,15),A(oe,8),A(oe,20),A(oe,15)];q1={firstframe:ER,lastframe:bR,frames:tL,endfunc:null};var nL=[A(_,-5),A(_,4),A(_,1)];HR={firstframe:xR,lastframe:TR,frames:nL,endfunc:ai};var iL=[A(_,-4),A(_,4),A(_)];VR={firstframe:MR,lastframe:RR,frames:iL,endfunc:ai};var rL=[A(_,-1),A(_,1),A(_,0)];WR={firstframe:LR,lastframe:NR,frames:rL,endfunc:ai};var aL=[A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae)];KR={firstframe:zR,lastframe:OR,frames:aL,endfunc:ai};var sL=[A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae),A(ae)];$R={firstframe:IR,lastframe:CR,frames:sL,endfunc:ai};var oL=[A(_),A(_),A(_,-13),A(_,14),A(_,3),A(_,-2),A(_,1)];XR={firstframe:PR,lastframe:DR,frames:oL,endfunc:j1};var cL=[A(_),A(_,7),A(_,-6),A(_,-5),A(_,1),A(_),A(_,-1),A(_,-2),A(_,-1),A(_,-9),A(_,-13),A(_,-13),A(_)];YR={firstframe:FR,lastframe:UR,frames:cL,endfunc:j1};var lL=[A(ue,-2,JR),A(ue,-2),A(ue,3),A(ue,2)];qR={firstframe:BR,lastframe:GR,frames:lL,endfunc:ai};U();U();var Qi=.1;function uL(e,t,n){if(e.classname==="monster_medic"&&e_(e,n)){e.monsterinfo.current_move=hr;return}R(e,Qi,n)}function dL(e,t,n){z(e,t,Qi,n)}function mL(e,t,n){e.classname==="monster_medic"&&e_(e,n)?e.monsterinfo.current_move=hr:oe(e,t,Qi,n)}function ft(e,t,n){ue(e,t,Qi,n)}function Sl(e,t,n){_(e,t)}var kl,Z1,hr,hL,J1,fL,_L,Q1;function gL(e){e.monsterinfo.current_move=kl}function vL(e){e.monsterinfo.current_move=Z1}function fr(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&jt(e,e.enemy)<80){e.monsterinfo.current_move=J1;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=hr:e.monsterinfo.current_move=kl}function pL(e,t){if(!e.enemy||e.enemy.health<=0)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(P(e.enemy.origin,n));pt(e,n,i,2,1e3,0,0,t,10)}function Vt(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(jt(e,e.enemy)>400){e.monsterinfo.current_move=hr;return}let i=j(e.angles),r=i.forward,a=i.right,s=i.up,o={x:24,y:0,z:6},l=F(e.origin,F(D(r,o.x),F(D(a,o.y),D(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,se.temp_entity,{te:we.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:l,end:c})}function yL(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),Vt(e,t)}function wL(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,i=t.getSpawnFunction(n.classname);if(jt(e,n)>400){e.enemy=null;return}if(!i)n.deadflag=0,n.health=n.max_health,n.takedamage=!0,n.solid=2,n.nextthink=t.timeSeconds+.1,n.monsterinfo&&n.monsterinfo.stand&&n.monsterinfo.stand(n,t),n.bad_medic=e;else{let r={entities:t,keyValues:{classname:n.classname},warn:o=>{},free:o=>t.free(o)},a={...n.origin},s={...n.angles};i(n,r),n.origin=a,n.angles=s,t.linkentity(n),n.deadflag=0,n.takedamage=!0,t.finalizeSpawn(n)}e.enemy=null}function e_(e,t){if(e.enemy&&e.enemy.deadflag===2)return!0;if(Math.random()>.2)return!1;let n=null,i=1024,r=(a,s,o,l,c,u)=>{let m=t.trace(a,s,o,l,c,u);return{fraction:m.fraction,ent:m.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!pn(e,a,r))return;let s=jt(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function AL(e,t){let n=Math.random(),i="monster_soldier_light";n>.8?i="monster_soldier_ssg":n>.5&&(i="monster_soldier");let r=t.getSpawnFunction(i);if(r){let a=j(e.angles),s=D(a.forward,64),o=F(e.origin,s),l={...o,z:o.z+8},c=t.trace(e.origin,{x:-16,y:-16,z:-24},{x:16,y:16,z:32},l,e,De|Kt|qi);if(c.fraction<1||c.startsolid||c.allsolid)return;let u=t.spawn();u.origin=l,u.angles={...e.angles},r(u,{entities:t,keyValues:{classname:i},warn:()=>{},free:d=>t.free(d)}),u.enemy=e.enemy,t.multicast(l,1,se.muzzleflash,{entId:u.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function SL(e){e.monsterinfo.nextframe=Q1.lastframe,e.nextthink=-1}var kL=Array.from({length:30},()=>({ai:uL,dist:0}));kl={firstframe:0,lastframe:29,frames:kL,endfunc:gL};var EL=Array.from({length:40},()=>({ai:dL,dist:3}));Z1={firstframe:30,lastframe:69,frames:EL,endfunc:vL};var bL=Array.from({length:20},()=>({ai:mL,dist:12}));hr={firstframe:70,lastframe:89,frames:bL,endfunc:fr};var xL=Array.from({length:16},(e,t)=>({ai:ft,dist:0,think:t>=4&&t<=13?pL:null}));hL={firstframe:90,lastframe:105,frames:xL,endfunc:fr};var TL=[{ai:ft,dist:0,think:yL},{ai:ft,dist:0,think:Vt},{ai:ft,dist:0,think:Vt},{ai:ft,dist:0,think:Vt},{ai:ft,dist:0,think:Vt},{ai:ft,dist:0,think:Vt},{ai:ft,dist:0,think:Vt},{ai:ft,dist:0,think:Vt},{ai:ft,dist:0,think:wL}];J1={firstframe:106,lastframe:114,frames:TL,endfunc:fr};var ML=Array.from({length:6},()=>({ai:Sl,dist:0}));_L={firstframe:116,lastframe:121,frames:ML,endfunc:fr};var RL=Array.from({length:23},(e,t)=>({ai:Sl,dist:0,think:t===11?AL:null}));fL={firstframe:122,lastframe:144,frames:RL,endfunc:fr};var LL=Array.from({length:30},()=>({ai:Sl,dist:0}));Q1={firstframe:161,lastframe:190,frames:LL,endfunc:SL};U();var _r=.1;function K(e,t,n){R(e,_r,n)}function We(e,t,n){z(e,t,_r,n)}function Wn(e,t,n){oe(e,t,_r,n)}function Ht(e,t,n){ue(e,t,_r,n)}function le(e,t,n){_(e,t)}function oc(e,t,n){lE(e,null,t,_r)}var t_,n_,Sa,NL,zL,OL,IL,i_,r_;function CL(e){e.monsterinfo.current_move=n_}function PL(e){e.monsterinfo.current_move=t_}function si(e){e.monsterinfo.current_move=Sa}function a_(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let i=P(e.enemy.origin,e.origin);if(Ge(i)>100)return;let a=G(i);fe(e.enemy,e,e,a,e.enemy.origin,W,t,0,0,0,n.timeSeconds)}function DL(e,t){a_(e,30,t)}function fh(e,t){a_(e,30,t)}function Yn(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Sa),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Sa)}function FL(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),fe(t,e,e,G(e.velocity),e.origin,W,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function UL(e,t){let n=j(e.angles).forward;e.movetype=7,e.touch=FL,e.velocity=F(D(n,300),{x:0,y:0,z:300}),e.velocity=F(D(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function BL(e){e.monsterinfo.nextframe=i_.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var GL=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0}];t_={firstframe:0,lastframe:50,frames:GL,endfunc:PL};var HL=[{ai:We,dist:3},{ai:We,dist:1},{ai:We,dist:5},{ai:We,dist:10},{ai:We,dist:13},{ai:We,dist:12},{ai:We,dist:0},{ai:We,dist:0},{ai:We,dist:5},{ai:We,dist:6},{ai:We,dist:16},{ai:We,dist:15},{ai:We,dist:6}];n_={firstframe:51,lastframe:63,frames:HL,endfunc:CL};var VL=[{ai:Wn,dist:20},{ai:Wn,dist:15},{ai:Wn,dist:35},{ai:Wn,dist:20},{ai:Wn,dist:10},{ai:Wn,dist:20}];Sa={firstframe:64,lastframe:69,frames:VL,endfunc:si};var WL=[{ai:Ht,dist:0},{ai:Ht,dist:0},{ai:Ht,dist:0,think:fh},{ai:Ht,dist:0},{ai:Ht,dist:0,think:DL},{ai:Ht,dist:0},{ai:Ht,dist:0,think:fh},{ai:Ht,dist:0}];NL={firstframe:70,lastframe:77,frames:WL,endfunc:si};var KL=[{ai:oc,dist:0},{ai:oc,dist:0},{ai:oc,dist:0,think:UL},{ai:le,dist:0,think:Yn},{ai:le,dist:0,think:Yn},{ai:le,dist:0,think:Yn},{ai:le,dist:0,think:Yn},{ai:le,dist:0,think:Yn}];r_={firstframe:93,lastframe:100,frames:KL,endfunc:si};r_.frames[3].ai=(e,t,n)=>{Yn(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var $L=[{ai:le,dist:4},{ai:le,dist:-3},{ai:le,dist:-8},{ai:le,dist:2},{ai:le,dist:5}];zL={firstframe:78,lastframe:82,frames:$L,endfunc:si};var XL=[{ai:le,dist:-24},{ai:le,dist:11},{ai:le,dist:5},{ai:le,dist:-2}];OL={firstframe:83,lastframe:86,frames:XL,endfunc:si};var YL=[{ai:le,dist:11},{ai:le,dist:0},{ai:le,dist:-2},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0}];IL={firstframe:87,lastframe:92,frames:YL,endfunc:si};var qL=[{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0}];i_={firstframe:101,lastframe:109,frames:qL,endfunc:BL};U();var Ya=.1,jL=()=>Math.random();function ne(e,t,n){R(e,Ya,n)}function xt(e,t,n){z(e,t,Ya,n)}function Tt(e,t,n){oe(e,t,Ya,n)}function Me(e,t,n){ue(e,t,Ya,n)}function Re(e,t,n){_(e,t)}var El,s_,o_,ZL,JL,c_,l_,QL,eN,bl,u_;function tN(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function nN(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function Kn(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function kc(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function iN(e){e.monsterinfo.current_move=bl}function rN(e){jL()<=.8?e.monsterinfo.current_move=bl:e.monsterinfo.current_move=u_}function d_(e){e.monsterinfo.current_move=El}function xl(e){e.monsterinfo.current_move=s_}function m_(e){e.monsterinfo.current_move=l_}function h_(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=El:e.monsterinfo.current_move=o_}function cc(e,t){let n=P(t,e);if(Ge(n)>256)return!1;let a=Qn(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function nt(e,t){if(!e.enemy)return;let n=j(e.angles),i=n.forward,r=n.right,a=n.up,s={x:24,y:0,z:6},o=F(e.origin,F(D(i,s.x),F(D(r,s.y),D(a,s.z)))),l=Jn(e.enemy.origin);if(!cc(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.maxs.z-8},!cc(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.mins.z+8},!cc(o,l)))||t.trace(o,l,W,W,e,Rt).ent!==e.enemy)return;let u=2,m=e.frame;m===41?(u=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(m===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),u=2),t.multicast(e.origin,0,se.temp_entity,{te:we.PARASITE_ATTACK,entId:e.index,start:o,end:l});let d=G(P(o,l));fe(e.enemy,e,e,d,e.enemy.origin,W,u,0,8,0,t.timeSeconds),e.health<e.max_health&&(e.health+=u,e.health>e.max_health&&(e.health=e.max_health))}function aN(e){e.monsterinfo.nextframe=c_.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var sN=[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Kn},{ai:ne,dist:0},{ai:ne,dist:0,think:Kn},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Kn},{ai:ne,dist:0},{ai:ne,dist:0,think:Kn},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Kn},{ai:ne,dist:0},{ai:ne,dist:0,think:Kn}];El={firstframe:83,lastframe:99,frames:sN,endfunc:d_};var oN=[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}];eN={firstframe:100,lastframe:103,frames:oN,endfunc:iN};var cN=[{ai:ne,dist:0,think:kc},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:kc},{ai:ne,dist:0},{ai:ne,dist:0}];bl={firstframe:104,lastframe:109,frames:cN,endfunc:rN};var lN=[{ai:ne,dist:0,think:kc},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}];u_={firstframe:110,lastframe:117,frames:lN,endfunc:d_};var uN=[{ai:Tt,dist:0},{ai:Tt,dist:30}];l_={firstframe:68,lastframe:69,frames:uN,endfunc:h_};var dN=[{ai:Tt,dist:30},{ai:Tt,dist:30},{ai:Tt,dist:22},{ai:Tt,dist:19},{ai:Tt,dist:24},{ai:Tt,dist:28},{ai:Tt,dist:25}];o_={firstframe:70,lastframe:76,frames:dN,endfunc:h_};var mN=[{ai:xt,dist:0},{ai:xt,dist:30,think:xl}];QL={firstframe:68,lastframe:69,frames:mN,endfunc:xl};var hN=[{ai:xt,dist:30},{ai:xt,dist:30},{ai:xt,dist:22},{ai:xt,dist:19},{ai:xt,dist:24},{ai:xt,dist:28},{ai:xt,dist:25}];s_={firstframe:70,lastframe:76,frames:hN,endfunc:xl};var fN=[{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:6},{ai:Re,dist:16},{ai:Re,dist:-6},{ai:Re,dist:-7},{ai:Re,dist:0}];JL={firstframe:57,lastframe:67,frames:fN,endfunc:m_};var _N=[{ai:Me,dist:0,think:tN},{ai:Me,dist:0},{ai:Me,dist:15,think:nt},{ai:Me,dist:0,think:nt},{ai:Me,dist:0,think:nt},{ai:Me,dist:0,think:nt},{ai:Me,dist:0,think:nt},{ai:Me,dist:-2,think:nt},{ai:Me,dist:-2,think:nt},{ai:Me,dist:-3,think:nt},{ai:Me,dist:-2,think:nt},{ai:Me,dist:0,think:nt},{ai:Me,dist:-1,think:nt},{ai:Me,dist:0,think:nN},{ai:Me,dist:-2},{ai:Me,dist:-2},{ai:Me,dist:-3},{ai:Me,dist:0}];ZL={firstframe:39,lastframe:56,frames:_N,endfunc:m_};var gN=[{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0}];c_={firstframe:32,lastframe:38,frames:gN,endfunc:aN};U();var qa=.1;var vN=2,pN=4;function yN(e,t,n){R(e,qa,n)}function wN(e,t,n){z(e,t,qa,n)}function AN(e,t,n){oe(e,t,qa,n)}function f_(e,t,n){ue(e,t,qa,n)}function __(e,t,n){_(e,t)}var Tl,g_,v_,SN,kN,EN,p_;function bN(e){e.monsterinfo.current_move=Tl}function xN(e){e.monsterinfo.current_move=g_}function ja(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=v_:e.monsterinfo.current_move=Tl}function gr(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function vr(e,t){if(!e.enemy){let{forward:i}=j(e.angles);return i}let n={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)};return G(P(n,t))}function TN(e,t){if(!e.enemy)return;let n=gr(e),i=vr(e,n);pt(e,n,i,5,600,0,0,t,1)}function MN(e,t){if(!e.enemy)return;let n=gr(e),i=vr(e,n),r=2,a=4,s=20,o=.15,l=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),M6(e,n,i,r,a,o,l,s,0,t,3)}function RN(e,t){if(!e.enemy)return;let n=gr(e),i=vr(e,n),r=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),Yt(e,n,i,r,a,s,o,0,t,4)}function LN(e,t){let n=e.owner;if(!n||!n.enemy)return;let{forward:i,right:r,up:a}=j(n.angles),s={...n.origin};s=F(s,D(i,16)),s.z+=n.viewheight;let o={...n.enemy.origin};o.z+=n.enemy.viewheight||0;let l=G(P(o,s));e.origin=s,e.movedir=l,t.linkentity(e)}function NN(e,t){if(!e.enemy)return;let n=gr(e),i=vr(e,n);L6(e,n,i,5,600,0,0,t)}function zN(e,t){if(!e.enemy)return;let n=gr(e),i=vr(e,n),r=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),R6(e,n,i,r,a,0,0,t)}function ON(e,t){e.enemy&&hc(e,1,!1,LN,t)}function IN(e,t){e.count<2?NN(e,t):e.count<4?zN(e,t):ON(e,t)}function y_(e,t){if(e.style===1){IN(e,t);return}e.spawnflags&vN?MN(e,t):e.spawnflags&pN?RN(e,t):TN(e,t)}var CN=Array.from({length:30},()=>({ai:yN,dist:0}));Tl={firstframe:0,lastframe:29,frames:CN,endfunc:bN};var PN=Array.from({length:40},()=>({ai:wN,dist:2}));g_={firstframe:30,lastframe:69,frames:PN,endfunc:xN};var DN=Array.from({length:20},()=>({ai:AN,dist:10}));v_={firstframe:70,lastframe:89,frames:DN,endfunc:ja};var FN=Array.from({length:10},(e,t)=>({ai:f_,dist:0,think:t===5?y_:null}));SN={firstframe:90,lastframe:99,frames:FN,endfunc:ja};var UN=Array.from({length:10},(e,t)=>({ai:f_,dist:0,think:t>=4&&t<=8?y_:null}));kN={firstframe:90,lastframe:99,frames:UN,endfunc:ja};var BN=Array.from({length:6},()=>({ai:__,dist:0}));EN={firstframe:100,lastframe:105,frames:BN,endfunc:ja};var GN=Array.from({length:10},()=>({ai:__,dist:0}));function HN(e){e.monsterinfo.nextframe=p_.lastframe,e.nextthink=-1}p_={firstframe:106,lastframe:115,frames:GN,endfunc:HN};U();var w_=.1,VN={x:30,y:30,z:40},WN={x:30,y:-30,z:40},KN={x:20,y:0,z:70};function $N(e,t,n){R(e,w_,n)}function XN(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Rl:e.monsterinfo.current_move=Za}function Ml(e,t,n){ue(e,t,w_,n)}function pr(e,t,n){_(e,t)}var Za,Rl,YN,qN,A_,S_,jN,ZN,JN,k_;function QN(e){e.monsterinfo.current_move=Za}function An(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Rl:e.monsterinfo.current_move=Za}function Ll(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),l=D(r,t.z);return F(F(F(a,s),o),l)}function ez(e,t){if(!e.enemy)return;let n=Ll(e,WN),i=G(P(e.enemy.origin,n));sr(e,n,i,50,650,0,t)}function tz(e,t){if(!e.enemy)return;let n=Ll(e,KN),i=G(P(e.enemy.origin,n));N6(e,n,i,50,600,0,t)}function nz(e,t){if(!e.enemy)return;let n=Ll(e,VN),i=G(P(e.enemy.origin,n));wa(e,n,i,6,4,.05,.05,0,t,4)}function iz(e,t){let n=(i,r,a,s,o,l)=>{let c=t.trace(i,r,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&pn(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=A_:e.monsterinfo.current_move=S_}function rz(e){e.monsterinfo.nextframe=k_.lastframe,e.nextthink=-1}var az=Array.from({length:60},()=>({ai:$N,dist:0}));Za={firstframe:0,lastframe:59,frames:az,endfunc:QN};var sz=Array.from({length:18},()=>({ai:XN,dist:12}));Rl={firstframe:60,lastframe:77,frames:sz,endfunc:An};var oz=Array.from({length:4},()=>({ai:pr,dist:0}));JN={firstframe:78,lastframe:81,frames:oz,endfunc:An};var cz=Array.from({length:4},()=>({ai:pr,dist:0}));ZN={firstframe:82,lastframe:85,frames:cz,endfunc:An};var lz=Array.from({length:4},()=>({ai:pr,dist:0}));jN={firstframe:86,lastframe:89,frames:lz,endfunc:An};var uz=Array.from({length:24},()=>({ai:pr,dist:0}));k_={firstframe:90,lastframe:113,frames:uz,endfunc:rz};var dz=Array.from({length:6},(e,t)=>({ai:Ml,dist:0,think:t===0||t===3?tz:null}));qN={firstframe:114,lastframe:119,frames:dz,endfunc:An};var mz=Array.from({length:27},(e,t)=>({ai:Ml,dist:0,think:t===7||t===10||t===13?ez:null}));YN={firstframe:120,lastframe:146,frames:mz,endfunc:An};var hz=Array.from({length:6},()=>({ai:Ml,dist:0,think:nz}));A_={firstframe:147,lastframe:152,frames:hz,endfunc:iz};var fz=Array.from({length:14},()=>({ai:pr,dist:0}));S_={firstframe:153,lastframe:166,frames:fz,endfunc:An};U();var Nl=.1;function E_(e,t,n,i,r){let a=r.trace(t,n,W,W,e,Rt);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return G(P(n,t));let s=F(n,D(i,-20)),o=r.trace(t,s,W,W,e,Rt);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return G(P(s,t));let l=F(n,D(i,20)),c=r.trace(t,l,W,W,e,Rt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?G(P(l,t)):null}function b_(e,t){if(e.monsterinfo.aiflags&32768&&e.monsterinfo.blind_fire_target){let n=P(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=nr(n)}}function _z(e,t,n){R(e,Nl,n)}function gz(e,t,n){z(e,t,Nl,n)}function vz(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ol:e.monsterinfo.current_move=Ja}function zl(e,t,n){ue(e,t,Nl,n)}function x_(e,t,n){_(e,t)}var Ja,T_,Ol,pz,yz,wz,Az,M_;function Sz(e){e.monsterinfo.current_move=Ja}function kz(e){e.monsterinfo.current_move=T_}function yr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ol:e.monsterinfo.current_move=Ja}function Ez(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=j(o),c=e.monsterinfo.blind_fire_target,u=E_(e,n,c,l,t);if(!u)return;i=u}else i=G(P(e.enemy.origin,n));pt(e,n,i,30,1e3,0,0,t,1)}function bz(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=G(P(e.enemy.origin,n));Yt(e,n,i,20,2,.05,.05,0,t,4)}function xz(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=j(o),c=e.monsterinfo.blind_fire_target,u=E_(e,n,c,l,t);if(!u)return;i=u}else i=G(P(e.enemy.origin,n));sr(e,n,i,50,650,0,t)}function Tz(e){e.monsterinfo.nextframe=M_.lastframe,e.nextthink=-1}function Mz(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),yr(e)}var Rz=Array.from({length:30},()=>({ai:_z,dist:0}));Ja={firstframe:0,lastframe:29,frames:Rz,endfunc:Sz};var Lz=Array.from({length:16},()=>({ai:gz,dist:5}));T_={firstframe:30,lastframe:45,frames:Lz,endfunc:kz};var Nz=Array.from({length:16},()=>({ai:vz,dist:10}));Ol={firstframe:46,lastframe:61,frames:Nz,endfunc:yr};var zz=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=b_:t>5&&t<12&&(n=Ez),{ai:zl,dist:0,think:n}});pz={firstframe:62,lastframe:77,frames:zz,endfunc:yr};var Oz=Array.from({length:20},(e,t)=>({ai:zl,dist:0,think:t%2===0&&t>5?bz:null}));yz={firstframe:78,lastframe:97,frames:Oz,endfunc:yr};var Iz=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=b_:(t===8||t===12||t===16)&&(n=xz),{ai:zl,dist:0,think:n}});wz={firstframe:98,lastframe:115,frames:Iz,endfunc:Mz};var Cz=Array.from({length:6},()=>({ai:x_,dist:0}));Az={firstframe:116,lastframe:121,frames:Cz,endfunc:yr};var Pz=Array.from({length:16},()=>({ai:x_,dist:0}));M_={firstframe:122,lastframe:137,frames:Pz,endfunc:Tz};U();var Il=.1;function Dz(e,t,n){R(e,Il,n)}function Cl(e,t,n){oe(e,t,Il,n)}function Fz(e,t,n){ue(e,t,Il,n)}var Pl,R_,Uz,Bz,L_;function Gz(e){e.monsterinfo.current_move=Pl}function Dl(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=R_:e.monsterinfo.current_move=Pl}function Hz(e,t){if(!e.enemy)return;let n=j(e.angles).forward,i={x:e.origin.x+n.x*8,y:e.origin.y+n.y*8,z:e.origin.z+e.viewheight},r=G(P(e.enemy.origin,i));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),pt(e,i,r,2,1e3,1,0,t)}var Vz=Array.from({length:1},()=>({ai:Dz,dist:0}));Pl={firstframe:0,lastframe:0,frames:Vz,endfunc:Gz};var Wz=Array.from({length:1},()=>({ai:Cl,dist:0}));R_={firstframe:0,lastframe:0,frames:Wz,endfunc:Dl};var Kz=Array.from({length:8},(e,t)=>({ai:Fz,dist:0,think:t===4?Hz:void 0}));Uz={firstframe:1,lastframe:8,frames:Kz,endfunc:Dl};var $z=Array.from({length:2},()=>({ai:Cl,dist:0}));Bz={firstframe:9,lastframe:10,frames:$z,endfunc:Dl};var Xz=Array.from({length:4},()=>({ai:Cl,dist:0}));function Yz(e){e.monsterinfo.nextframe=L_.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}L_={firstframe:11,lastframe:14,frames:Xz,endfunc:Yz};U();var Qa=.1;var er=()=>Math.random(),es=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;function oi(e,t,n){R(e,Qa,n)}function $n(e,t,n){z(e,t,Qa,n)}function $e(e,t,n){oe(e,t,Qa,n)}function $(e,t,n){ue(e,t,Qa,n)}function Fe(e,t,n){_(e,t)}var Fl,N_,z_,ts,Ul,qz,O_,jz,I_,C_,P_,D_,F_,Zz,Jz,Qz,eO,tO,nO,iO,rO,aO,sO,ns=2,U_=80,oO=100;var cO=8;var Bl=32;function ci(e,t){!(e.spawnflags&Bl)&&e.waterlevel>=ns&&AO(e)}function lO(e){e.waterlevel>=ns?(e.flags|=2,e.monsterinfo.current_move=N_):e.monsterinfo.current_move!==Ul&&(e.monsterinfo.current_move=Fl)}function B_(e){e.flags|=2,e.monsterinfo.current_move=z_}function is(e,t){if(!e.enemy)return;let n=es(5,10),i=100,r=P(e.enemy.origin,e.origin);Ge(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck2.wav",1,1,0),fe(e.enemy,e,e,G(r),e.enemy.origin,W,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function Gl(e,t){if(!e.enemy)return;let n=es(5,10),i=100,r=P(e.enemy.origin,e.origin);Ge(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck3.wav",1,1,0),fe(e.enemy,e,e,G(r),e.enemy.origin,W,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function Hl(e,t){if(!e.enemy)return;let n=5,i=U_,r=P(e.enemy.origin,e.origin);Ge(r)<=i&&fe(e.enemy,e,e,G(r),e.enemy.origin,W,n,0,0,0,t.timeSeconds)}function uO(e){e.monsterinfo.current_move=Ul}function G_(e){er()>.75&&e.health<e.max_health&&(e.monsterinfo.nextframe=0)}function H_(e,t){let n=es(0,2),i=["gek/gk_step1.wav","gek/gk_step2.wav","gek/gk_step3.wav"];t.engine.sound?.(e,0,i[n],1,1,0)}function V_(e,t){if(e.spawnflags&cO){let n=er();n<.33?t.engine.sound?.(e,0,"gek/gek_low.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"gek/gek_mid.wav",1,1,0):t.engine.sound?.(e,0,"gek/gek_high.wav",1,1,0)}else t.engine.sound?.(e,0,"gek/gk_idle1.wav",1,1,0);e.health+=es(10,20),e.health>e.max_health&&(e.health=e.max_health),e.health<e.max_health/4?e.skin=2:e.health<e.max_health/2?e.skin=1:e.skin=0}function zt(e){!(e.spawnflags&Bl)&&e.waterlevel>=ns?e.monsterinfo.current_move=ts:e.monsterinfo.current_move=C_}function dO(e){!(e.spawnflags&Bl)&&e.waterlevel>=ns?e.monsterinfo.current_move=ts:e.monsterinfo.current_move=I_}function W_(e){if(!e.enemy||e.enemy.health<=0)return;Ge(P(e.enemy.origin,e.origin))<=U_&&(e.frame===114?e.monsterinfo.current_move=D_:e.frame===123&&(e.monsterinfo.current_move=P_))}function mO(e,t,n,i,r,a){let s=rr(a,e,t,n,i,r,0);s.model="models/objects/loogy/tris.md2"}function hO(e,t){if(!e.enemy||e.enemy.health<=0)return;let n=j(e.angles),i=n.forward,r=n.right,a=n.up,s={x:-18,y:-.8,z:24},o=F(e.origin,F(D(i,s.x),F(D(r,s.y),D(a,s.z))));o.z+=2;let l=Jn(e.enemy.origin);l.z+=e.enemy.viewheight||0;let c=G(P(l,o));mO(e,o,c,5,550,t),t.engine.sound?.(e,0,"gek/gk_atck4.wav",1,1,0)}function fO(e){if(er()>.8&&e.health<e.max_health){e.monsterinfo.current_move=O_;return}if(e.enemy&&e.enemy.health>0){let t=Ge(P(e.enemy.origin,e.origin));er()>.7&&t<=oO&&(e.monsterinfo.current_move=F_)}}function _O(e,t,n,i){if(e.health<=0){e.touch=void 0;return}e.touch=void 0}function gO(e,t){let i=j(e.angles).forward;t.engine.sound?.(e,0,"gek/gk_sght1.wav",1,1,0),e.origin.z+=1,e.velocity=F(D(i,700),{x:0,y:0,z:250}),e.groundentity=null,e.touch=_O}function vO(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.velocity=W;return}}function hn(e){e.groundentity&&(e.velocity=W)}function pO(e,t){}function rs(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.nextthink=-1}function K_(e,t){Yh(t,e.origin,20),e.deadflag=2}function yO(e,t){er()>.9&&K_(e,t)}function wO(e){e.maxs.z=0}function AO(e){e.flags|=2,e.yaw_speed=10,e.viewheight=10,e.monsterinfo.current_move=ts,e.mins={x:-18,y:-18,z:-24},e.maxs={x:18,y:18,z:16}}var $_=Array(38).fill({ai:oi,dist:0});$_[38]={ai:oi,dist:0,think:ci};Fl={firstframe:0,lastframe:38,frames:$_,endfunc:null};var SO=Array(32).fill({ai:oi,dist:14});N_={firstframe:39,lastframe:70,frames:SO,endfunc:null};var kO=Array(32).fill({ai:$e,dist:14});z_={firstframe:39,lastframe:70,frames:kO,endfunc:B_};var as=Array(32).fill({ai:$e,dist:14});as[8]={ai:$e,dist:18,think:is};as[14]={ai:$e,dist:24,think:Gl};as[20]={ai:$e,dist:22,think:Hl};ts={firstframe:39,lastframe:70,frames:as,endfunc:B_};var Vl=Array(32).fill({ai:oi,dist:0});Vl[0]={ai:oi,dist:0,think:V_};Vl[31]={ai:oi,dist:0,think:G_};qz={firstframe:71,lastframe:102,frames:Vl,endfunc:lO};var ss=Array(32).fill({ai:Fe,dist:0});ss[0]={ai:Fe,dist:0,think:V_};ss[31]={ai:Fe,dist:0,think:G_};O_={firstframe:71,lastframe:102,frames:ss,endfunc:e=>zO(e,Fl)};Ul={firstframe:71,lastframe:102,frames:ss,endfunc:uO};var EO=[{ai:$n,dist:3.8,think:ci},{ai:$n,dist:19.6},{ai:$n,dist:25.5},{ai:$n,dist:34.6,think:H_},{ai:$n,dist:27.3},{ai:$n,dist:28.4}];jz={firstframe:103,lastframe:108,frames:EO,endfunc:null};var bO=[{ai:$e,dist:3.8,think:ci},{ai:$e,dist:19.6},{ai:$e,dist:25.5},{ai:$e,dist:34.6,think:H_},{ai:$e,dist:27.3},{ai:$e,dist:28.4}];I_={firstframe:103,lastframe:108,frames:bO,endfunc:null};var xO=[{ai:$e,dist:.2},{ai:$e,dist:19.7}];C_={firstframe:0,lastframe:1,frames:xO,endfunc:dO};var TO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:hO},{ai:$,dist:0,think:fO}];F_={firstframe:133,lastframe:139,frames:TO,endfunc:zt};var MO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:is},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:W_}];P_={firstframe:109,lastframe:117,frames:MO,endfunc:zt};var RO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:is},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:Gl},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:W_}];D_={firstframe:118,lastframe:126,frames:RO,endfunc:zt};var X_=[{ai:$,dist:0},{ai:$,dist:-.3},{ai:$,dist:-1.1},{ai:$,dist:-.2},{ai:$,dist:6.7,think:gO},{ai:$,dist:6.4},{ai:$,dist:.1},{ai:$,dist:28.3},{ai:$,dist:24.1},{ai:$,dist:31.7},{ai:$,dist:35.9,think:vO},{ai:$,dist:12.3,think:hn},{ai:$,dist:20.1,think:hn},{ai:$,dist:-1,think:hn},{ai:$,dist:2.5,think:hn},{ai:$,dist:.5,think:hn},{ai:$,dist:1.8,think:hn},{ai:$,dist:1.2,think:hn},{ai:$,dist:-.4,think:ci}];Zz={firstframe:140,lastframe:158,frames:X_,endfunc:zt};Jz={firstframe:140,lastframe:158,frames:X_,endfunc:zt};var li=Array(21).fill({ai:$,dist:16});li[0]={ai:$,dist:16,think:pO};li[4]={ai:$,dist:16,think:Hl};li[9]={ai:$,dist:16,think:Hl};li[13]={ai:$,dist:16,think:is};li[18]={ai:$,dist:16,think:Gl};Qz={firstframe:159,lastframe:179,frames:li,endfunc:zt};var LO=Array(6).fill({ai:Fe,dist:0});eO={firstframe:180,lastframe:185,frames:LO,endfunc:zt};var Y_=Array(11).fill({ai:Fe,dist:0});Y_[10]={ai:Fe,dist:0,think:ci};tO={firstframe:186,lastframe:196,frames:Y_,endfunc:zt};var q_=Array(13).fill({ai:Fe,dist:0});q_[12]={ai:Fe,dist:0,think:ci};nO={firstframe:197,lastframe:209,frames:q_,endfunc:zt};var j_=Array(10).fill({ai:Fe,dist:0});j_[5]={ai:Fe,dist:-7,think:wO};iO={firstframe:210,lastframe:219,frames:j_,endfunc:rs};var Z_=Array(7).fill({ai:Fe,dist:0});Z_[5]={ai:Fe,dist:-7,think:yO};rO={firstframe:220,lastframe:226,frames:Z_,endfunc:rs};var J_=Array(35).fill({ai:Fe,dist:0});J_[34]={ai:Fe,dist:0,think:K_};aO={firstframe:227,lastframe:261,frames:J_,endfunc:rs};var NO=Array(45).fill({ai:Fe,dist:0});sO={firstframe:262,lastframe:306,frames:NO,endfunc:rs};function zO(e,t){e.monsterinfo.current_move=t}U();var Wl=.1,OO=()=>Math.random(),_h=()=>Math.random();function IO(e,t,n){z(e,t,Wl,n)}function CO(e,t,n){oe(e,t,Wl,n)}function os(e,t,n){ue(e,t,Wl,n)}function rt(e,t,n){_(e,t)}var tr,PO,Kl,Q_,eg,DO,FO,UO,BO,GO,HO,VO,WO=1;function KO(e,t){let i=t.findByRadius(e.origin,1024),r=null;for(let a of i)if(a!==e&&a.monsterinfo&&!(a.monsterinfo.aiflags&256)&&!(a.health>0)&&!(a.nextthink&&a.think===t.free)&&!(a.health<=-40)&&pn(e,a,t.trace)){if(!r){r=a;continue}a.max_health<=r.max_health||(r=a)}return r}function $O(e,t){if(e.enemy)return;let n=KO(e,t);n?(e.enemy=n,e.monsterinfo.aiflags|=8192,wr(e),void 0):OO()<.1&&t.engine.sound?.(e,0,"flyer/flysght1.wav",1,1,0)}function XO(e,t){if(!e.enemy||!e.enemy.inUse){e.monsterinfo.current_move=Kl;return}let n=j(e.angles),i=F(e.origin,F(D(n.forward,0),F(D(n.right,0),D(n.up,0)))),r=Jn(e.enemy.origin);r.z+=e.enemy.viewheight||0;let a=G(P(r,i));pt(e,i,a,15,1e3,WO,0,t)}function YO(e,t){if(!e.enemy||!e.enemy.inUse||e.enemy.health<=-40){e.monsterinfo.current_move=tr,e.monsterinfo.aiflags&=-8193;return}e.enemy.health<e.enemy.max_health?(e.enemy.health+=5,e.enemy.health>e.enemy.max_health&&(e.enemy.health=e.enemy.max_health)):(e.enemy.deadflag===2&&(e.enemy.deadflag=0,e.enemy.solid=2,e.enemy.takedamage=!0,e.enemy.health=e.enemy.max_health,e.enemy.monsterinfo.aiflags&=-129),e.monsterinfo.current_move=tr,e.monsterinfo.aiflags&=-8193,e.enemy=null)}function qO(e,t){if(_h()>.8){let n=_h();n<.33?t.engine.sound?.(e,0,"misc/welder1.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"misc/welder2.wav",1,1,0):t.engine.sound?.(e,0,"misc/welder3.wav",1,1,0)}}function wr(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=tr:e.monsterinfo.current_move=Kl}function jO(e){e.monsterinfo.aiflags&8192?e.monsterinfo.current_move=eg:e.monsterinfo.current_move=Q_}function $l(e){e.goalentity&&e.goalentity.health>0||(e.monsterinfo.current_move=tr)}var tg=Array(19).fill({ai:rt,dist:0});tg[18]={ai:rt,dist:0,think:$O};tr={firstframe:58,lastframe:76,frames:tg,endfunc:null};var ZO=[{ai:IO,dist:5}];PO={firstframe:0,lastframe:0,frames:ZO,endfunc:null};var JO=[{ai:CO,dist:10}];Kl={firstframe:0,lastframe:0,frames:JO,endfunc:null};var ng=Array(31).fill({ai:os,dist:0});ng[20]={ai:os,dist:0,think:XO};Q_={firstframe:121,lastframe:151,frames:ng,endfunc:wr};var QO=Array(6).fill({ai:os,dist:0,think:YO});eg={firstframe:115,lastframe:120,frames:QO,endfunc:null};var ig=Array(10).fill({ai:rt,dist:0});ig[9]={ai:rt,dist:0,think:$l};DO={firstframe:77,lastframe:86,frames:ig,endfunc:null};var rg=Array(7).fill({ai:rt,dist:0,think:qO});rg[6]={ai:rt,dist:0,think:$l};FO={firstframe:87,lastframe:93,frames:rg,endfunc:null};var ag=Array(7).fill({ai:rt,dist:-2});ag[6]={ai:rt,dist:-2,think:$l};UO={firstframe:94,lastframe:100,frames:ag,endfunc:null};var eI=[{ai:os,dist:0}];BO={firstframe:0,lastframe:0,frames:eI,endfunc:jO};var tI=[{ai:rt,dist:-1}];GO={firstframe:0,lastframe:0,frames:tI,endfunc:wr};var nI=Array(8).fill({ai:rt,dist:0});HO={firstframe:107,lastframe:114,frames:nI,endfunc:wr};var iI=Array(6).fill({ai:rt,dist:0});VO={firstframe:101,lastframe:106,frames:iI,endfunc:wr};U();U();var Xl=.1;function rI(e,t,n){R(e,Xl,n)}function aI(e,t,n){z(e,t,Xl,n)}function sI(e,t,n){oe(e,t,Xl,n)}var k7=Array.from({length:1},()=>({ai:rI,dist:0})),E7=Array.from({length:1},()=>({ai:aI,dist:5})),b7=Array.from({length:1},()=>({ai:sI,dist:10}));var x7=new Map(Rc.map(e=>[e.name,e]));U();var oI=2166136261,cI=16777619;function sg(e,t){let n=e>>>0;for(let i=0;i<t.length;i+=1)n^=t[i]&255,n=Math.imul(n,cI)>>>0;return n>>>0}function qn(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let r=new Uint8Array(n);return sg(e,r)}function Ec(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i)&255;return sg(e,n)}var lc=2,lI=1;function Ye(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function ve(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function jn(e,t,n){return e===void 0?n:ve(e,t)}function ka(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function va(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)ve(n,`${t} element`);return e}function uI(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Ye(e,"level");return{frameNumber:jn(t.frameNumber,"level.frameNumber",0),timeSeconds:jn(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:jn(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:jn(t.deltaSeconds,"level.deltaSeconds",0)}}function dI(e){if(e===void 0)return new Tc().getState();let t=Ye(e,"rng"),n=Ye(t.mt,"rng.mt"),i=va(n.state,"rng.mt.state");return{mt:{index:ve(n.index,"rng.mt.index"),state:i}}}function mI(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("thinks must be an array");return e.map((t,n)=>{let i=Ye(t,`thinks[${n}]`);return{time:ve(i.time,`thinks[${n}].time`),entityIndex:ve(i.entityIndex,`thinks[${n}].entityIndex`)}})}function hI(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=Ye(e,"awareness"),n=(i,r)=>i===null?null:ve(i,r);return{frameNumber:ve(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:ve(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:ve(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:ve(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function fI(e){if(e===void 0)return{};let t=Ye(e,"entity.fields"),n={};for(let[i,r]of Object.entries(t)){if(r===null){n[i]=null;continue}switch(typeof r){case"number":case"string":case"boolean":n[i]=r;break;default:{if(!Array.isArray(r)){let a=Ye(r,i),s={};for(let[o,l]of Object.entries(a))s[o]=ve(l,`${i}.${o}`);n[i]=s;break}if(Array.isArray(r)&&r.length===3){let[a,s,o]=r;n[i]=[ve(a,`${i}[0]`),ve(s,`${i}[1]`),ve(o,`${i}[2]`)];break}throw new Error(`Unsupported entity field value for ${i}`)}}}return n}function _I(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let i=Ye(t,`entities[${n}]`);return{index:ve(i.index,`entities[${n}].index`),fields:fI(i.fields)}})}function gI(e){let t=Ye(e,"pool");return{capacity:ve(t.capacity,"pool.capacity"),activeOrder:va(t.activeOrder,"pool.activeOrder"),freeList:va(t.freeList,"pool.freeList"),pendingFree:va(t.pendingFree,"pool.pendingFree")}}function vI(e){let t=Ye(e,"entities");return{timeSeconds:ve(t.timeSeconds,"entities.timeSeconds"),pool:gI(t.pool),entities:_I(t.entities),thinks:mI(t.thinks),awareness:hI(t.awareness),crossLevelFlags:jn(t.crossLevelFlags,"entities.crossLevelFlags",0),crossUnitFlags:jn(t.crossUnitFlags,"entities.crossUnitFlags",0),level:{next_auto_save:0,health_bar_entities:[null,null,null,null]}}}function pI(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("cvars must be an array");return e.map((t,n)=>{let i=Ye(t,`cvars[${n}]`);return{name:ka(i.name,`cvars[${n}].name`),value:ka(i.value,`cvars[${n}].value`),flags:ve(i.flags,`cvars[${n}].flags`)}})}function yI(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>ka(t,`configstrings[${n}]`))}function wI(e){return e===void 0?{}:Ye(e,"gameState")}function Mt(e,t){if(t==null)return e;if(typeof t=="number")return qn(e,t);if(typeof t=="string")return Ec(e,t);if(typeof t=="boolean")return qn(e,t?1:0);if(Array.isArray(t)){let n=e;for(let i of t)n=Mt(n,i);return n}if(typeof t=="object"){let n=e,i=Object.keys(t).sort();for(let r of i)n=Ec(n,r),n=Mt(n,t[r]);return n}return e}function AI(e){let t=oI;return t=qn(t,e.version),t=qn(t,e.timestamp),t=Ec(t,e.map),t=qn(t,e.difficulty),t=qn(t,e.playtimeSeconds),t=Mt(t,e.gameState),t=Mt(t,e.level),t=Mt(t,e.rng),t=Mt(t,e.entities),t=Mt(t,e.cvars),t=Mt(t,e.configstrings),e.player&&(t=Mt(t,e.player)),t>>>0}function og(e,t={}){let{allowNewerVersion:n=!0}=t,i=typeof e=="string"?JSON.parse(e):e,r=Ye(i,"save"),a=r.version??lc,s=ve(a,"version");if(s<lI)throw new Error(`Unsupported save version ${s}`);if(s>lc&&!n)throw new Error(`Save version ${s} is newer than supported ${lc}`);let o={version:s,timestamp:ve(r.timestamp,"timestamp"),map:ka(r.map,"map"),difficulty:ve(r.difficulty,"difficulty"),playtimeSeconds:ve(r.playtimeSeconds,"playtimeSeconds"),gameState:wI(r.gameState),level:uI(r.level),rng:dI(r.rng),entities:vI(r.entities),cvars:pI(r.cvars),configstrings:yI(r.configstrings),player:r.player?r.player:void 0,checksum:r.checksum!==void 0?ve(r.checksum,"checksum"):void 0};if(o.checksum!==void 0){let l=AI(o);if(l!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${l}`)}return o}U();var T7=new Set(Rc.filter(e=>e.save).map(e=>e.name));var gh=globalThis.TextEncoder;function Zn(e){return og({...e},{allowNewerVersion:!0})}function SI(e){return gh?new gh().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var kI=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:Zn(e.save)};this.records.set(e.id,t)}async get(e){let t=this.records.get(e);return t?{id:t.id,metadata:{...t.metadata},save:Zn(t.save)}:null}async delete(e){return this.records.delete(e)}async list(){return Array.from(this.records.values()).map(e=>({id:e.id,metadata:{...e.metadata},save:Zn(e.save)}))}},EI=class{constructor(e,t,n){this.indexedDB=e,this.dbName=t,this.storeName=n,this.db=null}async init(){this.db||(this.db=await new Promise((e,t)=>{let n=this.indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{n.result.createObjectStore(this.storeName,{keyPath:"id"})},n.onerror=()=>t(n.error??new Error("Failed to open IndexedDB")),n.onsuccess=()=>e(n.result)}))}async runTransaction(e,t){await this.init();let n=this.db;return new Promise((i,r)=>{let s=n.transaction(this.storeName,e).objectStore(this.storeName),o=t(s);o.onsuccess=()=>i(o.result),o.onerror=()=>r(o.error??new Error("IndexedDB request failed"))})}async put(e){await this.runTransaction("readwrite",t=>t.put(e))}async get(e){let t=await this.runTransaction("readonly",n=>n.get(e));return t?{id:t.id,metadata:{...t.metadata},save:Zn(t.save)}:null}async delete(e){return await this.get(e)?(await this.runTransaction("readwrite",n=>n.delete(e)),!0):!1}async list(){return(await this.runTransaction("readonly",t=>t.getAll())).map(t=>({id:t.id,metadata:{...t.metadata},save:Zn(t.save)}))}},Yl=class $i{constructor(t={}){let{dbName:n=$i.DEFAULT_DB_NAME,storeName:i=$i.DEFAULT_STORE}=t,r=t.indexedDB??globalThis.indexedDB;r?this.adapter=new EI(r,n,i):this.adapter=new kI}async save(t,n,i={}){let r=Zn(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:SI(r)};return await this.adapter.init(),await this.adapter.put({id:t,metadata:a,save:r}),a}async load(t,n={}){await this.adapter.init();let i=await this.adapter.get(t);if(!i)throw new Error(`Save slot ${t} not found`);return og(i.save,n)}async delete(t){return await this.adapter.init(),this.adapter.delete(t)}async list(){return await this.adapter.init(),(await this.adapter.list()).map(n=>({...n.metadata})).sort((n,i)=>i.timestamp-n.timestamp||n.id.localeCompare(i.id))}async quickSave(t){return this.save($i.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load($i.QUICK_SLOT,t)}};Yl.DEFAULT_DB_NAME="quake2ts-saves";Yl.DEFAULT_STORE="saves";Yl.QUICK_SLOT="quicksave";U();qt();U();U();var M7=ir();U();qt();var R7=[{id:ie.QuadDamage,priority:1},{id:ie.Invulnerability,priority:2},{id:ie.EnviroSuit,priority:3},{id:ie.Rebreather,priority:4},{id:ie.Silencer,priority:5}];U();U();var bI=new Map,xI=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],cg=async(e,t)=>{for(let n of xI)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);bI.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var TI=new Map,MI=["d_left","d_right","d_up","d_down"],lg=async(e,t)=>{for(let n of MI)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);TI.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var ql=[],RI=0,ug=async(e,t)=>{for(let n=0;n<10;n++)try{let i=await t.loadTexture(`pics/hud/num_${n}.pcx`),r=e.registerTexture(`hud_num_${n}`,i);ql.push(r)}catch(i){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,i)}ql.length>0&&(RI=ql[0].width),await Qm(e,t),await cg(e,t),await lg(e,t)};var jl=[{type:"null"},{type:"armor",id:_n.BODY},{type:"armor",id:_n.COMBAT},{type:"armor",id:_n.JACKET},{type:"armor",id:_n.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:V.Grapple},{type:"weapon",id:V.Blaster},{type:"weapon",id:V.ChainFist},{type:"weapon",id:V.Shotgun},{type:"weapon",id:V.SuperShotgun},{type:"weapon",id:V.Machinegun},{type:"weapon",id:V.EtfRifle},{type:"weapon",id:V.Chaingun},{type:"ammo",id:I.Grenades},{type:"ammo",id:I.Trap},{type:"ammo",id:I.Tesla},{type:"weapon",id:V.GrenadeLauncher},{type:"weapon",id:V.ProxLauncher},{type:"weapon",id:V.RocketLauncher},{type:"weapon",id:V.HyperBlaster},{type:"weapon",id:V.IonRipper},{type:"weapon",id:V.PlasmaBeam},{type:"weapon",id:V.Railgun},{type:"weapon",id:V.Phalanx},{type:"weapon",id:V.BFG10K},{type:"weapon",id:V.Disruptor},{type:"ammo",id:I.Shells},{type:"ammo",id:I.Bullets},{type:"ammo",id:I.Cells},{type:"ammo",id:I.Rockets},{type:"ammo",id:I.Slugs},{type:"ammo",id:I.MagSlugs},{type:"ammo",id:I.Flechettes},{type:"ammo",id:I.Prox},{type:"ammo",id:I.Nuke},{type:"ammo",id:I.Rounds},{type:"powerup",id:ie.QuadDamage},{type:"powerup",id:ie.QuadFire},{type:"powerup",id:ie.Invulnerability},{type:"powerup",id:ie.Invisibility},{type:"powerup",id:ie.Silencer},{type:"powerup",id:ie.Rebreather},{type:"powerup",id:ie.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:ie.Bandolier},{type:"powerup",id:ie.AmmoPack},{type:"powerup",id:ie.IRGoggles},{type:"powerup",id:ie.DoubleDamage},{type:"powerup",id:ie.SphereVengeance},{type:"powerup",id:ie.SphereHunter},{type:"powerup",id:ie.SphereDefender},{type:"powerup",id:ie.Doppelganger},{type:"powerup",id:ie.TagToken},{type:"key",id:ke.DataCD},{type:"key",id:ke.PowerCube},{type:"key",id:ke.ExplosiveCharges},{type:"key",id:ke.Yellow},{type:"key",id:ke.PowerCore},{type:"key",id:ke.Pyramid},{type:"key",id:ke.DataSpinner},{type:"key",id:ke.Pass},{type:"key",id:ke.Blue},{type:"key",id:ke.Red},{type:"key",id:ke.Green},{type:"key",id:ke.CommanderHead},{type:"key",id:ke.Airstrike},{type:"key",id:ke.NukeContainer},{type:"key",id:ke.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:ke.RedFlag},{type:"key",id:ke.BlueFlag},{type:"powerup",id:ie.TechResistance},{type:"powerup",id:ie.TechStrength},{type:"powerup",id:ie.TechHaste},{type:"powerup",id:ie.TechRegeneration},{type:"powerup",id:ie.Flashlight},{type:"powerup",id:ie.Compass}];function ui(e,t,n){return e+(t-e)*n}function Zl(e,t,n){return ui(e,t,n)}function cs(e,t,n,i,r){let a=[],s=r.engine.assets;if(!s)return a;let o;t instanceof Map?o=t:o=new Map(t.map(l=>[l.number,l]));for(let l of e){let c=o.get(l.number)??l,u=l.modelIndex??l.modelindex,m=l.skinNum??l.skinnum;if(u===void 0)continue;let d=i.getModelName(u);if(!d)continue;let f=s.getMd2Model(d)||s.getMd3Model(d);if(!f)continue;let g={x:ui(c.origin.x,l.origin.x,n),y:ui(c.origin.y,l.origin.y,n),z:ui(c.origin.z,l.origin.z,n)},p={x:Zl(c.angles.x,l.angles.x,n),y:Zl(c.angles.y,l.angles.y,n),z:Zl(c.angles.z,l.angles.z,n)},v=l.frame,w=c.frame,L=c.scale!==void 0?c.scale:1,k=l.scale!==void 0?l.scale:1,y=ui(L,k,n),E=Z=>Z===void 0||Z===0?255:Z,x=E(c.alpha),T=E(l.alpha),b=ui(x,T,n)/255,S=me.create();me.translate(S,S,[g.x,g.y,g.z]),me.rotateZ(S,S,p.z*Math.PI/180),me.rotateY(S,S,p.y*Math.PI/180),me.rotateX(S,S,p.x*Math.PI/180),me.scale(S,S,[y,y,y]);let N=m!==void 0&&m>0?i.getImageName(m):void 0;f.header.magic===844121161?a.push({type:"md2",model:f,blend:{frame0:w,frame1:v,lerp:n},transform:S,skin:N,alpha:b}):f.header.magic===860898377&&a.push({type:"md3",model:f,blend:{frame0:w,frame1:v,lerp:n},transform:S,alpha:b})}return a}var LI=32768,ls=class{constructor(t,n){this.configstrings=new Array(LI).fill("");this.entities=new Map;this.previousEntities=new Map;this.baselines=new Map;this.previousFrame=null;this.latestFrame=null;this.stats=new Array(32).fill(0);this.inventory=new Array(256).fill(0);this.playerNum=0;this.imports=t,this.callbacks=n}setImports(t){this.imports=t}setCallbacks(t){this.callbacks=t}setView(t){this.view=t}onServerData(t,n,i,r,a,s,o,l){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}, Tick: ${o??10}`),this.configstrings.fill(""),this.entities.clear(),this.previousEntities.clear(),this.baselines.clear(),this.latestFrame=null,this.previousFrame=null,this.playerNum=a,this.callbacks?.onServerData&&this.callbacks.onServerData(t,o)}onConfigString(t,n){this.configstrings[t]=n,this.callbacks?.onConfigString&&this.callbacks.onConfigString(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,structuredClone(t))}onFrame(t){this.latestFrame&&(this.previousFrame=this.latestFrame,this.previousEntities=this.entities),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,i=new Map;if(n.delta)for(let[r,a]of this.entities)i.set(r,structuredClone(a));for(let r of n.entities){if(r.bits&$d){i.delete(r.number);continue}let a=r.number,s;n.delta&&this.entities.has(a)?s=this.entities.get(a):this.baselines.has(a)?s=this.baselines.get(a):s=Tn();let o=structuredClone(s);this.applyDelta(o,r),i.set(a,o)}this.entities=i}applyDelta(t,n){let i=n.bits,r=n.bitsHigh;t.number=n.number,i&Ao&&(t.modelindex=n.modelindex),i&Eo&&(t.modelindex2=n.modelindex2),i&bo&&(t.modelindex3=n.modelindex3),i&xo&&(t.modelindex4=n.modelindex4),i&vo&&(t.frame=n.frame),i&ko&&(t.frame=n.frame),(i&Fr||i&Gr)&&(t.skinnum=n.skinnum),(i&Dr||i&Br)&&(t.effects=n.effects),(i&Pr||i&Ur)&&(t.renderfx=n.renderfx),i&ho&&(t.origin.x=n.origin.x),i&fo&&(t.origin.y=n.origin.y),i&yo&&(t.origin.z=n.origin.z),i&wo&&(t.angles.x=n.angles.x),i&_o&&(t.angles.y=n.angles.y),i&go&&(t.angles.z=n.angles.z),i&To&&(t.old_origin.x=n.old_origin.x,t.old_origin.y=n.old_origin.y,t.old_origin.z=n.old_origin.z),i&Mo&&(t.sound=n.sound),i&po&&(t.event=n.event),i&Ro&&(t.solid=n.solid),i&So&&(t.alpha=n.alpha),i&Lo&&(t.scale=n.scale),i&No&&(t.instanceBits=n.instanceBits),i&zo&&(t.loopVolume=n.loopVolume),r&Oo&&(t.loopAttenuation=n.loopAttenuation),r&Io&&(t.owner=n.owner),r&Co&&(t.oldFrame=n.oldFrame)}onCenterPrint(t){this.callbacks?.onCenterPrint?this.callbacks.onCenterPrint(t):console.log(`[Center]: ${t}`)}onStuffText(t){this.imports?.engine.cmd&&this.imports.engine.cmd.executeText(t)}onPrint(t,n){this.callbacks?.onPrint?this.callbacks.onPrint(t,n):console.log(`[Print ${t}]: ${n}`)}onSound(t,n,i,r,a,s,o){if(!this.imports?.engine.audio)return;let l=i??1,c=r??1,u=a??0;s&&s>0?this.imports.engine.audio.sound(s,0,n,l,c,u):o&&this.imports.engine.audio.positioned_sound(o,n,l,c)}onTempEntity(t,n,i,r,a,s,o,l,c){}onLayout(t){}onInventory(t){this.inventory=[...t]}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onMuzzleFlash3(t,n){if(t===this.playerNum+1&&this.view){let r=0,a=0,s=0,o=Ut,c=ia(this.stats,Bi.QuadDamage)?4:1;switch(n){case hm:r=-2,o={x:-2,y:0,z:0};break;case wm:r=-4,o={x:-4,y:0,z:0};break;case mm:r=-1,a=Math.random()-.5;break;case fm:case _m:case gm:r=-.5,a=Math.random()-.5;break;case vm:r=-3,o={x:-3,y:0,z:0};break;case pm:case ym:r=-2,o={x:-2,y:0,z:0};break;case Am:r=-5,o={x:-2,y:0,z:0};break;case Sm:case dm:r=-.5;break}(r!==0||a!==0||s!==0)&&this.view.addKick({pitch:r*c,roll:s*c,durationMs:200,origin:o})}this.callbacks?.onMuzzleFlash3&&this.callbacks.onMuzzleFlash3(t,n)}onFog(t){this.callbacks?.onFog&&this.callbacks.onFog(t)}onDamage(t){this.callbacks?.onDamage&&this.callbacks.onDamage(t)}onLocPrint(t,n,i){this.callbacks?.onLocPrint&&this.callbacks.onLocPrint(t,n,i)}onLevelRestart(){this.callbacks?.onLevelRestart&&this.callbacks.onLevelRestart()}onWaitingForPlayers(t){this.callbacks?.onWaitingForPlayers&&this.callbacks.onWaitingForPlayers()}onDisconnect(){console.log("Demo disconnected")}onReconnect(){console.log("Demo reconnect")}onDownload(t,n,i){}convertFrameToPredictionState(t){let n=t.playerState,i={ammo:{caps:[],counts:[]},ownedWeapons:new Set,armor:null,powerups:new Map,keys:new Set,items:new Set};for(let l=0;l<this.inventory.length;l++){let c=this.inventory[l];if(c<=0)continue;if(l>=jl.length)break;let u=jl[l];switch(u.type){case"weapon":i.ownedWeapons.add(u.id);break;case"ammo":i.ammo.counts[u.id]||(i.ammo.counts[u.id]=0),i.ammo.counts[u.id]=c;break;case"armor":i.armor={armorType:u.id,armorCount:c};break;case"powerup":i.powerups.set(u.id,c);break;case"key":i.keys.add(u.id);break;case"health":break;case"item":i.items.add(u.id);break}}let r={...n.origin},a={...n.velocity},s={...n.viewangles},o={...n.delta_angles};return{origin:r,velocity:a,viewAngles:s,pmFlags:n.pm_flags,pmType:n.pm_type,waterLevel:Ui.None,gravity:n.gravity,deltaAngles:o,client:{inventory:i,weaponStates:{states:new Map},buttons:0,pm_type:n.pm_type,pm_time:n.pm_time,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov},health:n.stats[1],armor:n.stats[4],ammo:n.stats[2],blend:[0,0,0,0],damageAlpha:0,damageIndicators:[],stats:[...n.stats],kick_angles:Ut,kick_origin:Ut,gunoffset:Ut,gunangles:Ut,gunindex:0,onGround:!1,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},pm_time:n.pm_time,pm_type:n.pm_type,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov}}getPredictionState(t){if(!this.latestFrame)return ln();let n=this.convertFrameToPredictionState(this.latestFrame);if(this.previousFrame&&t!==void 0){let i=this.latestFrame.serverFrame*100,r=this.previousFrame.serverFrame*100;if(t<=1){let a=this.convertFrameToPredictionState(this.previousFrame);return un(a,n,Math.max(0,Math.min(1,t)))}else if(t>=r&&t<=i){let a=(t-r)/(i-r),s=this.convertFrameToPredictionState(this.previousFrame);return un(s,n,Math.max(0,Math.min(1,a)))}}return n}getRenderableEntities(t,n){if(!this.latestFrame)return[];if(!this.imports)return[];let i=Array.from(this.entities.values()),r=this.previousEntities.size>0?this.previousEntities:i;return cs(i,r,t,n,this.imports)}getDemoCamera(t){let n=this.getPredictionState(t);return{origin:n.origin,angles:n.viewAngles,fov:n.fov??90}}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var di=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=ye.Models&&t<ye.Models+Pi){let i=t-ye.Models;this.models[i]=n}else if(t>=ye.Sounds&&t<ye.Sounds+Di){let i=t-ye.Sounds;this.sounds[i]=n}else if(t>=ye.Images&&t<ye.Images+Fi){let i=t-ye.Images;this.images[i]=n}}get(t){return this.strings.get(t)}getModelName(t){return this.models[t]}getSoundName(t){return this.sounds[t]}getImageName(t){return this.images[t]}clear(){this.strings.clear(),this.models.length=0,this.sounds.length=0,this.images.length=0}};var us=class{constructor(t,n,i){this.menuSystem=t;this.saveLoadFactory=n;this.options=i}createMainMenu(){let t=[{label:"New Game",action:()=>{this.menuSystem.pushMenu(this.createDifficultyMenu())}},{label:"Multiplayer",action:()=>{this.options.multiplayerFactory?this.menuSystem.pushMenu(this.options.multiplayerFactory.createMultiplayerMenu()):console.warn("Multiplayer factory not configured")}},{label:"Load Game",action:()=>{this.saveLoadFactory.createLoadMenu().then(n=>{this.menuSystem.pushMenu(n)})}}];return this.options.showSaveOption!==!1&&t.push({label:"Save Game",action:()=>{this.saveLoadFactory.createSaveMenu().then(n=>{this.menuSystem.pushMenu(n)})}}),t.push({label:"Options",action:()=>{this.menuSystem.pushMenu(this.options.optionsFactory.createOptionsMenu())}},{label:"Quit",action:()=>{this.options.onQuit()}}),{title:"Main Menu",items:t}}createDifficultyMenu(){return{title:"Select Difficulty",items:[{label:"Easy",action:()=>this.startNewGame(0)},{label:"Medium",action:()=>this.startNewGame(1)},{label:"Hard",action:()=>this.startNewGame(2)},{label:"Map Select...",action:()=>{this.menuSystem.pushMenu(this.options.mapsFactory.createMapsMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}startNewGame(t){this.options.onSetDifficulty&&this.options.onSetDifficulty(t),this.options.onNewGame()}};var ds=class{constructor(t,n,i,r,a){this.menuSystem=t;this.storage=n;this.onSave=i;this.onLoad=r;this.onDelete=a}async createSaveMenu(){let t=await this.storage.list(),n=[];return n.push({label:"New Save...",action:()=>{this.menuSystem.pushMenu(this.createNewSaveInputMenu())}}),t.forEach(i=>{n.push({label:`${i.name} - ${i.map} (${dg(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createConfirmOverwriteMenu(i))}})}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Save Game",items:n}}async createLoadMenu(){let t=await this.storage.list(),n=[];return t.forEach(i=>{n.push({label:`${i.name} - ${i.map} (${dg(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createLoadActionMenu(i))}})}),t.length===0&&n.push({label:"No saves found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Load Game",items:n}}createLoadActionMenu(t){return{title:`Slot: ${t.name}`,items:[{label:"Load Game",action:()=>{this.onLoad(t.id).then(()=>{this.menuSystem.closeAll()})}},{label:"Delete Save",action:()=>{this.menuSystem.pushMenu(this.createConfirmDeleteMenu(t))}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createConfirmDeleteMenu(t){return{title:`Delete ${t.name}?`,items:[{label:"Yes, Delete",action:()=>{this.onDelete(t.id).then(()=>{this.menuSystem.popMenu(),this.menuSystem.popMenu(),this.menuSystem.popMenu()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}createNewSaveInputMenu(){let t={name:`Save ${new Date().toLocaleString()}`};return{title:"Enter Save Name",items:[{label:"Name",type:"input",getValue:()=>t.name,onUpdate:n=>{t.name=n}},{label:"Save",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"Cancel",action:()=>this.menuSystem.popMenu()}]}}createConfirmOverwriteMenu(t){return{title:`Overwrite ${t.name}?`,items:[{label:"Yes, Overwrite",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}};function dg(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),i=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}`}var ms=class{constructor(){this.activeMenu=null;this.selectedIndex=0;this.menuStack=[]}pushMenu(t){this.activeMenu&&(this.menuStack.push(this.activeMenu),t.parent||(t.parent=this.activeMenu)),this.activeMenu=t,this.selectedIndex=0}popMenu(){this.menuStack.length>0?(this.activeMenu=this.menuStack.pop(),this.selectedIndex=0):this.activeMenu=null}closeAll(){this.activeMenu=null,this.menuStack=[],this.selectedIndex=0}handleInput(t,n){if(!this.activeMenu)return!1;let i=this.activeMenu.items[this.selectedIndex];if(t==="up")return this.selectedIndex=(this.selectedIndex-1+this.activeMenu.items.length)%this.activeMenu.items.length,!0;if(t==="down")return this.selectedIndex=(this.selectedIndex+1)%this.activeMenu.items.length,!0;if(t==="select")return i.action&&i.action(),!0;if(t==="back")return this.popMenu(),!0;if(i.type==="input"&&i.onUpdate&&i.getValue){let r=i.getValue();if(t==="char"&&n){let a=(r||"")+n;i.onUpdate(a)}else if(t==="left"){let a=String(r||"");a.length>0&&i.onUpdate(a.slice(0,-1))}}return!0}isActive(){return this.activeMenu!==null}getState(){return{activeMenu:this.activeMenu,selectedIndex:this.selectedIndex}}};var Ar=class{constructor(t,n){this.menuSystem=t;this.host=n}createOptionsMenu(){return{title:"Options",items:[{label:"Video Options",action:()=>{this.menuSystem.pushMenu(this.createVideoMenu())}},{label:"Audio Options",action:()=>{this.menuSystem.pushMenu(this.createAudioMenu())}},{label:"Controls",action:()=>{this.menuSystem.pushMenu(this.createControlsMenu())}},{label:"Gameplay",action:()=>{this.menuSystem.pushMenu(this.createGameplayMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createVideoMenu(){let t=this.host.cvars;return{title:"Video Options",items:[{label:"Field of View",type:"input",getValue:()=>t?.get("fov")?.string??"90",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("fov",n)}},{label:"Fullscreen",type:"toggle",getValue:()=>document.fullscreenElement?"On":"Off",onUpdate:()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(n=>{console.error(`Error attempting to enable fullscreen: ${n.message}`)})}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createAudioMenu(){let t=this.host.cvars;return{title:"Audio Options",items:[{label:"Master Volume",type:"input",getValue:()=>t?.get("s_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("s_volume",n)}},{label:"Music Volume",type:"input",getValue:()=>t?.get("ogg_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("ogg_volume",n)}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createControlsMenu(){let t=this.host.cvars;return{title:"Controls",items:[{label:"Sensitivity",type:"input",getValue:()=>t?.get("sensitivity")?.string??"3",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||t?.setValue("sensitivity",n)}},{label:"Invert Mouse",type:"toggle",getValue:()=>t?.get("m_pitch")?.string.startsWith("-")?"Yes":"No",onUpdate:()=>{let n=parseFloat(t?.get("m_pitch")?.string??"0.022");t?.setValue("m_pitch",(-n).toString())}},{label:"Always Run",type:"toggle",getValue:()=>t?.get("cl_run")?.integer?"Yes":"No",onUpdate:()=>{let n=t?.get("cl_run")?.integer??1;t?.setValue("cl_run",n?"0":"1")}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createGameplayMenu(){let t=this.host.cvars;return{title:"Gameplay Options",items:[{label:"Crosshair",type:"toggle",getValue:()=>t?.get("crosshair")?.integer?"On":"Off",onUpdate:()=>{let n=t?.get("crosshair")?.integer??1;t?.setValue("crosshair",n?"0":"1")}},{label:"Handedness",type:"toggle",getValue:()=>t?.get("hand")?.integer===1?"Left":t?.get("hand")?.integer===2?"Center":"Right",onUpdate:()=>{let i=((t?.get("hand")?.integer??0)+1)%3;t?.setValue("hand",i.toString())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}};var hs=class{constructor(t,n,i){this.menuSystem=t;this.vfs=n;this.onStartMap=i}createMapsMenu(){let n=this.vfs.findByExtension(".bsp").map(i=>({label:i.path.replace(/^maps\//,"").replace(/\.bsp$/,""),action:()=>{this.onStartMap(i.path.replace(/^maps\//,"").replace(/\.bsp$/,"")),this.menuSystem.closeAll()}}));return n.length===0&&n.push({label:"No maps found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Select Map",items:n}}};var fs=class{constructor(t,n,i){this.menuSystem=t;this.optionsFactory=n;this.host=i}createPauseMenu(){return{title:"Game Paused",items:[{label:"Resume Game",action:()=>{this.menuSystem.closeAll()}},{label:"Options",action:()=>{this.menuSystem.pushMenu(this.optionsFactory.createOptionsMenu())}},{label:"Restart Level",action:()=>{this.host?.commands.execute("restart"),this.menuSystem.closeAll()}},{label:"Quit to Main Menu",action:()=>{this.host?.commands.execute("disconnect"),this.menuSystem.closeAll()}}]}}};var _s=class{constructor(t,n){this.menuSystem=t;this.connection=n}createMultiplayerMenu(t="localhost:27910",n=""){let i=t,r=[];return n&&r.push({label:n,action:()=>{}}),r.push({label:"Address: "+i,action:()=>{if(typeof window<"u"){let a=window.prompt("Enter Server Address",i);a&&(i=a,this.refreshMenu(i))}}},{label:"Connect",action:()=>{this.refreshMenu(i,"Connecting..."),this.connection.connect("ws://"+i).then(()=>{this.menuSystem.closeAll()}).catch(a=>{console.error(a);let s="Failed: "+(a.message||"Unknown error");this.refreshMenu(i,s)})}},{label:"Disconnect",action:()=>{this.connection.disconnect(),this.refreshMenu(i,"Disconnected")}},{label:"Back",action:()=>{this.menuSystem.popMenu()}}),{title:"Multiplayer",items:r}}refreshMenu(t,n=""){this.menuSystem.popMenu(),this.menuSystem.pushMenu(this.createMultiplayerMenu(t,n))}};function mg(e,t,n,i){if(!t.activeMenu)return;let r=t.activeMenu,a=n/2,s=i/2,o=20,l=r.items.length*o+40,c=s-l/2;e.drawfillRect(0,0,n,i,[0,0,0,.7]),e.drawCenterString(c,r.title),r.items.forEach((u,m)=>{let d=c+40+m*o,f=u.label;if(u.type==="input"&&u.getValue){if(f+=`: ${u.getValue()}`,m===t.selectedIndex){let g=Date.now();Math.floor(g/500)%2===0&&(f+="_")}}else u.type==="toggle"&&u.getValue&&(f+=`: ${u.getValue()}`);if(m===t.selectedIndex){let w=f.replace(/\^[0-9]/g,"").length*8,L=(n-w)/2;e.drawString(L-16,d,"\r")}e.drawCenterString(d,f)})}var Sr=class{constructor(t){this.storage=t}loadCvars(t){try{let n=this.storage.getItem("quake2ts_cvars");if(n){let i=JSON.parse(n);for(let[r,a]of Object.entries(i)){let s=t.get(r);s&&s.setValue(a)}}}catch(n){console.warn("Failed to load settings",n)}}saveCvars(t){let n={};for(let i of t)i.flags&Ci.Archive&&(n[i.name]=i.value);try{this.storage.setItem("quake2ts_cvars",JSON.stringify(n))}catch(i){console.warn("Failed to save settings",i)}}};var gs=class{getItem(t){try{return localStorage.getItem(t)}catch(n){return console.warn("localStorage not available",n),null}}setItem(t,n){try{localStorage.setItem(t,n)}catch(i){console.warn("Failed to write to localStorage",i)}}};var vs=class{constructor(){this.total=0;this.current=0;this.message="";this.active=!1}start(t,n="Loading..."){this.total=t,this.current=0,this.message=n,this.active=!0}update(t,n){this.current=t,n&&(this.message=n)}finish(){this.active=!1,this.current=this.total}render(t){if(!this.active)return;let n=t.width,i=t.height;t.drawfillRect(0,0,n,i,[.1,.1,.1,1]);let r=n*.6,a=20,s=(n-r)/2,o=i*.7;t.drawfillRect(s,o,r,a,[.3,.3,.3,1]);let l=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,r*l,a,[.8,.5,.1,1]),t.drawCenterString(o-30,this.message);let c=Math.floor(l*100);t.drawCenterString(o+a+10,`${c}%`)}};var ps=class{constructor(){this.state={active:!1,title:"",message:""}}show(t,n){this.state={active:!0,title:t,message:n}}hide(){this.state.active=!1}render(t){if(!this.state.active)return;let n=t.width,i=t.height,r=n/2,a=i/2,s=400,o=200;t.drawfillRect(0,0,n,i,[0,0,0,.5]),t.drawfillRect(r-s/2,a-o/2,s,o,[.2,0,0,1]),t.drawCenterString(a-40,`^1${this.state.title}`),t.drawCenterString(a,this.state.message),t.drawCenterString(a+60,"Press ESC to close")}};var ys=class{constructor(){this.state={active:!1,type:"weapon",selectedIndex:-1}}open(t){this.state.active=!0,this.state.type=t}close(){this.state.active=!1}isOpen(){return this.state.active}handleInput(t,n){this.state.active}render(t,n,i,r){if(!this.state.active)return;let a=n/2,s=i/2;t.drawfillRect(a-100,s-100,200,200,[0,0,0,.5]),t.drawCenterString(s,`Select ${this.state.type}`)}};var ws=class{constructor(){this.socket=null;this.messageCallback=null;this.closeCallback=null;this.errorCallback=null}async connect(t){return new Promise((n,i)=>{try{this.socket=new WebSocket(t),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{n()},this.socket.onerror=r=>{let a=new Error("WebSocket connection error");this.errorCallback&&this.errorCallback(a),i(a)},this.socket.onclose=()=>{this.closeCallback&&this.closeCallback(),this.socket=null},this.socket.onmessage=r=>{this.messageCallback&&(r.data instanceof ArrayBuffer?this.messageCallback(new Uint8Array(r.data)):console.warn("Received non-binary message from server"))}}catch(r){i(r)}})}disconnect(){this.socket&&(this.socket.close(),this.socket=null)}send(t){this.socket&&this.socket.readyState===WebSocket.OPEN?this.socket.send(t):console.warn("Attempted to send data on closed or connecting socket")}onMessage(t){this.messageCallback=t}onClose(t){this.closeCallback=t}onError(t){this.errorCallback=t}isConnected(){return this.socket!==null&&this.socket.readyState===WebSocket.OPEN}};var As=class{constructor(t){this.state=0;this.parser=null;this.serverProtocol=0;this.serverCount=0;this.gameDir="";this.playerNum=0;this.levelName="";this.configStrings=new Map;this.baselines=new Map;this.challenge=0;this.connectPacketCount=0;this.connectPacketTime=0;this.latestServerFrame=0;this.commandHistory=[];this.driver=new ws,this.options=t,this.netchan=new Nm,this.driver.onMessage(n=>this.handleMessage(n)),this.driver.onClose(()=>this.handleDisconnect()),this.driver.onError(n=>console.error("Network Error:",n))}async connect(t){this.state!==0&&this.disconnect(),console.log(`Connecting to ${t}...`),this.state=1,this.netchan.reset();try{await this.driver.connect(t),console.log("WebSocket connected."),this.state=2,this.sendChallenge()}catch(n){throw console.error("Connection failed:",n),this.state=0,n}}disconnect(){this.state!==0&&(this.driver.disconnect(),this.state=0,this.configStrings.clear(),this.baselines.clear(),this.commandHistory=[],this.latestServerFrame=0)}sendCommand(t){if(this.state!==5)return;let n={...t,serverFrame:t.serverFrame??this.latestServerFrame};this.commandHistory.push(n),this.commandHistory.length>um&&this.commandHistory.shift();let i=new Ko;i.writeByte(cn.move),i.writeByte(0),i.writeLong(this.latestServerFrame),Rm(i,n);let r=this.netchan.transmit(i.getData());this.driver.send(r)}handleMessage(t){let n=t.buffer;if(n instanceof SharedArrayBuffer){let r=new ArrayBuffer(t.byteLength);new Uint8Array(r).set(t),n=r}let i=this.netchan.process(new Uint8Array(n));if(i&&i.byteLength>0){let r=new Lm(i.buffer);this.parser=new Po(r,this),this.parser.parseMessage()}}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new Gi;t.writeByte(cn.stringcmd),t.writeString("getchallenge");let n=this.netchan.transmit(t.getData());this.driver.send(n)}sendConnect(t){let n=new Gi;n.writeByte(cn.stringcmd);let i=`\\name\\${this.options.username}\\model\\${this.options.model}\\skin\\${this.options.skin}\\hand\\${this.options.hand??0}\\fov\\${this.options.fov??90}`;n.writeString(`connect ${Cr} ${t} ${i}`);let r=this.netchan.transmit(n.getData());this.driver.send(r)}isConnected(){return this.state===5}onServerData(t,n,i,r,a,s){console.log(`Server Data: Protocol ${t}, Level ${s}`),this.serverProtocol=t,this.serverCount=n,this.gameDir=r,this.playerNum=a,this.levelName=s,this.state=3;let o=new Gi;o.writeByte(cn.stringcmd),o.writeString("new");let l=this.netchan.transmit(o.getData());this.driver.send(l),this.state=4}onConfigString(t,n){this.configStrings.set(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,t)}onStuffText(t){if(console.log(`Server StuffText: ${t}`),t.startsWith("precache")&&this.finishLoading(),t.startsWith("challenge ")){let n=t.split(" ");n.length>1&&(this.challenge=parseInt(n[1],10),this.sendConnect(this.challenge))}}finishLoading(){console.log("Finished loading, sending begin...");let t=new Gi;t.writeByte(cn.stringcmd),t.writeString("begin");let n=this.netchan.transmit(t.getData());this.driver.send(n),this.state=5}onFrame(t){t.serverFrame>this.latestServerFrame&&(this.latestServerFrame=t.serverFrame)}onCenterPrint(t){}onPrint(t,n){}onSound(t,n,i,r,a,s,o){}onTempEntity(t,n,i,r,a,s,o,l,c){}onLayout(t){}onInventory(t){}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){this.disconnect()}onReconnect(){}onDownload(t,n,i){}};var NI=[{code:"KeyW",command:"+forward"},{code:"ArrowUp",command:"+forward"},{code:"KeyS",command:"+back"},{code:"ArrowDown",command:"+back"},{code:"KeyA",command:"+moveleft"},{code:"KeyD",command:"+moveright"},{code:"Space",command:"+jump"},{code:"ControlLeft",command:"+crouch"},{code:"ShiftLeft",command:"+speed"},{code:"Mouse1",command:"+attack"},{code:"Mouse2",command:"+use"},{code:"Mouse3",command:"+zoom"},{code:"ArrowLeft",command:"+left"},{code:"ArrowRight",command:"+right"},{code:"PageUp",command:"+lookup"},{code:"PageDown",command:"+lookdown"},{code:"Gamepad0-Button7",command:"+attack"},{code:"Gamepad0-Button6",command:"+zoom"},{code:"Gamepad0-Button0",command:"+jump"},{code:"Gamepad0-Button1",command:"+crouch"},{code:"Gamepad0-Button2",command:"+use"},{code:"Gamepad0-Button4",command:"prevweapon"},{code:"Gamepad0-Button5",command:"nextweapon"},{code:"Digit1",command:"weapon 1"},{code:"Digit2",command:"weapon 2"},{code:"Digit3",command:"weapon 3"},{code:"Digit4",command:"weapon 4"},{code:"Digit5",command:"weapon 5"},{code:"Digit6",command:"weapon 6"},{code:"Digit7",command:"weapon 7"},{code:"Digit8",command:"weapon 8"},{code:"Digit9",command:"weapon 9"},{code:"Digit0",command:"weapon 10"}],Sn=class{constructor(t=NI){this.bindings=new Map;for(let n of t)this.bind(n.code,n.command)}bind(t,n){this.bindings.set(t,n)}unbind(t){this.bindings.delete(t)}getBinding(t){return this.bindings.get(t)}entries(){return new Map(this.bindings.entries())}};function hg(){return new Sn}function Jl(e){return e}function kr(e){return e.trim().toLowerCase()}var zI=250,Ql=class{constructor(){this.activeCodes=new Set;this.downTime=0;this.msec=0;this.pressed=!1}press(t,n){return this.activeCodes.has(t)?!1:(this.activeCodes.add(t),this.pressed=!0,this.activeCodes.size===1?(this.downTime=n,!0):!1)}release(t,n){return this.activeCodes.delete(t)&&this.activeCodes.size===0?(this.msec+=n-this.downTime,this.downTime=0,!0):!1}sample(t,n){if(t<=0)return{active:this.activeCodes.size>0,wasPressed:this.pressed,fraction:0};let i=this.msec;this.activeCodes.size>0&&(i+=n-this.downTime,this.downTime=n),this.msec=0;let r=Math.min(i/t,1),a=this.pressed;return this.pressed=!1,{active:this.activeCodes.size>0,wasPressed:a,fraction:r}}},Ss=(w=>(w.Forward="+forward",w.Back="+back",w.MoveLeft="+moveleft",w.MoveRight="+moveright",w.MoveUp="+moveup",w.MoveDown="+movedown",w.Jump="+jump",w.Crouch="+crouch",w.Attack="+attack",w.Use="+use",w.Holster="+holster",w.TurnLeft="+left",w.TurnRight="+right",w.LookUp="+lookup",w.LookDown="+lookdown",w.SpeedModifier="+speed",w.Zoom="+zoom",w))(Ss||{}),OI={"+attack":dt.Attack,"+use":dt.Use,"+holster":dt.Holster,"+jump":dt.Jump,"+crouch":dt.Crouch},II=new Map(Object.values(Ss).map(e=>[kr(e),e]));function CI(e){return II.get(kr(e))}function Er(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var mi=class{constructor(t={},n=new Sn){this.buttons=new Map;this.viewAngles={x:0,y:0,z:0};this.pointerLocked=!1;this.mouseDelta={deltaX:0,deltaY:0};this.previousMouseDelta={deltaX:0,deltaY:0};this.anyPressed=!1;this.commandQueue=[];this.gamepadButtons=new Map;this.gamepadMove={x:0,y:0};this.gamepadLook={x:0,y:0};this.touchButtons=new Map;this.touchMove={x:0,y:0};this.touchLook={x:0,y:0};this.bindings=n,this.forwardSpeed=t.forwardSpeed??nm,this.sideSpeed=t.sideSpeed??im,this.upSpeed=t.upSpeed??rm,this.yawSpeed=t.yawSpeed??am,this.pitchSpeed=t.pitchSpeed??sm,this.sensitivity=t.sensitivity??om,this.sensitivityX=t.sensitivityX,this.sensitivityY=t.sensitivityY,this.invertMouseY=t.invertMouseY??!1,this.runByDefault=t.runByDefault??!0,this.requirePointerLock=t.requirePointerLock??!0,this.jumpAddsUpMove=t.jumpAddsUpMove??!0,this.crouchAddsDownMove=t.crouchAddsDownMove??!0,this.mouseFilter=t.mouseFilter??!1,this.getGamepads=t.getGamepads,this.gamepadDeadZone=t.gamepadDeadZone??.15,this.gamepadLookScale=t.gamepadLookScale??1,this.invertGamepadY=t.invertGamepadY??this.invertMouseY}handleKeyDown(t,n=Er()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!0,i,n)}handleKeyUp(t,n=Er()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!1,i,n)}handleMouseButtonDown(t,n=Er()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!0,i,n)}handleMouseButtonUp(t,n=Er()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!1,i,n)}handleMouseMove(t,n){this.requirePointerLock&&!this.pointerLocked||(this.mouseDelta={deltaX:this.mouseDelta.deltaX+t,deltaY:this.mouseDelta.deltaY+n})}setPointerLocked(t){this.pointerLocked=t}setGamepadState(t){this.pendingGamepads=t}setTouchState(t){this.pendingTouchState=t}buildCommand(t,n=Er(),i){this.pollGamepads(n),this.applyTouchState(n);let r=this.yawSpeed*t/1e3,a=this.pitchSpeed*t/1e3,s=this.sample("+left",t,n),o=this.sample("+right",t,n),l=this.sample("+lookup",t,n),u={x:(this.sample("+lookdown",t,n).fraction-l.fraction)*a,y:(o.fraction-s.fraction)*r,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let N=this.gamepadLook.y*(this.invertGamepadY?-1:1);u={x:u.x+N*a*this.gamepadLookScale,y:u.y+this.gamepadLook.x*r*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let N=this.touchLook.y*(this.invertMouseY?-1:1);u={x:u.x+N*a,y:u.y+this.touchLook.x*r,z:0}}if(this.pointerLocked||!this.requirePointerLock){let N=this.sampleMouseDelta(),Z=lm(N,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});u={x:u.x+Z.x,y:u.y+Z.y,z:0}}let m=cm(this.viewAngles,u);this.viewAngles=m;let d=this.sample("+forward",t,n),f=this.sample("+back",t,n),g=this.sample("+moveleft",t,n),p=this.sample("+moveright",t,n),v=this.sample("+moveup",t,n),w=this.sample("+movedown",t,n),L=this.sample("+speed",t,n),k=this.sample("+jump",t,n),y=this.sample("+crouch",t,n),E=this.runByDefault?L.active?.5:1:L.active?1:.5,x=this.forwardSpeed*(d.fraction-f.fraction)*E,T=this.sideSpeed*(p.fraction-g.fraction)*E,O=this.upSpeed*(v.fraction-w.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(x+=this.forwardSpeed*this.gamepadMove.y*E,T+=this.sideSpeed*this.gamepadMove.x*E),(this.touchMove.x!==0||this.touchMove.y!==0)&&(x+=this.forwardSpeed*this.touchMove.y*E,T+=this.sideSpeed*this.touchMove.x*E),this.jumpAddsUpMove&&k.fraction>0&&(O+=this.upSpeed*k.fraction),this.crouchAddsDownMove&&y.fraction>0&&(O-=this.upSpeed*y.fraction),x=this.clampMove(x,this.forwardSpeed),T=this.clampMove(T,this.sideSpeed),O=this.clampMove(O,this.upSpeed);let b=this.collectButtonBits(t,n),S=Math.min(Math.max(Math.round(t),1),zI);return(this.anyPressed||b!==dt.None)&&(b|=dt.Any),this.anyPressed=!1,{msec:S,buttons:b,angles:{...this.viewAngles},forwardmove:x,sidemove:T,upmove:O,serverFrame:i}}consumeConsoleCommands(){let t=this.commandQueue;return this.commandQueue=[],t}pollGamepads(t){let n=this.getGamepads?.()??this.pendingGamepads??[];this.pendingGamepads=void 0,this.gamepadMove={x:0,y:0},this.gamepadLook={x:0,y:0};let i=new Set;for(let r of n){if(!r||r.connected===!1)continue;let a=r.index??0,s=r.axes??[];this.gamepadMove={x:this.mergeAnalog(this.gamepadMove.x,this.applyDeadZone(s[0]??0)),y:this.mergeAnalog(this.gamepadMove.y,-this.applyDeadZone(s[1]??0))},this.gamepadLook={x:this.mergeAnalog(this.gamepadLook.x,this.applyDeadZone(s[2]??0)),y:this.mergeAnalog(this.gamepadLook.y,this.applyDeadZone(s[3]??0))};let o=r.buttons??[];for(let l=0;l<o.length;l++){let c=o[l];if(!c)continue;let u=c.pressed||c.value>this.gamepadDeadZone,m=this.gamepadButtonCode(a,l);u&&i.add(m);let d=this.gamepadButtons.get(m)??!1;u!==d&&(this.applyCommand(this.bindings.getBinding(m),u,m,t),this.gamepadButtons.set(m,u))}}for(let[r,a]of this.gamepadButtons.entries())a&&!i.has(r)&&(this.applyCommand(this.bindings.getBinding(r),!1,r,t),this.gamepadButtons.set(r,!1))}applyTouchState(t){let n=this.pendingTouchState;if(n&&(this.pendingTouchState=void 0,n.move&&(this.touchMove={x:this.clampAnalog(n.move.x),y:this.clampAnalog(n.move.y)}),n.look&&(this.touchLook={x:this.clampAnalog(n.look.x),y:this.clampAnalog(n.look.y)}),n.buttons))for(let[i,r]of Object.entries(n.buttons)){if(r===void 0)continue;let a=this.touchButtons.get(i)??!1;r!==a&&(this.applyCommand(i,r,this.touchButtonCode(i),t),this.touchButtons.set(i,r))}}applyCommand(t,n,i,r){if(!t)return;let a=CI(t);if(a){let s=this.lookupButton(a);n?(s.press(i,r)&&this.commandQueue.push(a),this.anyPressed=!0):s.release(i,r)&&this.commandQueue.push(a.replace("+","-"))}else n&&this.commandQueue.push(t)}sampleMouseDelta(){let t=this.mouseDelta;if(this.mouseDelta={deltaX:0,deltaY:0},!this.mouseFilter)return this.previousMouseDelta=t,t;let n={deltaX:(t.deltaX+this.previousMouseDelta.deltaX)*.5,deltaY:(t.deltaY+this.previousMouseDelta.deltaY)*.5};return this.previousMouseDelta=t,n}collectButtonBits(t,n){let i=dt.None;for(let[r,a]of Object.entries(OI)){let s=this.sample(r,t,n);(s.fraction>0||s.active||s.wasPressed)&&(i|=a)}return i}lookupButton(t){let n=this.buttons.get(t);return n||(n=new Ql,this.buttons.set(t,n)),n}mouseButtonToCode(t){return t===0?"Mouse1":t===1?"Mouse3":t===2?"Mouse2":`Mouse${t+1}`}mouseButtonToCommand(t){return this.bindings.getBinding(t)}sample(t,n,i){return this.lookupButton(t).sample(n,i)}gamepadButtonCode(t,n){return`Gamepad${t}-Button${n}`}touchButtonCode(t){return`Touch-${t}`}clampAnalog(t){return Math.max(-1,Math.min(1,t))}applyDeadZone(t){return Math.abs(t)<this.gamepadDeadZone?0:t}mergeAnalog(t,n){return Math.abs(n)>Math.abs(t)?n:t}clampMove(t,n){return Math.max(-n,Math.min(n,t))}};var ks=class{constructor(t,n=new mi(t)){this.queued=[];this.controller=n}captureFrame(t,n,i){let r=this.controller.buildCommand(t,n,i),a=this.controller.consumeConsoleCommands(),s={command:r,console:a};return this.queued.push(s),s}consumeQueued(){let t=[...this.queued];return this.queued.length=0,t}getController(){return this.controller}};var Es={x:0,y:0,z:0},fg=(i=>(i[i.Normal=0]="Normal",i[i.DemoPlayback=1]="DemoPlayback",i[i.Multiplayer=2]="Multiplayer",i))(fg||{});function PI(e){let t=M=>{let H={x:0,y:0,z:0};return e.engine.trace(M,M,H,H).contents||0},n=new ua(e.engine.trace,t),i=new la,r=new Yd,a=new ls(e);a.setView(i);let s=!1,o=null,l=0,c=new ms,u=new vs,m=new ps,d=new ys,f=new Sr(new gs),g,p,v=new di,w,L=0,k=!1,E=Jm(e,{get tickRate(){return 10},get frameTimeMs(){return w?.timeMs??0},get serverFrame(){return a.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return v},getClientName:M=>`Player ${M}`,getKeyBinding:M=>`[${M}]`,get inAutoDemo(){return k}}),x=Zm(E),T=new As({get username(){return e.host?.cvars?.get("name")?.string||"Player"},get model(){return e.host?.cvars?.get("model")?.string||"male"},get skin(){return e.host?.cvars?.get("skin")?.string||"grunt"},get fov(){return Z}}),O=new _s(c,T);a.setCallbacks({onCenterPrint:M=>x.ParseCenterPrint(M,0,!1),onPrint:(M,H)=>x.NotifyMessage(0,H,!1),onConfigString:(M,H)=>{v.set(M,H),x.ParseConfigString(M,H)},onServerData:(M,H)=>{H&&H>0?r.setFrameDuration(1e3/H):r.setFrameDuration(100)}}),r.setHandler(a);let b,S,N,Z=90,ce=!1;if(e.host){p=new Ar(c,e.host),g=new fs(c,p,e.host);let M=new Map;if(e.host.cvars){for(let H of e.host.cvars.list())M.set(H.name,{value:H.string,setValue:ee=>e.host.cvars.setValue(H.name,ee)});f.loadCvars(M)}}if(e.host?.commands&&(e.host.commands.register("playdemo",M=>{if(M.length<1){console.log("usage: playdemo <filename>");return}let H=M[0];console.log(`playdemo: ${H}`),console.log("Note: Demo loading requires VFS access which is not yet fully integrated into this console command.")},"Play a recorded demo"),e.host.commands.register("crosshair",()=>{let M=e0();console.log(`Crosshair changed to index ${M}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{ce=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{ce=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{c.isActive()?c.closeAll():g&&c.pushMenu(g.createPauseMenu())},"Toggle the main/pause menu"),e.host.commands.register("connect",M=>{if(M.length<1){console.log("usage: connect <address>");return}let H=M[0];console.log(`Connecting to ${H}...`),T.connect(H).catch(ee=>{console.error("Failed to connect:",ee),m.show("Connection Failed",ee instanceof Error?ee.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{T.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Ci.Archive,onChange:H=>{let ee=H.number;isNaN(ee)||(Z=Math.max(1,Math.min(179,ee)))},description:"Field of view"});let M=e.host.cvars.get("fov");if(M){let H=M.number;isNaN(H)||(Z=Math.max(1,Math.min(179,H)))}}return{loadingScreen:u,errorDialog:m,init(M){this.Init(M)},Init(M){w=M,M?.state&&n.setAuthoritative(M),x.Init(),e.engine.assets&&e.engine.renderer&&(u.start(100,"Loading assets..."),ug(e.engine.renderer,e.engine.assets).then(()=>{u.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(c.isActive()||document.body.requestPointerLock?.())})},predict(M){return c.isActive(),T.isConnected()&&T.sendCommand(M),n.enqueueCommand(M)},handleInput(M,H){if(!c.isActive())return!1;if(!H)return!0;let ee=M.toLowerCase();return ee==="arrowup"||ee==="w"?c.handleInput("up"):ee==="arrowdown"||ee==="s"?c.handleInput("down"):ee==="arrowleft"||ee==="a"?c.handleInput("left"):ee==="arrowright"||ee==="d"?c.handleInput("right"):ee==="enter"||ee===" "?c.handleInput("select"):ee==="escape"?c.getState().activeMenu?.parent?c.handleInput("back"):!1:M.length===1?c.handleInput("char",M):M==="Backspace"?c.handleInput("left"):!0},toggleMenu(){if(c.isActive()){if(c.closeAll(),e.host?.cvars){let M=e.host.cvars.list().map(H=>({name:H.name,value:H.string,flags:H.flags}));f.saveCvars(M)}}else g&&c.pushMenu(g.createPauseMenu())},createMainMenu(M,H,ee,yt,xe){let Le=new ds(c,H,ee,yt,xe),wt=p;if(!wt){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");wt=new Ar(c,e.host)}let kn=e.engine.assets,_g={findByExtension:En=>kn?kn.listFiles(En):[]},gg=new hs(c,_g,En=>{console.log(`Starting map: ${En}`),e.host?.commands.execute(`map ${En}`)}),vg=new us(c,Le,{...M,optionsFactory:wt,mapsFactory:gg,multiplayerFactory:O,onSetDifficulty:En=>{e.host?.cvars&&e.host.cvars.setValue("skill",En.toString())}});return{menuSystem:c,factory:vg}},render(M){let H=[];if(s){let xe=M.nowMs,Le=L>0?Math.max(0,xe-L):0;L=xe,r.update(Le),b=a.getPredictionState(r.getCurrentTime())}else L=M.nowMs,M.latest?.state&&(n.setAuthoritative(M.latest),w=M.latest),M.previous?.state&&M.latest?.state?(b=un(M.previous.state,M.latest.state,M.alpha),M.latest.state.packetEntities&&M.previous.state.packetEntities&&(H=cs(M.latest.state.packetEntities,M.previous.state.packetEntities,M.alpha,v,e))):b=M.latest?.state??M.previous?.state??n.getPredictedState();let ee=M.latest&&M.previous?Math.max(0,M.latest.timeMs-M.previous.timeMs):0;S=i.sample(b,ee);let yt={};if(b){let{origin:xe,viewAngles:Le}=b;N=new ud,N.position=_e.fromValues(xe.x,xe.y,xe.z);let wt=S?.offset??{x:0,y:0,z:0};_e.add(N.position,N.position,[wt.x,wt.y,wt.z]);let kn=S?.angles??{x:0,y:0,z:0};N.angles=_e.fromValues(Le.x+kn.x,Le.y+kn.y,Le.z+kn.z),N.fov=ce?40:Z,N.aspect=4/3,e.engine.renderer&&(N.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&N){let xe;if(e.engine.assets){let Le=v.getModelName(1);if(Le){let wt=e.engine.assets.getMap(Le)}}e.engine.renderer.renderFrame({camera:N,world:xe,dlights:[]},H)}if(e.engine.renderer&&b&&b.client){let xe=e.engine.renderer.stats?{...e.engine.renderer.stats,batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0}:{batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0},Le=M.latest?.timeMs??0;this.DrawHUD(xe,Le)}return yt},DrawHUD(M,H){if(!e.engine.renderer)return;let ee=e.engine.renderer,yt=ee.width,xe=ee.height;if(b&&b.client){let Le={origin:b.origin,velocity:b.velocity,viewAngles:b.viewAngles,onGround:Dn(b.pmFlags,Et.OnGround),waterLevel:b.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:b.damageAlpha??0,damageIndicators:b.damageIndicators??[],blend:b.blend??[0,0,0,0],pickupIcon:b.pickupIcon,centerPrint:void 0,notify:void 0,stats:b.stats?[...b.stats]:new Array(32).fill(0),kick_angles:Es,kick_origin:Es,gunoffset:Es,gunangles:Es,gunindex:0,pm_type:b.pm_type??0,pm_time:b.pm_time??0,pm_flags:b.pmFlags,gun_frame:b.gun_frame??0,rdflags:b.rdflags??0,fov:b.fov??90};Le.stats[Ce.STAT_HEALTH]=b.health??0,Le.stats[Ce.STAT_AMMO]=b.ammo??0,Le.stats[Ce.STAT_ARMOR]=b.armor??0,ee.begin2D(),x.DrawHUD(0,null,{x:0,y:0,width:yt,height:xe},{x:0,y:0,width:yt,height:xe},1,0,Le),ee.end2D()}c.isActive()&&mg(e.engine.renderer,c.getState(),e.engine.renderer.width,e.engine.renderer.height),b&&b.client&&d.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,b.client),m.render(e.engine.renderer),u.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(x.Shutdown(),w=void 0,b=void 0,e.host?.cvars){let M=e.host.cvars.list().map(H=>({name:H.name,value:H.string,flags:H.flags}));f.saveCvars(M)}},get prediction(){return n},get lastRendered(){return b},get view(){return i},get lastView(){return S},get camera(){return N},demoPlayback:r,get isDemoPlaying(){return s},get currentDemoName(){return o},get mode(){return l},startDemoPlayback(M,H){r.loadDemo(M),r.setHandler(a),s=!0,o=H,l=1,L=0,v.clear()},stopDemoPlayback(){r.stop(),s=!1,o=null,l=0},ParseCenterPrint(M){x.ParseCenterPrint(M,0,!1)},ParseNotify(M){x.NotifyMessage(0,M,!1)},showSubtitle(M,H){x.ShowSubtitle(M,H)},ParseConfigString(M,H){v.set(M,H),x.ParseConfigString(M,H)},demoHandler:a,multiplayer:T,configStrings:v}}return Sg(DI);})();
|
|
178
178
|
/*! Bundled license information:
|
|
179
179
|
|
|
180
180
|
pako/dist/pako.esm.mjs:
|