quake2ts 0.0.282 → 0.0.284
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/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/browser/index.global.js +3 -3
- package/packages/game/dist/browser/index.global.js.map +1 -1
- package/packages/game/dist/cjs/index.cjs +427 -0
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +427 -0
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/entities/index.d.ts +1 -1
- package/packages/game/dist/types/entities/index.d.ts.map +1 -1
- package/packages/game/dist/types/entities/monsters/arachnid.d.ts +5 -0
- package/packages/game/dist/types/entities/monsters/arachnid.d.ts.map +1 -0
- package/packages/game/dist/types/entities/monsters/common.d.ts +8 -1
- package/packages/game/dist/types/entities/monsters/common.d.ts.map +1 -1
- package/packages/game/dist/types/entities/monsters/index.d.ts.map +1 -1
- package/packages/shared/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/shared/dist/types/net/netchan.d.ts +80 -0
- package/packages/shared/dist/types/net/netchan.d.ts.map +1 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Quake2Client=(()=>{var gs=Object.defineProperty;var ng=Object.getOwnPropertyDescriptor;var ig=Object.getOwnPropertyNames;var rg=Object.prototype.hasOwnProperty;var vs=(e,t)=>{for(var n in t)gs(e,n,{get:t[n],enumerable:!0})},ag=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ig(t))!rg.call(e,r)&&r!==n&&gs(e,r,{get:()=>t[r],enumerable:!(i=ng(t,r))||i.enumerable});return e};var sg=e=>ag(gs({},"__esModule",{value:!0}),e);var gI={};vs(gI,{ClientConfigStrings:()=>ii,ClientMode:()=>J_,ClientPrediction:()=>na,InputAction:()=>fs,InputBindings:()=>gn,InputCommandBuffer:()=>hs,InputController:()=>ai,ViewEffects:()=>ta,createClient:()=>_I,createDefaultBindings:()=>q_,interpolatePredictionState:()=>Nn,normalizeCommand:()=>_r,normalizeInputCode:()=>Uu});var de=1e-6,Ke=typeof Float32Array<"u"?Float32Array:Array,ps=Math.random;function vr(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var pI=Math.PI/180,yI=180/Math.PI;var me={};vs(me,{add:()=>Kg,adjoint:()=>hg,clone:()=>cg,copy:()=>ug,create:()=>og,decompose:()=>Lg,determinant:()=>_g,equals:()=>jg,exactEquals:()=>Yg,frob:()=>Vg,fromQuat:()=>Ig,fromQuat2:()=>Mg,fromRotation:()=>Eg,fromRotationTranslation:()=>Vu,fromRotationTranslationScale:()=>Ng,fromRotationTranslationScaleOrigin:()=>Og,fromScaling:()=>kg,fromTranslation:()=>Sg,fromValues:()=>lg,fromXRotation:()=>xg,fromYRotation:()=>bg,fromZRotation:()=>Tg,frustum:()=>Cg,getRotation:()=>zg,getScaling:()=>Ku,getTranslation:()=>Rg,identity:()=>Hu,invert:()=>fg,lookAt:()=>Gg,mul:()=>Zg,multiply:()=>Wu,multiplyScalar:()=>$g,multiplyScalarAndAdd:()=>Xg,ortho:()=>Ug,orthoNO:()=>Xu,orthoZO:()=>Bg,perspective:()=>Pg,perspectiveFromFieldOfView:()=>Fg,perspectiveNO:()=>$u,perspectiveZO:()=>Dg,rotate:()=>pg,rotateX:()=>yg,rotateY:()=>wg,rotateZ:()=>Ag,scale:()=>vg,set:()=>dg,str:()=>Wg,sub:()=>qg,subtract:()=>Yu,targetTo:()=>Hg,translate:()=>gg,transpose:()=>mg});function og(){var e=new Ke(16);return Ke!=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 cg(e){var t=new Ke(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 ug(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 lg(e,t,n,i,r,a,s,o,u,c,l,f,d,h,g,w){var v=new Ke(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]=f,v[12]=d,v[13]=h,v[14]=g,v[15]=w,v}function dg(e,t,n,i,r,a,s,o,u,c,l,f,d,h,g,w,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]=f,e[11]=d,e[12]=h,e[13]=g,e[14]=w,e[15]=v,e}function Hu(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 fg(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],f=t[9],d=t[10],h=t[11],g=t[12],w=t[13],v=t[14],y=t[15],T=n*o-i*s,S=n*u-r*s,p=n*c-a*s,E=i*u-r*o,b=i*c-a*o,x=r*c-a*u,L=l*w-f*g,k=l*v-d*g,R=l*y-h*g,O=f*v-d*w,J=f*y-h*w,oe=d*y-h*v,Q=T*oe-S*J+p*O+E*R-b*k+x*L;return Q?(Q=1/Q,e[0]=(o*oe-u*J+c*O)*Q,e[1]=(r*J-i*oe-a*O)*Q,e[2]=(w*x-v*b+y*E)*Q,e[3]=(d*b-f*x-h*E)*Q,e[4]=(u*R-s*oe-c*k)*Q,e[5]=(n*oe-r*R+a*k)*Q,e[6]=(v*p-g*x-y*S)*Q,e[7]=(l*x-d*p+h*S)*Q,e[8]=(s*J-o*R+c*L)*Q,e[9]=(i*R-n*J-a*L)*Q,e[10]=(g*b-w*p+y*T)*Q,e[11]=(f*p-l*b-h*T)*Q,e[12]=(o*k-s*O-u*L)*Q,e[13]=(n*O-i*k+r*L)*Q,e[14]=(w*S-g*E-v*T)*Q,e[15]=(l*E-f*S+d*T)*Q,e):null}function hg(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],f=t[9],d=t[10],h=t[11],g=t[12],w=t[13],v=t[14],y=t[15],T=n*o-i*s,S=n*u-r*s,p=n*c-a*s,E=i*u-r*o,b=i*c-a*o,x=r*c-a*u,L=l*w-f*g,k=l*v-d*g,R=l*y-h*g,O=f*v-d*w,J=f*y-h*w,oe=d*y-h*v;return e[0]=o*oe-u*J+c*O,e[1]=r*J-i*oe-a*O,e[2]=w*x-v*b+y*E,e[3]=d*b-f*x-h*E,e[4]=u*R-s*oe-c*k,e[5]=n*oe-r*R+a*k,e[6]=v*p-g*x-y*S,e[7]=l*x-d*p+h*S,e[8]=s*J-o*R+c*L,e[9]=i*R-n*J-a*L,e[10]=g*b-w*p+y*T,e[11]=f*p-l*b-h*T,e[12]=o*k-s*O-u*L,e[13]=n*O-i*k+r*L,e[14]=w*S-g*E-v*T,e[15]=l*E-f*S+d*T,e}function _g(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],f=e[10],d=e[11],h=e[12],g=e[13],w=e[14],v=e[15],y=t*s-n*a,T=t*o-i*a,S=n*o-i*s,p=c*g-l*h,E=c*w-f*h,b=l*w-f*g,x=t*b-n*E+i*p,L=a*b-s*E+o*p,k=c*S-l*T+f*y,R=h*S-g*T+w*y;return u*x-r*L+v*k-d*R}function Wu(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],f=t[8],d=t[9],h=t[10],g=t[11],w=t[12],v=t[13],y=t[14],T=t[15],S=n[0],p=n[1],E=n[2],b=n[3];return e[0]=S*i+p*o+E*f+b*w,e[1]=S*r+p*u+E*d+b*v,e[2]=S*a+p*c+E*h+b*y,e[3]=S*s+p*l+E*g+b*T,S=n[4],p=n[5],E=n[6],b=n[7],e[4]=S*i+p*o+E*f+b*w,e[5]=S*r+p*u+E*d+b*v,e[6]=S*a+p*c+E*h+b*y,e[7]=S*s+p*l+E*g+b*T,S=n[8],p=n[9],E=n[10],b=n[11],e[8]=S*i+p*o+E*f+b*w,e[9]=S*r+p*u+E*d+b*v,e[10]=S*a+p*c+E*h+b*y,e[11]=S*s+p*l+E*g+b*T,S=n[12],p=n[13],E=n[14],b=n[15],e[12]=S*i+p*o+E*f+b*w,e[13]=S*r+p*u+E*d+b*v,e[14]=S*a+p*c+E*h+b*y,e[15]=S*s+p*l+E*g+b*T,e}function gg(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,u,c,l,f,d,h,g,w,v,y;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],f=t[5],d=t[6],h=t[7],g=t[8],w=t[9],v=t[10],y=t[11],e[0]=s,e[1]=o,e[2]=u,e[3]=c,e[4]=l,e[5]=f,e[6]=d,e[7]=h,e[8]=g,e[9]=w,e[10]=v,e[11]=y,e[12]=s*i+l*r+g*a+t[12],e[13]=o*i+f*r+w*a+t[13],e[14]=u*i+d*r+v*a+t[14],e[15]=c*i+h*r+y*a+t[15]),e}function vg(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 pg(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,f,d,h,g,w,v,y,T,S,p,E,b,x,L,k,R,O,J,oe,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,f=t[0],d=t[1],h=t[2],g=t[3],w=t[4],v=t[5],y=t[6],T=t[7],S=t[8],p=t[9],E=t[10],b=t[11],x=r*r*l+c,L=a*r*l+s*u,k=s*r*l-a*u,R=r*a*l-s*u,O=a*a*l+c,J=s*a*l+r*u,oe=r*s*l+a*u,Q=a*s*l-r*u,M=s*s*l+c,e[0]=f*x+w*L+S*k,e[1]=d*x+v*L+p*k,e[2]=h*x+y*L+E*k,e[3]=g*x+T*L+b*k,e[4]=f*R+w*O+S*J,e[5]=d*R+v*O+p*J,e[6]=h*R+y*O+E*J,e[7]=g*R+T*O+b*J,e[8]=f*oe+w*Q+S*M,e[9]=d*oe+v*Q+p*M,e[10]=h*oe+y*Q+E*M,e[11]=g*oe+T*Q+b*M,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function yg(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],f=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+f*i,e[7]=u*r+d*i,e[8]=c*r-a*i,e[9]=l*r-s*i,e[10]=f*r-o*i,e[11]=d*r-u*i,e}function wg(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],f=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-f*i,e[3]=u*r-d*i,e[8]=a*i+c*r,e[9]=s*i+l*r,e[10]=o*i+f*r,e[11]=u*i+d*r,e}function Ag(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],f=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+f*i,e[3]=u*r+d*i,e[4]=c*r-a*i,e[5]=l*r-s*i,e[6]=f*r-o*i,e[7]=d*r-u*i,e}function Sg(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 kg(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 Eg(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 xg(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 bg(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 Tg(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 Vu(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,f=i*u,d=i*c,h=r*u,g=r*c,w=a*c,v=s*o,y=s*u,T=s*c;return e[0]=1-(h+w),e[1]=f+T,e[2]=d-y,e[3]=0,e[4]=f-T,e[5]=1-(l+w),e[6]=g+v,e[7]=0,e[8]=d+y,e[9]=g-v,e[10]=1-(l+h),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Mg(e,t){var n=new Ke(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],f=i*i+r*r+a*a+s*s;return f>0?(n[0]=(o*s+l*i+u*a-c*r)*2/f,n[1]=(u*s+l*r+c*i-o*a)*2/f,n[2]=(c*s+l*a+o*r-u*i)*2/f):(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),Vu(e,t,n),e}function Rg(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Ku(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 zg(e,t){var n=new Ke(3);Ku(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,f=t[6]*a,d=t[8]*i,h=t[9]*r,g=t[10]*a,w=s+l+g,v=0;return w>0?(v=Math.sqrt(w+1)*2,e[3]=.25*v,e[0]=(f-h)/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]=(f-h)/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]=(f+h)/v):(v=Math.sqrt(1+g-s-l)*2,e[3]=(o-c)/v,e[0]=(d+u)/v,e[1]=(f+h)/v,e[2]=.25*v),e}function Lg(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],f=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+f*f+d*d);var h=1/n[0],g=1/n[1],w=1/n[2],v=r*h,y=a*g,T=s*w,S=o*h,p=u*g,E=c*w,b=l*h,x=f*g,L=d*w,k=v+p+L,R=0;return k>0?(R=Math.sqrt(k+1)*2,e[3]=.25*R,e[0]=(E-x)/R,e[1]=(b-T)/R,e[2]=(y-S)/R):v>p&&v>L?(R=Math.sqrt(1+v-p-L)*2,e[3]=(E-x)/R,e[0]=.25*R,e[1]=(y+S)/R,e[2]=(b+T)/R):p>L?(R=Math.sqrt(1+p-v-L)*2,e[3]=(b-T)/R,e[0]=(y+S)/R,e[1]=.25*R,e[2]=(E+x)/R):(R=Math.sqrt(1+L-v-p)*2,e[3]=(y-S)/R,e[0]=(b+T)/R,e[1]=(E+x)/R,e[2]=.25*R),e}function Ng(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,f=r*u,d=r*c,h=r*l,g=a*c,w=a*l,v=s*l,y=o*u,T=o*c,S=o*l,p=i[0],E=i[1],b=i[2];return e[0]=(1-(g+v))*p,e[1]=(d+S)*p,e[2]=(h-T)*p,e[3]=0,e[4]=(d-S)*E,e[5]=(1-(f+v))*E,e[6]=(w+y)*E,e[7]=0,e[8]=(h+T)*b,e[9]=(w-y)*b,e[10]=(1-(f+g))*b,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Og(e,t,n,i,r){var a=t[0],s=t[1],o=t[2],u=t[3],c=a+a,l=s+s,f=o+o,d=a*c,h=a*l,g=a*f,w=s*l,v=s*f,y=o*f,T=u*c,S=u*l,p=u*f,E=i[0],b=i[1],x=i[2],L=r[0],k=r[1],R=r[2],O=(1-(w+y))*E,J=(h+p)*E,oe=(g-S)*E,Q=(h-p)*b,M=(1-(d+y))*b,H=(v+T)*b,ee=(g+S)*x,gt=(v-T)*x,be=(1-(d+w))*x;return e[0]=O,e[1]=J,e[2]=oe,e[3]=0,e[4]=Q,e[5]=M,e[6]=H,e[7]=0,e[8]=ee,e[9]=gt,e[10]=be,e[11]=0,e[12]=n[0]+L-(O*L+Q*k+ee*R),e[13]=n[1]+k-(J*L+M*k+gt*R),e[14]=n[2]+R-(oe*L+H*k+be*R),e[15]=1,e}function Ig(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,f=i*o,d=r*s,h=r*o,g=r*u,w=a*s,v=a*o,y=a*u;return e[0]=1-f-g,e[1]=l+y,e[2]=d-v,e[3]=0,e[4]=l-y,e[5]=1-c-g,e[6]=h+w,e[7]=0,e[8]=d+v,e[9]=h-w,e[10]=1-c-f,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Cg(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 $u(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 Pg=$u;function Dg(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 Fg(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 Xu(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 Ug=Xu;function Bg(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 Gg(e,t,n,i){var r,a,s,o,u,c,l,f,d,h,g=t[0],w=t[1],v=t[2],y=i[0],T=i[1],S=i[2],p=n[0],E=n[1],b=n[2];return Math.abs(g-p)<de&&Math.abs(w-E)<de&&Math.abs(v-b)<de?Hu(e):(l=g-p,f=w-E,d=v-b,h=1/Math.sqrt(l*l+f*f+d*d),l*=h,f*=h,d*=h,r=T*d-S*f,a=S*l-y*d,s=y*f-T*l,h=Math.sqrt(r*r+a*a+s*s),h?(h=1/h,r*=h,a*=h,s*=h):(r=0,a=0,s=0),o=f*s-d*a,u=d*r-l*s,c=l*a-f*r,h=Math.sqrt(o*o+u*u+c*c),h?(h=1/h,o*=h,u*=h,c*=h):(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]=f,e[7]=0,e[8]=s,e[9]=c,e[10]=d,e[11]=0,e[12]=-(r*g+a*w+s*v),e[13]=-(o*g+u*w+c*v),e[14]=-(l*g+f*w+d*v),e[15]=1,e)}function Hg(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],f=a-n[1],d=s-n[2],h=l*l+f*f+d*d;h>0&&(h=1/Math.sqrt(h),l*=h,f*=h,d*=h);var g=u*d-c*f,w=c*l-o*d,v=o*f-u*l;return h=g*g+w*w+v*v,h>0&&(h=1/Math.sqrt(h),g*=h,w*=h,v*=h),e[0]=g,e[1]=w,e[2]=v,e[3]=0,e[4]=f*v-d*w,e[5]=d*g-l*v,e[6]=l*w-f*g,e[7]=0,e[8]=l,e[9]=f,e[10]=d,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function Wg(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 Vg(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 Kg(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 Yu(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 $g(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 Xg(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 Yg(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 jg(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],f=e[9],d=e[10],h=e[11],g=e[12],w=e[13],v=e[14],y=e[15],T=t[0],S=t[1],p=t[2],E=t[3],b=t[4],x=t[5],L=t[6],k=t[7],R=t[8],O=t[9],J=t[10],oe=t[11],Q=t[12],M=t[13],H=t[14],ee=t[15];return Math.abs(n-T)<=de*Math.max(1,Math.abs(n),Math.abs(T))&&Math.abs(i-S)<=de*Math.max(1,Math.abs(i),Math.abs(S))&&Math.abs(r-p)<=de*Math.max(1,Math.abs(r),Math.abs(p))&&Math.abs(a-E)<=de*Math.max(1,Math.abs(a),Math.abs(E))&&Math.abs(s-b)<=de*Math.max(1,Math.abs(s),Math.abs(b))&&Math.abs(o-x)<=de*Math.max(1,Math.abs(o),Math.abs(x))&&Math.abs(u-L)<=de*Math.max(1,Math.abs(u),Math.abs(L))&&Math.abs(c-k)<=de*Math.max(1,Math.abs(c),Math.abs(k))&&Math.abs(l-R)<=de*Math.max(1,Math.abs(l),Math.abs(R))&&Math.abs(f-O)<=de*Math.max(1,Math.abs(f),Math.abs(O))&&Math.abs(d-J)<=de*Math.max(1,Math.abs(d),Math.abs(J))&&Math.abs(h-oe)<=de*Math.max(1,Math.abs(h),Math.abs(oe))&&Math.abs(g-Q)<=de*Math.max(1,Math.abs(g),Math.abs(Q))&&Math.abs(w-M)<=de*Math.max(1,Math.abs(w),Math.abs(M))&&Math.abs(v-H)<=de*Math.max(1,Math.abs(v),Math.abs(H))&&Math.abs(y-ee)<=de*Math.max(1,Math.abs(y),Math.abs(ee))}var Zg=Wu,qg=Yu;var _e={};vs(_e,{add:()=>nv,angle:()=>xv,bezier:()=>vv,ceil:()=>iv,clone:()=>Jg,copy:()=>ev,create:()=>ju,cross:()=>fv,dist:()=>Ov,distance:()=>el,div:()=>Nv,divide:()=>Qu,dot:()=>ys,equals:()=>Rv,exactEquals:()=>Mv,floor:()=>rv,forEach:()=>Dv,fromValues:()=>Qg,hermite:()=>gv,inverse:()=>dv,len:()=>Cv,length:()=>Zu,lerp:()=>hv,max:()=>sv,min:()=>av,mul:()=>Lv,multiply:()=>Ju,negate:()=>lv,normalize:()=>mv,random:()=>pv,rotateX:()=>Sv,rotateY:()=>kv,rotateZ:()=>Ev,round:()=>ov,scale:()=>cv,scaleAndAdd:()=>uv,set:()=>tv,slerp:()=>_v,sqrDist:()=>Iv,sqrLen:()=>Pv,squaredDistance:()=>tl,squaredLength:()=>nl,str:()=>Tv,sub:()=>zv,subtract:()=>qu,transformMat3:()=>wv,transformMat4:()=>yv,transformQuat:()=>Av,zero:()=>bv});function ju(){var e=new Ke(3);return Ke!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Jg(e){var t=new Ke(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Zu(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function Qg(e,t,n){var i=new Ke(3);return i[0]=e,i[1]=t,i[2]=n,i}function ev(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function tv(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function nv(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function qu(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function Ju(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Qu(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function iv(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function rv(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 ov(e,t){return e[0]=vr(t[0]),e[1]=vr(t[1]),e[2]=vr(t[2]),e}function cv(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function uv(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 el(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 tl(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 nl(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function lv(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function dv(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 ys(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function fv(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 hv(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 _v(e,t,n,i){var r=Math.acos(Math.min(Math.max(ys(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 gv(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 vv(e,t,n,i,r,a){var s=1-a,o=s*s,u=a*a,c=o*s,l=3*a*o,f=3*u*s,d=u*a;return e[0]=t[0]*c+n[0]*l+i[0]*f+r[0]*d,e[1]=t[1]*c+n[1]*l+i[1]*f+r[1]*d,e[2]=t[2]*c+n[2]*l+i[2]*f+r[2]*d,e}function pv(e,t){t=t===void 0?1:t;var n=ps()*2*Math.PI,i=ps()*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 yv(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 wv(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 Av(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,f=a*o-i*c,d=i*u-r*o;return l=l+l,f=f+f,d=d+d,e[0]=o+s*l+r*d-a*f,e[1]=u+s*f+a*l-i*d,e[2]=c+s*d+i*f-r*l,e}function Sv(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 kv(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 Ev(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 xv(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&&ys(e,t)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function bv(e){return e[0]=0,e[1]=0,e[2]=0,e}function Tv(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function Mv(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function Rv(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 zv=qu,Lv=Ju,Nv=Qu,Ov=el,Iv=tl,Cv=Zu,Pv=nl,Dv=(function(){var e=ju();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 Fv=Object.defineProperty,Kl=(e,t)=>{for(var n in t)Fv(e,n,{get:t[n],enumerable:!0})};var AI=Math.PI/180;var Uv=Math.PI/180,SI=180/Math.PI,si=Uv,Bv=[[-.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 st=1,Ct=2;var Xs=8,Ys=16,Gv=32;var Hv=16384;var Ir=65536,$l=1<<17,Wv=1<<18,Vv=1<<19,Kv=1<<20,$v=1<<21,Xv=1<<22,Yv=1<<23,kI=1<<24,Cr=1<<25,jv=1<<26,EI=1<<27,xI=1<<28,bI=1<<29,Pr=1<<30,TI=1<<31;var MI=1<<25,RI=1<<28,zI=1<<29,LI=1<<30,NI=1<<31,OI=st|Ct,II=st|Ir|Ct|Cr|Pr,CI=st|Ir|Ct,PI=st|$l|Ct|Cr|Pr,DI=Gv|Xs|Ys,FI=st|Ys|Xs,Zv=st|Cr|Pr|Ct|jv,UI=Wv|Vv|Kv|$v|Xv|Yv,BI=st|Xs|Ys|Cr|Pr,GI=st|Ir|Ct,HI=st|Ct,WI=st|Ir|Ct|$l,VI=Zv|Hv,KI=Number.MAX_SAFE_INTEGER-1;var Xl=256,qv=256,Jv=8192,Qv=2048,ep=512,tp=256,np=Xl*2,ip=256,ws=32;var Yl=(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.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+Jv]="Sounds",e[e.Images=e.Sounds+Qv]="Images",e[e.Lights=e.Images+ep]="Lights",e[e.ShadowLights=e.Lights+qv]="ShadowLights",e[e.Items=e.ShadowLights+ip]="Items",e[e.PlayerSkins=e.Items+tp]="PlayerSkins",e[e.General=e.PlayerSkins+Xl]="General",e[e.WheelWeapons=e.General+np]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+ws]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+ws]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+ws]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Yl||{}),$I=Yl.MaxConfigStrings;var rp={};Kl(rp,{addReplayFrame:()=>cp,createReplaySession:()=>op,deserializeReplay:()=>sp,serializeReplay:()=>ap});function ap(e){return JSON.stringify(e,null,2)}function sp(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 op(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function cp(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var q=(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))(q||{}),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||{}),up=12,lp=9,XI=Math.ceil(up*lp/16),dp=23,mp=2,YI=Math.ceil(dp*mp/16),fp={};Kl(fp,{U_ANGLE1:()=>wp,U_ANGLE2:()=>Ap,U_ANGLE3:()=>Sp,U_EFFECTS:()=>xp,U_EVENT:()=>Mp,U_FRAME:()=>kp,U_MODEL:()=>_p,U_MODEL2:()=>zp,U_MODEL3:()=>Lp,U_MODEL4:()=>Np,U_MOREBITS:()=>Rp,U_NUMBER:()=>hp,U_ORIGIN1:()=>vp,U_ORIGIN2:()=>pp,U_ORIGIN3:()=>yp,U_REMOVE:()=>Op,U_RENDERFX:()=>bp,U_SKIN:()=>Ep,U_SOLID:()=>Tp,U_SOUND:()=>gp});var hp=1,_p=2,gp=4,vp=8,pp=16,yp=32,wp=64,Ap=128,Sp=256,kp=512,Ep=1024,xp=2048,bp=4096,Tp=8192,Mp=16384,Rp=32768,zp=1,Lp=2,Np=4,Op=32768,Ps=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=Bv[t];e.x=n[0],e.y=n[1],e.z=n[2]}},jl=(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))(jl||{}),jI=Object.keys(jl).length/2;function Ip(){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 ZI=Ip();var qI=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 Cp=19,JI=8+Cp*8;var Ds=4,As=7*Ds,QI=[{index:0,size:3,type:5126,stride:As,offset:0},{index:1,size:2,type:5126,stride:As,offset:3*Ds},{index:2,size:2,type:5126,stride:As,offset:5*Ds}];var Zl=32;var eC=`#version 300 es
|
|
1
|
+
"use strict";var Quake2Client=(()=>{var gs=Object.defineProperty;var ig=Object.getOwnPropertyDescriptor;var rg=Object.getOwnPropertyNames;var ag=Object.prototype.hasOwnProperty;var vs=(e,t)=>{for(var n in t)gs(e,n,{get:t[n],enumerable:!0})},sg=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of rg(t))!ag.call(e,r)&&r!==n&&gs(e,r,{get:()=>t[r],enumerable:!(i=ig(t,r))||i.enumerable});return e};var og=e=>sg(gs({},"__esModule",{value:!0}),e);var wI={};vs(wI,{ClientConfigStrings:()=>ii,ClientMode:()=>Q_,ClientPrediction:()=>na,InputAction:()=>fs,InputBindings:()=>gn,InputCommandBuffer:()=>hs,InputController:()=>ai,ViewEffects:()=>ta,createClient:()=>yI,createDefaultBindings:()=>J_,interpolatePredictionState:()=>Nn,normalizeCommand:()=>_r,normalizeInputCode:()=>Bu});var le=1e-6,Ke=typeof Float32Array<"u"?Float32Array:Array,ps=Math.random;function vr(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var SI=Math.PI/180,kI=180/Math.PI;var me={};vs(me,{add:()=>$g,adjoint:()=>_g,clone:()=>ug,copy:()=>dg,create:()=>cg,decompose:()=>Ng,determinant:()=>gg,equals:()=>jg,exactEquals:()=>Zg,frob:()=>Kg,fromQuat:()=>Cg,fromQuat2:()=>Rg,fromRotation:()=>xg,fromRotationTranslation:()=>Ku,fromRotationTranslationScale:()=>Og,fromRotationTranslationScaleOrigin:()=>Ig,fromScaling:()=>Eg,fromTranslation:()=>kg,fromValues:()=>lg,fromXRotation:()=>bg,fromYRotation:()=>Tg,fromZRotation:()=>Mg,frustum:()=>Pg,getRotation:()=>Lg,getScaling:()=>$u,getTranslation:()=>zg,identity:()=>Wu,invert:()=>hg,lookAt:()=>Hg,mul:()=>qg,multiply:()=>Vu,multiplyScalar:()=>Xg,multiplyScalarAndAdd:()=>Yg,ortho:()=>Bg,orthoNO:()=>Yu,orthoZO:()=>Gg,perspective:()=>Fg,perspectiveFromFieldOfView:()=>Ug,perspectiveNO:()=>Xu,perspectiveZO:()=>Dg,rotate:()=>yg,rotateX:()=>wg,rotateY:()=>Ag,rotateZ:()=>Sg,scale:()=>pg,set:()=>mg,str:()=>Vg,sub:()=>Jg,subtract:()=>Zu,targetTo:()=>Wg,translate:()=>vg,transpose:()=>fg});function cg(){var e=new Ke(16);return Ke!=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 ug(e){var t=new Ke(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 dg(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 lg(e,t,n,i,r,a,s,o,u,c,d,f,l,h,g,w){var v=new Ke(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]=d,v[11]=f,v[12]=l,v[13]=h,v[14]=g,v[15]=w,v}function mg(e,t,n,i,r,a,s,o,u,c,d,f,l,h,g,w,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]=d,e[10]=f,e[11]=l,e[12]=h,e[13]=g,e[14]=w,e[15]=v,e}function Wu(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 fg(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 hg(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],d=t[8],f=t[9],l=t[10],h=t[11],g=t[12],w=t[13],v=t[14],y=t[15],T=n*o-i*s,S=n*u-r*s,p=n*c-a*s,E=i*u-r*o,b=i*c-a*o,x=r*c-a*u,L=d*w-f*g,k=d*v-l*g,z=d*y-h*g,O=f*v-l*w,J=f*y-h*w,ce=l*y-h*v,Q=T*ce-S*J+p*O+E*z-b*k+x*L;return Q?(Q=1/Q,e[0]=(o*ce-u*J+c*O)*Q,e[1]=(r*J-i*ce-a*O)*Q,e[2]=(w*x-v*b+y*E)*Q,e[3]=(l*b-f*x-h*E)*Q,e[4]=(u*z-s*ce-c*k)*Q,e[5]=(n*ce-r*z+a*k)*Q,e[6]=(v*p-g*x-y*S)*Q,e[7]=(d*x-l*p+h*S)*Q,e[8]=(s*J-o*z+c*L)*Q,e[9]=(i*z-n*J-a*L)*Q,e[10]=(g*b-w*p+y*T)*Q,e[11]=(f*p-d*b-h*T)*Q,e[12]=(o*k-s*O-u*L)*Q,e[13]=(n*O-i*k+r*L)*Q,e[14]=(w*S-g*E-v*T)*Q,e[15]=(d*E-f*S+l*T)*Q,e):null}function _g(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],d=t[8],f=t[9],l=t[10],h=t[11],g=t[12],w=t[13],v=t[14],y=t[15],T=n*o-i*s,S=n*u-r*s,p=n*c-a*s,E=i*u-r*o,b=i*c-a*o,x=r*c-a*u,L=d*w-f*g,k=d*v-l*g,z=d*y-h*g,O=f*v-l*w,J=f*y-h*w,ce=l*y-h*v;return e[0]=o*ce-u*J+c*O,e[1]=r*J-i*ce-a*O,e[2]=w*x-v*b+y*E,e[3]=l*b-f*x-h*E,e[4]=u*z-s*ce-c*k,e[5]=n*ce-r*z+a*k,e[6]=v*p-g*x-y*S,e[7]=d*x-l*p+h*S,e[8]=s*J-o*z+c*L,e[9]=i*z-n*J-a*L,e[10]=g*b-w*p+y*T,e[11]=f*p-d*b-h*T,e[12]=o*k-s*O-u*L,e[13]=n*O-i*k+r*L,e[14]=w*S-g*E-v*T,e[15]=d*E-f*S+l*T,e}function gg(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],d=e[9],f=e[10],l=e[11],h=e[12],g=e[13],w=e[14],v=e[15],y=t*s-n*a,T=t*o-i*a,S=n*o-i*s,p=c*g-d*h,E=c*w-f*h,b=d*w-f*g,x=t*b-n*E+i*p,L=a*b-s*E+o*p,k=c*S-d*T+f*y,z=h*S-g*T+w*y;return u*x-r*L+v*k-l*z}function Vu(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],d=t[7],f=t[8],l=t[9],h=t[10],g=t[11],w=t[12],v=t[13],y=t[14],T=t[15],S=n[0],p=n[1],E=n[2],b=n[3];return e[0]=S*i+p*o+E*f+b*w,e[1]=S*r+p*u+E*l+b*v,e[2]=S*a+p*c+E*h+b*y,e[3]=S*s+p*d+E*g+b*T,S=n[4],p=n[5],E=n[6],b=n[7],e[4]=S*i+p*o+E*f+b*w,e[5]=S*r+p*u+E*l+b*v,e[6]=S*a+p*c+E*h+b*y,e[7]=S*s+p*d+E*g+b*T,S=n[8],p=n[9],E=n[10],b=n[11],e[8]=S*i+p*o+E*f+b*w,e[9]=S*r+p*u+E*l+b*v,e[10]=S*a+p*c+E*h+b*y,e[11]=S*s+p*d+E*g+b*T,S=n[12],p=n[13],E=n[14],b=n[15],e[12]=S*i+p*o+E*f+b*w,e[13]=S*r+p*u+E*l+b*v,e[14]=S*a+p*c+E*h+b*y,e[15]=S*s+p*d+E*g+b*T,e}function vg(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,u,c,d,f,l,h,g,w,v,y;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],d=t[4],f=t[5],l=t[6],h=t[7],g=t[8],w=t[9],v=t[10],y=t[11],e[0]=s,e[1]=o,e[2]=u,e[3]=c,e[4]=d,e[5]=f,e[6]=l,e[7]=h,e[8]=g,e[9]=w,e[10]=v,e[11]=y,e[12]=s*i+d*r+g*a+t[12],e[13]=o*i+f*r+w*a+t[13],e[14]=u*i+l*r+v*a+t[14],e[15]=c*i+h*r+y*a+t[15]),e}function pg(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 yg(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,d,f,l,h,g,w,v,y,T,S,p,E,b,x,L,k,z,O,J,ce,Q,M;return o<le?null:(o=1/o,r*=o,a*=o,s*=o,u=Math.sin(n),c=Math.cos(n),d=1-c,f=t[0],l=t[1],h=t[2],g=t[3],w=t[4],v=t[5],y=t[6],T=t[7],S=t[8],p=t[9],E=t[10],b=t[11],x=r*r*d+c,L=a*r*d+s*u,k=s*r*d-a*u,z=r*a*d-s*u,O=a*a*d+c,J=s*a*d+r*u,ce=r*s*d+a*u,Q=a*s*d-r*u,M=s*s*d+c,e[0]=f*x+w*L+S*k,e[1]=l*x+v*L+p*k,e[2]=h*x+y*L+E*k,e[3]=g*x+T*L+b*k,e[4]=f*z+w*O+S*J,e[5]=l*z+v*O+p*J,e[6]=h*z+y*O+E*J,e[7]=g*z+T*O+b*J,e[8]=f*ce+w*Q+S*M,e[9]=l*ce+v*Q+p*M,e[10]=h*ce+y*Q+E*M,e[11]=g*ce+T*Q+b*M,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function wg(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],d=t[9],f=t[10],l=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+d*i,e[6]=o*r+f*i,e[7]=u*r+l*i,e[8]=c*r-a*i,e[9]=d*r-s*i,e[10]=f*r-o*i,e[11]=l*r-u*i,e}function Ag(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],d=t[9],f=t[10],l=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-d*i,e[2]=o*r-f*i,e[3]=u*r-l*i,e[8]=a*i+c*r,e[9]=s*i+d*r,e[10]=o*i+f*r,e[11]=u*i+l*r,e}function Sg(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],d=t[5],f=t[6],l=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+d*i,e[2]=o*r+f*i,e[3]=u*r+l*i,e[4]=c*r-a*i,e[5]=d*r-s*i,e[6]=f*r-o*i,e[7]=l*r-u*i,e}function kg(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 Eg(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 xg(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<le?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 bg(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 Tg(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 Mg(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 Ku(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,d=i*o,f=i*u,l=i*c,h=r*u,g=r*c,w=a*c,v=s*o,y=s*u,T=s*c;return e[0]=1-(h+w),e[1]=f+T,e[2]=l-y,e[3]=0,e[4]=f-T,e[5]=1-(d+w),e[6]=g+v,e[7]=0,e[8]=l+y,e[9]=g-v,e[10]=1-(d+h),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Rg(e,t){var n=new Ke(3),i=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],u=t[5],c=t[6],d=t[7],f=i*i+r*r+a*a+s*s;return f>0?(n[0]=(o*s+d*i+u*a-c*r)*2/f,n[1]=(u*s+d*r+c*i-o*a)*2/f,n[2]=(c*s+d*a+o*r-u*i)*2/f):(n[0]=(o*s+d*i+u*a-c*r)*2,n[1]=(u*s+d*r+c*i-o*a)*2,n[2]=(c*s+d*a+o*r-u*i)*2),Ku(e,t,n),e}function zg(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function $u(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],d=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+d*d),e}function Lg(e,t){var n=new Ke(3);$u(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,d=t[5]*r,f=t[6]*a,l=t[8]*i,h=t[9]*r,g=t[10]*a,w=s+d+g,v=0;return w>0?(v=Math.sqrt(w+1)*2,e[3]=.25*v,e[0]=(f-h)/v,e[1]=(l-u)/v,e[2]=(o-c)/v):s>d&&s>g?(v=Math.sqrt(1+s-d-g)*2,e[3]=(f-h)/v,e[0]=.25*v,e[1]=(o+c)/v,e[2]=(l+u)/v):d>g?(v=Math.sqrt(1+d-s-g)*2,e[3]=(l-u)/v,e[0]=(o+c)/v,e[1]=.25*v,e[2]=(f+h)/v):(v=Math.sqrt(1+g-s-d)*2,e[3]=(o-c)/v,e[0]=(l+u)/v,e[1]=(f+h)/v,e[2]=.25*v),e}function Ng(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],d=i[8],f=i[9],l=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(d*d+f*f+l*l);var h=1/n[0],g=1/n[1],w=1/n[2],v=r*h,y=a*g,T=s*w,S=o*h,p=u*g,E=c*w,b=d*h,x=f*g,L=l*w,k=v+p+L,z=0;return k>0?(z=Math.sqrt(k+1)*2,e[3]=.25*z,e[0]=(E-x)/z,e[1]=(b-T)/z,e[2]=(y-S)/z):v>p&&v>L?(z=Math.sqrt(1+v-p-L)*2,e[3]=(E-x)/z,e[0]=.25*z,e[1]=(y+S)/z,e[2]=(b+T)/z):p>L?(z=Math.sqrt(1+p-v-L)*2,e[3]=(b-T)/z,e[0]=(y+S)/z,e[1]=.25*z,e[2]=(E+x)/z):(z=Math.sqrt(1+L-v-p)*2,e[3]=(y-S)/z,e[0]=(b+T)/z,e[1]=(E+x)/z,e[2]=.25*z),e}function Og(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=t[3],u=r+r,c=a+a,d=s+s,f=r*u,l=r*c,h=r*d,g=a*c,w=a*d,v=s*d,y=o*u,T=o*c,S=o*d,p=i[0],E=i[1],b=i[2];return e[0]=(1-(g+v))*p,e[1]=(l+S)*p,e[2]=(h-T)*p,e[3]=0,e[4]=(l-S)*E,e[5]=(1-(f+v))*E,e[6]=(w+y)*E,e[7]=0,e[8]=(h+T)*b,e[9]=(w-y)*b,e[10]=(1-(f+g))*b,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Ig(e,t,n,i,r){var a=t[0],s=t[1],o=t[2],u=t[3],c=a+a,d=s+s,f=o+o,l=a*c,h=a*d,g=a*f,w=s*d,v=s*f,y=o*f,T=u*c,S=u*d,p=u*f,E=i[0],b=i[1],x=i[2],L=r[0],k=r[1],z=r[2],O=(1-(w+y))*E,J=(h+p)*E,ce=(g-S)*E,Q=(h-p)*b,M=(1-(l+y))*b,H=(v+T)*b,ee=(g+S)*x,gt=(v-T)*x,be=(1-(l+w))*x;return e[0]=O,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]=gt,e[10]=be,e[11]=0,e[12]=n[0]+L-(O*L+Q*k+ee*z),e[13]=n[1]+k-(J*L+M*k+gt*z),e[14]=n[2]+z-(ce*L+H*k+be*z),e[15]=1,e}function Cg(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,d=i*s,f=i*o,l=r*s,h=r*o,g=r*u,w=a*s,v=a*o,y=a*u;return e[0]=1-f-g,e[1]=d+y,e[2]=l-v,e[3]=0,e[4]=d-y,e[5]=1-c-g,e[6]=h+w,e[7]=0,e[8]=l+v,e[9]=h-w,e[10]=1-c-f,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Pg(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 Xu(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 Fg=Xu;function Dg(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 Ug(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 Yu(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 Bg=Yu;function Gg(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 Hg(e,t,n,i){var r,a,s,o,u,c,d,f,l,h,g=t[0],w=t[1],v=t[2],y=i[0],T=i[1],S=i[2],p=n[0],E=n[1],b=n[2];return Math.abs(g-p)<le&&Math.abs(w-E)<le&&Math.abs(v-b)<le?Wu(e):(d=g-p,f=w-E,l=v-b,h=1/Math.sqrt(d*d+f*f+l*l),d*=h,f*=h,l*=h,r=T*l-S*f,a=S*d-y*l,s=y*f-T*d,h=Math.sqrt(r*r+a*a+s*s),h?(h=1/h,r*=h,a*=h,s*=h):(r=0,a=0,s=0),o=f*s-l*a,u=l*r-d*s,c=d*a-f*r,h=Math.sqrt(o*o+u*u+c*c),h?(h=1/h,o*=h,u*=h,c*=h):(o=0,u=0,c=0),e[0]=r,e[1]=o,e[2]=d,e[3]=0,e[4]=a,e[5]=u,e[6]=f,e[7]=0,e[8]=s,e[9]=c,e[10]=l,e[11]=0,e[12]=-(r*g+a*w+s*v),e[13]=-(o*g+u*w+c*v),e[14]=-(d*g+f*w+l*v),e[15]=1,e)}function Wg(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=i[0],u=i[1],c=i[2],d=r-n[0],f=a-n[1],l=s-n[2],h=d*d+f*f+l*l;h>0&&(h=1/Math.sqrt(h),d*=h,f*=h,l*=h);var g=u*l-c*f,w=c*d-o*l,v=o*f-u*d;return h=g*g+w*w+v*v,h>0&&(h=1/Math.sqrt(h),g*=h,w*=h,v*=h),e[0]=g,e[1]=w,e[2]=v,e[3]=0,e[4]=f*v-l*w,e[5]=l*g-d*v,e[6]=d*w-f*g,e[7]=0,e[8]=d,e[9]=f,e[10]=l,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function Vg(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 Kg(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 $g(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 Zu(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 Xg(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 Yg(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 Zg(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 jg(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],d=e[8],f=e[9],l=e[10],h=e[11],g=e[12],w=e[13],v=e[14],y=e[15],T=t[0],S=t[1],p=t[2],E=t[3],b=t[4],x=t[5],L=t[6],k=t[7],z=t[8],O=t[9],J=t[10],ce=t[11],Q=t[12],M=t[13],H=t[14],ee=t[15];return Math.abs(n-T)<=le*Math.max(1,Math.abs(n),Math.abs(T))&&Math.abs(i-S)<=le*Math.max(1,Math.abs(i),Math.abs(S))&&Math.abs(r-p)<=le*Math.max(1,Math.abs(r),Math.abs(p))&&Math.abs(a-E)<=le*Math.max(1,Math.abs(a),Math.abs(E))&&Math.abs(s-b)<=le*Math.max(1,Math.abs(s),Math.abs(b))&&Math.abs(o-x)<=le*Math.max(1,Math.abs(o),Math.abs(x))&&Math.abs(u-L)<=le*Math.max(1,Math.abs(u),Math.abs(L))&&Math.abs(c-k)<=le*Math.max(1,Math.abs(c),Math.abs(k))&&Math.abs(d-z)<=le*Math.max(1,Math.abs(d),Math.abs(z))&&Math.abs(f-O)<=le*Math.max(1,Math.abs(f),Math.abs(O))&&Math.abs(l-J)<=le*Math.max(1,Math.abs(l),Math.abs(J))&&Math.abs(h-ce)<=le*Math.max(1,Math.abs(h),Math.abs(ce))&&Math.abs(g-Q)<=le*Math.max(1,Math.abs(g),Math.abs(Q))&&Math.abs(w-M)<=le*Math.max(1,Math.abs(w),Math.abs(M))&&Math.abs(v-H)<=le*Math.max(1,Math.abs(v),Math.abs(H))&&Math.abs(y-ee)<=le*Math.max(1,Math.abs(y),Math.abs(ee))}var qg=Vu,Jg=Zu;var _e={};vs(_e,{add:()=>iv,angle:()=>bv,bezier:()=>pv,ceil:()=>rv,clone:()=>Qg,copy:()=>tv,create:()=>ju,cross:()=>hv,dist:()=>Iv,distance:()=>td,div:()=>Ov,divide:()=>ed,dot:()=>ys,equals:()=>zv,exactEquals:()=>Rv,floor:()=>av,forEach:()=>Dv,fromValues:()=>ev,hermite:()=>vv,inverse:()=>mv,len:()=>Pv,length:()=>qu,lerp:()=>_v,max:()=>ov,min:()=>sv,mul:()=>Nv,multiply:()=>Qu,negate:()=>lv,normalize:()=>fv,random:()=>yv,rotateX:()=>kv,rotateY:()=>Ev,rotateZ:()=>xv,round:()=>cv,scale:()=>uv,scaleAndAdd:()=>dv,set:()=>nv,slerp:()=>gv,sqrDist:()=>Cv,sqrLen:()=>Fv,squaredDistance:()=>nd,squaredLength:()=>id,str:()=>Mv,sub:()=>Lv,subtract:()=>Ju,transformMat3:()=>Av,transformMat4:()=>wv,transformQuat:()=>Sv,zero:()=>Tv});function ju(){var e=new Ke(3);return Ke!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Qg(e){var t=new Ke(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function qu(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function ev(e,t,n){var i=new Ke(3);return i[0]=e,i[1]=t,i[2]=n,i}function tv(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function nv(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}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}function Ju(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function Qu(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function ed(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function rv(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function av(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function sv(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 ov(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 cv(e,t){return e[0]=vr(t[0]),e[1]=vr(t[1]),e[2]=vr(t[2]),e}function uv(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function dv(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 td(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 nd(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 id(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function lv(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function mv(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function fv(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 ys(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function hv(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 _v(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 gv(e,t,n,i){var r=Math.acos(Math.min(Math.max(ys(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 vv(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),d=s*(3-2*a);return e[0]=t[0]*o+n[0]*u+i[0]*c+r[0]*d,e[1]=t[1]*o+n[1]*u+i[1]*c+r[1]*d,e[2]=t[2]*o+n[2]*u+i[2]*c+r[2]*d,e}function pv(e,t,n,i,r,a){var s=1-a,o=s*s,u=a*a,c=o*s,d=3*a*o,f=3*u*s,l=u*a;return e[0]=t[0]*c+n[0]*d+i[0]*f+r[0]*l,e[1]=t[1]*c+n[1]*d+i[1]*f+r[1]*l,e[2]=t[2]*c+n[2]*d+i[2]*f+r[2]*l,e}function yv(e,t){t=t===void 0?1:t;var n=ps()*2*Math.PI,i=ps()*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 wv(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 Av(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 Sv(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],d=r*c-a*u,f=a*o-i*c,l=i*u-r*o;return d=d+d,f=f+f,l=l+l,e[0]=o+s*d+r*l-a*f,e[1]=u+s*f+a*d-i*l,e[2]=c+s*l+i*f-r*d,e}function kv(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 Ev(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 xv(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 bv(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&&ys(e,t)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function Tv(e){return e[0]=0,e[1]=0,e[2]=0,e}function Mv(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function Rv(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function zv(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)<=le*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=le*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=le*Math.max(1,Math.abs(r),Math.abs(o))}var Lv=Ju,Nv=Qu,Ov=ed,Iv=td,Cv=nd,Pv=qu,Fv=id,Dv=(function(){var e=ju();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 Uv=Object.defineProperty,$d=(e,t)=>{for(var n in t)Uv(e,n,{get:t[n],enumerable:!0})};var xI=Math.PI/180;var Bv=Math.PI/180,bI=180/Math.PI,si=Bv,Gv=[[-.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 st=1,Ct=2;var Xs=8,Ys=16,Hv=32;var Wv=16384;var Ir=65536,Xd=1<<17,Vv=1<<18,Kv=1<<19,$v=1<<20,Xv=1<<21,Yv=1<<22,Zv=1<<23,TI=1<<24,Cr=1<<25,jv=1<<26,MI=1<<27,RI=1<<28,zI=1<<29,Pr=1<<30,LI=1<<31;var NI=1<<25,OI=1<<28,II=1<<29,CI=1<<30,PI=1<<31,FI=st|Ct,DI=st|Ir|Ct|Cr|Pr,UI=st|Ir|Ct,BI=st|Xd|Ct|Cr|Pr,GI=Hv|Xs|Ys,HI=st|Ys|Xs,qv=st|Cr|Pr|Ct|jv,WI=Vv|Kv|$v|Xv|Yv|Zv,VI=st|Xs|Ys|Cr|Pr,KI=st|Ir|Ct,$I=st|Ct,XI=st|Ir|Ct|Xd,YI=qv|Wv,ZI=Number.MAX_SAFE_INTEGER-1;var Yd=256,Jv=256,Qv=8192,ep=2048,tp=512,np=256,ip=Yd*2,rp=256,ws=32;var Zd=(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.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+Qv]="Sounds",e[e.Images=e.Sounds+ep]="Images",e[e.Lights=e.Images+tp]="Lights",e[e.ShadowLights=e.Lights+Jv]="ShadowLights",e[e.Items=e.ShadowLights+rp]="Items",e[e.PlayerSkins=e.Items+np]="PlayerSkins",e[e.General=e.PlayerSkins+Yd]="General",e[e.WheelWeapons=e.General+ip]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+ws]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+ws]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+ws]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Zd||{}),jI=Zd.MaxConfigStrings;var ap={};$d(ap,{addReplayFrame:()=>up,createReplaySession:()=>cp,deserializeReplay:()=>op,serializeReplay:()=>sp});function sp(e){return JSON.stringify(e,null,2)}function op(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 cp(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function up(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var q=(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))(q||{}),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||{}),dp=12,lp=9,qI=Math.ceil(dp*lp/16),mp=23,fp=2,JI=Math.ceil(mp*fp/16),hp={};$d(hp,{U_ANGLE1:()=>Ap,U_ANGLE2:()=>Sp,U_ANGLE3:()=>kp,U_EFFECTS:()=>bp,U_EVENT:()=>Rp,U_FRAME:()=>Ep,U_MODEL:()=>gp,U_MODEL2:()=>Lp,U_MODEL3:()=>Np,U_MODEL4:()=>Op,U_MOREBITS:()=>zp,U_NUMBER:()=>_p,U_ORIGIN1:()=>pp,U_ORIGIN2:()=>yp,U_ORIGIN3:()=>wp,U_REMOVE:()=>Ip,U_RENDERFX:()=>Tp,U_SKIN:()=>xp,U_SOLID:()=>Mp,U_SOUND:()=>vp});var _p=1,gp=2,vp=4,pp=8,yp=16,wp=32,Ap=64,Sp=128,kp=256,Ep=512,xp=1024,bp=2048,Tp=4096,Mp=8192,Rp=16384,zp=32768,Lp=1,Np=2,Op=4,Ip=32768,Ps=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=Gv[t];e.x=n[0],e.y=n[1],e.z=n[2]}},jd=(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))(jd||{}),QI=Object.keys(jd).length/2;function Cp(){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 eC=Cp();var tC=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 Pp=19,nC=8+Pp*8;var Fs=4,As=7*Fs,iC=[{index:0,size:3,type:5126,stride:As,offset:0},{index:1,size:2,type:5126,stride:As,offset:3*Fs},{index:2,size:2,type:5126,stride:As,offset:5*Fs}];var qd=32;var rC=`#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 = ${qd};
|
|
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 aC=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 sC=`#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 = ${qd};
|
|
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 ql=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*si,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;me.perspective(this._projectionMatrix,this._fov*si,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*si,a=n*si,s=i*si,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),f=_e.create();_e.transformMat4(f,l,o);let d=_e.fromValues(f[1]||0,f[2]||0,f[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 Pp=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 Ps(t)}}reset(){this.offset=0}getOffset(){return this.offset}},Dp=4,il=0,rl=1,Fp=2;function xn(e){let t=e.length;for(;--t>=0;)e[t]=0}var Up=0,Jl=1,Bp=2,Gp=3,Hp=258,js=29,Ai=256,fi=Ai+1+js,Sn=30,Zs=19,Ql=2*fi+1,jt=15,Ss=16,Wp=7,qs=256,ed=16,td=17,nd=18,Fs=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]),kr=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]),Vp=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),id=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Kp=512,yt=new Array((fi+2)*2);xn(yt);var li=new Array(Sn*2);xn(li);var hi=new Array(Kp);xn(hi);var _i=new Array(Hp-Gp+1);xn(_i);var Js=new Array(js);xn(Js);var Er=new Array(Sn);xn(Er);function ks(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 rd,ad,sd;function Es(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var od=e=>e<256?hi[e]:hi[256+(e>>>7)],gi=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Pe=(e,t,n)=>{e.bi_valid>Ss-n?(e.bi_buf|=t<<e.bi_valid&65535,gi(e,e.bi_buf),e.bi_buf=t>>Ss-e.bi_valid,e.bi_valid+=n-Ss):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},it=(e,t,n)=>{Pe(e,n[t*2],n[t*2+1])},cd=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},$p=e=>{e.bi_valid===16?(gi(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)},Xp=(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,f,d,h,g,w=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<Ql;c++)l=e.heap[c],d=n[n[l*2+1]*2+1]+1,d>u&&(d=u,w++),n[l*2+1]=d,!(l>i)&&(e.bl_count[d]++,h=0,l>=o&&(h=s[l-o]),g=n[l*2],e.opt_len+=g*(d+h),a&&(e.static_len+=g*(r[l*2+1]+h)));if(w!==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]--,w-=2}while(w>0);for(d=u;d!==0;d--)for(l=e.bl_count[d];l!==0;)f=e.heap[--c],!(f>i)&&(n[f*2+1]!==d&&(e.opt_len+=(d-n[f*2+1])*n[f*2],n[f*2+1]=d),l--)}},ud=(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]=cd(i[o]++,o))}},Yp=()=>{let e,t,n,i,r,a=new Array(jt+1);for(n=0,i=0;i<js-1;i++)for(Js[i]=n,e=0;e<1<<Fs[i];e++)_i[n++]=i;for(_i[n-1]=i,r=0,i=0;i<16;i++)for(Er[i]=r,e=0;e<1<<kr[i];e++)hi[r++]=i;for(r>>=7;i<Sn;i++)for(Er[i]=r<<7,e=0;e<1<<kr[i]-7;e++)hi[256+r++]=i;for(t=0;t<=jt;t++)a[t]=0;for(e=0;e<=143;)yt[e*2+1]=8,e++,a[8]++;for(;e<=255;)yt[e*2+1]=9,e++,a[9]++;for(;e<=279;)yt[e*2+1]=7,e++,a[7]++;for(;e<=287;)yt[e*2+1]=8,e++,a[8]++;for(ud(yt,fi+1,a),e=0;e<Sn;e++)li[e*2+1]=5,li[e*2]=cd(e,5);rd=new ks(yt,Fs,Ai+1,fi,jt),ad=new ks(li,kr,0,Sn,jt),sd=new ks(new Array(0),Vp,0,Zs,Wp)},ld=e=>{let t;for(t=0;t<fi;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Sn;t++)e.dyn_dtree[t*2]=0;for(t=0;t<Zs;t++)e.bl_tree[t*2]=0;e.dyn_ltree[qs*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},dd=e=>{e.bi_valid>8?gi(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},al=(e,t,n,i)=>{let r=t*2,a=n*2;return e[r]<e[a]||e[r]===e[a]&&i[t]<=i[n]},xs=(e,t,n)=>{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r<e.heap_len&&al(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!al(t,i,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=i},sl=(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?it(e,r,t):(s=_i[r],it(e,s+Ai+1,t),o=Fs[s],o!==0&&(r-=Js[s],Pe(e,r,o)),i--,s=od(i),it(e,s,n),o=kr[s],o!==0&&(i-=Er[s],Pe(e,i,o)));while(a<e.sym_next);it(e,qs,t)},Us=(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=Ql,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--)xs(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],xs(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++,xs(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],Xp(e,t),ud(n,u,e.bl_count)},ol=(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[ed*2]++):o<=10?e.bl_tree[td*2]++:e.bl_tree[nd*2]++,o=0,r=a,s===0?(u=138,c=3):a===s?(u=6,c=3):(u=7,c=4))},cl=(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 it(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(it(e,a,e.bl_tree),o--),it(e,ed,e.bl_tree),Pe(e,o-3,2)):o<=10?(it(e,td,e.bl_tree),Pe(e,o-3,3)):(it(e,nd,e.bl_tree),Pe(e,o-11,7));o=0,r=a,s===0?(u=138,c=3):a===s?(u=6,c=3):(u=7,c=4)}},jp=e=>{let t;for(ol(e,e.dyn_ltree,e.l_desc.max_code),ol(e,e.dyn_dtree,e.d_desc.max_code),Us(e,e.bl_desc),t=Zs-1;t>=3&&e.bl_tree[id[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},Zp=(e,t,n,i)=>{let r;for(Pe(e,t-257,5),Pe(e,n-1,5),Pe(e,i-4,4),r=0;r<i;r++)Pe(e,e.bl_tree[id[r]*2+1],3);cl(e,e.dyn_ltree,t-1),cl(e,e.dyn_dtree,n-1)},qp=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return il;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return rl;for(n=32;n<Ai;n++)if(e.dyn_ltree[n*2]!==0)return rl;return il},ul=!1,Jp=e=>{ul||(Yp(),ul=!0),e.l_desc=new Es(e.dyn_ltree,rd),e.d_desc=new Es(e.dyn_dtree,ad),e.bl_desc=new Es(e.bl_tree,sd),e.bi_buf=0,e.bi_valid=0,ld(e)},md=(e,t,n,i)=>{Pe(e,(Up<<1)+(i?1:0),3),dd(e),gi(e,n),gi(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},Qp=e=>{Pe(e,Jl<<1,3),it(e,qs,yt),$p(e)},ey=(e,t,n,i)=>{let r,a,s=0;e.level>0?(e.strm.data_type===Fp&&(e.strm.data_type=qp(e)),Us(e,e.l_desc),Us(e,e.d_desc),s=jp(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?md(e,t,n,i):e.strategy===Dp||a===r?(Pe(e,(Jl<<1)+(i?1:0),3),sl(e,yt,li)):(Pe(e,(Bp<<1)+(i?1:0),3),Zp(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),sl(e,e.dyn_ltree,e.dyn_dtree)),ld(e),i&&dd(e)},ty=(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[(_i[n]+Ai+1)*2]++,e.dyn_dtree[od(t)*2]++),e.sym_next===e.sym_end),ny=Jp,iy=md,ry=ey,ay=ty,sy=Qp,oy={_tr_init:ny,_tr_stored_block:iy,_tr_flush_block:ry,_tr_tally:ay,_tr_align:sy},cy=(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},vi=cy,uy=()=>{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},ly=new Uint32Array(uy()),dy=(e,t,n,i)=>{let r=ly,a=i+n;e^=-1;for(let s=i;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},Te=dy,Jt={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"},tn={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:Bs,_tr_flush_block:fy,_tr_tally:Nt,_tr_align:hy}=oy,{Z_NO_FLUSH:Ot,Z_PARTIAL_FLUSH:_y,Z_FULL_FLUSH:gy,Z_FINISH:$e,Z_BLOCK:ll,Z_OK:Le,Z_STREAM_END:dl,Z_STREAM_ERROR:rt,Z_DATA_ERROR:vy,Z_BUF_ERROR:bs,Z_DEFAULT_COMPRESSION:py,Z_FILTERED:yy,Z_HUFFMAN_ONLY:pr,Z_RLE:wy,Z_FIXED:Ay,Z_DEFAULT_STRATEGY:Sy,Z_UNKNOWN:ky,Z_DEFLATED:Dr}=tn,Ey=9,xy=15,by=8,Ty=29,My=256,Gs=My+1+Ty,Ry=30,zy=19,Ly=2*Gs+1,Ny=15,te=3,Lt=258,at=Lt+te+1,Oy=32,kn=42,Qs=57,Hs=69,Ws=73,Vs=91,Ks=103,Zt=113,ci=666,Ne=1,bn=2,Qt=3,Tn=4,Iy=3,qt=(e,t)=>(e.msg=Jt[t],t),ml=e=>e*2-(e>4?9:0),zt=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Cy=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)},Py=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,It=Py,Ue=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))},Be=(e,t)=>{fy(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Ue(e.strm)},re=(e,t)=>{e.pending_buf[e.pending++]=t},oi=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},$s=(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=vi(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)},fd=(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-at?e.strstart-(e.w_size-at):0,c=e.window,l=e.w_mask,f=e.prev,d=e.strstart+Lt,h=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]!==h||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=Lt-(d-i),i=d-Lt,a>s){if(e.match_start=t,s=a,a>=o)break;h=c[i+s-1],g=c[i+s]}}while((t=f[t&l])>u&&--n!==0);return s<=e.lookahead?s:e.lookahead},En=e=>{let t=e.w_size,n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-at)&&(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),Cy(e),i+=t),e.strm.avail_in===0)break;if(n=$s(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=It(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=It(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<at&&e.strm.avail_in!==0)},hd=(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!==$e||t===Ot||i!==r+e.strm.avail_in)))break;s=t===$e&&i===r+e.strm.avail_in?1:0,Bs(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,Ue(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&&($s(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?Tn:t!==Ot&&t!==$e&&e.strm.avail_in===0&&e.strstart===e.block_start?bn:(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&&($s(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===$e)&&t!==Ot&&e.strm.avail_in===0&&r<=a)&&(i=r>a?a:r,s=t===$e&&e.strm.avail_in===0&&i===r?1:0,Bs(e,e.block_start,i,s),e.block_start+=i,Ue(e.strm)),s?Qt:Ne)},Ts=(e,t)=>{let n,i;for(;;){if(e.lookahead<at){if(En(e),e.lookahead<at&&t===Ot)return Ne;if(e.lookahead===0)break}if(n=0,e.lookahead>=te&&(e.ins_h=It(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-at&&(e.match_length=fd(e,n)),e.match_length>=te)if(i=Nt(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=It(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=It(e,e.ins_h,e.window[e.strstart+1]);else i=Nt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Be(e,!1),e.strm.avail_out===0))return Ne}return e.insert=e.strstart<te-1?e.strstart:te-1,t===$e?(Be(e,!0),e.strm.avail_out===0?Qt:Tn):e.sym_next&&(Be(e,!1),e.strm.avail_out===0)?Ne:bn},yn=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<at){if(En(e),e.lookahead<at&&t===Ot)return Ne;if(e.lookahead===0)break}if(n=0,e.lookahead>=te&&(e.ins_h=It(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-at&&(e.match_length=fd(e,n),e.match_length<=5&&(e.strategy===yy||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=Nt(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=It(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&&(Be(e,!1),e.strm.avail_out===0))return Ne}else if(e.match_available){if(i=Nt(e,0,e.window[e.strstart-1]),i&&Be(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Ne}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=Nt(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<te-1?e.strstart:te-1,t===$e?(Be(e,!0),e.strm.avail_out===0?Qt:Tn):e.sym_next&&(Be(e,!1),e.strm.avail_out===0)?Ne:bn},Dy=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=Lt){if(En(e),e.lookahead<=Lt&&t===Ot)return Ne;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+Lt;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=Lt-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=te?(n=Nt(e,1,e.match_length-te),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=Nt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Be(e,!1),e.strm.avail_out===0))return Ne}return e.insert=0,t===$e?(Be(e,!0),e.strm.avail_out===0?Qt:Tn):e.sym_next&&(Be(e,!1),e.strm.avail_out===0)?Ne:bn},Fy=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(En(e),e.lookahead===0)){if(t===Ot)return Ne;break}if(e.match_length=0,n=Nt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Be(e,!1),e.strm.avail_out===0))return Ne}return e.insert=0,t===$e?(Be(e,!0),e.strm.avail_out===0?Qt:Tn):e.sym_next&&(Be(e,!1),e.strm.avail_out===0)?Ne:bn};function nt(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 ui=[new nt(0,0,0,0,hd),new nt(4,4,8,4,Ts),new nt(4,5,16,8,Ts),new nt(4,6,32,32,Ts),new nt(4,4,16,16,yn),new nt(8,16,32,32,yn),new nt(8,16,128,128,yn),new nt(8,32,128,256,yn),new nt(32,128,258,1024,yn),new nt(32,258,258,4096,yn)],Uy=e=>{e.window_size=2*e.w_size,zt(e.head),e.max_lazy_match=ui[e.level].max_lazy,e.good_match=ui[e.level].good_length,e.nice_match=ui[e.level].nice_length,e.max_chain_length=ui[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 By(){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=Dr,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(Ly*2),this.dyn_dtree=new Uint16Array((2*Ry+1)*2),this.bl_tree=new Uint16Array((2*zy+1)*2),zt(this.dyn_ltree),zt(this.dyn_dtree),zt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(Ny+1),this.heap=new Uint16Array(2*Gs+1),zt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Gs+1),zt(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 Si=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==kn&&t.status!==Qs&&t.status!==Hs&&t.status!==Ws&&t.status!==Vs&&t.status!==Ks&&t.status!==Zt&&t.status!==ci?1:0},_d=e=>{if(Si(e))return qt(e,rt);e.total_in=e.total_out=0,e.data_type=ky;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?Qs:t.wrap?kn:Zt,e.adler=t.wrap===2?0:1,t.last_flush=-2,my(t),Le},gd=e=>{let t=_d(e);return t===Le&&Uy(e.state),t},Gy=(e,t)=>Si(e)||e.state.wrap!==2?rt:(e.state.gzhead=t,Le),vd=(e,t,n,i,r,a)=>{if(!e)return rt;let s=1;if(t===py&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>Ey||n!==Dr||i<8||i>15||t<0||t>9||a<0||a>Ay||i===8&&s!==1)return qt(e,rt);i===8&&(i=9);let o=new By;return e.state=o,o.strm=e,o.status=kn,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,gd(e)},Hy=(e,t)=>vd(e,t,Dr,xy,by,Sy),Wy=(e,t)=>{if(Si(e)||t>ll||t<0)return e?qt(e,rt):rt;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===ci&&t!==$e)return qt(e,e.avail_out===0?bs:rt);let i=n.last_flush;if(n.last_flush=t,n.pending!==0){if(Ue(e),e.avail_out===0)return n.last_flush=-1,Le}else if(e.avail_in===0&&ml(t)<=ml(i)&&t!==$e)return qt(e,bs);if(n.status===ci&&e.avail_in!==0)return qt(e,bs);if(n.status===kn&&n.wrap===0&&(n.status=Zt),n.status===kn){let r=Dr+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=pr||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,r|=a<<6,n.strstart!==0&&(r|=Oy),r+=31-r%31,oi(n,r),n.strstart!==0&&(oi(n,e.adler>>>16),oi(n,e.adler&65535)),e.adler=1,n.status=Zt,Ue(e),n.pending!==0)return n.last_flush=-1,Le}if(n.status===Qs){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>=pr||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=Hs;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>=pr||n.level<2?4:0),re(n,Iy),n.status=Zt,Ue(e),n.pending!==0)return n.last_flush=-1,Le}if(n.status===Hs){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,Ue(e),n.pending!==0)return n.last_flush=-1,Le;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=Ws}if(n.status===Ws){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)),Ue(e),n.pending!==0)return n.last_flush=-1,Le;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=Vs}if(n.status===Vs){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)),Ue(e),n.pending!==0)return n.last_flush=-1,Le;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=Ks}if(n.status===Ks){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Ue(e),n.pending!==0))return n.last_flush=-1,Le;re(n,e.adler&255),re(n,e.adler>>8&255),e.adler=0}if(n.status=Zt,Ue(e),n.pending!==0)return n.last_flush=-1,Le}if(e.avail_in!==0||n.lookahead!==0||t!==Ot&&n.status!==ci){let r=n.level===0?hd(n,t):n.strategy===pr?Fy(n,t):n.strategy===wy?Dy(n,t):ui[n.level].func(n,t);if((r===Qt||r===Tn)&&(n.status=ci),r===Ne||r===Qt)return e.avail_out===0&&(n.last_flush=-1),Le;if(r===bn&&(t===_y?hy(n):t!==ll&&(Bs(n,0,0,!1),t===gy&&(zt(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Ue(e),e.avail_out===0))return n.last_flush=-1,Le}return t!==$e?Le:n.wrap<=0?dl:(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)):(oi(n,e.adler>>>16),oi(n,e.adler&65535)),Ue(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?Le:dl)},Vy=e=>{if(Si(e))return rt;let t=e.state.status;return e.state=null,t===Zt?qt(e,vy):Le},Ky=(e,t)=>{let n=t.length;if(Si(e))return rt;let i=e.state,r=i.wrap;if(r===2||r===1&&i.status!==kn||i.lookahead)return rt;if(r===1&&(e.adler=vi(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){r===0&&(zt(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,En(i);i.lookahead>=te;){let u=i.strstart,c=i.lookahead-(te-1);do i.ins_h=It(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,En(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,Le},$y=Hy,Xy=vd,Yy=gd,jy=_d,Zy=Gy,qy=Wy,Jy=Vy,Qy=Ky,ew="pako deflate (from Nodeca project)",di={deflateInit:$y,deflateInit2:Xy,deflateReset:Yy,deflateResetKeep:jy,deflateSetHeader:Zy,deflate:qy,deflateEnd:Jy,deflateSetDictionary:Qy,deflateInfo:ew},tw=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),nw=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)tw(n,i)&&(e[i]=n[i])}}return e},iw=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},Fr={assign:nw,flattenChunks:iw},pd=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{pd=!1}var pi=new Uint8Array(256);for(let e=0;e<256;e++)pi[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;pi[254]=pi[254]=1;var rw=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&&pd)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=pi[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)},ow=(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+pi[e[n]]>t?n:t},yi={string2buf:rw,buf2string:sw,utf8border:ow};function cw(){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 yd=cw,wd=Object.prototype.toString,{Z_NO_FLUSH:uw,Z_SYNC_FLUSH:lw,Z_FULL_FLUSH:dw,Z_FINISH:mw,Z_OK:xr,Z_STREAM_END:fw,Z_DEFAULT_COMPRESSION:hw,Z_DEFAULT_STRATEGY:_w,Z_DEFLATED:gw}=tn;function ki(e){this.options=Fr.assign({level:hw,method:gw,chunkSize:16384,windowBits:15,memLevel:8,strategy:_w},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 yd,this.strm.avail_out=0;let n=di.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==xr)throw new Error(Jt[n]);if(t.header&&di.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(typeof t.dictionary=="string"?i=yi.string2buf(t.dictionary):wd.call(t.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(t.dictionary):i=t.dictionary,n=di.deflateSetDictionary(this.strm,i),n!==xr)throw new Error(Jt[n]);this._dict_set=!0}}ki.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:uw,typeof e=="string"?n.input=yi.string2buf(e):wd.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===lw||a===dw)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(r=di.deflate(n,a),r===fw)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=di.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===xr;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};ki.prototype.onData=function(e){this.chunks.push(e)};ki.prototype.onEnd=function(e){e===xr&&(this.result=Fr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function eo(e,t){let n=new ki(t);if(n.push(e,!0),n.err)throw n.msg||Jt[n.err];return n.result}function vw(e,t){return t=t||{},t.raw=!0,eo(e,t)}function pw(e,t){return t=t||{},t.gzip=!0,eo(e,t)}var yw=ki,ww=eo,Aw=vw,Sw=pw,kw=tn,Ew={Deflate:yw,deflate:ww,deflateRaw:Aw,gzip:Sw,constants:kw},yr=16209,xw=16191,bw=function(t,n){let i,r,a,s,o,u,c,l,f,d,h,g,w,v,y,T,S,p,E,b,x,L,k,R,O=t.state;i=t.next_in,k=t.input,r=i+(t.avail_in-5),a=t.next_out,R=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),u=O.dmax,c=O.wsize,l=O.whave,f=O.wnext,d=O.window,h=O.hold,g=O.bits,w=O.lencode,v=O.distcode,y=(1<<O.lenbits)-1,T=(1<<O.distbits)-1;e:do{g<15&&(h+=k[i++]<<g,g+=8,h+=k[i++]<<g,g+=8),S=w[h&y];t:for(;;){if(p=S>>>24,h>>>=p,g-=p,p=S>>>16&255,p===0)R[a++]=S&65535;else if(p&16){E=S&65535,p&=15,p&&(g<p&&(h+=k[i++]<<g,g+=8),E+=h&(1<<p)-1,h>>>=p,g-=p),g<15&&(h+=k[i++]<<g,g+=8,h+=k[i++]<<g,g+=8),S=v[h&T];n:for(;;){if(p=S>>>24,h>>>=p,g-=p,p=S>>>16&255,p&16){if(b=S&65535,p&=15,g<p&&(h+=k[i++]<<g,g+=8,g<p&&(h+=k[i++]<<g,g+=8)),b+=h&(1<<p)-1,b>u){t.msg="invalid distance too far back",O.mode=yr;break e}if(h>>>=p,g-=p,p=a-s,b>p){if(p=b-p,p>l&&O.sane){t.msg="invalid distance too far back",O.mode=yr;break e}if(x=0,L=d,f===0){if(x+=c-p,p<E){E-=p;do R[a++]=d[x++];while(--p);x=a-b,L=R}}else if(f<p){if(x+=c+f-p,p-=f,p<E){E-=p;do R[a++]=d[x++];while(--p);if(x=0,f<E){p=f,E-=p;do R[a++]=d[x++];while(--p);x=a-b,L=R}}}else if(x+=f-p,p<E){E-=p;do R[a++]=d[x++];while(--p);x=a-b,L=R}for(;E>2;)R[a++]=L[x++],R[a++]=L[x++],R[a++]=L[x++],E-=3;E&&(R[a++]=L[x++],E>1&&(R[a++]=L[x++]))}else{x=a-b;do R[a++]=R[x++],R[a++]=R[x++],R[a++]=R[x++],E-=3;while(E>2);E&&(R[a++]=R[x++],E>1&&(R[a++]=R[x++]))}}else if((p&64)===0){S=v[(S&65535)+(h&(1<<p)-1)];continue n}else{t.msg="invalid distance code",O.mode=yr;break e}break}}else if((p&64)===0){S=w[(S&65535)+(h&(1<<p)-1)];continue t}else if(p&32){O.mode=xw;break e}else{t.msg="invalid literal/length code",O.mode=yr;break e}break}}while(i<r&&a<o);E=g>>3,i-=E,g-=E<<3,h&=(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),O.hold=h,O.bits=g},wn=15,fl=852,hl=592,_l=0,Ms=1,gl=2,Tw=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]),Mw=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]),Rw=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]),zw=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]),Lw=(e,t,n,i,r,a,s,o)=>{let u=o.bits,c=0,l=0,f=0,d=0,h=0,g=0,w=0,v=0,y=0,T=0,S,p,E,b,x,L=null,k,R=new Uint16Array(wn+1),O=new Uint16Array(wn+1),J=null,oe,Q,M;for(c=0;c<=wn;c++)R[c]=0;for(l=0;l<i;l++)R[t[n+l]]++;for(h=u,d=wn;d>=1&&R[d]===0;d--);if(h>d&&(h=d),d===0)return r[a++]=1<<24|64<<16|0,r[a++]=1<<24|64<<16|0,o.bits=1,0;for(f=1;f<d&&R[f]===0;f++);for(h<f&&(h=f),v=1,c=1;c<=wn;c++)if(v<<=1,v-=R[c],v<0)return-1;if(v>0&&(e===_l||d!==1))return-1;for(O[1]=0,c=1;c<wn;c++)O[c+1]=O[c]+R[c];for(l=0;l<i;l++)t[n+l]!==0&&(s[O[t[n+l]]++]=l);if(e===_l?(L=J=s,k=20):e===Ms?(L=Tw,J=Mw,k=257):(L=Rw,J=zw,k=0),T=0,l=0,c=f,x=a,g=h,w=0,E=-1,y=1<<h,b=y-1,e===Ms&&y>fl||e===gl&&y>hl)return 1;for(;;){oe=c-w,s[l]+1<k?(Q=0,M=s[l]):s[l]>=k?(Q=J[s[l]-k],M=L[s[l]-k]):(Q=96,M=0),S=1<<c-w,p=1<<g,f=p;do p-=S,r[x+(T>>w)+p]=oe<<24|Q<<16|M|0;while(p!==0);for(S=1<<c-1;T&S;)S>>=1;if(S!==0?(T&=S-1,T+=S):T=0,l++,--R[c]===0){if(c===d)break;c=t[n+s[l]]}if(c>h&&(T&b)!==E){for(w===0&&(w=h),x+=f,g=c-w,v=1<<g;g+w<d&&(v-=R[g+w],!(v<=0));)g++,v<<=1;if(y+=1<<g,e===Ms&&y>fl||e===gl&&y>hl)return 1;E=T&b,r[E]=h<<24|g<<16|x-a|0}}return T!==0&&(r[x+T]=c-w<<24|64<<16|0),o.bits=h,0},mi=Lw,Nw=0,Ad=1,Sd=2,{Z_FINISH:vl,Z_BLOCK:Ow,Z_TREES:wr,Z_OK:en,Z_STREAM_END:Iw,Z_NEED_DICT:Cw,Z_STREAM_ERROR:Xe,Z_DATA_ERROR:kd,Z_MEM_ERROR:Ed,Z_BUF_ERROR:Pw,Z_DEFLATED:pl}=tn,Ur=16180,yl=16181,wl=16182,Al=16183,Sl=16184,kl=16185,El=16186,xl=16187,bl=16188,Tl=16189,br=16190,pt=16191,Rs=16192,Ml=16193,zs=16194,Rl=16195,zl=16196,Ll=16197,Nl=16198,Ar=16199,Sr=16200,Ol=16201,Il=16202,Cl=16203,Pl=16204,Dl=16205,Ls=16206,Fl=16207,Ul=16208,ge=16209,xd=16210,bd=16211,Dw=852,Fw=592,Uw=15,Bw=Uw,Bl=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function Gw(){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 nn=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<Ur||t.mode>bd?1:0},Td=e=>{if(nn(e))return Xe;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=Ur,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(Dw),t.distcode=t.distdyn=new Int32Array(Fw),t.sane=1,t.back=-1,en},Md=e=>{if(nn(e))return Xe;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Td(e)},Rd=(e,t)=>{let n;if(nn(e))return Xe;let i=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Xe:(i.window!==null&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,Md(e))},zd=(e,t)=>{if(!e)return Xe;let n=new Gw;e.state=n,n.strm=e,n.window=null,n.mode=Ur;let i=Rd(e,t);return i!==en&&(e.state=null),i},Hw=e=>zd(e,Bw),Gl=!0,Ns,Os,Ww=e=>{if(Gl){Ns=new Int32Array(512),Os=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(mi(Ad,e.lens,0,288,Ns,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;mi(Sd,e.lens,0,32,Os,0,e.work,{bits:5}),Gl=!1}e.lencode=Ns,e.lenbits=9,e.distcode=Os,e.distbits=5},Ld=(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},Vw=(e,t)=>{let n,i,r,a,s,o,u,c,l,f,d,h,g,w,v=0,y,T,S,p,E,b,x,L,k=new Uint8Array(4),R,O,J=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(nn(e)||!e.output||!e.input&&e.avail_in!==0)return Xe;n=e.state,n.mode===pt&&(n.mode=Rs),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,f=o,d=u,L=en;e:for(;;)switch(n.mode){case Ur:if(n.wrap===0){n.mode=Rs;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,k[0]=c&255,k[1]=c>>>8&255,n.check=Te(n.check,k,2,0),c=0,l=0,n.mode=yl;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)!==pl){e.msg="unknown compression method",n.mode=ge;break}if(c>>>=4,l-=4,x=(c&15)+8,n.wbits===0&&(n.wbits=x),x>15||x>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?Tl:pt,c=0,l=0;break;case yl:for(;l<16;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(n.flags=c,(n.flags&255)!==pl){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&&(k[0]=c&255,k[1]=c>>>8&255,n.check=Te(n.check,k,2,0)),c=0,l=0,n.mode=wl;case wl: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&&(k[0]=c&255,k[1]=c>>>8&255,k[2]=c>>>16&255,k[3]=c>>>24&255,n.check=Te(n.check,k,4,0)),c=0,l=0,n.mode=Al;case Al: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&&(k[0]=c&255,k[1]=c>>>8&255,n.check=Te(n.check,k,2,0)),c=0,l=0,n.mode=Sl;case Sl: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&&(k[0]=c&255,k[1]=c>>>8&255,n.check=Te(n.check,k,2,0)),c=0,l=0}else n.head&&(n.head.extra=null);n.mode=kl;case kl:if(n.flags&1024&&(h=n.length,h>o&&(h=o),h&&(n.head&&(x=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+h),x)),n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,h,a)),o-=h,a+=h,n.length-=h),n.length))break e;n.length=0,n.mode=El;case El:if(n.flags&2048){if(o===0)break e;h=0;do x=i[a+h++],n.head&&x&&n.length<65536&&(n.head.name+=String.fromCharCode(x));while(x&&h<o);if(n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,h,a)),o-=h,a+=h,x)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=xl;case xl:if(n.flags&4096){if(o===0)break e;h=0;do x=i[a+h++],n.head&&x&&n.length<65536&&(n.head.comment+=String.fromCharCode(x));while(x&&h<o);if(n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,h,a)),o-=h,a+=h,x)break e}else n.head&&(n.head.comment=null);n.mode=bl;case bl: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=pt;break;case Tl:for(;l<32;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}e.adler=n.check=Bl(c),c=0,l=0,n.mode=br;case br: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,Cw;e.adler=n.check=1,n.mode=pt;case pt:if(t===Ow||t===wr)break e;case Rs:if(n.last){c>>>=l&7,l-=l&7,n.mode=Ls;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=Ml;break;case 1:if(Ww(n),n.mode=Ar,t===wr){c>>>=2,l-=2;break e}break;case 2:n.mode=zl;break;case 3:e.msg="invalid block type",n.mode=ge}c>>>=2,l-=2;break;case Ml: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=zs,t===wr)break e;case zs:n.mode=Rl;case Rl:if(h=n.length,h){if(h>o&&(h=o),h>u&&(h=u),h===0)break e;r.set(i.subarray(a,a+h),s),o-=h,a+=h,u-=h,s+=h,n.length-=h;break}n.mode=pt;break;case zl: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=Ll;case Ll: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,R={bits:n.lenbits},L=mi(Nw,n.lens,0,19,n.lencode,0,n.work,R),n.lenbits=R.bits,L){e.msg="invalid code lengths set",n.mode=ge;break}n.have=0,n.mode=Nl;case Nl:for(;n.have<n.nlen+n.ndist;){for(;v=n.lencode[c&(1<<n.lenbits)-1],y=v>>>24,T=v>>>16&255,S=v&65535,!(y<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(S<16)c>>>=y,l-=y,n.lens[n.have++]=S;else{if(S===16){for(O=y+2;l<O;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(c>>>=y,l-=y,n.have===0){e.msg="invalid bit length repeat",n.mode=ge;break}x=n.lens[n.have-1],h=3+(c&3),c>>>=2,l-=2}else if(S===17){for(O=y+3;l<O;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}c>>>=y,l-=y,x=0,h=3+(c&7),c>>>=3,l-=3}else{for(O=y+7;l<O;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}c>>>=y,l-=y,x=0,h=11+(c&127),c>>>=7,l-=7}if(n.have+h>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=ge;break}for(;h--;)n.lens[n.have++]=x}}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,R={bits:n.lenbits},L=mi(Ad,n.lens,0,n.nlen,n.lencode,0,n.work,R),n.lenbits=R.bits,L){e.msg="invalid literal/lengths set",n.mode=ge;break}if(n.distbits=6,n.distcode=n.distdyn,R={bits:n.distbits},L=mi(Sd,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,R),n.distbits=R.bits,L){e.msg="invalid distances set",n.mode=ge;break}if(n.mode=Ar,t===wr)break e;case Ar:n.mode=Sr;case Sr: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,bw(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===pt&&(n.back=-1);break}for(n.back=0;v=n.lencode[c&(1<<n.lenbits)-1],y=v>>>24,T=v>>>16&255,S=v&65535,!(y<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(T&&(T&240)===0){for(p=y,E=T,b=S;v=n.lencode[b+((c&(1<<p+E)-1)>>p)],y=v>>>24,T=v>>>16&255,S=v&65535,!(p+y<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}c>>>=p,l-=p,n.back+=p}if(c>>>=y,l-=y,n.back+=y,n.length=S,T===0){n.mode=Dl;break}if(T&32){n.back=-1,n.mode=pt;break}if(T&64){e.msg="invalid literal/length code",n.mode=ge;break}n.extra=T&15,n.mode=Ol;case Ol:if(n.extra){for(O=n.extra;l<O;){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=Il;case Il:for(;v=n.distcode[c&(1<<n.distbits)-1],y=v>>>24,T=v>>>16&255,S=v&65535,!(y<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if((T&240)===0){for(p=y,E=T,b=S;v=n.distcode[b+((c&(1<<p+E)-1)>>p)],y=v>>>24,T=v>>>16&255,S=v&65535,!(p+y<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}c>>>=p,l-=p,n.back+=p}if(c>>>=y,l-=y,n.back+=y,T&64){e.msg="invalid distance code",n.mode=ge;break}n.offset=S,n.extra=T&15,n.mode=Cl;case Cl:if(n.extra){for(O=n.extra;l<O;){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=Pl;case Pl:if(u===0)break e;if(h=d-u,n.offset>h){if(h=n.offset-h,h>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=ge;break}h>n.wnext?(h-=n.wnext,g=n.wsize-h):g=n.wnext-h,h>n.length&&(h=n.length),w=n.window}else w=r,g=s-n.offset,h=n.length;h>u&&(h=u),u-=h,n.length-=h;do r[s++]=w[g++];while(--h);n.length===0&&(n.mode=Sr);break;case Dl:if(u===0)break e;r[s++]=n.length,u--,n.mode=Sr;break;case Ls: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):vi(n.check,r,d,s-d)),d=u,n.wrap&4&&(n.flags?c:Bl(c))!==n.check){e.msg="incorrect data check",n.mode=ge;break}c=0,l=0}n.mode=Fl;case Fl: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=Ul;case Ul:L=Iw;break e;case ge:L=kd;break e;case xd:return Ed;case bd:default:return Xe}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<Ls||t!==vl))&&Ld(e,e.output,e.next_out,d-e.avail_out),f-=e.avail_in,d-=e.avail_out,e.total_in+=f,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):vi(n.check,r,d,e.next_out-d)),e.data_type=n.bits+(n.last?64:0)+(n.mode===pt?128:0)+(n.mode===Ar||n.mode===zs?256:0),(f===0&&d===0||t===vl)&&L===en&&(L=Pw),L},Kw=e=>{if(nn(e))return Xe;let t=e.state;return t.window&&(t.window=null),e.state=null,en},$w=(e,t)=>{if(nn(e))return Xe;let n=e.state;return(n.wrap&2)===0?Xe:(n.head=t,t.done=!1,en)},Xw=(e,t)=>{let n=t.length,i,r,a;return nn(e)||(i=e.state,i.wrap!==0&&i.mode!==br)?Xe:i.mode===br&&(r=1,r=vi(r,t,n,0),r!==i.check)?kd:(a=Ld(e,t,n,n),a?(i.mode=xd,Ed):(i.havedict=1,en))},Yw=Md,jw=Rd,Zw=Td,qw=Hw,Jw=zd,Qw=Vw,eA=Kw,tA=$w,nA=Xw,iA="pako inflate (from Nodeca project)",wt={inflateReset:Yw,inflateReset2:jw,inflateResetKeep:Zw,inflateInit:qw,inflateInit2:Jw,inflate:Qw,inflateEnd:eA,inflateGetHeader:tA,inflateSetDictionary:nA,inflateInfo:iA};function rA(){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=rA,Nd=Object.prototype.toString,{Z_NO_FLUSH:sA,Z_FINISH:oA,Z_OK:wi,Z_STREAM_END:Is,Z_NEED_DICT:Cs,Z_STREAM_ERROR:cA,Z_DATA_ERROR:Hl,Z_MEM_ERROR:uA}=tn;function Ei(e){this.options=Fr.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 yd,this.strm.avail_out=0;let n=wt.inflateInit2(this.strm,t.windowBits);if(n!==wi)throw new Error(Jt[n]);if(this.header=new aA,wt.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=yi.string2buf(t.dictionary):Nd.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=wt.inflateSetDictionary(this.strm,t.dictionary),n!==wi)))throw new Error(Jt[n])}Ei.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?oA:sA,Nd.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=wt.inflate(n,s),a===Cs&&r&&(a=wt.inflateSetDictionary(n,r),a===wi?a=wt.inflate(n,s):a===Hl&&(a=Cs));n.avail_in>0&&a===Is&&n.state.wrap>0&&e[n.next_in]!==0;)wt.inflateReset(n),a=wt.inflate(n,s);switch(a){case cA:case Hl:case Cs:case uA:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===Is))if(this.options.to==="string"){let u=yi.utf8border(n.output,n.next_out),c=n.next_out-u,l=yi.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===wi&&o===0)){if(a===Is)return a=wt.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};Ei.prototype.onData=function(e){this.chunks.push(e)};Ei.prototype.onEnd=function(e){e===wi&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Fr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function to(e,t){let n=new Ei(t);if(n.push(e),n.err)throw n.msg||Jt[n.err];return n.result}function lA(e,t){return t=t||{},t.raw=!0,to(e,t)}var dA=Ei,mA=to,fA=lA,hA=to,_A=tn,gA={Inflate:dA,inflate:mA,inflateRaw:fA,ungzip:hA,constants:_A},{Deflate:vA,deflate:pA,deflateRaw:yA,gzip:wA}=Ew,{Inflate:AA,inflate:SA,inflateRaw:kA,ungzip:EA}=gA,xA=vA,bA=pA,TA=yA,MA=wA,RA=AA,zA=SA,LA=kA,NA=EA,OA=tn,Wl={Deflate:xA,deflate:bA,deflateRaw:TA,gzip:MA,Inflate:RA,inflate:zA,inflateRaw:LA,ungzip:NA,constants:OA},Tr=2023,no=1,io=2,ro=4,ao=8,so=16,oo=32,Od=64,IA=128,CA=256,co=512,uo=1024,lo=2048,Mr=4096,mo=8192,Rr=16384,PA=32768,zr=65536,fo=1<<17,Lr=1<<18,Nr=1<<19,ho=1<<20,_o=1<<21,go=1<<22,DA=1<<23,vo=1<<24,Or=1<<25,po=1<<26,yo=1<<27,wo=1<<28,Ao=1<<29,So=1<<30,FA=-2147483648,ko=1,Eo=2,xo=4,UA=1,BA=2,GA=128,An=()=>({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}),Vl=()=>({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}),bo=class Id{constructor(t,n){this.protocolVersion=0,this.isDemo=UA,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)?q.serverdata:this.protocolVersion===Tr?t:this.protocolVersion===34||this.protocolVersion===25?t<=q.frame?t:q.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 q.bad:return;case q.nop:break;case q.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case q.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case q.print:this.parsePrint();break;case q.serverdata:this.parseServerData();break;case q.configstring:this.parseConfigString();break;case q.spawnbaseline:this.parseSpawnBaseline();break;case q.centerprint:this.parseCenterPrint();break;case q.download:this.parseDownload();break;case q.frame:this.parseFrame();break;case q.packetentities:this.parsePacketEntities(!1);break;case q.deltapacketentities:this.parsePacketEntities(!0);break;case q.playerinfo:this.parsePlayerState();break;case q.stufftext:this.parseStuffText();break;case q.layout:this.parseLayout();break;case q.inventory:this.parseInventory();break;case q.sound:this.parseSound();break;case q.muzzleflash:this.parseMuzzleFlash();break;case q.muzzleflash2:this.parseMuzzleFlash2();break;case q.temp_entity:this.parseTempEntity();break;case q.splitclient:this.parseSplitClient();break;case q.configblast:this.parseConfigBlast();break;case q.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case q.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case q.damage:this.parseDamage();break;case q.locprint:this.parseLocPrint();break;case q.fog:this.parseFog();break;case q.waitingforplayers:this.parseWaitingForPlayers();break;case q.bot_chat:this.parseBotChat();break;case q.poi:this.parsePoi();break;case q.help_path:this.parseHelpPath();break;case q.muzzleflash3:this.parseMuzzleFlash3();break;case q.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===Tr){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=Wl.inflate(i);r.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new Ps(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=Wl.inflate(i);r.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new Ps(r.buffer),s=new Id(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=An();this.parseDelta(An(),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!==q.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s} (translated)`);let o=this.parsePlayerState();if(this.isDemo===GA){let u=this.stream.readByte();for(let c=0;c<u;c++)this.stream.readByte()}this.isDemo===BA&&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=Vl(),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:Vl(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let i=An();this.parseDelta(An(),i,n.number,n.bits,n.bitsHigh),t.push(i)}return t}parseEntityBits(){let t=this.stream.readByte();t&IA&&(t|=this.stream.readByte()<<8),t&PA&&(t|=this.stream.readByte()<<16),t&DA&&(t|=this.stream.readByte()<<24);let n=0;t&FA&&(n=this.stream.readByte());let i;return t&CA?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&lo&&(n.modelindex=this.stream.readByte()),r&ho&&(n.modelindex2=this.stream.readByte()),r&_o&&(n.modelindex3=this.stream.readByte()),r&go&&(n.modelindex4=this.stream.readByte()),r&so&&(n.frame=this.stream.readByte()),r&fo&&(n.frame=this.stream.readShort()),r&zr&&r&Or?n.skinnum=this.stream.readLong():r&zr?n.skinnum=this.stream.readByte():r&Or&&(n.skinnum=this.stream.readShort()),r&Rr&&r&Nr?n.effects=this.stream.readLong():r&Rr?n.effects=this.stream.readByte():r&Nr&&(n.effects=this.stream.readShort()),r&Mr&&r&Lr?n.renderfx=this.stream.readLong():r&Mr?n.renderfx=this.stream.readByte():r&Lr&&(n.renderfx=this.stream.readShort()),r&no&&(n.origin.x=this.stream.readCoord()),r&io&&(n.origin.y=this.stream.readCoord()),r&co&&(n.origin.z=this.stream.readCoord()),r&uo&&(n.angles.x=this.stream.readAngle()),r&ro&&(n.angles.y=this.stream.readAngle()),r&ao&&(n.angles.z=this.stream.readAngle()),r&vo&&this.stream.readPos(n.old_origin),r&po&&(n.sound=this.stream.readByte()),r&oo?n.event=this.stream.readByte():n.event=0,r&yo&&(n.solid=this.stream.readShort()),r&mo&&(n.alpha=this.stream.readByte()/255),r&wo&&(n.scale=this.stream.readFloat()),r&Ao&&(n.instanceBits=this.stream.readLong()),r&So&&(n.loopVolume=this.stream.readByte()/255),a&ko&&(n.loopAttenuation=this.stream.readByte()/255),a&Eo&&(n.owner=this.stream.readShort()),a&xo&&(n.oldFrame=this.stream.readShort())}};var Cd=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 Pp(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 bo(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 HA=Object.defineProperty,Pd=(e,t)=>{for(var n in t)HA(e,n,{get:t[n],enumerable:!0})},Pt={x:0,y:0,z:0};var uC=Math.PI/180;function Br(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function Hr(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function bi(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function WA(e){return bi(e,e)}function Wr(e){return Math.sqrt(WA(e))}function Dd(e){let t=Wr(e);return t===0?e:Hr(e,1/t)}var Fd=0,Ud=1,Bd=2,VA=Math.PI/180,lC=180/Math.PI;function To(e,t){switch(t){case Fd:return e.x;case Ud:return e.y;case Bd:default:return e.z}}function Mo(e){return e*VA}function Rn(e){let t=e%360;return t<0?360+t:t}function Vr(e){let t=Mo(To(e,Ud)),n=Mo(To(e,Fd)),i=Mo(To(e,Bd)),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},f={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:f,up:d}}var Mn=[[-.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 ot=1,Dt=2;var Lo=8,No=16,KA=32;var $A=16384;var Kr=65536,Gd=1<<17,XA=1<<18,YA=1<<19,jA=1<<20,ZA=1<<21,qA=1<<22,JA=1<<23,dC=1<<24,$r=1<<25,QA=1<<26,mC=1<<27,fC=1<<28,hC=1<<29,Xr=1<<30,_C=1<<31;var gC=1<<25,vC=1<<28,pC=1<<29,yC=1<<30,wC=1<<31;var AC=ot|Dt,SC=ot|Kr|Dt|$r|Xr,kC=ot|Kr|Dt,EC=ot|Gd|Dt|$r|Xr,xC=KA|Lo|No,bC=ot|No|Lo,eS=ot|$r|Xr|Dt|QA,TC=XA|YA|jA|ZA|qA|JA,MC=ot|Lo|No|$r|Xr,RC=ot|Kr|Dt,zC=ot|Dt,LC=ot|Kr|Dt|Gd,NC=eS|$A;var OC=Number.MAX_SAFE_INTEGER-1;var Ti=(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))(Ti||{});var Hd=256;var tS=256,Mi=8192,Ri=2048,zi=512,nS=256,iS=Hd*2,rS=256,Ro=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.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+Mi]="Sounds",e[e.Images=e.Sounds+Ri]="Images",e[e.Lights=e.Images+zi]="Lights",e[e.ShadowLights=e.Lights+tS]="ShadowLights",e[e.Items=e.ShadowLights+rS]="Items",e[e.PlayerSkins=e.Items+nS]="PlayerSkins",e[e.General=e.PlayerSkins+Hd]="General",e[e.WheelWeapons=e.General+iS]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Ro]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Ro]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Ro]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ye||{}),IC=ye.MaxConfigStrings;var aS={};Pd(aS,{addReplayFrame:()=>uS,createReplaySession:()=>cS,deserializeReplay:()=>oS,serializeReplay:()=>sS});function sS(e){return JSON.stringify(e,null,2)}function oS(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 cS(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function uS(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var Li=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(Li||{});var At=(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))(At||{});function zn(e,t){return(e&t)!==0}var Yr=(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))(Yr||{}),ct=(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))(ct||{});function lS(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:u,pmWaterFriction:c}=e,l=Wr(t);if(l<1)return{x:0,y:0,z:t.z};let f=0;if(i&&!r||a){let g=l<u?u:l;f+=g*o*n}s>0&&!a&&(f+=l*c*s*n);let d=l-f;if(d<0&&(d=0),d===l)return t;let h=d/l;return Hr(t,h)}function dS(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=bi(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 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=Wr(a);if(s>r){let o=r/s;a=Hr(a,o),s=r}return{wishdir:s===0?a:Dd(a),wishspeed:s}}function fS(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=Br(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=Br(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=Br(a,{x:0,y:0,z:-60}):a=Br(a,{x:0,y:0,z:10});let s=Wr(a);if(s>r){let o=r/s;a=Hr(a,o),s=r}return s*=.5,{wishdir:s===0?a:Dd(a),wishspeed:s}}function hS(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function _S(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function Oo(e){let{pmFlags:t,cmdAngles:n,deltaAngles:i}=e,r;(t&32)!==0?r={x:0,y:n.y+i.y,z:0}:(r=hS(n,i),r={...r,x:_S(r.x)});let a=Vr(r);return{viewangles:r,...a}}var Wd=200,Vd=200,Kd=200,$d=140,Xd=150,Yd=3;function gS(e){let t=Rn(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function jd(e,t){return{x:gS(e.x+t.x),y:Rn(e.y+t.y),z:Rn(e.z+t.z)}}function Zd(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 rn=(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))(rn||{});var qd=64;var Jd=0,Qd=1,em=2,tm=3,nm=4,im=5,rm=6,am=7,sm=8;var om=11,cm=12,um=13;function vS(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 lm(e,t,n,i){let r=i*n,a=Math.floor(r/8),s=r%8,o=(1<<i)-1<<s;return(vS(e,t,a)&o)>>>s}var Ni=(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))(Ni||{}),Oe=(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))(Oe||{}),dm=12,mm=9,CC=Math.ceil(dm*mm/16),fm=23,hm=2,PC=Math.ceil(fm*hm/16),pS={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 _m(e,t){return t<0||t>=dm?0:lm(e,34,t,mm)}function jr(e,t){let n;return typeof t=="number"?n=t:n=pS[t],n===void 0||n<0||n>=fm?0:lm(e,41,n,hm)}function gm(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 yS={};Pd(yS,{U_ANGLE1:()=>bS,U_ANGLE2:()=>TS,U_ANGLE3:()=>MS,U_EFFECTS:()=>LS,U_EVENT:()=>IS,U_FRAME:()=>RS,U_MODEL:()=>AS,U_MODEL2:()=>PS,U_MODEL3:()=>DS,U_MODEL4:()=>FS,U_MOREBITS:()=>CS,U_NUMBER:()=>wS,U_ORIGIN1:()=>kS,U_ORIGIN2:()=>ES,U_ORIGIN3:()=>xS,U_REMOVE:()=>US,U_RENDERFX:()=>NS,U_SKIN:()=>zS,U_SOLID:()=>OS,U_SOUND:()=>SS});var wS=1,AS=2,SS=4,kS=8,ES=16,xS=32,bS=64,TS=128,MS=256,RS=512,zS=1024,LS=2048,NS=4096,OS=8192,IS=16384,CS=32768,PS=1,DS=2,FS=4,US=32768,xi=.025,zo=33554432,Gr={None:0,Feet:1,Waist:2,Under:3},BS=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},GS=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&zo))return{...e,waterLevel:Gr.None};let s=Gr.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&zo){s=Gr.Waist;let c=e.origin.z+22;n.z=c,t(n)&zo&&(s=Gr.Under)}return{...e,waterLevel:s}},Io=(e,t,n,i)=>{let r={...e};r=BS(r,n),r=GS(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:f,right:d}=Vr(l),h=lS({velocity:s,frametime:xi,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:u,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=u>=2?fS({forward:f,right:d,cmd:t,maxSpeed:320}):mS({forward:f,right:d,cmd:t,maxSpeed:320}),w=dS({velocity:h,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||u>=2?10:1,frametime:xi}),v=n(a,{x:a.x+w.x*xi,y:a.y+w.y*xi,z:a.z+w.z*xi});return{...r,origin:v.endpos,velocity:w}},vm=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=Mn[t];e.x=n[0],e.y=n[1],e.z=n[2]}},pm=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<Mn.length;i++){let r=Mn[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}},Oi=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*Mn[s][0]+t*Mn[s][1]+n*Mn[s][2];o>r&&(r=o,i=s)}}this.writeByte(i)}};var ym=(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))(ym||{}),DC=Object.keys(ym).length/2;var Zr=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],wm={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 HS=Object.defineProperty,WS=(e,t)=>{for(var n in t)HS(e,n,{get:t[n],enumerable:!0})},Jr=null,qr=[1,1,1,1],Am=["ch1","ch2","ch3"],Co=[null,null,null],VS=e=>{for(let t=0;t<Am.length;t++){let n=Am[t];try{Co[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{Co[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
|
|
170
|
-
`)}}}Jr=Co[0]}
|
|
171
|
-
`)}},
|
|
172
|
-
`)}},
|
|
173
|
-
`)}
|
|
174
|
-
`),l=n.height/2-c.length*10;for(let f of c)Ee.SCR_DrawCenterString(l,f),l+=16}Ho.drawCenterPrint(Ee,o,u),Ho.drawNotifications(Ee,o),Rm.drawSubtitles(Ee,o),KS(Ee,n.width,n.height)}function ea(){return Ho}function ck(){return Rm}function uk(e,t,n){t>=ye.Models&&t<ye.Models+Mi?e.RegisterModel(n):t>=ye.Sounds&&t<ye.Sounds+Ri?e.RegisterSound(n):t>=ye.Images&&t<ye.Images+zi&&e.Draw_RegisterPic(n)}var Fo=1e-6,Qr=typeof Float32Array<"u"?Float32Array:Array,xm=Math.random;function Uo(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var lk={};WS(lk,{add:()=>_k,angle:()=>Fk,bezier:()=>zk,ceil:()=>gk,clone:()=>dk,copy:()=>fk,create:()=>zm,cross:()=>bk,dist:()=>$k,distance:()=>Cm,div:()=>Kk,divide:()=>Im,dot:()=>Wo,equals:()=>Hk,exactEquals:()=>Gk,floor:()=>vk,forEach:()=>Zk,fromValues:()=>mk,hermite:()=>Rk,inverse:()=>Ek,len:()=>Yk,length:()=>Lm,lerp:()=>Tk,max:()=>yk,min:()=>pk,mul:()=>Vk,multiply:()=>Om,negate:()=>kk,normalize:()=>xk,random:()=>Lk,rotateX:()=>Ck,rotateY:()=>Pk,rotateZ:()=>Dk,round:()=>wk,scale:()=>Ak,scaleAndAdd:()=>Sk,set:()=>hk,slerp:()=>Mk,sqrDist:()=>Xk,sqrLen:()=>jk,squaredDistance:()=>Pm,squaredLength:()=>Dm,str:()=>Bk,sub:()=>Wk,subtract:()=>Nm,transformMat3:()=>Ok,transformMat4:()=>Nk,transformQuat:()=>Ik,zero:()=>Uk});function zm(){var e=new Qr(3);return Qr!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function dk(e){var t=new Qr(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Lm(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function mk(e,t,n){var i=new Qr(3);return i[0]=e,i[1]=t,i[2]=n,i}function fk(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function hk(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function _k(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Nm(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function Om(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Im(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function gk(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function vk(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function pk(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 yk(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 wk(e,t){return e[0]=Uo(t[0]),e[1]=Uo(t[1]),e[2]=Uo(t[2]),e}function Ak(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function Sk(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 Cm(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 Pm(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 Dm(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function kk(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Ek(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function xk(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 Wo(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function bk(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 Tk(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 Mk(e,t,n,i){var r=Math.acos(Math.min(Math.max(Wo(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 Rk(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 zk(e,t,n,i,r,a){var s=1-a,o=s*s,u=a*a,c=o*s,l=3*a*o,f=3*u*s,d=u*a;return e[0]=t[0]*c+n[0]*l+i[0]*f+r[0]*d,e[1]=t[1]*c+n[1]*l+i[1]*f+r[1]*d,e[2]=t[2]*c+n[2]*l+i[2]*f+r[2]*d,e}function Lk(e,t){t=t===void 0?1:t;var n=xm()*2*Math.PI,i=xm()*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 Nk(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 Ok(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 Ik(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,f=a*o-i*c,d=i*u-r*o;return l=l+l,f=f+f,d=d+d,e[0]=o+s*l+r*d-a*f,e[1]=u+s*f+a*l-i*d,e[2]=c+s*d+i*f-r*l,e}function Ck(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 Pk(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 Dk(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 Fk(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&&Wo(e,t)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function Uk(e){return e[0]=0,e[1]=0,e[2]=0,e}function Bk(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function Gk(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function Hk(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)<=Fo*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=Fo*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=Fo*Math.max(1,Math.abs(r),Math.abs(o))}var Wk=Nm,Vk=Om,Kk=Im,$k=Cm,Xk=Pm,Yk=Lm,jk=Dm,Zk=(function(){var e=zm();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 qk={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function Jk(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 Qk(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function eE(e,t,n,i,r){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=Qk(t,i,r),s=e+a,u=zn(n,At.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 ta=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...qk,...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}=Vr(Oo({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??Pt}).viewangles),r=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=zn(e.pmFlags,At.OnGround),s=eE(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=bi(e.velocity,n)*this.settings.runPitch,u=bi(e.velocity,i),c=u<0?-1:1,f=Math.abs(u)*this.settings.runRoll;f>2&&(f=2),f*=c;let d=this.bobFracSin*this.settings.bobPitch*r,h=this.bobFracSin*this.settings.bobRoll*r;zn(e.pmFlags,At.Ducked)&&a&&(d*=6,h*=6),o+=Math.min(d,this.settings.maxBobAngle),h=Math.min(h,this.settings.maxBobAngle),this.bobCycle&1&&(h=-h),f+=h;let g=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),w=0,v=0,y=0,T=0,S=0;if(this.kick&&this.kick.remainingMs>0){let x=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));w+=x*this.kick.pitch,v+=x*this.kick.roll,this.kick.origin&&(y+=x*this.kick.origin.x,T+=x*this.kick.origin.y,S+=x*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let p={x:o+w,y:0,z:f+v},E={x:y,y:T,z:g+S},b={angles:p,offset:Jk(E),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:r};return this.lastSample=b,b}},tE={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},nE=800,ut={x:0,y:0,z:0};function an(){return{origin:ut,velocity:ut,viewAngles:ut,onGround:!1,pmFlags:At.OnGround,pmType:Yr.Normal,waterLevel:Li.None,gravity:nE,deltaAngles:ut,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:ut,kick_origin:ut,gunoffset:ut,gunangles:ut,gunindex:0,pm_time:0,pm_type:Yr.Normal,pm_flags:At.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 bm(e){return e?{...an(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:ut,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:an()}function De(e,t,n){return e+(t-e)*n}function Bo(e,t,n){let i=Rn(t-e);return i>180&&(i-=360),Rn(e+i*n)}function Nn(e,t,n){let i=Math.max(0,Math.min(n,1));return{...t,origin:{x:De(e.origin.x,t.origin.x,i),y:De(e.origin.y,t.origin.y,i),z:De(e.origin.z,t.origin.z,i)},velocity:{x:De(e.velocity.x,t.velocity.x,i),y:De(e.velocity.y,t.velocity.y,i),z:De(e.velocity.z,t.velocity.z,i)},viewAngles:{x:Bo(e.viewAngles.x,t.viewAngles.x,i),y:Bo(e.viewAngles.y,t.viewAngles.y,i),z:Bo(e.viewAngles.z,t.viewAngles.z,i)},damageAlpha:De(e.damageAlpha,t.damageAlpha,i),blend:[De(e.blend[0],t.blend[0],i),De(e.blend[1],t.blend[1],i),De(e.blend[2],t.blend[2],i),De(e.blend[3],t.blend[3],i)],health:De(e.health||0,t.health||0,i),armor:De(e.armor||0,t.armor||0,i),ammo:De(e.ammo||0,t.ammo||0,i)}}function iE(e,t,n,i,r){let a={forwardmove:t.forwardmove,sidemove:t.sidemove,upmove:t.upmove,buttons:t.buttons},s=Io(e,a,i,r),{viewangles:o}=Oo({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??ut});return{...s,viewAngles:o}}var na=class{constructor(e,t,n={}){this.baseFrame={frame:0,timeMs:0,state:an()},this.commands=[],this.predicted=an(),this.settings={...tE,...n},this.trace=e,this.pointContents=t,this.predicted=this.baseFrame.state??an()}setAuthoritative(e){let t=bm(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=bm(this.baseFrame.state);for(let t of this.commands)e=iE(e,t,this.settings,this.trace,this.pointContents);return this.predicted=e,e}},xe=null;function rE(){if(!xe){console.error("CGame Init: cgame imports not set");return}xe.Com_Print(`===== CGame Initialization =====
|
|
175
|
-
`),
|
|
176
|
-
`)}function
|
|
177
|
-
`),xe=null}function sE(e,t,n,i,r,a,s){ok(e,t,n,i,r,a,s)}function oE(){sk()}function cE(e){return 0}function uE(e){return e.stats[Oe.STAT_ACTIVE_WHEEL_WEAPON]??0}function lE(e){let t=[],n=e.stats[Oe.STAT_WEAPONS_OWNED_1]||0,i=e.stats[Oe.STAT_WEAPONS_OWNED_2]||0,r=n|i<<16;for(let a=0;a<Zr.length;a++)r&1<<a&&t.push(a);return t}function dE(e,t){if(t<0||t>=Zr.length)return 0;let n=Zr[t],i=wm[n];return i===null?-1:_m(e.stats,i)}function mE(e){let t=0,n=Object.values(Ni);for(let i of n)jr(e.stats,i)>0&&t++;return t}function fE(e){return e.stats[Oe.STAT_HIT_MARKER]??0}function hE(e){let t=e;if(!t||!t.s||!t.cmd||!xe)return;let n=(a,s,o,u)=>{let c={x:0,y:0,z:0};return xe.PM_Trace(a,s,o||c,u||c)},i=a=>{let s={x:0,y:0,z:0};return xe.PM_Trace(a,a,s,s).contents||0},r=Io(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 _E(e,t){xe&&uk(xe,e,t)}function gE(e,t,n){if(!xe)return;ea().setCenterPrint(e,xe.CL_ClientTime())}function vE(e,t,n){if(!xe)return;ea().addNotification(t,n,xe.CL_ClientTime())}function pE(e){ea().clearNotifications()}function yE(e){ea().clearCenterPrint()}function wE(e,t){if(!xe)return;ck().addSubtitle(e,xe.CL_ClientTime())}function AE(e){return{x:0,y:0,z:0}}function SE(e){return null}function Fm(e){return xe=e,{Init:rE,Shutdown:aE,DrawHUD:sE,TouchPics:oE,LayoutFlags:cE,GetActiveWeaponWheelWeapon:uE,GetOwnedWeaponWheelWeapons:lE,GetWeaponWheelAmmoCount:dE,GetPowerupWheelCount:mE,GetHitMarkerDamage:fE,Pmove:hE,ParseConfigString:_E,ParseCenterPrint:gE,NotifyMessage:vE,ShowSubtitle:wE,ClearNotify:pE,ClearCenterprint:yE,GetMonsterFlashOffset:AE,GetExtension:SE}}function Um(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,f=n.get(l);f&&r()?.drawPic(a,s,f,[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 On=null,Ft=0;var Ii=!0,Ci=["ch1","ch2","ch3"],In=[null,null,null],Bm=async(e,t)=>{for(let n=0;n<Ci.length;n++){let i=Ci[n];try{let r=await t.loadTexture(`pics/${i}.pcx`);In[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");In[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}On=In[0]};var Gm=()=>{if(Ii?(Ft++,Ft>=Ci.length&&(Ii=!1,Ft=0)):(Ii=!0,Ft=0),Ii){if(On=In[Ft],!On){let e=!1;for(let t=0;t<Ci.length;t++){let n=(Ft+t)%Ci.length;if(In[n]){Ft=n,On=In[n],e=!0;break}}e||(On=null)}}else On=null;return Ii?Ft:-1};var kE=Object.defineProperty,EE=Object.getOwnPropertyNames,ln=(e,t)=>function(){return e&&(t=(0,e[EE(e)[0]])(e=0)),t},xE=(e,t)=>{for(var n in t)kE(e,n,{get:t[n],enumerable:!0})};function Kn(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 fc(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function bE(e){return fc(e,e)}function Fe(e){return Math.sqrt(bE(e))}function G(e){let t=Fe(e);return t===0?e:D(e,1/t)}function TE(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 ME(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 Ui(e,t){switch(t){case ga:return e.x;case va:return e.y;case hc:default:return e.z}}function ca(e){return e*rh}function Jo(e){return e*ah}function Qo(e){let t=e%360;return t<0?360+t:t}function Z(e){let t=ca(Ui(e,va)),n=ca(Ui(e,ga)),i=ca(Ui(e,hc)),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},f={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:f,up:d}}function Yi(e){let t=Ui(e,ga),n=Ui(e,va);if(t===0)return n===0?0:n>0?90:270;let i=Jo(Math.atan2(n,t));return i<0?i+360:i}function $n(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=Jo(Math.atan2(n,t)):n>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+n*n),s=Jo(Math.atan2(i,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}function ji(e){return new _c(e)}function RE(e){return JSON.stringify(e,null,2)}function zE(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 LE(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function NE(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}function OE(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:u,pmWaterFriction:c}=e,l=Fe(t);if(l<1)return{x:0,y:0,z:t.z};let f=0;if(i&&!r||a){let g=l<u?u:l;f+=g*o*n}s>0&&!a&&(f+=l*c*s*n);let d=l-f;if(d<0&&(d=0),d===l)return t;let h=d/l;return D(t,h)}function IE(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=fc(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 CE(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=Fe(a);if(s>r){let o=r/s;a=D(a,o),s=r}return{wishdir:s===0?a:G(a),wishspeed:s}}function PE(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=Fe(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 Hm,Vo,V,DE,FE,ga,va,hc,rh,ah,je,Wm,Vm,Km,$m,ia,Xm,_c,Ie,St,UE,ra,aa,Ym,BE,GE,jm,HE,Pi,Ko,Zm,qm,Jm,Qm,ef,tf,WE,Gt,Gi,VE,KE,$E,cn,XE,YE,jE,ZE,qE,JE,QE,ex,tx,nx,ix,rx,ax,sx,gc,ox,cx,Hi,sh,ux,bt,lx,dx,mx,fx,hx,_x,gx,nf,$o,rf,af,sf,of,cf,uf,lf,sa,Xo,vx,df,mf,px,se,we,oh,ch,uh,lh,dh,mh,fh,hh,_h,gh,ie,ff,hf,_f,yx,gf,vf,wx,Ax,pf,yf,wf,Af,Sf,kf,Ef,xf,bf,Tf,Mf,Rf,zf,Lf,Nf,Of,If,Cf,Pf,Df,Ff,Uf,Cn,oa,Di,Bf,Gf,Sx,W,I,kx,fe,Ex,U=ln({"../shared/dist/esm/index.js"(){"use strict";Hm=Object.defineProperty,Vo=(e,t)=>{for(var n in t)Hm(e,n,{get:t[n],enumerable:!0})},V={x:0,y:0,z:0},DE=.1,FE=Math.PI/180,ga=0,va=1,hc=2,rh=Math.PI/180,ah=180/Math.PI,je=624,Wm=397,Vm=2567483615,Km=2147483648,$m=2147483647,ia=4294967296,Xm=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]&Km|this.state[(e+1)%je]&$m,n=this.state[(e+Wm)%je]^t>>>1;(t&1)!==0&&(n^=Vm),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)}},_c=class{constructor(e={}){this.mt=new Xm(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/ia}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=ia-ia%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)}},Ie=1,St=2,UE=4,ra=8,aa=16,Ym=32,BE=64,GE=8192,jm=16384,HE=32768,Pi=65536,Ko=1<<17,Zm=1<<18,qm=1<<19,Jm=1<<20,Qm=1<<21,ef=1<<22,tf=1<<23,WE=1<<24,Gt=1<<25,Gi=1<<26,VE=1<<27,KE=1<<28,$E=1<<29,cn=1<<30,XE=1<<31,YE=1,jE=2,ZE=4,qE=8,JE=16,QE=32,ex=64,tx=128,nx=1<<25,ix=1<<28,rx=1<<29,ax=1<<30,sx=1<<31,gc=Ie|St,ox=Ie|Pi|St|Gt|cn,cx=Ie|Pi|St,Hi=Ie|Ko|St|Gt|cn,sh=Ym|ra|aa,ux=Ie|aa|ra,bt=Ie|Gt|cn|St|Gi,lx=Zm|qm|Jm|Qm|ef|tf,dx=Ie|ra|aa|Gt|cn,mx=Ie|Pi|St,fx=Ie|St,hx=Ie|Pi|St|Ko,_x=bt|jm,gx=Number.MAX_SAFE_INTEGER-1,nf=(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))(nf||{}),$o=256,rf=256,af=8192,sf=2048,of=512,cf=256,uf=$o*2,lf=256,sa=32,Xo=(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.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+af]="Sounds",e[e.Images=e.Sounds+sf]="Images",e[e.Lights=e.Images+of]="Lights",e[e.ShadowLights=e.Lights+rf]="ShadowLights",e[e.Items=e.ShadowLights+lf]="Items",e[e.PlayerSkins=e.Items+cf]="PlayerSkins",e[e.General=e.PlayerSkins+$o]="General",e[e.WheelWeapons=e.General+uf]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+sa]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+sa]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+sa]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Xo||{}),vx=Xo.MaxConfigStrings,df={},Vo(df,{addReplayFrame:()=>NE,createReplaySession:()=>LE,deserializeReplay:()=>zE,serializeReplay:()=>RE}),mf=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(mf||{}),px=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||{}),oh=0,ch=1,uh=2,lh=3,dh=6,mh=7,fh=8,hh=11,_h=12,gh=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||{}),ff=(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))(ff||{}),hf=12,_f=9,yx=Math.ceil(hf*_f/16),gf=23,vf=2,wx=Math.ceil(gf*vf/16),Ax={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},pf=(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))(pf||{}),yf={},Vo(yf,{U_ANGLE1:()=>bf,U_ANGLE2:()=>Tf,U_ANGLE3:()=>Mf,U_EFFECTS:()=>Lf,U_EVENT:()=>If,U_FRAME:()=>Rf,U_MODEL:()=>Af,U_MODEL2:()=>Pf,U_MODEL3:()=>Df,U_MODEL4:()=>Ff,U_MOREBITS:()=>Cf,U_NUMBER:()=>wf,U_ORIGIN1:()=>kf,U_ORIGIN2:()=>Ef,U_ORIGIN3:()=>xf,U_REMOVE:()=>Uf,U_RENDERFX:()=>Nf,U_SKIN:()=>zf,U_SOLID:()=>Of,U_SOUND:()=>Sf}),wf=1,Af=2,Sf=4,kf=8,Ef=16,xf=32,bf=64,Tf=128,Mf=256,Rf=512,zf=1024,Lf=2048,Nf=4096,Of=8192,If=16384,Cf=32768,Pf=1,Df=2,Ff=4,Uf=32768,Cn=.025,oa=33554432,Di={None:0,Feet:1,Waist:2,Under:3},Bf=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},Gf=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&oa))return{...e,waterLevel:Di.None};let s=Di.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&oa){s=Di.Waist;let c=e.origin.z+22;n.z=c,t(n)&oa&&(s=Di.Under)}return{...e,waterLevel:s}},Sx=(e,t,n,i)=>{let r={...e};r=Bf(r,n),r=Gf(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:f,right:d}=Z(l),h=OE({velocity:s,frametime:Cn,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:u,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=u>=2?PE({forward:f,right:d,cmd:t,maxSpeed:320}):CE({forward:f,right:d,cmd:t,maxSpeed:320}),w=IE({velocity:h,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||u>=2?10:1,frametime:Cn}),v=n(a,{x:a.x+w.x*Cn,y:a.y+w.y*Cn,z:a.z+w.z*Cn});return{...r,origin:v.endpos,velocity:w}},W=(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))(W||{}),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||{}),kx=Object.keys(I).length/2,fe=(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))(fe||{}),Ex=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"]}});var xx,dn=ln({"src/inventory/ammo.ts"(){"use strict";U(),xx={[fe.Shells]:{id:fe.Shells,ammoType:I.Shells,quantity:10,weaponAmmo:!1},[fe.Bullets]:{id:fe.Bullets,ammoType:I.Bullets,quantity:50,weaponAmmo:!1},[fe.Rockets]:{id:fe.Rockets,ammoType:I.Rockets,quantity:5,weaponAmmo:!1},[fe.Grenades]:{id:fe.Grenades,ammoType:I.Grenades,quantity:5,weaponAmmo:!0},[fe.Cells]:{id:fe.Cells,ammoType:I.Cells,quantity:50,weaponAmmo:!1},[fe.Slugs]:{id:fe.Slugs,ammoType:I.Slugs,quantity:10,weaponAmmo:!1},[fe.MagSlugs]:{id:fe.MagSlugs,ammoType:I.MagSlugs,quantity:10,weaponAmmo:!1},[fe.Flechettes]:{id:fe.Flechettes,ammoType:I.Flechettes,quantity:50,weaponAmmo:!1},[fe.Disruptor]:{id:fe.Disruptor,ammoType:I.Disruptor,quantity:15,weaponAmmo:!1},[fe.Tesla]:{id:fe.Tesla,ammoType:I.Tesla,quantity:5,weaponAmmo:!1},[fe.Trap]:{id:fe.Trap,ammoType:I.Trap,quantity:5,weaponAmmo:!1},[fe.Prox]:{id:fe.Prox,ammoType:I.Prox,quantity:5,weaponAmmo:!1}}}});function Ht(e,t){return(e&t)!==0}var Hf,vh=ln({"src/combat/damageFlags.ts"(){"use strict";Hf=(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))(Hf||{})}});function bx(e,t,n){if(e<=0||Ht(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=ph[n.armorType],r=Ht(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 Tx(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if(Ht(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,f=r.type==="screen"?e/3:2*e/3;f=Math.max(1,f);let d=r.cellCount*l;Ht(t,4)&&(d=Math.max(1,Math.floor(d/2))),d>f&&(d=Math.floor(f));let h=d/l;Ht(t,4)&&(h*=2),h=Math.max(1,Math.floor(h));let g=Math.max(l,h),w=Math.max(0,r.cellCount-g);return{saved:d,remainingCells:w}}var un,ph,yh=ln({"src/combat/armor.ts"(){"use strict";U(),vh(),un=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(un||{}),ph={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 wh(e,t){return e.ownedWeapons.has(t)?(e.currentWeapon=t,!0):!1}var ke,Kt=ln({"src/inventory/playerInventory.ts"(){"use strict";dn(),U(),yh(),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 Ah(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var Wf,Sh=ln({"src/combat/weapons/state.ts"(){"use strict";Wf=(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))(Wf||{})}}),kh={};xE(kh,{ChangeWeapon:()=>Rx,NoAmmoWeaponChange:()=>zx,setInstantSwitch:()=>Mx,switchToBestWeapon:()=>Eh});function Mx(e){pa=e}function Rx(e,t){if(!e.client)return;let n=e.client;if(n.weaponstate!==2&&t){if(wh(n.inventory,t),n.weaponstate=1,n.gun_frame=0,pa){n.weaponstate=0,n.weapon_think_time=0;return}n.weapon_think_time=0}}function zx(e){e.client&&Eh(e)}function Eh(e){if(!e.client)return;let t=e.client.inventory,n=null;t.ownedWeapons.has(W.BFG10K)&&t.ammo.counts[I.Cells]>=50?n=W.BFG10K:t.ownedWeapons.has(W.RocketLauncher)&&t.ammo.counts[I.Rockets]>=1?n=W.RocketLauncher:t.ownedWeapons.has(W.Railgun)&&t.ammo.counts[I.Slugs]>=1?n=W.Railgun:t.ownedWeapons.has(W.Chaingun)&&t.ammo.counts[I.Bullets]>=1?n=W.Chaingun:t.ownedWeapons.has(W.SuperShotgun)&&t.ammo.counts[I.Shells]>=2?n=W.SuperShotgun:t.ownedWeapons.has(W.Machinegun)&&t.ammo.counts[I.Bullets]>=1?n=W.Machinegun:t.ownedWeapons.has(W.Shotgun)&&t.ammo.counts[I.Shells]>=1?n=W.Shotgun:n=W.Blaster,n&&n!==t.currentWeapon&&(wh(t,n),e.client.weaponstate=1,e.client.gun_frame=0,pa&&(e.client.weaponstate=0),e.client.weapon_think_time=0)}var pa,Lx=ln({"src/combat/weapons/switching.ts"(){"use strict";Kt(),dn(),pa=!1}});U();Kt();dn();var Nx={...V};var ZC=Object.freeze({aiflags:0,last_sighting:Nx,trail_time:0,pausetime:0});var vc=[{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:"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 Ox=20,Ix=440,Cx=940,Yo=32,Px=1<<24,la=1;U();U();function Vf(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 $t(e,t){let n=Vf(e),i=Vf(t),r=ME(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function Dx(e){return e<=Ox?"melee":e<=Ix?"near":e<=Cx?"mid":"far"}function Wi(e,t){let{forward:n}=Z(e.angles),i=G(P(t.origin,e.origin)),r=fc(i,n);return(e.spawnflags&la)!==0&&e.trail_time===0&&e.enemy===null?r>.15:r>-.3}function mn(e,t,n,i){if((t.flags&Px)!==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 Fx(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=Yi(n)}function xh(e){e.angles.y=Qo(e.ideal_yaw)}function Ux(e,t,n){e.enemy&&(e.goalentity=e.enemy,Fx(e,e.enemy),xh(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function Bx(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){Ux(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 Gx(e,t,n,i){let r=$t(e,t),a=Dx(r);return a==="far"||t.light_level<=5||!mn(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||Wi(e,t):a==="mid"?Wi(e,t):!0}function Hx(e,t,n,i,r){if((e.spawnflags&la)!==0){if(!mn(e,t,r))return!1}else if(i.canHear&&!i.canHear(e,t))return!1;let a=P(t.origin,e.origin);return Fe(a)>1e3||i.areasConnected&&!i.areasConnected(e,t)?!1:(e.ideal_yaw=Yi(a),xh(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function Wx(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&la)===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&la)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function Vx(e){return(e.flags&Yo)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&Yo)!==0:!!(e.enemy&&(e.enemy.flags&Yo)!==0)}function pc(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}=Wx(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(Vx(a))return!1;if(s){if(!Hx(e,a,t,r,i))return!1}else{if(!Gx(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return Bx(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}function bh(e,t){if(t===0)return{x:0,y:0,z:0};let n=ca(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function ya(e,t,n){let i=bh(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function Xn(e,t){let n=Qo(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=Qo(n+a)}function _(e,t){ya(e,e.angles.y,t)}function wa(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=Yi(n)}function z(e,t,n){pc(e,n.targetAwareness,n,n.trace)||Xn(e,t)}function N(e,t,n,i){if(!pc(e,i.targetAwareness,i,i.trace)&&(wa(e,e.goalentity),Xn(e,n),t!==0&&ya(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&$t(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&&ya(e,e.angles.y,t),(e.monsterinfo.aiflags&32768)===0&&Xn(e,n)}function ue(e,t,n,i){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,i);return}pc(e,i.targetAwareness,i,i.trace),(e.monsterinfo.aiflags&32768)===0&&wa(e,e.enemy??e.goalentity),Xn(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Th(e,e.angles.y,t,i)}function Kx(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&wa(e,t),Xn(e,i),n!==0&&ya(e,e.angles.y,n)}function le(e,t,n,i){(e.monsterinfo.aiflags&32768)===0&&wa(e,e.enemy),Xn(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Th(e,e.angles.y,t,i)}function $x(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,Hi);if(e.groundentity=i.ent,!e.groundentity&&!i.allsolid&&!i.startsolid&&i.fraction===1){let r=t.pointcontents(n);r&sh?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function Xx(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,Hi).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,Hi).fraction<1))return!0;return!1}function Th(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=bh(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,Hi).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&&!Xx(e,i)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&$x(e,i),!0)}U();U();var Yx=vc.filter(e=>e.save||e.type==="callback"),qC=new Map(Yx.map(e=>[e.name,e]));U();U();yh();vh();U();function jx(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 Zx(e,t,n,i,r){if(Ht(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 qx(e,t,n,i,r){let a=i,s=0,o=0,u,c;if(e.powerArmor){let l=Tx(i,r,t,n,e.powerArmor);s=l.saved,u=l.remainingCells,a-=s}if(e.regularArmor){let l=bx(a,r,e.regularArmor);o=l.saved,c=l.remainingArmor,a-=o}return[Math.max(0,a),s,o,u,c]}function Kf(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 he(e,t,n,i,r,a,s,o,u,c,l,f){if(!e.takedamage)return null;let d=jx(n,l),h=s*d,g=o*d;if(!Ht(u,32)&&((e.flags??0)&1)!==0&&h>0)return{take:0,psave:0,asave:h,knocked:{x:0,y:0,z:0},killed:!1};let v=Zx(e,n,i,g,u),[y,T,S,p,E]=qx(e,r,a,h,u);e.monsterinfo&&e.monsterinfo.freeze_time>l&&h>0&&(y=e.health+100,T=0,S=0),e.powerArmor&&p!==void 0&&(e.powerArmor.cellCount=p),e.regularArmor&&(e.regularArmor.armorCount=E??e.regularArmor.armorCount);let b=y;b>0&&(e.health-=b,f&&!Ht(u,1024)&&(e.classname==="player"||e.monsterinfo)&&f(r,1,se.temp_entity,we.BLOOD,r,a));let x=e.health<=0;return x?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,b,r,c):b>0&&e.pain&&e.pain(e,n,o,b,c),{take:b,psave:T,asave:S,knocked:v,killed:x,remainingCells:p,remainingArmor:E}}function yc(e,t,n,i,r,a,s,o,u,c={},l){let f=[],d=Kf(t),h=c.canDamage??(()=>!0);for(let g of e){if(g===r||!g.takedamage||!h(g,t))continue;let w=g.mins&&g.maxs?TE(d,F(g.origin,g.mins),F(g.origin,g.maxs)):Kf(g),v=P(d,w),y=Fe(v);if(a>0&&y>a)continue;let T=i-.5*y;if(T<=0)continue;let S=g===n?T*.5:T,p=G(P(g.origin,d)),E=he(g,t,n,p,w,p,S,S,s|1,o,u,l);f.push({target:g,result:E,appliedDamage:S})}return f}var JC=ji();U();U();U();function Mh(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,f,d)=>{if(l===c.owner)return;l&&l.takedamage&&he(l,c,c.owner,c.velocity,c.origin,f?f.normal:V,r,0,0,8,e.timeSeconds,e.multicast.bind(e));let h=e.findByRadius(c.origin,120);yc(h,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 wc(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);yc(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,f,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 Zi(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,f)=>{if(c!==u.owner){if(c&&c.takedamage)he(c,u,u.owner,u.velocity,u.origin,l?l.normal:V,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 Jx(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){he(u,o,o.owner,o.velocity,o.origin,c?c.normal:V,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,V,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,V,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function Qx(e,t,n,i,r,a){Zi(e,t,n,i,r,a,58)}function e2(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=[],f={...r};try{for(let h=0;h<u;h++){let g=e.trace(f,null,null,o,t,Ie|Gt|cn|Gi);if(!g.ent||g.fraction>=1||(g.ent.takedamage&&g.ent!==t.owner&&he(g.ent,t,t.owner,s,g.endpos,V,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,f={...g.endpos}}let d=e.trace(r,null,null,o,t,Ie);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 t2(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,gc).fraction<1||e2(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function n2(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=Fe(a),o=e.dmg_radius||100,u=(e.radius_dmg||200)*(1-Math.sqrt(s/o));u>0&&he(i,e,e.owner,e.velocity,r,V,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 Rh(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,f)=>{if(c===u.owner)return;c&&c.takedamage&&he(c,u,u.owner,u.velocity,u.origin,l?l.normal:V,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let d=e.findByRadius(u.origin,100);yc(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=V,u.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),u.frame=0,u.enemy=c,u.think=(h,g)=>n2(h,g),e.scheduleThink(u,e.timeSeconds+.1)},o.think=(u,c)=>t2(u,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}U();var QC=1/40;dn();Kt();Sh();Kt();var i2=1;Kt();Sh();Kt();dn();U();U();var r2=22;function mt(e,t,n,i,r,a){let s=Kn(t.origin),o={...s,z:s.z+(t.viewheight??r2)},u=D(i,n.x),c=D(r,n.y),l=D(a,n.z),f=F(F(F(o,u),c),l),d=e.trace(o,null,null,f,t,gc);return d.fraction<1?{x:d.endpos.x-i.x,y:d.endpos.y-i.y,z:d.endpos.z-i.z}:f}var a2=7,s2=18,o2=36,c2=39,u2=5,l2=28,d2=52,m2=57,f2=3,h2=23,_2=52,g2=61,v2=5,p2=21,y2=52,w2=61,A2=3,S2=18,k2=51,E2=56,x2=3,b2=12,T2=34,M2=38,R2=6,z2=9,L2=28,N2=32,O2=8,I2=32,C2=54,P2=58,D2=5,F2=16,U2=36,B2=39,G2=4,H2=8,W2=52,V2=55;var K2=46,$2=53;var X2=109,Y2=117;var j2=1;var Wt=ji();function ft(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 ht(e){if(!e.client)return;let t=(e.client.pm_flags&2)!==0;e.client.anim_priority=j2,t?(e.frame=X2-1,e.client.anim_end=Y2):(e.frame=K2-1,e.client.anim_end=$2)}function zh(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?he(u.ent,t,t,V,u.endpos,u.plane?u.plane.normal:V,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 ec(e,t,n,i,r,a,s,o,u,c,l,f){for(let d=0;d<s;d++){let h=F(D(r,Wt.crandom()*c),D(a,Wt.crandom()*l)),g=F(i,h),w={x:n.x+g.x*8192,y:n.y+g.y*8192,z:n.z+g.z*8192},v=e.trace(n,null,null,w,t,0);v.ent&&v.ent.takedamage?he(v.ent,t,t,V,v.endpos,v.plane?v.plane.normal:V,o,u,16,f,e.time,e.multicast):v.plane&&Wt.frandom()>.9&&e.multicast(v.endpos,1,se.temp_entity,we.GUNSHOT,v.endpos,v.plane.normal)}}function Z2(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,f=u;for(;l<16;){l++;let d=e.trace(o,null,null,u,c,0);if(f=d.endpos,d.fraction>=1||(d.ent&&d.ent.takedamage&&he(d.ent,t,t,V,d.endpos,d.plane?d.plane.normal:V,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,f)}function q2(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,uh),ft(t,-2,0,-2),ht(t);let{forward:i,right:r,up:a}=Z(t.angles),s=mt(e,t,{x:8,y:8,z:-8},i,r,a);ec(e,t,s,i,r,a,12,4,1,500,500,2)}function J2(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,hh),ft(t,-4,0,-4),ht(t);let{forward:i,right:r,up:a}=Z(t.angles),s=mt(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});ec(e,t,s,o,u,c,10,6,1,700,700,3);let{forward:l,right:f,up:d}=Z({...t.angles,y:t.angles.y+5});ec(e,t,s,l,f,d,10,6,1,700,700,3)}function Q2(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,ch),ft(t,-1,Wt.crandom()*.5,0),ht(t);let{forward:i,right:r,up:a}=Z(t.angles),s=mt(e,t,{x:8,y:8,z:-8},i,r,a);zh(e,t,s,i,8,1,4)}function e5(e,t){if(!t.client)return;let n=t.client.inventory,i=Ah(t.client.weaponStates,W.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;ft(t,-.5,Wt.crandom()*(.5+a*.15),0),ht(t);let{forward:u,right:c,up:l}=Z(t.angles),f=mt(e,t,{x:8,y:8,z:-8},u,c,l);for(let h=0;h<a;h++){let g=F(D(c,Wt.crandom()*4),D(l,Wt.crandom()*4)),w=F(u,g);zh(e,t,f,w,s,o,5)}let d=lh+a-1;e.multicast(t.origin,1,se.muzzleflash,t.index,d)}function t5(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,dh),ft(t,-3,0,-3),ht(t);let{forward:i,right:r,up:a}=Z(t.angles),s=mt(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?100:125,u=e.deathmatch?200:225;Z2(e,t,s,i,o,u)}function n5(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,gh),ft(t,-.5,0,0),ht(t);let{forward:i,right:r,up:a}=Z(t.angles),s=mt(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?15:20;Zi(e.entities,t,s,i,o,1e3,10)}function i5(e,t){if(!t.client)return;e.multicast(t.origin,1,se.muzzleflash,t.index,oh),ft(t,-.5,0,0),ht(t);let{forward:n,right:i,up:r}=Z(t.angles),a=mt(e,t,{x:8,y:8,z:-8},n,i,r);Zi(e.entities,t,a,n,15,1500,1)}function r5(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,mh),ft(t,-2,0,-2),ht(t);let{forward:i,right:r,up:a}=Z(t.angles),s=mt(e,t,{x:8,y:8,z:-8},i,r,a),o=100+e.random.irandom(21);Mh(e.entities,t,s,i,o,120,650)}function a5(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,fh),ft(t,-2,0,-2),ht(t);let{forward:i,right:r,up:a}=Z(t.angles),s=mt(e,t,{x:8,y:8,z:-8},i,r,a);wc(e.entities,t,s,i,120,600)}function s5(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,_h),ft(t,-5,0,-2),ht(t);let{forward:s,right:o,up:u}=Z(t.angles),c=mt(e,t,{x:8,y:8,z:-8},s,o,u),l=e.deathmatch?200:500;Rh(e.entities,t,c,s,l,400,200)}}function sn(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 Tt(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+sn(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=l+sn(e);return}if(c.weaponstate===2){if(c.gun_frame<r){c.gun_frame++,c.weapon_think_time=l+sn(e);return}Promise.resolve().then(()=>(Lx(),kh)).then(({ChangeWeapon:f})=>{f(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+sn(e),a){for(let f of a)if(c.gun_frame===f&&Wt.frandom()<.5)return}return}c.gun_frame=n+1,c.weapon_think_time=l+sn(e);return}if(c.weaponstate===3){if(s){for(let f of s)if(c.gun_frame===f){o&&o(e);break}}if(c.gun_frame<n){c.gun_frame++,c.weapon_think_time=l+sn(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=l+sn(e);return}}}function Lh(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)):Tt(e,t-1,n,i,r,null,null,s,o)}function o5(e,t){let n=Ah(e.client.weaponStates,W.Chaingun);!(e.client.buttons&i2)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0),Lh(e,v2,p2,y2,w2,0,i=>e5(t.game,i),t)}var c5=[22,28,34],u5=[8];function l5(e,t){Tt(e,a2,s2,o2,c2,c5,u5,n=>q2(t.game,n),t)}var d5=[29,42,57],m5=[22,28];function f5(e,t){Tt(e,u2,l2,d2,m2,d5,m5,n=>J2(t.game,n),t)}var h5=[23,45],_5=[4,5,30,31];function g5(e,t){Tt(e,f2,h2,_2,g2,h5,_5,n=>Q2(t.game,n),t)}var v5=[25,33],p5=[4];function y5(e,t){Tt(e,x2,b2,T2,M2,v5,p5,n=>r5(t.game,n),t)}function w5(e,t){Lh(e,R2,z2,L2,N2,0,n=>n5(t.game,n),t)}var A5=[56],S5=[4];function k5(e,t){Tt(e,A2,S2,k2,E2,A5,S5,n=>t5(t.game,n),t)}var E5=[39,45,50,54],x5=[9,22];function b5(e,t){Tt(e,O2,I2,C2,P2,E5,x5,n=>s5(t.game,n),t)}var T5=[34,51,59],M5=[6];function R5(e,t){Tt(e,D2,F2,U2,B2,T5,M5,n=>a5(t.game,n),t)}var z5=[19,32],L5=[5];function N5(e,t){Tt(e,G2,H2,W2,V2,z5,L5,n=>i5(t.game,n),t)}var eP={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:W.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5,think:N5},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:W.Shotgun,ammoType:I.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:l5},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:W.SuperShotgun,ammoType:I.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:f5},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:W.Machinegun,ammoType:I.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:g5},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:W.Chaingun,ammoType:I.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:o5},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:W.HandGrenade,ammoType:I.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:W.GrenadeLauncher,ammoType:I.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1,think:R5},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:W.RocketLauncher,ammoType:I.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1,think:y5},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:W.HyperBlaster,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:w5},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:W.Railgun,ammoType:I.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5,think:k5},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:W.BFG10K,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1,think:b5},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:W.IonRipper,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:W.Phalanx,ammoType:I.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:W.PlasmaBeam,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:W.EtfRifle,ammoType:I.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:W.ProxLauncher,ammoType:I.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};dn();dn();U();U();var Ye=ji(),O5=1;function $f(e,t,n,i,r){let a=e.spawn();a.classname="gib",a.origin={x:t.x+(Ye.frandom()-.5)*20,y:t.y+(Ye.frandom()-.5)*20,z:t.z+(Ye.frandom()-.5)*20},a.velocity={x:(Ye.frandom()-.5)*300,y:(Ye.frandom()-.5)*300,z:200+Ye.frandom()*100},a.movetype=9,a.solid=0,a.clipmask=1,a.avelocity={x:Ye.crandom()*600,y:Ye.crandom()*600,z:Ye.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(Ye.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&O5,a.think=u=>{e.free(u)},e.scheduleThink(a,e.timeSeconds+10+Ye.frandom()*10),e.finalizeSpawn(a),a}function Nh(e,t,n){if(typeof n=="number"){let i=n,r=4+Math.floor(Ye.frandom()*4);for(let a=0;a<r;a++)$f(e,t,i)}else{let i=n;for(let r of i)for(let a=0;a<r.count;a++)$f(e,t,0,r.model,r.flags)}}U();function I5(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 C5(e,t){I5(e,t),e.nextthink=t.timeSeconds+.1}var Aa=.1,Bi=80;var Oh=ji();function P5(){return Oh.frandom()}function Ih(e,t){return Math.floor(Oh.frandom()*(t-e+1)+e)}function Bn(e,t,n){z(e,Aa,n)}function Ze(e,t,n){N(e,t,Aa,n)}function Pn(e,t,n){ue(e,t,Aa,n)}function pe(e,t,n){le(e,t,Aa,n)}function j(e,t,n){_(e,t)}var Vi={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 et(e,t){t.sound(e,2,Vi.footstep,1,1,0)}function da(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function D5(e,t){}var Ac,Ch,F5,Ph,U5,B5,G5,H5,W5,Dh,V5;function K5(e,t){da(e,Ac)}function $5(e,t){e.monsterinfo.aiflags&1||e.enemy||P5()>.15||(da(e,Ch),t.sound(e,1,Vi.idle,1,2,0))}var X5=[{ai:Bn,dist:0,think:$5},{ai:Bn,dist:0},{ai:Bn,dist:0},{ai:Bn,dist:0},{ai:Bn,dist:0}];Ac={firstframe:0,lastframe:4,frames:X5,endfunc:null};var Y5=Array.from({length:20},()=>({ai:Bn,dist:0}));Ch={firstframe:5,lastframe:24,frames:Y5,endfunc:K5};var j5=[{ai:Ze,dist:9.1},{ai:Ze,dist:6.3},{ai:Ze,dist:4.9},{ai:Ze,dist:6.7,think:et},{ai:Ze,dist:6},{ai:Ze,dist:8.2},{ai:Ze,dist:7.2},{ai:Ze,dist:6.1},{ai:Ze,dist:4.9},{ai:Ze,dist:4.7,think:et},{ai:Ze,dist:4.7}];F5={firstframe:25,lastframe:35,frames:j5,endfunc:null};var Z5=[{ai:Pn,dist:21},{ai:Pn,dist:11,think:et},{ai:Pn,dist:21},{ai:Pn,dist:25,think:D5},{ai:Pn,dist:18,think:et},{ai:Pn,dist:19}];Ph={firstframe:36,lastframe:41,frames:Z5,endfunc:null};function qi(e,t){e.monsterinfo.aiflags&1?da(e,Ac):da(e,Ph)}function Fh(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*Bi,y:a.y+s.y*Bi,z:a.z+s.z*Bi},c=r.trace(a,null,null,u,e,536870913);return!c.ent||!c.ent.takedamage?!1:(he(c.ent,e,e,s,c.endpos,c.plane?.normal||V,n,i,0,0,r.timeSeconds,r.multicast.bind(r)),!0)}function q5(e,t){Fh(e,{x:Bi,y:0,z:-24},Ih(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function Uh(e,t){t.sound(e,1,Vi.punch,1,1,0)}var J5=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:Uh},{ai:pe,dist:0,think:q5},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];U5={firstframe:67,lastframe:74,frames:J5,endfunc:qi};function Q5(e,t){Fh(e,{x:Bi,y:0,z:-4},Ih(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var eb=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:et},{ai:pe,dist:0},{ai:pe,dist:0,think:Uh},{ai:pe,dist:0},{ai:pe,dist:0,think:Q5},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];B5={firstframe:75,lastframe:86,frames:eb,endfunc:qi};function tb(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),f=r*c*c,d=G(P(o.origin,e.origin));he(o,e,t,d,o.origin,d,l,f,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function Sc(e,t){t.sound(e,1,Vi.thud,1,1,0),t.sound(e,2,Vi.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},tb(e,e,8,165,300,t)}function nb(e,t,n,i,r){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,Sc(e,r))}function kc(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function ib(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=$n(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,f)=>{nb(u,c,l,f,t),u.groundentity&&(u.frame=104,Sc(u,t),u.touch=void 0)},kc(e,t)}function rb(e,t){if(kc(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(Sc(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var ab=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:j,dist:0,think:ib},{ai:j,dist:0,think:kc},{ai:j,dist:0,think:rb},{ai:j,dist:0,think:et},{ai:j,dist:0},{ai:j,dist:0,think:et},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0,think:et}];G5={firstframe:87,lastframe:109,frames:ab,endfunc:qi};var sb=[{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0}];H5={firstframe:149,lastframe:152,frames:sb,endfunc:qi};var ob=Array.from({length:20},(e,t)=>({ai:j,dist:0,think:t%5===4?et:void 0}));W5={firstframe:153,lastframe:172,frames:ob,endfunc:qi};function Bh(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=Dh.lastframe,e.nextthink=-1,e.deadflag=2}var cb=[{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0,think:et},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0}];Dh={firstframe:173,lastframe:185,frames:cb,endfunc:Bh};var ub=[{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0,think:et},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0}];V5={firstframe:186,lastframe:193,frames:ub,endfunc:Bh};U();function Xf(){return 2*Math.random()-1}function ma(e,t,n,i,r,a,s,o,u,c=0){let l=n;if(a>0||s>0){let h=$n(n),{right:g,up:w}=Z(h),v=Xf()*a,y=Xf()*s;l={x:n.x+g.x*v+w.x*y,y:n.y+g.y*v+w.y*y,z:n.z+g.z*v+w.z*y},l=G(l)}let f=F(t,D(l,8192)),d=u.trace(t,f,V,V,e,bt);!d.ent||d.fraction===1||he(d.ent,e,e,l,d.endpos,d.plane?.normal||V,i,r,18,c,u.timeSeconds)}var Vt=ma;function lb(e,t,n,i,r,a,s,o,u,c,l=2){for(let f=0;f<o;f++)Vt(e,t,n,i,r,a,s,u,c,l)}function _t(e,t,n,i,r,a,s,o,u=1){Zi(o,e,t,n,i,r,u)}function db(e,t,n,i,r,a,s,o){Qx(o,e,t,n,i,r)}function mb(e,t,n,i,r,a,s,o){Jx(o,e,t,n,i,r)}function fb(e,t,n,i,r,a,s){wc(s,e,t,n,i,r)}function Ji(e,t,n,i,r,a,s){Mh(s,e,t,n,i,120,r)}function Gh(e,t,n,i,r,a,s,o,u){Rh(u,e,t,n,i,r,s)}function Hh(e,t,n,i,r,a,s){let o=F(t,D(n,8192)),u=s.trace(t,o,V,V,e,bt);s.multicast(t,2,se.temp_entity,we.RAILTRAIL,t,u.endpos),u.ent&&u.ent.takedamage&&he(u.ent,e,e,n,u.endpos,V,i,r,6,11,s.timeSeconds)}function Qi(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,V,V,e,bt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let l=G(P(c.endpos,s));return he(c.ent,e,e,l,c.endpos,c.plane?.normal||V,n,i,0,0,r.timeSeconds),!0}return!1}function hb(e,t,n,i,r,a,s,o){Ji(e,t,n,i,r,a,o)}function Yf(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,V,V,e,Ie|Gt|cn|Gi);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&he(c.ent,e,e.owner,e.movedir,c.endpos,V,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||V,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 _b(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function tc(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?_b(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{i(s,o),Yf(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),Yf(a,r)}U();var Ec=.1,gb={x:0,y:30,z:-15},vb={x:0,y:15,z:0},pb={x:0,y:-15,z:0},yb={x:0,y:-30,z:-15},wb={x:30,y:20,z:0},Ab={x:30,y:-20,z:0};function Sb(e,t,n){z(e,Ec,n)}function kb(e,t,n){N(e,t,Ec,n)}function Sa(e,t,n){le(e,t,Ec,n)}function xc(e,t,n){_(e,t)}var bc,Wh,Vh,Eb,Kh,$h,xb,bb,Tb,Xh;function Mb(e){e.monsterinfo.current_move=bc}function Rb(e){e.monsterinfo.current_move=Wh}function er(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Vh:e.monsterinfo.current_move=bc}function Yh(e){e.monsterinfo.current_move=Kh}function zb(e){e.enemy&&Wi(e,e.enemy)&&Math.random()<=.7?Yh(e):e.monsterinfo.current_move=$h}function nc(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 Lb(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=nc(e,wb),i=G(P(e.enemy.origin,n));Vt(e,n,i,6,4,.1,.05,0,t,4);let r=nc(e,Ab),a=G(P(e.enemy.origin,r));Vt(e,r,a,6,4,.1,.05,0,t,4)}function Nb(e,t){if(!e.enemy)return;let n=[gb,vb,pb,yb],i=n[Math.floor(Math.random()*n.length)],r=nc(e,i),a=G(P(e.enemy.origin,r));Ji(e,r,a,50,500,0,t)}function Ob(e){e.monsterinfo.nextframe=Xh.lastframe,e.nextthink=-1}var jh=Array.from({length:20},()=>({ai:kb,dist:10}));Wh={firstframe:0,lastframe:19,frames:jh,endfunc:Rb};Vh={firstframe:0,lastframe:19,frames:jh,endfunc:er};var Ib=Array.from({length:21},()=>({ai:Sb,dist:0}));bc={firstframe:29,lastframe:49,frames:Ib,endfunc:Mb};var Cb=Array.from({length:9},(e,t)=>({ai:Sa,dist:2,think:t===8?Yh:null}));Eb={firstframe:50,lastframe:58,frames:Cb,endfunc:null};var Pb=Array.from({length:6},()=>({ai:Sa,dist:2,think:Lb}));Kh={firstframe:59,lastframe:64,frames:Pb,endfunc:zb};var Db=Array.from({length:4},()=>({ai:Sa,dist:2}));$h={firstframe:65,lastframe:68,frames:Db,endfunc:er};var Fb=Array.from({length:21},(e,t)=>({ai:Sa,dist:2,think:t===12?Nb:null}));xb={firstframe:69,lastframe:89,frames:Fb,endfunc:er};var Ub=Array.from({length:18},()=>({ai:xc,dist:0}));bb={firstframe:90,lastframe:107,frames:Ub,endfunc:er};var Bb=Array.from({length:4},()=>({ai:xc,dist:0}));Tb={firstframe:108,lastframe:111,frames:Bb,endfunc:er};var Gb=Array.from({length:49},()=>({ai:xc,dist:0}));Xh={firstframe:112,lastframe:160,frames:Gb,endfunc:Ob};U();var ka=.1,Tc=80,Ea=Math.random;function Zh(e,t,n){z(e,ka,n)}function qe(e,t,n){N(e,t,ka,n)}function Je(e,t,n){ue(e,t,ka,n)}function C(e,t,n){le(e,t,ka,n)}function X(e,t,n){_(e,t)}var Mc,Hb,Wb,qh,Jh,Vb,Kb,$b,Xb,Yb,jb,Zb,qb,Jb;function Qh(e){e.monsterinfo.current_move=Mc}function Xt(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=Mc:e.monsterinfo.current_move=qh}function Qb(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function e3(e,t){let n={x:Tc,y:e.maxs.x,z:8};Qi(e,n,15+Math.floor(Ea()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function t3(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function n3(e,t){let n={x:Tc,y:e.mins.x,z:8};Qi(e,n,15+Math.floor(Ea()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function e0(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function t0(e,t){Qi(e,{x:Tc,y:0,z:8},10+Math.floor(Ea()*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 n0(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=Jh)}function jf(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,V,V,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);he(e.enemy,e,e,s,e.enemy.origin,V,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 Zf=[{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}],qf=[{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 i3(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>=Zf.length)&&(s=0);let o=Zf[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 r3(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>=qf.length)&&(s=0);let o=qf[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 lt(e,t){tc(e,1,!1,i3,t),tc(e,1,!0,r3,t)}function a3(e){Ea()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function s3(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function o3(e){}function c3(e){e.monsterinfo.aiflags&=-17}var u3=Array.from({length:30},()=>({ai:Zh,dist:0}));Mc={firstframe:162,lastframe:191,frames:u3,endfunc:Qh};var l3=Array.from({length:30},()=>({ai:Zh,dist:0}));Hb={firstframe:192,lastframe:221,frames:l3,endfunc:Qh};var d3=[{ai:qe,dist:7},{ai:qe,dist:2},{ai:qe,dist:3},{ai:qe,dist:3},{ai:qe,dist:1},{ai:qe,dist:0},{ai:qe,dist:0},{ai:qe,dist:9},{ai:qe,dist:-4},{ai:qe,dist:-1},{ai:qe,dist:2}];Wb={firstframe:0,lastframe:10,frames:d3,endfunc:null};var m3=[{ai:Je,dist:9},{ai:Je,dist:2},{ai:Je,dist:3},{ai:Je,dist:3},{ai:Je,dist:1},{ai:Je,dist:0},{ai:Je,dist:0},{ai:Je,dist:10},{ai:Je,dist:-4},{ai:Je,dist:-1},{ai:Je,dist:2}];qh={firstframe:0,lastframe:10,frames:m3,endfunc:null};var f3=[{ai:C,dist:8},{ai:C,dist:3},{ai:C,dist:5},{ai:C,dist:0},{ai:C,dist:-3,think:Qb},{ai:C,dist:0},{ai:C,dist:-5},{ai:C,dist:-7,think:e3},{ai:C,dist:0},{ai:C,dist:6,think:t3},{ai:C,dist:1},{ai:C,dist:2,think:n3},{ai:C,dist:-3},{ai:C,dist:6},{ai:C,dist:-1},{ai:C,dist:-3},{ai:C,dist:2},{ai:C,dist:-11}];Jh={firstframe:53,lastframe:70,frames:f3,endfunc:Xt};var h3=[{ai:C,dist:5},{ai:C,dist:-4},{ai:C,dist:-4},{ai:C,dist:-3},{ai:C,dist:0,think:e0},{ai:C,dist:0},{ai:C,dist:13,think:t0},{ai:C,dist:0},{ai:C,dist:2},{ai:C,dist:0},{ai:C,dist:-9,think:n0},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];Vb={firstframe:71,lastframe:87,frames:h3,endfunc:Xt};var _3=[{ai:C,dist:5},{ai:C,dist:-4},{ai:C,dist:-4},{ai:C,dist:-3},{ai:C,dist:0,think:e0},{ai:C,dist:0,think:jf},{ai:C,dist:13},{ai:C,dist:0,think:t0},{ai:C,dist:2},{ai:C,dist:0,think:jf},{ai:C,dist:-9,think:n0},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];Kb={firstframe:71,lastframe:87,frames:_3,endfunc:Xt};var g3=[{ai:C,dist:9,think:lt},{ai:C,dist:2,think:lt},{ai:C,dist:3,think:lt},{ai:C,dist:3,think:lt},{ai:C,dist:1,think:lt},{ai:C,dist:0,think:lt},{ai:C,dist:0,think:lt},{ai:C,dist:10,think:lt},{ai:C,dist:-4,think:lt},{ai:C,dist:-1,think:lt},{ai:C,dist:2,think:a3}];$b={firstframe:0,lastframe:10,frames:g3,endfunc:Xt};var v3=[{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}];Xb={firstframe:88,lastframe:108,frames:v3,endfunc:Xt};var p3=[{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}];Yb={firstframe:109,lastframe:116,frames:p3,endfunc:Xt};var y3=[{ai:X,dist:-2},{ai:X,dist:2},{ai:X,dist:1},{ai:X,dist:3},{ai:X,dist:0},{ai:X,dist:-4}];jb={firstframe:117,lastframe:122,frames:y3,endfunc:Xt};var w3=Array.from({length:18},()=>({ai:X,dist:0}));Zb={firstframe:123,lastframe:140,frames:w3,endfunc:i0};var A3=[{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:9},{ai:X,dist:0}];qb={firstframe:141,lastframe:145,frames:A3,endfunc:i0};var S3=[{ai:X,dist:0},{ai:X,dist:-2,think:s3},{ai:X,dist:17,think:o3},{ai:X,dist:-3},{ai:X,dist:-1,think:c3},{ai:X,dist:-5},{ai:X,dist:-6},{ai:X,dist:-6}];Jb={firstframe:146,lastframe:153,frames:S3,endfunc:Xt};function i0(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 xa=.1,k3=80,Yn=Math.random;function r0(e,t,n){z(e,xa,n)}function E3(e,t,n){N(e,t,xa,n)}function x3(e,t,n){ue(e,t,xa,n)}function Y(e,t,n){le(e,t,xa,n)}function jn(e,t,n){_(e,t)}var Rc,a0,s0,b3,zc,ic,T3,Lc,o0,M3,R3,z3,L3,N3,O3,c0;function u0(e){e.monsterinfo.current_move=Rc}function I3(e){e.monsterinfo.current_move=a0}function fn(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Rc;return}e.monsterinfo.current_move=s0}function C3(e){e.monsterinfo.aiflags&4||e.enemy||Yn()<=.3&&(e.monsterinfo.current_move=c0)}function P3(e,t){Yn()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function D3(e,t){let n={x:k3,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),Qi(e,n,10+Math.floor(Yn()*6),100,t)}function F3(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,f=V;if(l&&e.monsterinfo.blind_fire_target)f=e.monsterinfo.blind_fire_target;else if(e.enemy)f=e.enemy.origin;else return;let d=P(f,u);!l&&e.enemy&&(Yn()<.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 h=G(d);e.skin>1?hb(e,u,h,50,c,0,.075,t):Ji(e,u,h,50,c,0,t)}function U3(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=$n(n).y}}function B3(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function G3(e){e.monsterinfo.current_move=zc}function H3(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=ic;return}if(e.enemy&&e.enemy.health>0&&Yn()<=.6){e.monsterinfo.current_move=zc;return}e.monsterinfo.current_move=ic}function W3(e){if(e.enemy&&e.enemy.health>0&&Yn()<=.9){e.monsterinfo.current_move=Lc;return}e.monsterinfo.current_move=o0}function V3(e){e.monsterinfo.current_move=Lc}var K3=Array.from({length:30},(e,t)=>({ai:r0,dist:0,think:t===8?(n,i)=>P3(n,i):null}));c0={firstframe:201,lastframe:230,frames:K3,endfunc:u0};var $3=Array.from({length:30},(e,t)=>({ai:r0,dist:0,think:t===29?C3:null}));Rc={firstframe:101,lastframe:130,frames:$3,endfunc:u0};var X3=Array.from({length:10},()=>({ai:E3,dist:6}));a0={firstframe:171,lastframe:180,frames:X3,endfunc:I3};var Y3=Array.from({length:10},()=>({ai:x3,dist:12}));s0={firstframe:171,lastframe:180,frames:Y3,endfunc:fn};var j3=Array.from({length:5},()=>({ai:jn,dist:0}));M3={firstframe:90,lastframe:94,frames:j3,endfunc:fn};var Z3=Array.from({length:5},()=>({ai:jn,dist:0}));R3={firstframe:95,lastframe:99,frames:Z3,endfunc:fn};var q3=Array.from({length:21},()=>({ai:jn,dist:0}));z3={firstframe:100,lastframe:120,frames:q3,endfunc:fn};var J3=Array.from({length:12},()=>({ai:jn,dist:0}));L3={firstframe:48,lastframe:59,frames:J3,endfunc:l0};var Q3=Array.from({length:23},()=>({ai:jn,dist:0}));N3={firstframe:60,lastframe:82,frames:Q3,endfunc:l0};function l0(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var e6=[{ai:Y,dist:0,think:U3},{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:G3}];b3={firstframe:0,lastframe:12,frames:e6,endfunc:null};var t6=[{ai:Y,dist:19,think:F3},{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:B3},{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:H3}];zc={firstframe:13,lastframe:26,frames:t6,endfunc:null};var n6=[{ai:Y,dist:-3},{ai:Y,dist:0},{ai:Y,dist:-6},{ai:Y,dist:-4},{ai:Y,dist:-2}];ic={firstframe:27,lastframe:31,frames:n6,endfunc:fn};var i6=[{ai:Y,dist:1},{ai:Y,dist:8},{ai:Y,dist:3}];T3={firstframe:32,lastframe:34,frames:i6,endfunc:V3};var r6=[{ai:Y,dist:1},{ai:Y,dist:7,think:D3},{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:W3}];Lc={firstframe:35,lastframe:43,frames:r6,endfunc:null};var a6=[{ai:Y,dist:-6},{ai:Y,dist:-1},{ai:Y,dist:-6},{ai:Y,dist:0}];o0={firstframe:44,lastframe:47,frames:a6,endfunc:fn};var s6=Array.from({length:7},()=>({ai:jn,dist:0}));O3={firstframe:83,lastframe:89,frames:s6,endfunc:fn};var ba=.1,o6=80,c6=24;function u6(e,t,n){z(e,ba,n)}function l6(e,t,n){N(e,t,ba,n)}function d0(e,t,n){ue(e,t,ba,n)}function Ae(e,t,n){le(e,t,ba,n)}function Nc(e,t,n){_(e,t)}var d6,m6,m0,f0,f6,h6,_6,g6;function v6(e){e.monsterinfo.current_move=f0}function Oc(e){e.monsterinfo.current_move=m0}function Jf(e,t){Qi(e,{x:o6,y:0,z:0},5,0,t)}function p6(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var y6=[{ai:u6,dist:0}];d6={firstframe:41,lastframe:41,frames:y6,endfunc:null};var w6=Array.from({length:24},()=>({ai:d0,dist:c6}));f0={firstframe:70,lastframe:93,frames:w6,endfunc:null};var A6=Array.from({length:6},()=>({ai:d0,dist:8}));m0={firstframe:65,lastframe:70,frames:A6,endfunc:v6};var S6=Array.from({length:24},()=>({ai:l6,dist:4}));m6={firstframe:41,lastframe:64,frames:S6,endfunc:null};var k6=Array.from({length:5},()=>({ai:Nc,dist:0}));h6={firstframe:99,lastframe:103,frames:k6,endfunc:Oc};var E6=Array.from({length:5},()=>({ai:Nc,dist:0}));_6={firstframe:94,lastframe:98,frames:E6,endfunc:Oc};var x6=[{ai:Ae,dist:0,think:p6},{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:Jf},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0,think:Jf},{ai:Ae,dist:0}];f6={firstframe:0,lastframe:19,frames:x6,endfunc:Oc};function b6(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var T6=Array.from({length:56},()=>({ai:Nc,dist:0}));g6={firstframe:104,lastframe:159,frames:T6,endfunc:b6};U();var Ta=.1;function M6(e,t,n){z(e,Ta,n)}function R6(e,t,n){N(e,t,Ta,n)}function z6(e,t,n){ue(e,t,Ta,n)}function L6(e,t,n){le(e,t,Ta,n)}function h0(e,t,n){_(e,t)}var Ic,_0,g0,N6,O6,v0;function I6(e){e.monsterinfo.current_move=Ic}function C6(e){e.monsterinfo.current_move=_0}function Cc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=g0:e.monsterinfo.current_move=Ic}function P6(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));_t(e,n,i,5,1e3,0,0,t,1)}function D6(e){e.monsterinfo.nextframe=v0.lastframe,e.nextthink=-1}var F6=Array.from({length:46},()=>({ai:M6,dist:0}));Ic={firstframe:0,lastframe:45,frames:F6,endfunc:I6};var U6=Array.from({length:46},()=>({ai:R6,dist:5}));_0={firstframe:0,lastframe:45,frames:U6,endfunc:C6};var B6=Array.from({length:46},()=>({ai:z6,dist:10}));g0={firstframe:0,lastframe:45,frames:B6,endfunc:Cc};var G6=Array.from({length:20},(e,t)=>({ai:L6,dist:0,think:t===10?P6:null}));N6={firstframe:46,lastframe:65,frames:G6,endfunc:Cc};var H6=Array.from({length:6},()=>({ai:h0,dist:0}));O6={firstframe:66,lastframe:71,frames:H6,endfunc:Cc};var W6=Array.from({length:10},()=>({ai:h0,dist:0}));v0={firstframe:84,lastframe:93,frames:W6,endfunc:D6};U();var Ma=.1;function V6(e,t,n){z(e,Ma,n)}function K6(e,t,n){N(e,t,Ma,n)}function $6(e,t,n){ue(e,t,Ma,n)}function X6(e,t,n){le(e,t,Ma,n)}function p0(e,t,n){_(e,t)}var Pc,y0,w0,Y6,j6,A0;function Z6(e){e.monsterinfo.current_move=Pc}function q6(e){e.monsterinfo.current_move=y0}function Dc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=w0:e.monsterinfo.current_move=Pc}function J6(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));_t(e,n,i,5,1e3,0,0,t,1)}function Q6(e,t){if(!e.enemy)return;let n=5+Math.random()*5;$t(e,e.enemy)<=80&&Wi(e,e.enemy)&&he(e.enemy,e,e,G(P(e.enemy.origin,e.origin)),e.enemy.origin,V,n,5,2,0,t.timeSeconds)}function eT(e){e.monsterinfo.nextframe=A0.lastframe,e.nextthink=-1}var tT=Array.from({length:46},()=>({ai:V6,dist:0}));Pc={firstframe:0,lastframe:45,frames:tT,endfunc:Z6};var nT=Array.from({length:46},()=>({ai:K6,dist:5}));y0={firstframe:0,lastframe:45,frames:nT,endfunc:q6};var iT=Array.from({length:46},()=>({ai:$6,dist:10}));w0={firstframe:0,lastframe:45,frames:iT,endfunc:Dc};var rT=Array.from({length:20},(e,t)=>({ai:X6,dist:0,think:t===10?J6:t===12?Q6:null}));Y6={firstframe:46,lastframe:65,frames:rT,endfunc:Dc};var aT=Array.from({length:6},()=>({ai:p0,dist:0}));j6={firstframe:66,lastframe:71,frames:aT,endfunc:Dc};var sT=Array.from({length:10},()=>({ai:p0,dist:0}));A0={firstframe:84,lastframe:93,frames:sT,endfunc:eT};U();var Ra=.1;function oT(e,t,n){z(e,Ra,n)}function cT(e,t,n){N(e,t,Ra,n)}function uT(e,t,n){ue(e,t,Ra,n)}function S0(e,t,n){le(e,t,Ra,n)}function k0(e,t,n){_(e,t)}var Fc,E0,x0,lT,dT,mT,b0;function fT(e){e.monsterinfo.current_move=Fc}function hT(e){e.monsterinfo.current_move=E0}function za(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=x0:e.monsterinfo.current_move=Fc}function _T(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function gT(e,t){if(!e.enemy||!Wi(e,e.enemy))return;let n=$t(e,e.enemy);if(_T(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));he(e.enemy,e,e,r,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function vT(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));Hh(e,n,i,50,100,0,t)}function pT(e){e.monsterinfo.nextframe=b0.lastframe,e.nextthink=-1}var yT=Array.from({length:30},()=>({ai:oT,dist:0}));Fc={firstframe:0,lastframe:29,frames:yT,endfunc:fT};var wT=Array.from({length:40},()=>({ai:cT,dist:3}));E0={firstframe:30,lastframe:69,frames:wT,endfunc:hT};var AT=Array.from({length:20},()=>({ai:uT,dist:12}));x0={firstframe:70,lastframe:89,frames:AT,endfunc:za};var ST=Array.from({length:10},(e,t)=>({ai:S0,dist:0,think:t===5?gT:null}));lT={firstframe:90,lastframe:99,frames:ST,endfunc:za};var kT=Array.from({length:12},(e,t)=>({ai:S0,dist:0,think:t===6?vT:null}));dT={firstframe:100,lastframe:111,frames:kT,endfunc:za};var ET=Array.from({length:6},()=>({ai:k0,dist:0}));mT={firstframe:112,lastframe:117,frames:ET,endfunc:za};var xT=Array.from({length:12},()=>({ai:k0,dist:0}));b0={firstframe:118,lastframe:129,frames:xT,endfunc:pT};U();var La=.1;function T0(e,t,n){z(e,La,n)}function bT(e,t,n){N(e,t,La,n)}function M0(e,t,n){ue(e,t,La,n)}function Na(e,t,n){le(e,t,La,n)}function Se(e,t,n){_(e,t)}var Uc,R0,TT,z0,MT,RT,zT,Bc,L0,LT,NT,OT,N0,IT,O0;function CT(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function PT(e){e.monsterinfo.current_move=Uc}function DT(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=R0)}function hn(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Uc:e.monsterinfo.current_move=z0}function FT(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function UT(e,t){e.monsterinfo.current_move=Bc}function BT(e,t){if(e.enemy&&e.enemy.health>0&&mn(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=Bc;return}e.monsterinfo.current_move=L0}function GT(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),Vt(e,n,i,r,a,300,500,0,t,5)}function I0(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),wc(t,e,n,i,r,a)}function HT(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&I0(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function WT(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function VT(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function KT(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=$n(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 $T(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 XT(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=O0)}var YT=Array.from({length:30},(e,t)=>({ai:T0,dist:0,think:t===29?DT:null}));Uc={firstframe:0,lastframe:29,frames:YT,endfunc:null};var jT=Array.from({length:40},(e,t)=>({ai:T0,dist:0,think:t===7?CT:null}));R0={firstframe:30,lastframe:69,frames:jT,endfunc:PT};var ZT=[0,3,4,5,7,2,6,4,2,7,5,7,4],qT=ZT.map(e=>({ai:bT,dist:e}));TT={firstframe:76,lastframe:88,frames:qT,endfunc:null};var JT=[26,9,9,9,15,10,13,6],QT=JT.map((e,t)=>({ai:M0,dist:e,think:t%4===0?XT:null}));z0={firstframe:94,lastframe:101,frames:QT,endfunc:null};var eM=[32,15,10,18,8,20],tM=eM.map(e=>({ai:M0,dist:e}));MT={firstframe:102,lastframe:107,frames:tM,endfunc:null};var nM=Array.from({length:21},(e,t)=>({ai:Na,dist:0,think:[4,7,10,13].includes(t)?I0:null}));zT={firstframe:108,lastframe:128,frames:nM,endfunc:hn};var iM=Array.from({length:7},(e,t)=>({ai:Na,dist:0,think:t===0?FT:null}));RT={firstframe:137,lastframe:143,frames:iM,endfunc:UT};var rM=Array.from({length:8},()=>({ai:Na,dist:0,think:GT}));Bc={firstframe:144,lastframe:151,frames:rM,endfunc:BT};var aM=Array.from({length:7},()=>({ai:Na,dist:0}));L0={firstframe:152,lastframe:158,frames:aM,endfunc:hn};var sM=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],oM=sM.map(e=>({ai:Se,dist:e}));LT={firstframe:159,lastframe:176,frames:oM,endfunc:hn};var cM=[-2,11,6,2,-1,-7,-2,-7],uM=cM.map(e=>({ai:Se,dist:e}));NT={firstframe:177,lastframe:184,frames:uM,endfunc:hn};var lM=[-3,1,1,0,1],dM=lM.map(e=>({ai:Se,dist:e}));OT={firstframe:185,lastframe:189,frames:dM,endfunc:hn};var mM=[0,0,0,-7,-3,-5,8,6,0,0,0],fM=mM.map(e=>({ai:Se,dist:e}));function hM(e){e.monsterinfo.nextframe=N0.lastframe,e.nextthink=-1,e.solid=0}N0={firstframe:190,lastframe:200,frames:fM,endfunc:hM};var _M=[{ai:Se,dist:1,think:HT},{ai:Se,dist:1},{ai:Se,dist:1,think:WT},{ai:Se,dist:0},{ai:Se,dist:-1},{ai:Se,dist:-1},{ai:Se,dist:0,think:VT},{ai:Se,dist:-1}];IT={firstframe:201,lastframe:208,frames:_M,endfunc:hn};var gM=[{ai:Se,dist:0,think:KT},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0,think:$T},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0}];O0={firstframe:209,lastframe:216,frames:gM,endfunc:hn};U();var Oa=.1;function vM(e,t,n){z(e,Oa,n)}function pM(e,t,n){N(e,t,Oa,n)}function yM(e,t,n){ue(e,t,Oa,n)}function wM(e,t,n){le(e,t,Oa,n)}function C0(e,t,n){_(e,t)}var Gc,P0,D0,AM,SM,F0;function kM(e){e.monsterinfo.current_move=Gc}function EM(e){e.monsterinfo.current_move=P0}function Hc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=D0:e.monsterinfo.current_move=Gc}function xM(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));_t(e,n,i,5,1e3,0,0,t,1)}function bM(e){e.monsterinfo.nextframe=F0.lastframe,e.nextthink=-1}var TM=Array.from({length:46},()=>({ai:vM,dist:0}));Gc={firstframe:0,lastframe:45,frames:TM,endfunc:kM};var MM=Array.from({length:46},()=>({ai:pM,dist:5}));P0={firstframe:0,lastframe:45,frames:MM,endfunc:EM};var RM=Array.from({length:46},()=>({ai:yM,dist:10}));D0={firstframe:0,lastframe:45,frames:RM,endfunc:Hc};var zM=Array.from({length:20},(e,t)=>({ai:wM,dist:0,think:t===10?xM:null}));AM={firstframe:46,lastframe:65,frames:zM,endfunc:Hc};var LM=Array.from({length:6},()=>({ai:C0,dist:0}));SM={firstframe:66,lastframe:71,frames:LM,endfunc:Hc};var NM=Array.from({length:10},()=>({ai:C0,dist:0}));F0={firstframe:84,lastframe:93,frames:NM,endfunc:bM};U();var Ia=.1;function OM(e,t,n){z(e,Ia,n)}function IM(e,t,n){N(e,t,Ia,n)}function CM(e,t,n){ue(e,t,Ia,n)}function PM(e,t,n){le(e,t,Ia,n)}function U0(e,t,n){_(e,t)}var Wc,B0,G0,DM,FM,H0;function UM(e){e.monsterinfo.current_move=Wc}function BM(e){e.monsterinfo.current_move=B0}function Vc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=G0:e.monsterinfo.current_move=Wc}function GM(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));_t(e,n,i,5,1e3,0,0,t,1)}function HM(e){e.monsterinfo.nextframe=H0.lastframe,e.nextthink=-1}var WM=Array.from({length:46},()=>({ai:OM,dist:0}));Wc={firstframe:0,lastframe:45,frames:WM,endfunc:UM};var VM=Array.from({length:46},()=>({ai:IM,dist:5}));B0={firstframe:0,lastframe:45,frames:VM,endfunc:BM};var KM=Array.from({length:46},()=>({ai:CM,dist:10}));G0={firstframe:0,lastframe:45,frames:KM,endfunc:Vc};var $M=Array.from({length:20},(e,t)=>({ai:PM,dist:0,think:t===10?GM:null}));DM={firstframe:46,lastframe:65,frames:$M,endfunc:Vc};var XM=Array.from({length:6},()=>({ai:U0,dist:0}));FM={firstframe:66,lastframe:71,frames:XM,endfunc:Vc};var YM=Array.from({length:10},()=>({ai:U0,dist:0}));H0={firstframe:84,lastframe:93,frames:YM,endfunc:HM};U();var Ca=.1;function jM(e,t,n){z(e,Ca,n)}function ZM(e,t,n){N(e,t,Ca,n)}function qM(e,t,n){ue(e,t,Ca,n)}function JM(e,t,n){le(e,t,Ca,n)}function Kc(e,t,n){_(e,t)}var $c,W0,V0,QM,e8,K0,t8;function n8(e){e.monsterinfo.current_move=$c}function i8(e){e.monsterinfo.current_move=W0}function Pa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=V0:e.monsterinfo.current_move=$c}function r8(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));Vt(e,n,r,5,2,.05,.05,0,t,4)}var a8=Array.from({length:22},()=>({ai:jM,dist:0}));$c={firstframe:0,lastframe:21,frames:a8,endfunc:n8};var s8=Array.from({length:15},()=>({ai:ZM,dist:4}));W0={firstframe:22,lastframe:36,frames:s8,endfunc:i8};var o8=Array.from({length:8},()=>({ai:qM,dist:12}));V0={firstframe:37,lastframe:44,frames:o8,endfunc:Pa};var c8=Array.from({length:15},(e,t)=>({ai:JM,dist:0,think:t>=5&&t<=7?r8:null}));QM={firstframe:45,lastframe:59,frames:c8,endfunc:Pa};var u8=Array.from({length:10},()=>({ai:Kc,dist:0}));e8={firstframe:60,lastframe:69,frames:u8,endfunc:Pa};var l8=Array.from({length:20},()=>({ai:Kc,dist:0}));function d8(e){e.monsterinfo.nextframe=K0.lastframe,e.nextthink=-1}K0={firstframe:70,lastframe:89,frames:l8,endfunc:d8};var m8=Array.from({length:5},()=>({ai:Kc,dist:0}));t8={firstframe:90,lastframe:94,frames:m8,endfunc:Pa};U();var tr=.1,f8={x:30,y:28,z:24},h8={x:26,y:16,z:24},_8={x:26,y:-14,z:24};function g8(e,t,n){z(e,tr,n)}function v8(e,t,n){N(e,t,tr,n)}function p8(e,t,n){ue(e,t,tr,n)}function $0(e,t,n){le(e,t,tr,n)}function Zn(e,t,n){_(e,t)}var Xc,X0,Y0,j0,Yc,Z0,q0,J0,Q0,jc,rc;function e1(e){e.monsterinfo.current_move=Xc}function t1(e){e.monsterinfo.current_move=X0}function Mt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Y0:e.monsterinfo.current_move=Xc}function y8(e){if(!e.enemy)return;let t=Math.random();t<=.3?e.monsterinfo.current_move=j0:t<=.6?e.monsterinfo.current_move=Yc:e.monsterinfo.current_move=Z0}function Zc(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 w8(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=Zc(e,f8),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=G(P(i,n));Gh(e,n,r,50,300,100,300,0,t)}function A8(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=Zc(e,_8),i=G(P(e.pos1,n));Hh(e,n,i,50,100,0,t)}function S8(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function k8(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=Zc(e,h8),i=(e.monsterinfo.nextframe||0)-Yc.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=P(s,n),c={...$n(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}_t(e,n,a,15,1e3,0,0,t,1)}function E8(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=q0):i<=110?(r.engine.sound?.(e,0,"makron/pain2.wav",1,1,0),e.monsterinfo.current_move=J0):Math.random()<=.45&&(r.engine.sound?.(e,0,"makron/pain3.wav",1,1,0),e.monsterinfo.current_move=Q0)))}function x8(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 b8(e,t){e.frame=346,e.model="models/monsters/boss3/rider/tris.md2",e.skin=1,e.think=x8,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=V,t.linkentity(e)}function T8(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,b8(n,t)}function M8(e,t){t.engine.sound?.(e,0,"makron/death.wav",1,1,0),T8(e,t),e.monsterinfo.current_move=jc,e.mins={x:-60,y:-60,z:0},e.maxs={x:60,y:60,z:48}}function R8(e){e.monsterinfo.nextframe=jc.lastframe,e.nextthink=-1}var z8=Array.from({length:60},()=>({ai:g8,dist:0}));Xc={firstframe:0,lastframe:59,frames:z8,endfunc:e1};var L8=Array.from({length:10},()=>({ai:v8,dist:8}));X0={firstframe:60,lastframe:69,frames:L8,endfunc:t1};var N8=Array.from({length:10},()=>({ai:p8,dist:8}));Y0={firstframe:60,lastframe:69,frames:N8,endfunc:Mt};var O8=Array.from({length:8},(e,t)=>({ai:$0,dist:0,think:t===3?w8:null}));j0={firstframe:70,lastframe:77,frames:O8,endfunc:Mt};var I8=Array.from({length:26},(e,t)=>({ai:Zn,dist:0,think:t>=4&&t<=20?k8:null}));Yc={firstframe:78,lastframe:103,frames:I8,endfunc:Mt};var C8=Array.from({length:16},(e,t)=>({ai:$0,dist:0,think:t===7?S8:t===8?A8:null}));Z0={firstframe:104,lastframe:119,frames:C8,endfunc:Mt};var P8=Array.from({length:4},()=>({ai:Zn,dist:0}));q0={firstframe:120,lastframe:123,frames:P8,endfunc:Mt};var D8=Array.from({length:4},()=>({ai:Zn,dist:0}));J0={firstframe:124,lastframe:127,frames:D8,endfunc:Mt};var F8=Array.from({length:27},()=>({ai:Zn,dist:0}));Q0={firstframe:128,lastframe:154,frames:F8,endfunc:Mt};var U8=Array.from({length:95},()=>({ai:Zn,dist:0}));jc={firstframe:155,lastframe:249,frames:U8,endfunc:R8};var B8=Array.from({length:13},()=>({ai:Zn,dist:0}));rc={firstframe:250,lastframe:262,frames:B8,endfunc:Mt};function G8(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)=>E8(n,i,r,a,t.entities),e.die=(n,i,r,a,s)=>{if(n.health<=-2e3){Nh(t.entities,n.origin,a),t.entities.free(n);return}n.deadflag=2,n.solid=0,M8(n,t.entities)},e.monsterinfo.stand=e1,e.monsterinfo.walk=t1,e.monsterinfo.run=Mt,e.monsterinfo.attack=y8,e.monsterinfo.sight=(n,i)=>{t.entities.sound?.(n,0,"makron/sight.wav",1,1,0),n.monsterinfo.current_move=rc},e.think=C5,e.monsterinfo.current_move=rc,e.nextthink=e.timestamp+tr}U();var Da=.1,H8={x:40,y:-20,z:20},W8={x:40,y:20,z:20},V8={x:30,y:0,z:40};function K8(e,t,n){z(e,Da,n)}function $8(e,t,n){N(e,t,Da,n)}function X8(e,t,n){ue(e,t,Da,n)}function qc(e,t,n){le(e,t,Da,n)}function nr(e,t,n){_(e,t)}var Jc,n1,i1,Qc,ac,Y8,j8,Z8,q8,r1;function J8(e){e.monsterinfo.current_move=Jc}function Q8(e){e.monsterinfo.current_move=n1}function qn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=i1:e.monsterinfo.current_move=Jc}function eR(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&&mn(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=Qc:e.monsterinfo.current_move=ac}function sc(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 tR(e,t){if(!e.enemy)return;let n=sc(e,W8),i=G(P(e.enemy.origin,n));ma(e,n,i,6,4,.05,.05,0,t,4);let r=sc(e,H8),a=G(P(e.enemy.origin,r));ma(e,r,a,6,4,.05,.05,0,t,4)}function nR(e,t){if(!e.enemy)return;let n=sc(e,V8),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=G(P(i,n));Gh(e,n,r,50,300,100,200,0,t)}function iR(e){e.monsterinfo.nextframe=r1.lastframe,e.nextthink=-1}function rR(e,t){let n=t.spawn();if(n.classname="monster_makron",n.origin={...e.origin},n.target=e.target,n.enemy=e.enemy,G8(n,{entities:t}),n.enemy&&n.enemy.health>0){let r=P(n.enemy.origin,n.origin);n.angles={...n.angles,y:Yi(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 aR=Array.from({length:51},()=>({ai:K8,dist:0}));Jc={firstframe:0,lastframe:50,frames:aR,endfunc:J8};var sR=Array.from({length:14},()=>({ai:$8,dist:10}));n1={firstframe:51,lastframe:64,frames:sR,endfunc:Q8};var oR=Array.from({length:14},()=>({ai:X8,dist:10}));i1={firstframe:51,lastframe:64,frames:oR,endfunc:qn};var cR=Array.from({length:8},()=>({ai:qc,dist:0})),uR={firstframe:65,lastframe:72,frames:cR,endfunc:null},lR=Array.from({length:6},()=>({ai:qc,dist:0,think:tR}));Qc={firstframe:73,lastframe:78,frames:lR,endfunc:eR};uR.endfunc=e=>{e.monsterinfo.current_move=Qc};var dR=Array.from({length:4},()=>({ai:nr,dist:0}));ac={firstframe:79,lastframe:82,frames:dR,endfunc:qn};var mR=Array.from({length:13},(e,t)=>({ai:qc,dist:0,think:t===6?nR:null}));Y8={firstframe:83,lastframe:95,frames:mR,endfunc:qn};var fR=Array.from({length:3},()=>({ai:nr,dist:0}));j8={firstframe:96,lastframe:98,frames:fR,endfunc:qn};var hR=Array.from({length:3},()=>({ai:nr,dist:0}));Z8={firstframe:99,lastframe:101,frames:hR,endfunc:qn};var _R=Array.from({length:25},()=>({ai:nr,dist:0}));q8={firstframe:102,lastframe:126,frames:_R,endfunc:qn};var gR=Array.from({length:50},(e,t)=>({ai:nr,dist:0,think:t===49?((n,i)=>{}):t===48?rR:null}));r1={firstframe:127,lastframe:176,frames:gR,endfunc:iR};var eu=.1,Fa=4,a1=8,Ua=16,vR=32,tu=64,pR=0,yR=39,wR=40,AR=58,SR=59,s1=64,kR=93,ER=95,nu=99,o1=159,c1=160,u1=172,l1=173,d1=198,xR=199,bR=209,TR=210,MR=226,iu=227,ru=235,m1=236,fa=244,RR=245,zR=251,LR=252,NR=266,OR=267,IR=281,f1,h1,_1,g1,v1,ir,p1,y1,w1,A1,CR,PR,S1,k1,DR,FR,au,E1,UR="insane/insane11.wav",BR="insane/insane5.wav",GR="insane/insane7.wav",Qf=["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 oc(e,t){t.sound(e,2,UR,1,1,0)}function HR(e,t){(e.spawnflags&tu)===0&&t.sound(e,2,BR,1,1,0)}function su(e,t){e.spawnflags&tu||(e.monsterinfo.attack_finished??0)<t.timeSeconds&&(t.sound(e,2,GR,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2)}function Yt(e,t){if(!(e.spawnflags&tu)&&(e.monsterinfo.attack_finished??0)<t.timeSeconds){let n=Qf[Math.floor(Math.random()*Qf.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function We(e,t){}function x1(e,t){e.spawnflags&vR||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=_1:e.monsterinfo.current_move=v1)}function WR(e,t){e.spawnflags&Fa&&e.spawnflags&Ua||Math.random()<.5&&(e.monsterinfo.current_move=g1)}function ou(e,t){e.monsterinfo.current_move=ir}function b1(e,t){Math.random()<.8?e.monsterinfo.current_move=au:e.monsterinfo.current_move=E1}function cu(e,t){e.spawnflags&a1?(e.monsterinfo.current_move=au,e.monsterinfo.aiflags|=1):e.spawnflags&Fa&&e.spawnflags&Ua?e.monsterinfo.current_move=ir:Math.random()<.5?e.monsterinfo.current_move=f1:e.monsterinfo.current_move=h1}function uu(e,t){if(e.spawnflags&Ua&&e.frame===fa){e.monsterinfo.current_move=ir;return}e.spawnflags&Fa?e.monsterinfo.current_move=S1:Math.random()<=.5?e.monsterinfo.current_move=p1:e.monsterinfo.current_move=w1}function rr(e,t){if(e.spawnflags&Ua&&e.frame===fa){e.monsterinfo.current_move=ir;return}let n=e.frame;e.spawnflags&Fa||n>=m1&&n<=fa||n>=iu&&n<=ru||n>=nu&&n<=o1?e.monsterinfo.current_move=k1:Math.random()<=.5?e.monsterinfo.current_move=y1:e.monsterinfo.current_move=A1}function T1(e,t){e.spawnflags&a1?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 m(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,eu,a)},dist:t}}var VR=[m(z),m(z),m(z),m(z),m(z),m(z,0,x1)];f1={firstframe:SR,lastframe:s1,frames:VR,endfunc:cu};var KR=[m(z,0,HR),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z),m(z,0,x1)];h1={firstframe:s1,lastframe:kR,frames:KR,endfunc:cu};var $R=[m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_,0,su),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_,2.7),m(_,4.1),m(_,6),m(_,7.6),m(_,3.6),m(_),m(_),m(_,0,oc),m(_),m(_),m(_),m(_),m(_),m(_,0,oc),m(_),m(_),m(_),m(_),m(_),m(_)];_1={firstframe:pR,lastframe:yR,frames:$R,endfunc:ou};var XR=[m(_,-.7),m(_,-1.2),m(_,-1.5),m(_,-4.5),m(_,-3.5),m(_,-.2),m(_),m(_,-1.3),m(_,-3),m(_,-2),m(_),m(_),m(_),m(_,-3.3),m(_,-1.6),m(_,-.3),m(_),m(_),m(_)];g1={firstframe:wR,lastframe:AR,frames:XR,endfunc:cu};var YR=[m(_,.2),m(_,11.5),m(_,5.1),m(_,7.1),m(_)];v1={firstframe:ER,lastframe:nu,frames:YR,endfunc:ou};var jR=[m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_,-1.7),m(_,-1.6),m(_),m(_),m(_),m(_,0,oc),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_,0,su),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_,.5),m(_),m(_,-.2,Yt),m(_),m(_,.2),m(_,.4),m(_,.6),m(_,.8),m(_,.7),m(_,0,WR)];ir={firstframe:nu,lastframe:o1,frames:jR,endfunc:ou};var cc=[m(N,0,Yt),m(N,2.5),m(N,3.5),m(N,1.7),m(N,2.3),m(N,2.4),m(N,2.2,We),m(N,4.2),m(N,5.6),m(N,3.3),m(N,2.4),m(N,.9),m(N,0,We)];p1={firstframe:c1,lastframe:u1,frames:cc,endfunc:uu};y1={firstframe:c1,lastframe:u1,frames:cc.map(e=>({ai:(t,n,i)=>{e.ai===cc[0].ai&&Yt(t,i),ue(t,n,eu,i)},dist:e.dist})),endfunc:rr};var uc=[m(N,0,Yt),m(N,3.4),m(N,3.6),m(N,2.9),m(N,2.2),m(N,2.6,We),m(N),m(N,.7),m(N,4.8),m(N,5.3),m(N,1.1),m(N,2,We),m(N,.5),m(N),m(N),m(N,4.9),m(N,6.7),m(N,3.8),m(N,2,We),m(N,.2),m(N),m(N,3.4),m(N,6.4),m(N,5),m(N,1.8,We),m(N)];w1={firstframe:l1,lastframe:d1,frames:uc,endfunc:uu};A1={firstframe:l1,lastframe:d1,frames:uc.map(e=>({ai:(t,n,i)=>{e.ai===uc[0].ai&&Yt(t,i),ue(t,n,eu,i)},dist:e.dist})),endfunc:rr};var ZR=[m(_),m(_),m(_),m(_),m(_,0,We),m(_),m(_),m(_),m(_),m(_),m(_,0,We)];CR={firstframe:xR,lastframe:bR,frames:ZR,endfunc:rr};var qR=[m(_),m(_),m(_),m(_),m(_,0,We),m(_),m(_),m(_),m(_),m(_),m(_,0,We),m(_),m(_,0,We),m(_),m(_),m(_),m(_)];PR={firstframe:TR,lastframe:MR,frames:qR,endfunc:T1};var M1=[m(N,0,Yt),m(N,1.5),m(N,2.1),m(N,3.6),m(N,2,We),m(N,.9),m(N,3),m(N,3.4),m(N,2.4,We)];S1={firstframe:iu,lastframe:ru,frames:M1,endfunc:uu};k1={firstframe:iu,lastframe:ru,frames:M1,endfunc:rr};var JR=[m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_)];DR={firstframe:m1,lastframe:fa,frames:JR,endfunc:rr};var QR=[m(_),m(_),m(_),m(_),m(_,0,Yt),m(_),m(_)];FR={firstframe:RR,lastframe:zR,frames:QR,endfunc:T1};var e4=[m(_,0,su),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_)];au={firstframe:LR,lastframe:NR,frames:e4,endfunc:b1};var t4=[m(_,0,Yt),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_)];E1={firstframe:OR,lastframe:IR,frames:t4,endfunc:b1};U();U();var n4=.1,i4=0;var lc=0,R1=39,r4=40,a4=47,s4=48,o4=53,c4=54,u4=56,l4=57,d4=59,m4=60,f4=62,h4=63,_4=76,g4=77,v4=93,p4=94,y4=100,w4=101,A4=113,S4=114,k4=117,z1,L1,N1,E4,x4,b4,T4,M4,R4,z4,L4;function A(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,n4,a)},dist:t}}function eh(e,t){e.monsterinfo.current_move=z1,t.timeSeconds<1&&(e.frame=lc+Math.floor(Math.random()*(R1-lc+1)))}function N4(e,t){e.monsterinfo.current_move=L1}function Jn(e,t){if(t.timeSeconds<e.pain_debounce_time&&!e.enemy){e.movetarget?N4(e,t):eh(e,t);return}if(e.monsterinfo.aiflags&1){eh(e,t);return}e.monsterinfo.current_move=N1}function O4(e,t){let n={x:0,y:0,z:0},r=Z(e.angles).forward,a=Kn(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=Kn(e.enemy.absmin),o.z+=e.enemy.size.z/2+1),s=P(o,a),s=G(s)}else s=r;Vt(e,a,s,3,4,0,0,i4,t)}function O1(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 I4(e,t){O4(e,t);let n=e.monsterinfo.fire_wait??0;t.timeSeconds>=n?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}var C4=[A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z),A(z)];z1={firstframe:lc,lastframe:R1,frames:C4,endfunc:null};var P4=[A(N),A(N,6),A(N,10),A(N,3),A(N,2),A(N,7),A(N,10),A(N,1)];L1={firstframe:r4,lastframe:a4,frames:P4,endfunc:null};var D4=[A(ue,4),A(ue,15),A(ue,15),A(ue,8),A(ue,20),A(ue,15)];N1={firstframe:s4,lastframe:o4,frames:D4,endfunc:null};var F4=[A(_,-5),A(_,4),A(_,1)];E4={firstframe:c4,lastframe:u4,frames:F4,endfunc:Jn};var U4=[A(_,-4),A(_,4),A(_)];x4={firstframe:l4,lastframe:d4,frames:U4,endfunc:Jn};var B4=[A(_,-1),A(_,1),A(_,0)];b4={firstframe:m4,lastframe:f4,frames:B4,endfunc:Jn};var G4=[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)];T4={firstframe:h4,lastframe:_4,frames:G4,endfunc:Jn};var H4=[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)];M4={firstframe:g4,lastframe:v4,frames:H4,endfunc:Jn};var W4=[A(_),A(_),A(_,-13),A(_,14),A(_,3),A(_,-2),A(_,1)];R4={firstframe:p4,lastframe:y4,frames:W4,endfunc:O1};var V4=[A(_),A(_,7),A(_,-6),A(_,-5),A(_,1),A(_),A(_,-1),A(_,-2),A(_,-1),A(_,-9),A(_,-13),A(_,-13),A(_)];z4={firstframe:w4,lastframe:A4,frames:V4,endfunc:O1};var K4=[A(le,-2,I4),A(le,-2),A(le,3),A(le,2)];L4={firstframe:S4,lastframe:k4,frames:K4,endfunc:Jn};U();U();var Ki=.1;function $4(e,t,n){if(e.classname==="monster_medic"&&D1(e,n)){e.monsterinfo.current_move=ar;return}z(e,Ki,n)}function X4(e,t,n){N(e,t,Ki,n)}function Y4(e,t,n){e.classname==="monster_medic"&&D1(e,n)?e.monsterinfo.current_move=ar:ue(e,t,Ki,n)}function dt(e,t,n){le(e,t,Ki,n)}function lu(e,t,n){_(e,t)}var du,I1,ar,j4,C1,Z4,q4,P1;function J4(e){e.monsterinfo.current_move=du}function Q4(e){e.monsterinfo.current_move=I1}function sr(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&$t(e,e.enemy)<80){e.monsterinfo.current_move=C1;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ar:e.monsterinfo.current_move=du}function ez(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));_t(e,n,i,2,1e3,0,0,t,10)}function Bt(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if($t(e,e.enemy)>400){e.monsterinfo.current_move=ar;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 tz(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),Bt(e,t)}function nz(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,i=t.getSpawnFunction(n.classname);if($t(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 D1(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 f=t.trace(a,s,o,u,c,l);return{fraction:f.fraction,ent:f.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!mn(e,a,r))return;let s=$t(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function iz(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,Ie|Gt|Gi);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 rz(e){e.monsterinfo.nextframe=P1.lastframe,e.nextthink=-1}var az=Array.from({length:30},()=>({ai:$4,dist:0}));du={firstframe:0,lastframe:29,frames:az,endfunc:J4};var sz=Array.from({length:40},()=>({ai:X4,dist:3}));I1={firstframe:30,lastframe:69,frames:sz,endfunc:Q4};var oz=Array.from({length:20},()=>({ai:Y4,dist:12}));ar={firstframe:70,lastframe:89,frames:oz,endfunc:sr};var cz=Array.from({length:16},(e,t)=>({ai:dt,dist:0,think:t>=4&&t<=13?ez:null}));j4={firstframe:90,lastframe:105,frames:cz,endfunc:sr};var uz=[{ai:dt,dist:0,think:tz},{ai:dt,dist:0,think:Bt},{ai:dt,dist:0,think:Bt},{ai:dt,dist:0,think:Bt},{ai:dt,dist:0,think:Bt},{ai:dt,dist:0,think:Bt},{ai:dt,dist:0,think:Bt},{ai:dt,dist:0,think:Bt},{ai:dt,dist:0,think:nz}];C1={firstframe:106,lastframe:114,frames:uz,endfunc:sr};var lz=Array.from({length:6},()=>({ai:lu,dist:0}));q4={firstframe:116,lastframe:121,frames:lz,endfunc:sr};var dz=Array.from({length:23},(e,t)=>({ai:lu,dist:0,think:t===11?iz:null}));Z4={firstframe:122,lastframe:144,frames:dz,endfunc:sr};var mz=Array.from({length:30},()=>({ai:lu,dist:0}));P1={firstframe:161,lastframe:190,frames:mz,endfunc:rz};U();var or=.1;function K(e,t,n){z(e,or,n)}function Ge(e,t,n){N(e,t,or,n)}function Dn(e,t,n){ue(e,t,or,n)}function Ut(e,t,n){le(e,t,or,n)}function ce(e,t,n){_(e,t)}function jo(e,t,n){Kx(e,null,t,or)}var F1,U1,ha,fz,hz,_z,gz,B1,G1;function vz(e){e.monsterinfo.current_move=U1}function pz(e){e.monsterinfo.current_move=F1}function Qn(e){e.monsterinfo.current_move=ha}function H1(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(Fe(i)>100)return;let a=G(i);he(e.enemy,e,e,a,e.enemy.origin,V,t,0,0,0,n.timeSeconds)}function yz(e,t){H1(e,30,t)}function th(e,t){H1(e,30,t)}function Gn(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=ha),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=ha)}function wz(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),he(t,e,e,G(e.velocity),e.origin,V,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function Az(e,t){let n=Z(e.angles).forward;e.movetype=7,e.touch=wz,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 Sz(e){e.monsterinfo.nextframe=B1.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var kz=[{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}];F1={firstframe:0,lastframe:50,frames:kz,endfunc:pz};var Ez=[{ai:Ge,dist:3},{ai:Ge,dist:1},{ai:Ge,dist:5},{ai:Ge,dist:10},{ai:Ge,dist:13},{ai:Ge,dist:12},{ai:Ge,dist:0},{ai:Ge,dist:0},{ai:Ge,dist:5},{ai:Ge,dist:6},{ai:Ge,dist:16},{ai:Ge,dist:15},{ai:Ge,dist:6}];U1={firstframe:51,lastframe:63,frames:Ez,endfunc:vz};var xz=[{ai:Dn,dist:20},{ai:Dn,dist:15},{ai:Dn,dist:35},{ai:Dn,dist:20},{ai:Dn,dist:10},{ai:Dn,dist:20}];ha={firstframe:64,lastframe:69,frames:xz,endfunc:Qn};var bz=[{ai:Ut,dist:0},{ai:Ut,dist:0},{ai:Ut,dist:0,think:th},{ai:Ut,dist:0},{ai:Ut,dist:0,think:yz},{ai:Ut,dist:0},{ai:Ut,dist:0,think:th},{ai:Ut,dist:0}];fz={firstframe:70,lastframe:77,frames:bz,endfunc:Qn};var Tz=[{ai:jo,dist:0},{ai:jo,dist:0},{ai:jo,dist:0,think:Az},{ai:ce,dist:0,think:Gn},{ai:ce,dist:0,think:Gn},{ai:ce,dist:0,think:Gn},{ai:ce,dist:0,think:Gn},{ai:ce,dist:0,think:Gn}];G1={firstframe:93,lastframe:100,frames:Tz,endfunc:Qn};G1.frames[3].ai=(e,t,n)=>{Gn(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var Mz=[{ai:ce,dist:4},{ai:ce,dist:-3},{ai:ce,dist:-8},{ai:ce,dist:2},{ai:ce,dist:5}];hz={firstframe:78,lastframe:82,frames:Mz,endfunc:Qn};var Rz=[{ai:ce,dist:-24},{ai:ce,dist:11},{ai:ce,dist:5},{ai:ce,dist:-2}];_z={firstframe:83,lastframe:86,frames:Rz,endfunc:Qn};var zz=[{ai:ce,dist:11},{ai:ce,dist:0},{ai:ce,dist:-2},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0}];gz={firstframe:87,lastframe:92,frames:zz,endfunc:Qn};var Lz=[{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0}];B1={firstframe:101,lastframe:109,frames:Lz,endfunc:Sz};U();var Ba=.1,Nz=()=>Math.random();function ne(e,t,n){z(e,Ba,n)}function kt(e,t,n){N(e,t,Ba,n)}function Et(e,t,n){ue(e,t,Ba,n)}function Me(e,t,n){le(e,t,Ba,n)}function Re(e,t,n){_(e,t)}var mu,W1,V1,Oz,Iz,K1,$1,Cz,Pz,fu,X1;function Dz(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function Fz(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function Fn(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function dc(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function Uz(e){e.monsterinfo.current_move=fu}function Bz(e){Nz()<=.8?e.monsterinfo.current_move=fu:e.monsterinfo.current_move=X1}function Y1(e){e.monsterinfo.current_move=mu}function hu(e){e.monsterinfo.current_move=W1}function j1(e){e.monsterinfo.current_move=$1}function Z1(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=mu:e.monsterinfo.current_move=V1}function Zo(e,t){let n=P(t,e);if(Fe(n)>256)return!1;let a=$n(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function Qe(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=Kn(e.enemy.origin);if(!Zo(o,u)&&(u={...u,z:e.enemy.origin.z+e.enemy.maxs.z-8},!Zo(o,u)&&(u={...u,z:e.enemy.origin.z+e.enemy.mins.z+8},!Zo(o,u)))||t.trace(o,u,V,V,e,bt).ent!==e.enemy)return;let l=2,f=e.frame;f===41?(l=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(f===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));he(e.enemy,e,e,d,e.enemy.origin,V,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 Gz(e){e.monsterinfo.nextframe=K1.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var Hz=[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Fn},{ai:ne,dist:0},{ai:ne,dist:0,think:Fn},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Fn},{ai:ne,dist:0},{ai:ne,dist:0,think:Fn},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Fn},{ai:ne,dist:0},{ai:ne,dist:0,think:Fn}];mu={firstframe:83,lastframe:99,frames:Hz,endfunc:Y1};var Wz=[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}];Pz={firstframe:100,lastframe:103,frames:Wz,endfunc:Uz};var Vz=[{ai:ne,dist:0,think:dc},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:dc},{ai:ne,dist:0},{ai:ne,dist:0}];fu={firstframe:104,lastframe:109,frames:Vz,endfunc:Bz};var Kz=[{ai:ne,dist:0,think:dc},{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}];X1={firstframe:110,lastframe:117,frames:Kz,endfunc:Y1};var $z=[{ai:Et,dist:0},{ai:Et,dist:30}];$1={firstframe:68,lastframe:69,frames:$z,endfunc:Z1};var Xz=[{ai:Et,dist:30},{ai:Et,dist:30},{ai:Et,dist:22},{ai:Et,dist:19},{ai:Et,dist:24},{ai:Et,dist:28},{ai:Et,dist:25}];V1={firstframe:70,lastframe:76,frames:Xz,endfunc:Z1};var Yz=[{ai:kt,dist:0},{ai:kt,dist:30,think:hu}];Cz={firstframe:68,lastframe:69,frames:Yz,endfunc:hu};var jz=[{ai:kt,dist:30},{ai:kt,dist:30},{ai:kt,dist:22},{ai:kt,dist:19},{ai:kt,dist:24},{ai:kt,dist:28},{ai:kt,dist:25}];W1={firstframe:70,lastframe:76,frames:jz,endfunc:hu};var Zz=[{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}];Iz={firstframe:57,lastframe:67,frames:Zz,endfunc:j1};var qz=[{ai:Me,dist:0,think:Dz},{ai:Me,dist:0},{ai:Me,dist:15,think:Qe},{ai:Me,dist:0,think:Qe},{ai:Me,dist:0,think:Qe},{ai:Me,dist:0,think:Qe},{ai:Me,dist:0,think:Qe},{ai:Me,dist:-2,think:Qe},{ai:Me,dist:-2,think:Qe},{ai:Me,dist:-3,think:Qe},{ai:Me,dist:-2,think:Qe},{ai:Me,dist:0,think:Qe},{ai:Me,dist:-1,think:Qe},{ai:Me,dist:0,think:Fz},{ai:Me,dist:-2},{ai:Me,dist:-2},{ai:Me,dist:-3},{ai:Me,dist:0}];Oz={firstframe:39,lastframe:56,frames:qz,endfunc:j1};var Jz=[{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}];K1={firstframe:32,lastframe:38,frames:Jz,endfunc:Gz};U();var Ga=.1;var Qz=2,eL=4;function tL(e,t,n){z(e,Ga,n)}function nL(e,t,n){N(e,t,Ga,n)}function iL(e,t,n){ue(e,t,Ga,n)}function q1(e,t,n){le(e,t,Ga,n)}function J1(e,t,n){_(e,t)}var _u,Q1,e_,rL,aL,sL,t_;function oL(e){e.monsterinfo.current_move=_u}function cL(e){e.monsterinfo.current_move=Q1}function Ha(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=e_:e.monsterinfo.current_move=_u}function cr(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function ur(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 uL(e,t){if(!e.enemy)return;let n=cr(e),i=ur(e,n);_t(e,n,i,5,600,0,0,t,1)}function lL(e,t){if(!e.enemy)return;let n=cr(e),i=ur(e,n),r=2,a=4,s=20,o=.15,u=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),lb(e,n,i,r,a,o,u,s,0,t,3)}function dL(e,t){if(!e.enemy)return;let n=cr(e),i=ur(e,n),r=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),Vt(e,n,i,r,a,s,o,0,t,4)}function mL(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 fL(e,t){if(!e.enemy)return;let n=cr(e),i=ur(e,n);mb(e,n,i,5,600,0,0,t)}function hL(e,t){if(!e.enemy)return;let n=cr(e),i=ur(e,n),r=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),db(e,n,i,r,a,0,0,t)}function _L(e,t){e.enemy&&tc(e,1,!1,mL,t)}function gL(e,t){e.count<2?fL(e,t):e.count<4?hL(e,t):_L(e,t)}function n_(e,t){if(e.style===1){gL(e,t);return}e.spawnflags&Qz?lL(e,t):e.spawnflags&eL?dL(e,t):uL(e,t)}var vL=Array.from({length:30},()=>({ai:tL,dist:0}));_u={firstframe:0,lastframe:29,frames:vL,endfunc:oL};var pL=Array.from({length:40},()=>({ai:nL,dist:2}));Q1={firstframe:30,lastframe:69,frames:pL,endfunc:cL};var yL=Array.from({length:20},()=>({ai:iL,dist:10}));e_={firstframe:70,lastframe:89,frames:yL,endfunc:Ha};var wL=Array.from({length:10},(e,t)=>({ai:q1,dist:0,think:t===5?n_:null}));rL={firstframe:90,lastframe:99,frames:wL,endfunc:Ha};var AL=Array.from({length:10},(e,t)=>({ai:q1,dist:0,think:t>=4&&t<=8?n_:null}));aL={firstframe:90,lastframe:99,frames:AL,endfunc:Ha};var SL=Array.from({length:6},()=>({ai:J1,dist:0}));sL={firstframe:100,lastframe:105,frames:SL,endfunc:Ha};var kL=Array.from({length:10},()=>({ai:J1,dist:0}));function EL(e){e.monsterinfo.nextframe=t_.lastframe,e.nextthink=-1}t_={firstframe:106,lastframe:115,frames:kL,endfunc:EL};U();var i_=.1,xL={x:30,y:30,z:40},bL={x:30,y:-30,z:40},TL={x:20,y:0,z:70};function ML(e,t,n){z(e,i_,n)}function RL(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=vu:e.monsterinfo.current_move=Wa}function gu(e,t,n){le(e,t,i_,n)}function lr(e,t,n){_(e,t)}var Wa,vu,zL,LL,r_,a_,NL,OL,IL,s_;function CL(e){e.monsterinfo.current_move=Wa}function _n(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=vu:e.monsterinfo.current_move=Wa}function pu(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 PL(e,t){if(!e.enemy)return;let n=pu(e,bL),i=G(P(e.enemy.origin,n));Ji(e,n,i,50,650,0,t)}function DL(e,t){if(!e.enemy)return;let n=pu(e,TL),i=G(P(e.enemy.origin,n));fb(e,n,i,50,600,0,t)}function FL(e,t){if(!e.enemy)return;let n=pu(e,xL),i=G(P(e.enemy.origin,n));ma(e,n,i,6,4,.05,.05,0,t,4)}function UL(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&&mn(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=r_:e.monsterinfo.current_move=a_}function BL(e){e.monsterinfo.nextframe=s_.lastframe,e.nextthink=-1}var GL=Array.from({length:60},()=>({ai:ML,dist:0}));Wa={firstframe:0,lastframe:59,frames:GL,endfunc:CL};var HL=Array.from({length:18},()=>({ai:RL,dist:12}));vu={firstframe:60,lastframe:77,frames:HL,endfunc:_n};var WL=Array.from({length:4},()=>({ai:lr,dist:0}));IL={firstframe:78,lastframe:81,frames:WL,endfunc:_n};var VL=Array.from({length:4},()=>({ai:lr,dist:0}));OL={firstframe:82,lastframe:85,frames:VL,endfunc:_n};var KL=Array.from({length:4},()=>({ai:lr,dist:0}));NL={firstframe:86,lastframe:89,frames:KL,endfunc:_n};var $L=Array.from({length:24},()=>({ai:lr,dist:0}));s_={firstframe:90,lastframe:113,frames:$L,endfunc:BL};var XL=Array.from({length:6},(e,t)=>({ai:gu,dist:0,think:t===0||t===3?DL:null}));LL={firstframe:114,lastframe:119,frames:XL,endfunc:_n};var YL=Array.from({length:27},(e,t)=>({ai:gu,dist:0,think:t===7||t===10||t===13?PL:null}));zL={firstframe:120,lastframe:146,frames:YL,endfunc:_n};var jL=Array.from({length:6},()=>({ai:gu,dist:0,think:FL}));r_={firstframe:147,lastframe:152,frames:jL,endfunc:UL};var ZL=Array.from({length:14},()=>({ai:lr,dist:0}));a_={firstframe:153,lastframe:166,frames:ZL,endfunc:_n};U();var yu=.1;function o_(e,t,n,i,r){let a=r.trace(t,n,V,V,e,bt);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,V,V,e,bt);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,V,V,e,bt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?G(P(u,t)):null}function c_(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=Yi(n)}}function qL(e,t,n){z(e,yu,n)}function JL(e,t,n){N(e,t,yu,n)}function QL(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Au:e.monsterinfo.current_move=Va}function wu(e,t,n){le(e,t,yu,n)}function u_(e,t,n){_(e,t)}var Va,l_,Au,eN,tN,nN,iN,d_;function rN(e){e.monsterinfo.current_move=Va}function aN(e){e.monsterinfo.current_move=l_}function dr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Au:e.monsterinfo.current_move=Va}function sN(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=o_(e,n,c,u,t);if(!l)return;i=l}else i=G(P(e.enemy.origin,n));_t(e,n,i,30,1e3,0,0,t,1)}function oN(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));Vt(e,n,i,20,2,.05,.05,0,t,4)}function cN(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=o_(e,n,c,u,t);if(!l)return;i=l}else i=G(P(e.enemy.origin,n));Ji(e,n,i,50,650,0,t)}function uN(e){e.monsterinfo.nextframe=d_.lastframe,e.nextthink=-1}function lN(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),dr(e)}var dN=Array.from({length:30},()=>({ai:qL,dist:0}));Va={firstframe:0,lastframe:29,frames:dN,endfunc:rN};var mN=Array.from({length:16},()=>({ai:JL,dist:5}));l_={firstframe:30,lastframe:45,frames:mN,endfunc:aN};var fN=Array.from({length:16},()=>({ai:QL,dist:10}));Au={firstframe:46,lastframe:61,frames:fN,endfunc:dr};var hN=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=c_:t>5&&t<12&&(n=sN),{ai:wu,dist:0,think:n}});eN={firstframe:62,lastframe:77,frames:hN,endfunc:dr};var _N=Array.from({length:20},(e,t)=>({ai:wu,dist:0,think:t%2===0&&t>5?oN:null}));tN={firstframe:78,lastframe:97,frames:_N,endfunc:dr};var gN=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=c_:(t===8||t===12||t===16)&&(n=cN),{ai:wu,dist:0,think:n}});nN={firstframe:98,lastframe:115,frames:gN,endfunc:lN};var vN=Array.from({length:6},()=>({ai:u_,dist:0}));iN={firstframe:116,lastframe:121,frames:vN,endfunc:dr};var pN=Array.from({length:16},()=>({ai:u_,dist:0}));d_={firstframe:122,lastframe:137,frames:pN,endfunc:uN};U();var Su=.1;function yN(e,t,n){z(e,Su,n)}function ku(e,t,n){ue(e,t,Su,n)}function wN(e,t,n){le(e,t,Su,n)}var Eu,m_,AN,SN,f_;function kN(e){e.monsterinfo.current_move=Eu}function xu(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=m_:e.monsterinfo.current_move=Eu}function EN(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),_t(e,i,r,2,1e3,1,0,t)}var xN=Array.from({length:1},()=>({ai:yN,dist:0}));Eu={firstframe:0,lastframe:0,frames:xN,endfunc:kN};var bN=Array.from({length:1},()=>({ai:ku,dist:0}));m_={firstframe:0,lastframe:0,frames:bN,endfunc:xu};var TN=Array.from({length:8},(e,t)=>({ai:wN,dist:0,think:t===4?EN:void 0}));AN={firstframe:1,lastframe:8,frames:TN,endfunc:xu};var MN=Array.from({length:2},()=>({ai:ku,dist:0}));SN={firstframe:9,lastframe:10,frames:MN,endfunc:xu};var RN=Array.from({length:4},()=>({ai:ku,dist:0}));function zN(e){e.monsterinfo.nextframe=f_.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}f_={firstframe:11,lastframe:14,frames:RN,endfunc:zN};U();var Ka=.1;var $i=()=>Math.random(),$a=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;function ei(e,t,n){z(e,Ka,n)}function Un(e,t,n){N(e,t,Ka,n)}function He(e,t,n){ue(e,t,Ka,n)}function $(e,t,n){le(e,t,Ka,n)}function Ce(e,t,n){_(e,t)}var bu,h_,__,Xa,Tu,LN,g_,NN,v_,p_,y_,w_,A_,ON,IN,CN,PN,DN,FN,UN,BN,GN,HN,Ya=2,S_=80,WN=100;var VN=8;var Mu=32;function ti(e,t){!(e.spawnflags&Mu)&&e.waterlevel>=Ya&&iO(e)}function KN(e){e.waterlevel>=Ya?(e.flags|=2,e.monsterinfo.current_move=h_):e.monsterinfo.current_move!==Tu&&(e.monsterinfo.current_move=bu)}function k_(e){e.flags|=2,e.monsterinfo.current_move=__}function ja(e,t){if(!e.enemy)return;let n=$a(5,10),i=100,r=P(e.enemy.origin,e.origin);Fe(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck2.wav",1,1,0),he(e.enemy,e,e,G(r),e.enemy.origin,V,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function Ru(e,t){if(!e.enemy)return;let n=$a(5,10),i=100,r=P(e.enemy.origin,e.origin);Fe(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck3.wav",1,1,0),he(e.enemy,e,e,G(r),e.enemy.origin,V,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function zu(e,t){if(!e.enemy)return;let n=5,i=S_,r=P(e.enemy.origin,e.origin);Fe(r)<=i&&he(e.enemy,e,e,G(r),e.enemy.origin,V,n,0,0,0,t.timeSeconds)}function $N(e){e.monsterinfo.current_move=Tu}function E_(e){$i()>.75&&e.health<e.max_health&&(e.monsterinfo.nextframe=0)}function x_(e,t){let n=$a(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 b_(e,t){if(e.spawnflags&VN){let n=$i();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+=$a(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 Rt(e){!(e.spawnflags&Mu)&&e.waterlevel>=Ya?e.monsterinfo.current_move=Xa:e.monsterinfo.current_move=p_}function XN(e){!(e.spawnflags&Mu)&&e.waterlevel>=Ya?e.monsterinfo.current_move=Xa:e.monsterinfo.current_move=v_}function T_(e){if(!e.enemy||e.enemy.health<=0)return;Fe(P(e.enemy.origin,e.origin))<=S_&&(e.frame===114?e.monsterinfo.current_move=w_:e.frame===123&&(e.monsterinfo.current_move=y_))}function YN(e,t,n,i,r,a){let s=Zi(a,e,t,n,i,r,0);s.model="models/objects/loogy/tris.md2"}function jN(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=Kn(e.enemy.origin);u.z+=e.enemy.viewheight||0;let c=G(P(u,o));YN(e,o,c,5,550,t),t.engine.sound?.(e,0,"gek/gk_atck4.wav",1,1,0)}function ZN(e){if($i()>.8&&e.health<e.max_health){e.monsterinfo.current_move=g_;return}if(e.enemy&&e.enemy.health>0){let t=Fe(P(e.enemy.origin,e.origin));$i()>.7&&t<=WN&&(e.monsterinfo.current_move=A_)}}function qN(e,t,n,i){if(e.health<=0){e.touch=void 0;return}e.touch=void 0}function JN(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=qN}function QN(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.velocity=V;return}}function on(e){e.groundentity&&(e.velocity=V)}function eO(e,t){}function Za(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.nextthink=-1}function M_(e,t){Nh(t,e.origin,20),e.deadflag=2}function tO(e,t){$i()>.9&&M_(e,t)}function nO(e){e.maxs.z=0}function iO(e){e.flags|=2,e.yaw_speed=10,e.viewheight=10,e.monsterinfo.current_move=Xa,e.mins={x:-18,y:-18,z:-24},e.maxs={x:18,y:18,z:16}}var R_=Array(38).fill({ai:ei,dist:0});R_[38]={ai:ei,dist:0,think:ti};bu={firstframe:0,lastframe:38,frames:R_,endfunc:null};var rO=Array(32).fill({ai:ei,dist:14});h_={firstframe:39,lastframe:70,frames:rO,endfunc:null};var aO=Array(32).fill({ai:He,dist:14});__={firstframe:39,lastframe:70,frames:aO,endfunc:k_};var qa=Array(32).fill({ai:He,dist:14});qa[8]={ai:He,dist:18,think:ja};qa[14]={ai:He,dist:24,think:Ru};qa[20]={ai:He,dist:22,think:zu};Xa={firstframe:39,lastframe:70,frames:qa,endfunc:k_};var Lu=Array(32).fill({ai:ei,dist:0});Lu[0]={ai:ei,dist:0,think:b_};Lu[31]={ai:ei,dist:0,think:E_};LN={firstframe:71,lastframe:102,frames:Lu,endfunc:KN};var Ja=Array(32).fill({ai:Ce,dist:0});Ja[0]={ai:Ce,dist:0,think:b_};Ja[31]={ai:Ce,dist:0,think:E_};g_={firstframe:71,lastframe:102,frames:Ja,endfunc:e=>hO(e,bu)};Tu={firstframe:71,lastframe:102,frames:Ja,endfunc:$N};var sO=[{ai:Un,dist:3.8,think:ti},{ai:Un,dist:19.6},{ai:Un,dist:25.5},{ai:Un,dist:34.6,think:x_},{ai:Un,dist:27.3},{ai:Un,dist:28.4}];NN={firstframe:103,lastframe:108,frames:sO,endfunc:null};var oO=[{ai:He,dist:3.8,think:ti},{ai:He,dist:19.6},{ai:He,dist:25.5},{ai:He,dist:34.6,think:x_},{ai:He,dist:27.3},{ai:He,dist:28.4}];v_={firstframe:103,lastframe:108,frames:oO,endfunc:null};var cO=[{ai:He,dist:.2},{ai:He,dist:19.7}];p_={firstframe:0,lastframe:1,frames:cO,endfunc:XN};var uO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:jN},{ai:$,dist:0,think:ZN}];A_={firstframe:133,lastframe:139,frames:uO,endfunc:Rt};var lO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:ja},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:T_}];y_={firstframe:109,lastframe:117,frames:lO,endfunc:Rt};var dO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:ja},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:Ru},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:T_}];w_={firstframe:118,lastframe:126,frames:dO,endfunc:Rt};var z_=[{ai:$,dist:0},{ai:$,dist:-.3},{ai:$,dist:-1.1},{ai:$,dist:-.2},{ai:$,dist:6.7,think:JN},{ai:$,dist:6.4},{ai:$,dist:.1},{ai:$,dist:28.3},{ai:$,dist:24.1},{ai:$,dist:31.7},{ai:$,dist:35.9,think:QN},{ai:$,dist:12.3,think:on},{ai:$,dist:20.1,think:on},{ai:$,dist:-1,think:on},{ai:$,dist:2.5,think:on},{ai:$,dist:.5,think:on},{ai:$,dist:1.8,think:on},{ai:$,dist:1.2,think:on},{ai:$,dist:-.4,think:ti}];ON={firstframe:140,lastframe:158,frames:z_,endfunc:Rt};IN={firstframe:140,lastframe:158,frames:z_,endfunc:Rt};var ni=Array(21).fill({ai:$,dist:16});ni[0]={ai:$,dist:16,think:eO};ni[4]={ai:$,dist:16,think:zu};ni[9]={ai:$,dist:16,think:zu};ni[13]={ai:$,dist:16,think:ja};ni[18]={ai:$,dist:16,think:Ru};CN={firstframe:159,lastframe:179,frames:ni,endfunc:Rt};var mO=Array(6).fill({ai:Ce,dist:0});PN={firstframe:180,lastframe:185,frames:mO,endfunc:Rt};var L_=Array(11).fill({ai:Ce,dist:0});L_[10]={ai:Ce,dist:0,think:ti};DN={firstframe:186,lastframe:196,frames:L_,endfunc:Rt};var N_=Array(13).fill({ai:Ce,dist:0});N_[12]={ai:Ce,dist:0,think:ti};FN={firstframe:197,lastframe:209,frames:N_,endfunc:Rt};var O_=Array(10).fill({ai:Ce,dist:0});O_[5]={ai:Ce,dist:-7,think:nO};UN={firstframe:210,lastframe:219,frames:O_,endfunc:Za};var I_=Array(7).fill({ai:Ce,dist:0});I_[5]={ai:Ce,dist:-7,think:tO};BN={firstframe:220,lastframe:226,frames:I_,endfunc:Za};var C_=Array(35).fill({ai:Ce,dist:0});C_[34]={ai:Ce,dist:0,think:M_};GN={firstframe:227,lastframe:261,frames:C_,endfunc:Za};var fO=Array(45).fill({ai:Ce,dist:0});HN={firstframe:262,lastframe:306,frames:fO,endfunc:Za};function hO(e,t){e.monsterinfo.current_move=t}U();var Nu=.1,_O=()=>Math.random(),nh=()=>Math.random();function gO(e,t,n){N(e,t,Nu,n)}function vO(e,t,n){ue(e,t,Nu,n)}function Qa(e,t,n){le(e,t,Nu,n)}function tt(e,t,n){_(e,t)}var Xi,pO,Ou,P_,D_,yO,wO,AO,SO,kO,EO,xO,bO=1;function TO(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)&&mn(e,a,t.trace)){if(!r){r=a;continue}a.max_health<=r.max_health||(r=a)}return r}function MO(e,t){if(e.enemy)return;let n=TO(e,t);n?(e.enemy=n,e.monsterinfo.aiflags|=8192,mr(e),void 0):_O()<.1&&t.engine.sound?.(e,0,"flyer/flysght1.wav",1,1,0)}function RO(e,t){if(!e.enemy||!e.enemy.inUse){e.monsterinfo.current_move=Ou;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=Kn(e.enemy.origin);r.z+=e.enemy.viewheight||0;let a=G(P(r,i));_t(e,i,a,15,1e3,bO,0,t)}function zO(e,t){if(!e.enemy||!e.enemy.inUse||e.enemy.health<=-40){e.monsterinfo.current_move=Xi,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=Xi,e.monsterinfo.aiflags&=-8193,e.enemy=null)}function LO(e,t){if(nh()>.8){let n=nh();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 mr(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Xi:e.monsterinfo.current_move=Ou}function NO(e){e.monsterinfo.aiflags&8192?e.monsterinfo.current_move=D_:e.monsterinfo.current_move=P_}function Iu(e){e.goalentity&&e.goalentity.health>0||(e.monsterinfo.current_move=Xi)}var F_=Array(19).fill({ai:tt,dist:0});F_[18]={ai:tt,dist:0,think:MO};Xi={firstframe:58,lastframe:76,frames:F_,endfunc:null};var OO=[{ai:gO,dist:5}];pO={firstframe:0,lastframe:0,frames:OO,endfunc:null};var IO=[{ai:vO,dist:10}];Ou={firstframe:0,lastframe:0,frames:IO,endfunc:null};var U_=Array(31).fill({ai:Qa,dist:0});U_[20]={ai:Qa,dist:0,think:RO};P_={firstframe:121,lastframe:151,frames:U_,endfunc:mr};var CO=Array(6).fill({ai:Qa,dist:0,think:zO});D_={firstframe:115,lastframe:120,frames:CO,endfunc:null};var B_=Array(10).fill({ai:tt,dist:0});B_[9]={ai:tt,dist:0,think:Iu};yO={firstframe:77,lastframe:86,frames:B_,endfunc:null};var G_=Array(7).fill({ai:tt,dist:0,think:LO});G_[6]={ai:tt,dist:0,think:Iu};wO={firstframe:87,lastframe:93,frames:G_,endfunc:null};var H_=Array(7).fill({ai:tt,dist:-2});H_[6]={ai:tt,dist:-2,think:Iu};AO={firstframe:94,lastframe:100,frames:H_,endfunc:null};var PO=[{ai:Qa,dist:0}];SO={firstframe:0,lastframe:0,frames:PO,endfunc:NO};var DO=[{ai:tt,dist:-1}];kO={firstframe:0,lastframe:0,frames:DO,endfunc:mr};var FO=Array(8).fill({ai:tt,dist:0});EO={firstframe:107,lastframe:114,frames:FO,endfunc:mr};var UO=Array(6).fill({ai:tt,dist:0});xO={firstframe:101,lastframe:106,frames:UO,endfunc:mr};var tP=new Map(vc.map(e=>[e.name,e]));U();var BO=2166136261,GO=16777619;function W_(e,t){let n=e>>>0;for(let i=0;i<t.length;i+=1)n^=t[i]&255,n=Math.imul(n,GO)>>>0;return n>>>0}function Hn(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let r=new Uint8Array(n);return W_(e,r)}function mc(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i)&255;return W_(e,n)}var qo=2,HO=1;function Ve(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 Wn(e,t,n){return e===void 0?n:ve(e,t)}function _a(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function ua(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 WO(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Ve(e,"level");return{frameNumber:Wn(t.frameNumber,"level.frameNumber",0),timeSeconds:Wn(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:Wn(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:Wn(t.deltaSeconds,"level.deltaSeconds",0)}}function VO(e){if(e===void 0)return new _c().getState();let t=Ve(e,"rng"),n=Ve(t.mt,"rng.mt"),i=ua(n.state,"rng.mt.state");return{mt:{index:ve(n.index,"rng.mt.index"),state:i}}}function KO(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=Ve(t,`thinks[${n}]`);return{time:ve(i.time,`thinks[${n}].time`),entityIndex:ve(i.entityIndex,`thinks[${n}].entityIndex`)}})}function $O(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=Ve(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 XO(e){if(e===void 0)return{};let t=Ve(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=Ve(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 YO(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let i=Ve(t,`entities[${n}]`);return{index:ve(i.index,`entities[${n}].index`),fields:XO(i.fields)}})}function jO(e){let t=Ve(e,"pool");return{capacity:ve(t.capacity,"pool.capacity"),activeOrder:ua(t.activeOrder,"pool.activeOrder"),freeList:ua(t.freeList,"pool.freeList"),pendingFree:ua(t.pendingFree,"pool.pendingFree")}}function ZO(e){let t=Ve(e,"entities");return{timeSeconds:ve(t.timeSeconds,"entities.timeSeconds"),pool:jO(t.pool),entities:YO(t.entities),thinks:KO(t.thinks),awareness:$O(t.awareness),crossLevelFlags:Wn(t.crossLevelFlags,"entities.crossLevelFlags",0),crossUnitFlags:Wn(t.crossUnitFlags,"entities.crossUnitFlags",0)}}function qO(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=Ve(t,`cvars[${n}]`);return{name:_a(i.name,`cvars[${n}].name`),value:_a(i.value,`cvars[${n}].value`),flags:ve(i.flags,`cvars[${n}].flags`)}})}function JO(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>_a(t,`configstrings[${n}]`))}function QO(e){return e===void 0?{}:Ve(e,"gameState")}function xt(e,t){if(t==null)return e;if(typeof t=="number")return Hn(e,t);if(typeof t=="string")return mc(e,t);if(typeof t=="boolean")return Hn(e,t?1:0);if(Array.isArray(t)){let n=e;for(let i of t)n=xt(n,i);return n}if(typeof t=="object"){let n=e,i=Object.keys(t).sort();for(let r of i)n=mc(n,r),n=xt(n,t[r]);return n}return e}function eI(e){let t=BO;return t=Hn(t,e.version),t=Hn(t,e.timestamp),t=mc(t,e.map),t=Hn(t,e.difficulty),t=Hn(t,e.playtimeSeconds),t=xt(t,e.gameState),t=xt(t,e.level),t=xt(t,e.rng),t=xt(t,e.entities),t=xt(t,e.cvars),t=xt(t,e.configstrings),e.player&&(t=xt(t,e.player)),t>>>0}function V_(e,t={}){let{allowNewerVersion:n=!0}=t,i=typeof e=="string"?JSON.parse(e):e,r=Ve(i,"save"),a=r.version??qo,s=ve(a,"version");if(s<HO)throw new Error(`Unsupported save version ${s}`);if(s>qo&&!n)throw new Error(`Save version ${s} is newer than supported ${qo}`);let o={version:s,timestamp:ve(r.timestamp,"timestamp"),map:_a(r.map,"map"),difficulty:ve(r.difficulty,"difficulty"),playtimeSeconds:ve(r.playtimeSeconds,"playtimeSeconds"),gameState:QO(r.gameState),level:WO(r.level),rng:VO(r.rng),entities:ZO(r.entities),cvars:qO(r.cvars),configstrings:JO(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=eI(o);if(u!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${u}`)}return o}U();var nP=new Set(vc.filter(e=>e.save).map(e=>e.name));var ih=globalThis.TextEncoder;function Vn(e){return V_({...e},{allowNewerVersion:!0})}function tI(e){return ih?new ih().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var nI=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:Vn(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:Vn(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:Vn(e.save)}))}},iI=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:Vn(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:Vn(t.save)}))}},Cu=class Fi{constructor(t={}){let{dbName:n=Fi.DEFAULT_DB_NAME,storeName:i=Fi.DEFAULT_STORE}=t,r=t.indexedDB??globalThis.indexedDB;r?this.adapter=new iI(r,n,i):this.adapter=new nI}async save(t,n,i={}){let r=Vn(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:tI(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 V_(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(Fi.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(Fi.QUICK_SLOT,t)}};Cu.DEFAULT_DB_NAME="quake2ts-saves";Cu.DEFAULT_STORE="saves";Cu.QUICK_SLOT="quicksave";U();Kt();U();U();var iP=ji();U();Kt();var rP=[{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 rI=new Map,aI=["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"],K_=async(e,t)=>{for(let n of aI)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);rI.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var sI=new Map,oI=["d_left","d_right","d_up","d_down"],$_=async(e,t)=>{for(let n of oI)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);sI.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Pu=[],cI=0,X_=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);Pu.push(r)}catch(i){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,i)}Pu.length>0&&(cI=Pu[0].width),await Bm(e,t),await K_(e,t),await $_(e,t)};var Du=[{type:"null"},{type:"armor",id:un.BODY},{type:"armor",id:un.COMBAT},{type:"armor",id:un.JACKET},{type:"armor",id:un.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:W.Grapple},{type:"weapon",id:W.Blaster},{type:"weapon",id:W.ChainFist},{type:"weapon",id:W.Shotgun},{type:"weapon",id:W.SuperShotgun},{type:"weapon",id:W.Machinegun},{type:"weapon",id:W.EtfRifle},{type:"weapon",id:W.Chaingun},{type:"ammo",id:I.Grenades},{type:"ammo",id:I.Trap},{type:"ammo",id:I.Tesla},{type:"weapon",id:W.GrenadeLauncher},{type:"weapon",id:W.ProxLauncher},{type:"weapon",id:W.RocketLauncher},{type:"weapon",id:W.HyperBlaster},{type:"weapon",id:W.IonRipper},{type:"weapon",id:W.PlasmaBeam},{type:"weapon",id:W.Railgun},{type:"weapon",id:W.Phalanx},{type:"weapon",id:W.BFG10K},{type:"weapon",id:W.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}];var uI=32768,es=class{constructor(t,n){this.configstrings=new Array(uI).fill("");this.entities=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.baselines.clear(),this.latestFrame=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.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&Od){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=An();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&lo&&(t.modelindex=n.modelindex),i&ho&&(t.modelindex2=n.modelindex2),i&_o&&(t.modelindex3=n.modelindex3),i&go&&(t.modelindex4=n.modelindex4),i&so&&(t.frame=n.frame),i&fo&&(t.frame=n.frame),(i&zr||i&Or)&&(t.skinnum=n.skinnum),(i&Rr||i&Nr)&&(t.effects=n.effects),(i&Mr||i&Lr)&&(t.renderfx=n.renderfx),i&no&&(t.origin.x=n.origin.x),i&io&&(t.origin.y=n.origin.y),i&co&&(t.origin.z=n.origin.z),i&uo&&(t.angles.x=n.angles.x),i&ro&&(t.angles.y=n.angles.y),i&ao&&(t.angles.z=n.angles.z),i&vo&&(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&po&&(t.sound=n.sound),i&oo&&(t.event=n.event),i&yo&&(t.solid=n.solid),i&mo&&(t.alpha=n.alpha),i&wo&&(t.scale=n.scale),i&Ao&&(t.instanceBits=n.instanceBits),i&So&&(t.loopVolume=n.loopVolume),r&ko&&(t.loopAttenuation=n.loopAttenuation),r&Eo&&(t.owner=n.owner),r&xo&&(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=Pt,c=jr(this.stats,Ni.QuadDamage)?4:1;switch(n){case em:r=-2,o={x:-2,y:0,z:0};break;case om:r=-4,o={x:-4,y:0,z:0};break;case Qd:r=-1,a=Math.random()-.5;break;case tm:case nm:case im:r=-.5,a=Math.random()-.5;break;case rm:r=-3,o={x:-3,y:0,z:0};break;case am:case sm:r=-2,o={x:-2,y:0,z:0};break;case cm:r=-5,o={x:-2,y:0,z:0};break;case um:case Jd: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>=Du.length)break;let l=Du[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:Li.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:Pt,kick_origin:Pt,gunoffset:Pt,gunangles:Pt,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 an();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>=r&&t<=i){let a=(t-r)/(i-r),s=this.convertFrameToPredictionState(this.previousFrame);return Nn(s,n,Math.max(0,Math.min(1,a)))}}return n}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var ii=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+Mi){let i=t-ye.Models;this.models[i]=n}else if(t>=ye.Sounds&&t<ye.Sounds+Ri){let i=t-ye.Sounds;this.sounds[i]=n}else if(t>=ye.Images&&t<ye.Images+zi){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 ts=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 ns=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} (${Y_(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} (${Y_(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 Y_(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 is=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 fr=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 rs=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 as=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 ss=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 j_(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,f)=>{let d=c+40+f*o,h=l.label;if(l.type==="input"&&l.getValue){if(h+=`: ${l.getValue()}`,f===t.selectedIndex){let g=Date.now();Math.floor(g/500)%2===0&&(h+="_")}}else l.type==="toggle"&&l.getValue&&(h+=`: ${l.getValue()}`);if(f===t.selectedIndex){let y=h.replace(/\^[0-9]/g,"").length*8,T=(n-y)/2;e.drawString(T-16,d,"\r")}e.drawCenterString(d,h)})}var hr=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&Ti.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 os=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 cs=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 us=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 ls=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}`)}};function ri(e,t,n){return e+(t-e)*n}function Fu(e,t,n){return ri(e,t,n)}function Z_(e,t,n,i,r){let a=[],s=r.engine.assets;if(!s)return a;let o=new Map(t.map(u=>[u.number,u]));for(let u of e){let c=o.get(u.number)??u,l=i.getModelName(u.modelIndex);if(!l)continue;let f=s.getMd2Model(l)||s.getMd3Model(l);if(!f)continue;let d={x:ri(c.origin.x,u.origin.x,n),y:ri(c.origin.y,u.origin.y,n),z:ri(c.origin.z,u.origin.z,n)},h={x:Fu(c.angles.x,u.angles.x,n),y:Fu(c.angles.y,u.angles.y,n),z:Fu(c.angles.z,u.angles.z,n)},g=u.frame,w=c.frame,v=c.scale!==void 0?c.scale:1,y=u.scale!==void 0?u.scale:1,T=ri(v,y,n),S=k=>k===void 0||k===0?255:k,p=S(c.alpha),E=S(u.alpha),x=ri(p,E,n)/255,L=me.create();me.translate(L,L,[d.x,d.y,d.z]),me.rotateZ(L,L,h.z*Math.PI/180),me.rotateY(L,L,h.y*Math.PI/180),me.rotateX(L,L,h.x*Math.PI/180),me.scale(L,L,[T,T,T]),f.header.magic===844121161?a.push({type:"md2",model:f,blend:{frame0:w,frame1:g,lerp:n},transform:L,skin:u.skinNum>0?i.getImageName(u.skinNum):void 0,alpha:x}):f.header.magic===860898377&&a.push({type:"md3",model:f,blend:{frame0:w,frame1:g,lerp:n},transform:L,alpha:x})}return a}var ds=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 ms=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 ds,this.options=t,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;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>qd&&this.commandHistory.shift();let i=new pm;i.writeLong(0),i.writeLong(0),i.writeByte(rn.move),i.writeByte(0),i.writeLong(this.latestServerFrame),gm(i,n),this.driver.send(i.getData())}handleMessage(t){let n=t.buffer;if(n instanceof SharedArrayBuffer){let s=new ArrayBuffer(t.byteLength);new Uint8Array(s).set(t),n=s}let i=new vm(n),r=i.readLong(),a=i.readLong();this.parser=new bo(i,this),this.parser.parseMessage()}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new Oi;t.writeByte(rn.stringcmd),t.writeString("getchallenge"),this.driver.send(t.getData())}sendConnect(t){let n=new Oi;n.writeByte(rn.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 ${Tr} ${t} ${i}`),this.driver.send(n.getData())}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 Oi;o.writeByte(rn.stringcmd),o.writeString("new"),this.driver.send(o.getData()),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 Oi;t.writeByte(rn.stringcmd),t.writeString("begin"),this.driver.send(t.getData()),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 lI=[{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"}],gn=class{constructor(t=lI){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 q_(){return new gn}function Uu(e){return e}function _r(e){return e.trim().toLowerCase()}var dI=250,Bu=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}}},fs=(y=>(y.Forward="+forward",y.Back="+back",y.MoveLeft="+moveleft",y.MoveRight="+moveright",y.MoveUp="+moveup",y.MoveDown="+movedown",y.Jump="+jump",y.Crouch="+crouch",y.Attack="+attack",y.Use="+use",y.Holster="+holster",y.TurnLeft="+left",y.TurnRight="+right",y.LookUp="+lookup",y.LookDown="+lookdown",y.SpeedModifier="+speed",y.Zoom="+zoom",y))(fs||{}),mI={"+attack":ct.Attack,"+use":ct.Use,"+holster":ct.Holster,"+jump":ct.Jump,"+crouch":ct.Crouch},fI=new Map(Object.values(fs).map(e=>[_r(e),e]));function hI(e){return fI.get(_r(e))}function gr(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var ai=class{constructor(t={},n=new gn){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??Wd,this.sideSpeed=t.sideSpeed??Vd,this.upSpeed=t.upSpeed??Kd,this.yawSpeed=t.yawSpeed??$d,this.pitchSpeed=t.pitchSpeed??Xd,this.sensitivity=t.sensitivity??Yd,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=gr()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!0,i,n)}handleKeyUp(t,n=gr()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!1,i,n)}handleMouseButtonDown(t,n=gr()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!0,i,n)}handleMouseButtonUp(t,n=gr()){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=gr(),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 O=this.gamepadLook.y*(this.invertGamepadY?-1:1);l={x:l.x+O*a*this.gamepadLookScale,y:l.y+this.gamepadLook.x*r*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let O=this.touchLook.y*(this.invertMouseY?-1:1);l={x:l.x+O*a,y:l.y+this.touchLook.x*r,z:0}}if(this.pointerLocked||!this.requirePointerLock){let O=this.sampleMouseDelta(),J=Zd(O,{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 f=jd(this.viewAngles,l);this.viewAngles=f;let d=this.sample("+forward",t,n),h=this.sample("+back",t,n),g=this.sample("+moveleft",t,n),w=this.sample("+moveright",t,n),v=this.sample("+moveup",t,n),y=this.sample("+movedown",t,n),T=this.sample("+speed",t,n),S=this.sample("+jump",t,n),p=this.sample("+crouch",t,n),E=this.runByDefault?T.active?.5:1:T.active?1:.5,b=this.forwardSpeed*(d.fraction-h.fraction)*E,x=this.sideSpeed*(w.fraction-g.fraction)*E,L=this.upSpeed*(v.fraction-y.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(b+=this.forwardSpeed*this.gamepadMove.y*E,x+=this.sideSpeed*this.gamepadMove.x*E),(this.touchMove.x!==0||this.touchMove.y!==0)&&(b+=this.forwardSpeed*this.touchMove.y*E,x+=this.sideSpeed*this.touchMove.x*E),this.jumpAddsUpMove&&S.fraction>0&&(L+=this.upSpeed*S.fraction),this.crouchAddsDownMove&&p.fraction>0&&(L-=this.upSpeed*p.fraction),b=this.clampMove(b,this.forwardSpeed),x=this.clampMove(x,this.sideSpeed),L=this.clampMove(L,this.upSpeed);let k=this.collectButtonBits(t,n),R=Math.min(Math.max(Math.round(t),1),dI);return(this.anyPressed||k!==ct.None)&&(k|=ct.Any),this.anyPressed=!1,{msec:R,buttons:k,angles:{...this.viewAngles},forwardmove:b,sidemove:x,upmove:L,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,f=this.gamepadButtonCode(a,u);l&&i.add(f);let d=this.gamepadButtons.get(f)??!1;l!==d&&(this.applyCommand(this.bindings.getBinding(f),l,f,t),this.gamepadButtons.set(f,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=hI(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=ct.None;for(let[r,a]of Object.entries(mI)){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 Bu,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 hs=class{constructor(t,n=new ai(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 _s={x:0,y:0,z:0},J_=(i=>(i[i.Normal=0]="Normal",i[i.DemoPlayback=1]="DemoPlayback",i[i.Multiplayer=2]="Multiplayer",i))(J_||{});function _I(e){let t=M=>{let H={x:0,y:0,z:0};return e.engine.trace(M,M,H,H).contents||0},n=new na(e.engine.trace,t),i=new ta,r=new Cd,a=new es(e);a.setView(i);let s=!1,o=null,u=0,c=new is,l=new cs,f=new us,d=new ls,h=new hr(new os),g,w,v=new ii,y,T=0,S=!1,E=Um(e,{get tickRate(){return 10},get frameTimeMs(){return y?.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 S}}),b=Fm(E),x=new ms({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}}),L=new ss(c,x);a.setCallbacks({onCenterPrint:M=>b.ParseCenterPrint(M,0,!1),onPrint:(M,H)=>b.NotifyMessage(0,H,!1),onConfigString:(M,H)=>{v.set(M,H),b.ParseConfigString(M,H)},onServerData:(M,H)=>{H&&H>0?r.setFrameDuration(1e3/H):r.setFrameDuration(100)}}),r.setHandler(a);let k,R,O,J=90,oe=!1;if(e.host){w=new fr(c,e.host),g=new as(c,w,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)});h.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=Gm();console.log(`Crosshair changed to index ${M}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{oe=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{oe=!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}...`),x.connect(H).catch(ee=>{console.error("Failed to connect:",ee),f.show("Connection Failed",ee instanceof Error?ee.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{x.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Ti.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:f,init(M){this.Init(M)},Init(M){y=M,M?.state&&n.setAuthoritative(M),b.Init(),e.engine.assets&&e.engine.renderer&&(l.start(100,"Loading assets..."),X_(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(),x.isConnected()&&x.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}));h.saveCvars(M)}}else g&&c.pushMenu(g.createPauseMenu())},createMainMenu(M,H,ee,gt,be){let ze=new ns(c,H,ee,gt,be),vt=w;if(!vt){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");vt=new fr(c,e.host)}let vn=e.engine.assets,Q_={findByExtension:pn=>vn?vn.listFiles(pn):[]},eg=new rs(c,Q_,pn=>{console.log(`Starting map: ${pn}`),e.host?.commands.execute(`map ${pn}`)}),tg=new ts(c,ze,{...M,optionsFactory:vt,mapsFactory:eg,multiplayerFactory:L,onSetDifficulty:pn=>{e.host?.cvars&&e.host.cvars.setValue("skill",pn.toString())}});return{menuSystem:c,factory:tg}},render(M){let H=[];if(s){let be=M.nowMs,ze=T>0?Math.max(0,be-T):0;T=be,r.update(ze),k=a.getPredictionState(r.getCurrentTime())}else T=M.nowMs,M.latest?.state&&(n.setAuthoritative(M.latest),y=M.latest),M.previous?.state&&M.latest?.state?(k=Nn(M.previous.state,M.latest.state,M.alpha),M.latest.state.packetEntities&&M.previous.state.packetEntities&&(H=Z_(M.latest.state.packetEntities,M.previous.state.packetEntities,M.alpha,v,e))):k=M.latest?.state??M.previous?.state??n.getPredictedState();let ee=M.latest&&M.previous?Math.max(0,M.latest.timeMs-M.previous.timeMs):0;R=i.sample(k,ee);let gt={};if(k){let{origin:be,viewAngles:ze}=k;O=new ql,O.position=_e.fromValues(be.x,be.y,be.z);let vt=R?.offset??{x:0,y:0,z:0};_e.add(O.position,O.position,[vt.x,vt.y,vt.z]);let vn=R?.angles??{x:0,y:0,z:0};O.angles=_e.fromValues(ze.x+vn.x,ze.y+vn.y,ze.z+vn.z),O.fov=oe?40:J,O.aspect=4/3,e.engine.renderer&&(O.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&O){let be;if(e.engine.assets){let ze=v.getModelName(1);if(ze){let vt=e.engine.assets.getMap(ze)}}e.engine.renderer.renderFrame({camera:O,world:be,dlights:[]},H)}if(e.engine.renderer&&k&&k.client){let be=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},ze=M.latest?.timeMs??0;this.DrawHUD(be,ze)}return gt},DrawHUD(M,H){if(!e.engine.renderer)return;let ee=e.engine.renderer,gt=ee.width,be=ee.height;if(k&&k.client){let ze={origin:k.origin,velocity:k.velocity,viewAngles:k.viewAngles,onGround:zn(k.pmFlags,At.OnGround),waterLevel:k.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:k.damageAlpha??0,damageIndicators:k.damageIndicators??[],blend:k.blend??[0,0,0,0],pickupIcon:k.pickupIcon,centerPrint:void 0,notify:void 0,stats:k.stats?[...k.stats]:new Array(32).fill(0),kick_angles:_s,kick_origin:_s,gunoffset:_s,gunangles:_s,gunindex:0,pm_type:k.pm_type??0,pm_time:k.pm_time??0,pm_flags:k.pmFlags,gun_frame:k.gun_frame??0,rdflags:k.rdflags??0,fov:k.fov??90};ze.stats[Oe.STAT_HEALTH]=k.health??0,ze.stats[Oe.STAT_AMMO]=k.ammo??0,ze.stats[Oe.STAT_ARMOR]=k.armor??0,ee.begin2D(),b.DrawHUD(0,null,{x:0,y:0,width:gt,height:be},{x:0,y:0,width:gt,height:be},1,0,ze),ee.end2D()}c.isActive()&&j_(e.engine.renderer,c.getState(),e.engine.renderer.width,e.engine.renderer.height),k&&k.client&&d.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,k.client),f.render(e.engine.renderer),l.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(b.Shutdown(),y=void 0,k=void 0,e.host?.cvars){let M=e.host.cvars.list().map(H=>({name:H.name,value:H.string,flags:H.flags}));h.saveCvars(M)}},get prediction(){return n},get lastRendered(){return k},get view(){return i},get lastView(){return R},get camera(){return O},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,T=0,v.clear()},stopDemoPlayback(){r.stop(),s=!1,o=null,u=0},ParseCenterPrint(M){b.ParseCenterPrint(M,0,!1)},ParseNotify(M){b.NotifyMessage(0,M,!1)},showSubtitle(M,H){b.ShowSubtitle(M,H)},ParseConfigString(M,H){v.set(M,H),b.ParseConfigString(M,H)},demoHandler:a,multiplayer:x,configStrings:v}}return sg(gI);})();
|
|
169
|
+
}`;var Jd=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*si,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;me.perspective(this._projectionMatrix,this._fov*si,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*si,a=n*si,s=i*si,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),d=_e.negate(_e.create(),c),f=_e.create();_e.transformMat4(f,d,o);let l=_e.fromValues(f[1]||0,f[2]||0,f[0]||0);me.copy(this._viewMatrix,u),this._viewMatrix[12]=l[0],this._viewMatrix[13]=l[1],this._viewMatrix[14]=l[2],me.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var Fp=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 Ps(t)}}reset(){this.offset=0}getOffset(){return this.offset}},Dp=4,rd=0,ad=1,Up=2;function xn(e){let t=e.length;for(;--t>=0;)e[t]=0}var Bp=0,Qd=1,Gp=2,Hp=3,Wp=258,Zs=29,Ai=256,fi=Ai+1+Zs,Sn=30,js=19,el=2*fi+1,Zt=15,Ss=16,Vp=7,qs=256,tl=16,nl=17,il=18,Ds=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]),kr=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]),Kp=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),rl=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),$p=512,yt=new Array((fi+2)*2);xn(yt);var di=new Array(Sn*2);xn(di);var hi=new Array($p);xn(hi);var _i=new Array(Wp-Hp+1);xn(_i);var Js=new Array(Zs);xn(Js);var Er=new Array(Sn);xn(Er);function ks(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 al,sl,ol;function Es(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var cl=e=>e<256?hi[e]:hi[256+(e>>>7)],gi=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Pe=(e,t,n)=>{e.bi_valid>Ss-n?(e.bi_buf|=t<<e.bi_valid&65535,gi(e,e.bi_buf),e.bi_buf=t>>Ss-e.bi_valid,e.bi_valid+=n-Ss):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},it=(e,t,n)=>{Pe(e,n[t*2],n[t*2+1])},ul=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},Xp=e=>{e.bi_valid===16?(gi(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)},Yp=(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,d,f,l,h,g,w=0;for(l=0;l<=Zt;l++)e.bl_count[l]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<el;c++)d=e.heap[c],l=n[n[d*2+1]*2+1]+1,l>u&&(l=u,w++),n[d*2+1]=l,!(d>i)&&(e.bl_count[l]++,h=0,d>=o&&(h=s[d-o]),g=n[d*2],e.opt_len+=g*(l+h),a&&(e.static_len+=g*(r[d*2+1]+h)));if(w!==0){do{for(l=u-1;e.bl_count[l]===0;)l--;e.bl_count[l]--,e.bl_count[l+1]+=2,e.bl_count[u]--,w-=2}while(w>0);for(l=u;l!==0;l--)for(d=e.bl_count[l];d!==0;)f=e.heap[--c],!(f>i)&&(n[f*2+1]!==l&&(e.opt_len+=(l-n[f*2+1])*n[f*2],n[f*2+1]=l),d--)}},dl=(e,t,n)=>{let i=new Array(Zt+1),r=0,a,s;for(a=1;a<=Zt;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]=ul(i[o]++,o))}},Zp=()=>{let e,t,n,i,r,a=new Array(Zt+1);for(n=0,i=0;i<Zs-1;i++)for(Js[i]=n,e=0;e<1<<Ds[i];e++)_i[n++]=i;for(_i[n-1]=i,r=0,i=0;i<16;i++)for(Er[i]=r,e=0;e<1<<kr[i];e++)hi[r++]=i;for(r>>=7;i<Sn;i++)for(Er[i]=r<<7,e=0;e<1<<kr[i]-7;e++)hi[256+r++]=i;for(t=0;t<=Zt;t++)a[t]=0;for(e=0;e<=143;)yt[e*2+1]=8,e++,a[8]++;for(;e<=255;)yt[e*2+1]=9,e++,a[9]++;for(;e<=279;)yt[e*2+1]=7,e++,a[7]++;for(;e<=287;)yt[e*2+1]=8,e++,a[8]++;for(dl(yt,fi+1,a),e=0;e<Sn;e++)di[e*2+1]=5,di[e*2]=ul(e,5);al=new ks(yt,Ds,Ai+1,fi,Zt),sl=new ks(di,kr,0,Sn,Zt),ol=new ks(new Array(0),Kp,0,js,Vp)},ll=e=>{let t;for(t=0;t<fi;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Sn;t++)e.dyn_dtree[t*2]=0;for(t=0;t<js;t++)e.bl_tree[t*2]=0;e.dyn_ltree[qs*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},ml=e=>{e.bi_valid>8?gi(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},sd=(e,t,n,i)=>{let r=t*2,a=n*2;return e[r]<e[a]||e[r]===e[a]&&i[t]<=i[n]},xs=(e,t,n)=>{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r<e.heap_len&&sd(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!sd(t,i,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=i},od=(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?it(e,r,t):(s=_i[r],it(e,s+Ai+1,t),o=Ds[s],o!==0&&(r-=Js[s],Pe(e,r,o)),i--,s=cl(i),it(e,s,n),o=kr[s],o!==0&&(i-=Er[s],Pe(e,i,o)));while(a<e.sym_next);it(e,qs,t)},Us=(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=el,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--)xs(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],xs(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++,xs(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],Yp(e,t),dl(n,u,e.bl_count)},cd=(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[tl*2]++):o<=10?e.bl_tree[nl*2]++:e.bl_tree[il*2]++,o=0,r=a,s===0?(u=138,c=3):a===s?(u=6,c=3):(u=7,c=4))},ud=(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 it(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(it(e,a,e.bl_tree),o--),it(e,tl,e.bl_tree),Pe(e,o-3,2)):o<=10?(it(e,nl,e.bl_tree),Pe(e,o-3,3)):(it(e,il,e.bl_tree),Pe(e,o-11,7));o=0,r=a,s===0?(u=138,c=3):a===s?(u=6,c=3):(u=7,c=4)}},jp=e=>{let t;for(cd(e,e.dyn_ltree,e.l_desc.max_code),cd(e,e.dyn_dtree,e.d_desc.max_code),Us(e,e.bl_desc),t=js-1;t>=3&&e.bl_tree[rl[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},qp=(e,t,n,i)=>{let r;for(Pe(e,t-257,5),Pe(e,n-1,5),Pe(e,i-4,4),r=0;r<i;r++)Pe(e,e.bl_tree[rl[r]*2+1],3);ud(e,e.dyn_ltree,t-1),ud(e,e.dyn_dtree,n-1)},Jp=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return rd;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return ad;for(n=32;n<Ai;n++)if(e.dyn_ltree[n*2]!==0)return ad;return rd},dd=!1,Qp=e=>{dd||(Zp(),dd=!0),e.l_desc=new Es(e.dyn_ltree,al),e.d_desc=new Es(e.dyn_dtree,sl),e.bl_desc=new Es(e.bl_tree,ol),e.bi_buf=0,e.bi_valid=0,ll(e)},fl=(e,t,n,i)=>{Pe(e,(Bp<<1)+(i?1:0),3),ml(e),gi(e,n),gi(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},ey=e=>{Pe(e,Qd<<1,3),it(e,qs,yt),Xp(e)},ty=(e,t,n,i)=>{let r,a,s=0;e.level>0?(e.strm.data_type===Up&&(e.strm.data_type=Jp(e)),Us(e,e.l_desc),Us(e,e.d_desc),s=jp(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?fl(e,t,n,i):e.strategy===Dp||a===r?(Pe(e,(Qd<<1)+(i?1:0),3),od(e,yt,di)):(Pe(e,(Gp<<1)+(i?1:0),3),qp(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),od(e,e.dyn_ltree,e.dyn_dtree)),ll(e),i&&ml(e)},ny=(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[(_i[n]+Ai+1)*2]++,e.dyn_dtree[cl(t)*2]++),e.sym_next===e.sym_end),iy=Qp,ry=fl,ay=ty,sy=ny,oy=ey,cy={_tr_init:iy,_tr_stored_block:ry,_tr_flush_block:ay,_tr_tally:sy,_tr_align:oy},uy=(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},vi=uy,dy=()=>{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},ly=new Uint32Array(dy()),my=(e,t,n,i)=>{let r=ly,a=i+n;e^=-1;for(let s=i;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},Te=my,Jt={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"},tn={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:fy,_tr_stored_block:Bs,_tr_flush_block:hy,_tr_tally:Nt,_tr_align:_y}=cy,{Z_NO_FLUSH:Ot,Z_PARTIAL_FLUSH:gy,Z_FULL_FLUSH:vy,Z_FINISH:$e,Z_BLOCK:ld,Z_OK:Le,Z_STREAM_END:md,Z_STREAM_ERROR:rt,Z_DATA_ERROR:py,Z_BUF_ERROR:bs,Z_DEFAULT_COMPRESSION:yy,Z_FILTERED:wy,Z_HUFFMAN_ONLY:pr,Z_RLE:Ay,Z_FIXED:Sy,Z_DEFAULT_STRATEGY:ky,Z_UNKNOWN:Ey,Z_DEFLATED:Fr}=tn,xy=9,by=15,Ty=8,My=29,Ry=256,Gs=Ry+1+My,zy=30,Ly=19,Ny=2*Gs+1,Oy=15,te=3,Lt=258,at=Lt+te+1,Iy=32,kn=42,Qs=57,Hs=69,Ws=73,Vs=91,Ks=103,jt=113,ci=666,Ne=1,bn=2,Qt=3,Tn=4,Cy=3,qt=(e,t)=>(e.msg=Jt[t],t),fd=e=>e*2-(e>4?9:0),zt=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Py=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)},Fy=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,It=Fy,Ue=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))},Be=(e,t)=>{hy(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Ue(e.strm)},re=(e,t)=>{e.pending_buf[e.pending++]=t},oi=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},$s=(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=vi(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)},hl=(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-at?e.strstart-(e.w_size-at):0,c=e.window,d=e.w_mask,f=e.prev,l=e.strstart+Lt,h=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]!==h||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<l);if(a=Lt-(l-i),i=l-Lt,a>s){if(e.match_start=t,s=a,a>=o)break;h=c[i+s-1],g=c[i+s]}}while((t=f[t&d])>u&&--n!==0);return s<=e.lookahead?s:e.lookahead},En=e=>{let t=e.w_size,n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-at)&&(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),Py(e),i+=t),e.strm.avail_in===0)break;if(n=$s(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=It(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=It(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<at&&e.strm.avail_in!==0)},_l=(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!==$e||t===Ot||i!==r+e.strm.avail_in)))break;s=t===$e&&i===r+e.strm.avail_in?1:0,Bs(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,Ue(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&&($s(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?Tn:t!==Ot&&t!==$e&&e.strm.avail_in===0&&e.strstart===e.block_start?bn:(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&&($s(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===$e)&&t!==Ot&&e.strm.avail_in===0&&r<=a)&&(i=r>a?a:r,s=t===$e&&e.strm.avail_in===0&&i===r?1:0,Bs(e,e.block_start,i,s),e.block_start+=i,Ue(e.strm)),s?Qt:Ne)},Ts=(e,t)=>{let n,i;for(;;){if(e.lookahead<at){if(En(e),e.lookahead<at&&t===Ot)return Ne;if(e.lookahead===0)break}if(n=0,e.lookahead>=te&&(e.ins_h=It(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-at&&(e.match_length=hl(e,n)),e.match_length>=te)if(i=Nt(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=It(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=It(e,e.ins_h,e.window[e.strstart+1]);else i=Nt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Be(e,!1),e.strm.avail_out===0))return Ne}return e.insert=e.strstart<te-1?e.strstart:te-1,t===$e?(Be(e,!0),e.strm.avail_out===0?Qt:Tn):e.sym_next&&(Be(e,!1),e.strm.avail_out===0)?Ne:bn},yn=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<at){if(En(e),e.lookahead<at&&t===Ot)return Ne;if(e.lookahead===0)break}if(n=0,e.lookahead>=te&&(e.ins_h=It(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-at&&(e.match_length=hl(e,n),e.match_length<=5&&(e.strategy===wy||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=Nt(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=It(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&&(Be(e,!1),e.strm.avail_out===0))return Ne}else if(e.match_available){if(i=Nt(e,0,e.window[e.strstart-1]),i&&Be(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Ne}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=Nt(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<te-1?e.strstart:te-1,t===$e?(Be(e,!0),e.strm.avail_out===0?Qt:Tn):e.sym_next&&(Be(e,!1),e.strm.avail_out===0)?Ne:bn},Dy=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=Lt){if(En(e),e.lookahead<=Lt&&t===Ot)return Ne;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+Lt;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=Lt-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=te?(n=Nt(e,1,e.match_length-te),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=Nt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Be(e,!1),e.strm.avail_out===0))return Ne}return e.insert=0,t===$e?(Be(e,!0),e.strm.avail_out===0?Qt:Tn):e.sym_next&&(Be(e,!1),e.strm.avail_out===0)?Ne:bn},Uy=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(En(e),e.lookahead===0)){if(t===Ot)return Ne;break}if(e.match_length=0,n=Nt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Be(e,!1),e.strm.avail_out===0))return Ne}return e.insert=0,t===$e?(Be(e,!0),e.strm.avail_out===0?Qt:Tn):e.sym_next&&(Be(e,!1),e.strm.avail_out===0)?Ne:bn};function nt(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 ui=[new nt(0,0,0,0,_l),new nt(4,4,8,4,Ts),new nt(4,5,16,8,Ts),new nt(4,6,32,32,Ts),new nt(4,4,16,16,yn),new nt(8,16,32,32,yn),new nt(8,16,128,128,yn),new nt(8,32,128,256,yn),new nt(32,128,258,1024,yn),new nt(32,258,258,4096,yn)],By=e=>{e.window_size=2*e.w_size,zt(e.head),e.max_lazy_match=ui[e.level].max_lazy,e.good_match=ui[e.level].good_length,e.nice_match=ui[e.level].nice_length,e.max_chain_length=ui[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 Gy(){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=Fr,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(Ny*2),this.dyn_dtree=new Uint16Array((2*zy+1)*2),this.bl_tree=new Uint16Array((2*Ly+1)*2),zt(this.dyn_ltree),zt(this.dyn_dtree),zt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(Oy+1),this.heap=new Uint16Array(2*Gs+1),zt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Gs+1),zt(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 Si=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==kn&&t.status!==Qs&&t.status!==Hs&&t.status!==Ws&&t.status!==Vs&&t.status!==Ks&&t.status!==jt&&t.status!==ci?1:0},gl=e=>{if(Si(e))return qt(e,rt);e.total_in=e.total_out=0,e.data_type=Ey;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?Qs:t.wrap?kn:jt,e.adler=t.wrap===2?0:1,t.last_flush=-2,fy(t),Le},vl=e=>{let t=gl(e);return t===Le&&By(e.state),t},Hy=(e,t)=>Si(e)||e.state.wrap!==2?rt:(e.state.gzhead=t,Le),pl=(e,t,n,i,r,a)=>{if(!e)return rt;let s=1;if(t===yy&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>xy||n!==Fr||i<8||i>15||t<0||t>9||a<0||a>Sy||i===8&&s!==1)return qt(e,rt);i===8&&(i=9);let o=new Gy;return e.state=o,o.strm=e,o.status=kn,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,vl(e)},Wy=(e,t)=>pl(e,t,Fr,by,Ty,ky),Vy=(e,t)=>{if(Si(e)||t>ld||t<0)return e?qt(e,rt):rt;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===ci&&t!==$e)return qt(e,e.avail_out===0?bs:rt);let i=n.last_flush;if(n.last_flush=t,n.pending!==0){if(Ue(e),e.avail_out===0)return n.last_flush=-1,Le}else if(e.avail_in===0&&fd(t)<=fd(i)&&t!==$e)return qt(e,bs);if(n.status===ci&&e.avail_in!==0)return qt(e,bs);if(n.status===kn&&n.wrap===0&&(n.status=jt),n.status===kn){let r=Fr+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=pr||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,r|=a<<6,n.strstart!==0&&(r|=Iy),r+=31-r%31,oi(n,r),n.strstart!==0&&(oi(n,e.adler>>>16),oi(n,e.adler&65535)),e.adler=1,n.status=jt,Ue(e),n.pending!==0)return n.last_flush=-1,Le}if(n.status===Qs){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>=pr||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=Hs;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>=pr||n.level<2?4:0),re(n,Cy),n.status=jt,Ue(e),n.pending!==0)return n.last_flush=-1,Le}if(n.status===Hs){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,Ue(e),n.pending!==0)return n.last_flush=-1,Le;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=Ws}if(n.status===Ws){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)),Ue(e),n.pending!==0)return n.last_flush=-1,Le;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=Vs}if(n.status===Vs){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)),Ue(e),n.pending!==0)return n.last_flush=-1,Le;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=Ks}if(n.status===Ks){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Ue(e),n.pending!==0))return n.last_flush=-1,Le;re(n,e.adler&255),re(n,e.adler>>8&255),e.adler=0}if(n.status=jt,Ue(e),n.pending!==0)return n.last_flush=-1,Le}if(e.avail_in!==0||n.lookahead!==0||t!==Ot&&n.status!==ci){let r=n.level===0?_l(n,t):n.strategy===pr?Uy(n,t):n.strategy===Ay?Dy(n,t):ui[n.level].func(n,t);if((r===Qt||r===Tn)&&(n.status=ci),r===Ne||r===Qt)return e.avail_out===0&&(n.last_flush=-1),Le;if(r===bn&&(t===gy?_y(n):t!==ld&&(Bs(n,0,0,!1),t===vy&&(zt(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Ue(e),e.avail_out===0))return n.last_flush=-1,Le}return t!==$e?Le:n.wrap<=0?md:(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)):(oi(n,e.adler>>>16),oi(n,e.adler&65535)),Ue(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?Le:md)},Ky=e=>{if(Si(e))return rt;let t=e.state.status;return e.state=null,t===jt?qt(e,py):Le},$y=(e,t)=>{let n=t.length;if(Si(e))return rt;let i=e.state,r=i.wrap;if(r===2||r===1&&i.status!==kn||i.lookahead)return rt;if(r===1&&(e.adler=vi(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){r===0&&(zt(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,En(i);i.lookahead>=te;){let u=i.strstart,c=i.lookahead-(te-1);do i.ins_h=It(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,En(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,Le},Xy=Wy,Yy=pl,Zy=vl,jy=gl,qy=Hy,Jy=Vy,Qy=Ky,ew=$y,tw="pako deflate (from Nodeca project)",li={deflateInit:Xy,deflateInit2:Yy,deflateReset:Zy,deflateResetKeep:jy,deflateSetHeader:qy,deflate:Jy,deflateEnd:Qy,deflateSetDictionary:ew,deflateInfo:tw},nw=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),iw=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)nw(n,i)&&(e[i]=n[i])}}return e},rw=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},Dr={assign:iw,flattenChunks:rw},yl=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{yl=!1}var pi=new Uint8Array(256);for(let e=0;e<256;e++)pi[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;pi[254]=pi[254]=1;var aw=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},sw=(e,t)=>{if(t<65534&&e.subarray&&yl)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},ow=(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=pi[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 sw(a,r)},cw=(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+pi[e[n]]>t?n:t},yi={string2buf:aw,buf2string:ow,utf8border:cw};function uw(){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 wl=uw,Al=Object.prototype.toString,{Z_NO_FLUSH:dw,Z_SYNC_FLUSH:lw,Z_FULL_FLUSH:mw,Z_FINISH:fw,Z_OK:xr,Z_STREAM_END:hw,Z_DEFAULT_COMPRESSION:_w,Z_DEFAULT_STRATEGY:gw,Z_DEFLATED:vw}=tn;function ki(e){this.options=Dr.assign({level:_w,method:vw,chunkSize:16384,windowBits:15,memLevel:8,strategy:gw},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 wl,this.strm.avail_out=0;let n=li.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==xr)throw new Error(Jt[n]);if(t.header&&li.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(typeof t.dictionary=="string"?i=yi.string2buf(t.dictionary):Al.call(t.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(t.dictionary):i=t.dictionary,n=li.deflateSetDictionary(this.strm,i),n!==xr)throw new Error(Jt[n]);this._dict_set=!0}}ki.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?fw:dw,typeof e=="string"?n.input=yi.string2buf(e):Al.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===lw||a===mw)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(r=li.deflate(n,a),r===hw)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=li.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===xr;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};ki.prototype.onData=function(e){this.chunks.push(e)};ki.prototype.onEnd=function(e){e===xr&&(this.result=Dr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function eo(e,t){let n=new ki(t);if(n.push(e,!0),n.err)throw n.msg||Jt[n.err];return n.result}function pw(e,t){return t=t||{},t.raw=!0,eo(e,t)}function yw(e,t){return t=t||{},t.gzip=!0,eo(e,t)}var ww=ki,Aw=eo,Sw=pw,kw=yw,Ew=tn,xw={Deflate:ww,deflate:Aw,deflateRaw:Sw,gzip:kw,constants:Ew},yr=16209,bw=16191,Tw=function(t,n){let i,r,a,s,o,u,c,d,f,l,h,g,w,v,y,T,S,p,E,b,x,L,k,z,O=t.state;i=t.next_in,k=t.input,r=i+(t.avail_in-5),a=t.next_out,z=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),u=O.dmax,c=O.wsize,d=O.whave,f=O.wnext,l=O.window,h=O.hold,g=O.bits,w=O.lencode,v=O.distcode,y=(1<<O.lenbits)-1,T=(1<<O.distbits)-1;e:do{g<15&&(h+=k[i++]<<g,g+=8,h+=k[i++]<<g,g+=8),S=w[h&y];t:for(;;){if(p=S>>>24,h>>>=p,g-=p,p=S>>>16&255,p===0)z[a++]=S&65535;else if(p&16){E=S&65535,p&=15,p&&(g<p&&(h+=k[i++]<<g,g+=8),E+=h&(1<<p)-1,h>>>=p,g-=p),g<15&&(h+=k[i++]<<g,g+=8,h+=k[i++]<<g,g+=8),S=v[h&T];n:for(;;){if(p=S>>>24,h>>>=p,g-=p,p=S>>>16&255,p&16){if(b=S&65535,p&=15,g<p&&(h+=k[i++]<<g,g+=8,g<p&&(h+=k[i++]<<g,g+=8)),b+=h&(1<<p)-1,b>u){t.msg="invalid distance too far back",O.mode=yr;break e}if(h>>>=p,g-=p,p=a-s,b>p){if(p=b-p,p>d&&O.sane){t.msg="invalid distance too far back",O.mode=yr;break e}if(x=0,L=l,f===0){if(x+=c-p,p<E){E-=p;do z[a++]=l[x++];while(--p);x=a-b,L=z}}else if(f<p){if(x+=c+f-p,p-=f,p<E){E-=p;do z[a++]=l[x++];while(--p);if(x=0,f<E){p=f,E-=p;do z[a++]=l[x++];while(--p);x=a-b,L=z}}}else if(x+=f-p,p<E){E-=p;do z[a++]=l[x++];while(--p);x=a-b,L=z}for(;E>2;)z[a++]=L[x++],z[a++]=L[x++],z[a++]=L[x++],E-=3;E&&(z[a++]=L[x++],E>1&&(z[a++]=L[x++]))}else{x=a-b;do z[a++]=z[x++],z[a++]=z[x++],z[a++]=z[x++],E-=3;while(E>2);E&&(z[a++]=z[x++],E>1&&(z[a++]=z[x++]))}}else if((p&64)===0){S=v[(S&65535)+(h&(1<<p)-1)];continue n}else{t.msg="invalid distance code",O.mode=yr;break e}break}}else if((p&64)===0){S=w[(S&65535)+(h&(1<<p)-1)];continue t}else if(p&32){O.mode=bw;break e}else{t.msg="invalid literal/length code",O.mode=yr;break e}break}}while(i<r&&a<o);E=g>>3,i-=E,g-=E<<3,h&=(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),O.hold=h,O.bits=g},wn=15,hd=852,_d=592,gd=0,Ms=1,vd=2,Mw=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]),Rw=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]),zw=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]),Lw=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]),Nw=(e,t,n,i,r,a,s,o)=>{let u=o.bits,c=0,d=0,f=0,l=0,h=0,g=0,w=0,v=0,y=0,T=0,S,p,E,b,x,L=null,k,z=new Uint16Array(wn+1),O=new Uint16Array(wn+1),J=null,ce,Q,M;for(c=0;c<=wn;c++)z[c]=0;for(d=0;d<i;d++)z[t[n+d]]++;for(h=u,l=wn;l>=1&&z[l]===0;l--);if(h>l&&(h=l),l===0)return r[a++]=1<<24|64<<16|0,r[a++]=1<<24|64<<16|0,o.bits=1,0;for(f=1;f<l&&z[f]===0;f++);for(h<f&&(h=f),v=1,c=1;c<=wn;c++)if(v<<=1,v-=z[c],v<0)return-1;if(v>0&&(e===gd||l!==1))return-1;for(O[1]=0,c=1;c<wn;c++)O[c+1]=O[c]+z[c];for(d=0;d<i;d++)t[n+d]!==0&&(s[O[t[n+d]]++]=d);if(e===gd?(L=J=s,k=20):e===Ms?(L=Mw,J=Rw,k=257):(L=zw,J=Lw,k=0),T=0,d=0,c=f,x=a,g=h,w=0,E=-1,y=1<<h,b=y-1,e===Ms&&y>hd||e===vd&&y>_d)return 1;for(;;){ce=c-w,s[d]+1<k?(Q=0,M=s[d]):s[d]>=k?(Q=J[s[d]-k],M=L[s[d]-k]):(Q=96,M=0),S=1<<c-w,p=1<<g,f=p;do p-=S,r[x+(T>>w)+p]=ce<<24|Q<<16|M|0;while(p!==0);for(S=1<<c-1;T&S;)S>>=1;if(S!==0?(T&=S-1,T+=S):T=0,d++,--z[c]===0){if(c===l)break;c=t[n+s[d]]}if(c>h&&(T&b)!==E){for(w===0&&(w=h),x+=f,g=c-w,v=1<<g;g+w<l&&(v-=z[g+w],!(v<=0));)g++,v<<=1;if(y+=1<<g,e===Ms&&y>hd||e===vd&&y>_d)return 1;E=T&b,r[E]=h<<24|g<<16|x-a|0}}return T!==0&&(r[x+T]=c-w<<24|64<<16|0),o.bits=h,0},mi=Nw,Ow=0,Sl=1,kl=2,{Z_FINISH:pd,Z_BLOCK:Iw,Z_TREES:wr,Z_OK:en,Z_STREAM_END:Cw,Z_NEED_DICT:Pw,Z_STREAM_ERROR:Xe,Z_DATA_ERROR:El,Z_MEM_ERROR:xl,Z_BUF_ERROR:Fw,Z_DEFLATED:yd}=tn,Ur=16180,wd=16181,Ad=16182,Sd=16183,kd=16184,Ed=16185,xd=16186,bd=16187,Td=16188,Md=16189,br=16190,pt=16191,Rs=16192,Rd=16193,zs=16194,zd=16195,Ld=16196,Nd=16197,Od=16198,Ar=16199,Sr=16200,Id=16201,Cd=16202,Pd=16203,Fd=16204,Dd=16205,Ls=16206,Ud=16207,Bd=16208,ge=16209,bl=16210,Tl=16211,Dw=852,Uw=592,Bw=15,Gw=Bw,Gd=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function Hw(){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 nn=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<Ur||t.mode>Tl?1:0},Ml=e=>{if(nn(e))return Xe;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=Ur,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(Dw),t.distcode=t.distdyn=new Int32Array(Uw),t.sane=1,t.back=-1,en},Rl=e=>{if(nn(e))return Xe;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Ml(e)},zl=(e,t)=>{let n;if(nn(e))return Xe;let i=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Xe:(i.window!==null&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,Rl(e))},Ll=(e,t)=>{if(!e)return Xe;let n=new Hw;e.state=n,n.strm=e,n.window=null,n.mode=Ur;let i=zl(e,t);return i!==en&&(e.state=null),i},Ww=e=>Ll(e,Gw),Hd=!0,Ns,Os,Vw=e=>{if(Hd){Ns=new Int32Array(512),Os=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(mi(Sl,e.lens,0,288,Ns,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;mi(kl,e.lens,0,32,Os,0,e.work,{bits:5}),Hd=!1}e.lencode=Ns,e.lenbits=9,e.distcode=Os,e.distbits=5},Nl=(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},Kw=(e,t)=>{let n,i,r,a,s,o,u,c,d,f,l,h,g,w,v=0,y,T,S,p,E,b,x,L,k=new Uint8Array(4),z,O,J=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(nn(e)||!e.output||!e.input&&e.avail_in!==0)return Xe;n=e.state,n.mode===pt&&(n.mode=Rs),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,d=n.bits,f=o,l=u,L=en;e:for(;;)switch(n.mode){case Ur:if(n.wrap===0){n.mode=Rs;break}for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.wrap&2&&c===35615){n.wbits===0&&(n.wbits=15),n.check=0,k[0]=c&255,k[1]=c>>>8&255,n.check=Te(n.check,k,2,0),c=0,d=0,n.mode=wd;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)!==yd){e.msg="unknown compression method",n.mode=ge;break}if(c>>>=4,d-=4,x=(c&15)+8,n.wbits===0&&(n.wbits=x),x>15||x>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?Md:pt,c=0,d=0;break;case wd:for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.flags=c,(n.flags&255)!==yd){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&&(k[0]=c&255,k[1]=c>>>8&255,n.check=Te(n.check,k,2,0)),c=0,d=0,n.mode=Ad;case Ad:for(;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.head&&(n.head.time=c),n.flags&512&&n.wrap&4&&(k[0]=c&255,k[1]=c>>>8&255,k[2]=c>>>16&255,k[3]=c>>>24&255,n.check=Te(n.check,k,4,0)),c=0,d=0,n.mode=Sd;case Sd:for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.head&&(n.head.xflags=c&255,n.head.os=c>>8),n.flags&512&&n.wrap&4&&(k[0]=c&255,k[1]=c>>>8&255,n.check=Te(n.check,k,2,0)),c=0,d=0,n.mode=kd;case kd:if(n.flags&1024){for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.length=c,n.head&&(n.head.extra_len=c),n.flags&512&&n.wrap&4&&(k[0]=c&255,k[1]=c>>>8&255,n.check=Te(n.check,k,2,0)),c=0,d=0}else n.head&&(n.head.extra=null);n.mode=Ed;case Ed:if(n.flags&1024&&(h=n.length,h>o&&(h=o),h&&(n.head&&(x=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+h),x)),n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,h,a)),o-=h,a+=h,n.length-=h),n.length))break e;n.length=0,n.mode=xd;case xd:if(n.flags&2048){if(o===0)break e;h=0;do x=i[a+h++],n.head&&x&&n.length<65536&&(n.head.name+=String.fromCharCode(x));while(x&&h<o);if(n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,h,a)),o-=h,a+=h,x)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=bd;case bd:if(n.flags&4096){if(o===0)break e;h=0;do x=i[a+h++],n.head&&x&&n.length<65536&&(n.head.comment+=String.fromCharCode(x));while(x&&h<o);if(n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,h,a)),o-=h,a+=h,x)break e}else n.head&&(n.head.comment=null);n.mode=Td;case Td:if(n.flags&512){for(;d<16;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.wrap&4&&c!==(n.check&65535)){e.msg="header crc mismatch",n.mode=ge;break}c=0,d=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=pt;break;case Md:for(;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}e.adler=n.check=Gd(c),c=0,d=0,n.mode=br;case br: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=d,Pw;e.adler=n.check=1,n.mode=pt;case pt:if(t===Iw||t===wr)break e;case Rs:if(n.last){c>>>=d&7,d-=d&7,n.mode=Ls;break}for(;d<3;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}switch(n.last=c&1,c>>>=1,d-=1,c&3){case 0:n.mode=Rd;break;case 1:if(Vw(n),n.mode=Ar,t===wr){c>>>=2,d-=2;break e}break;case 2:n.mode=Ld;break;case 3:e.msg="invalid block type",n.mode=ge}c>>>=2,d-=2;break;case Rd:for(c>>>=d&7,d-=d&7;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",n.mode=ge;break}if(n.length=c&65535,c=0,d=0,n.mode=zs,t===wr)break e;case zs:n.mode=zd;case zd:if(h=n.length,h){if(h>o&&(h=o),h>u&&(h=u),h===0)break e;r.set(i.subarray(a,a+h),s),o-=h,a+=h,u-=h,s+=h,n.length-=h;break}n.mode=pt;break;case Ld:for(;d<14;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.nlen=(c&31)+257,c>>>=5,d-=5,n.ndist=(c&31)+1,c>>>=5,d-=5,n.ncode=(c&15)+4,c>>>=4,d-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=ge;break}n.have=0,n.mode=Nd;case Nd:for(;n.have<n.ncode;){for(;d<3;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.lens[J[n.have++]]=c&7,c>>>=3,d-=3}for(;n.have<19;)n.lens[J[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,z={bits:n.lenbits},L=mi(Ow,n.lens,0,19,n.lencode,0,n.work,z),n.lenbits=z.bits,L){e.msg="invalid code lengths set",n.mode=ge;break}n.have=0,n.mode=Od;case Od:for(;n.have<n.nlen+n.ndist;){for(;v=n.lencode[c&(1<<n.lenbits)-1],y=v>>>24,T=v>>>16&255,S=v&65535,!(y<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(S<16)c>>>=y,d-=y,n.lens[n.have++]=S;else{if(S===16){for(O=y+2;d<O;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(c>>>=y,d-=y,n.have===0){e.msg="invalid bit length repeat",n.mode=ge;break}x=n.lens[n.have-1],h=3+(c&3),c>>>=2,d-=2}else if(S===17){for(O=y+3;d<O;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=y,d-=y,x=0,h=3+(c&7),c>>>=3,d-=3}else{for(O=y+7;d<O;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=y,d-=y,x=0,h=11+(c&127),c>>>=7,d-=7}if(n.have+h>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=ge;break}for(;h--;)n.lens[n.have++]=x}}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,z={bits:n.lenbits},L=mi(Sl,n.lens,0,n.nlen,n.lencode,0,n.work,z),n.lenbits=z.bits,L){e.msg="invalid literal/lengths set",n.mode=ge;break}if(n.distbits=6,n.distcode=n.distdyn,z={bits:n.distbits},L=mi(kl,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,z),n.distbits=z.bits,L){e.msg="invalid distances set",n.mode=ge;break}if(n.mode=Ar,t===wr)break e;case Ar:n.mode=Sr;case Sr: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=d,Tw(e,l),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,d=n.bits,n.mode===pt&&(n.back=-1);break}for(n.back=0;v=n.lencode[c&(1<<n.lenbits)-1],y=v>>>24,T=v>>>16&255,S=v&65535,!(y<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(T&&(T&240)===0){for(p=y,E=T,b=S;v=n.lencode[b+((c&(1<<p+E)-1)>>p)],y=v>>>24,T=v>>>16&255,S=v&65535,!(p+y<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=p,d-=p,n.back+=p}if(c>>>=y,d-=y,n.back+=y,n.length=S,T===0){n.mode=Dd;break}if(T&32){n.back=-1,n.mode=pt;break}if(T&64){e.msg="invalid literal/length code",n.mode=ge;break}n.extra=T&15,n.mode=Id;case Id:if(n.extra){for(O=n.extra;d<O;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.length+=c&(1<<n.extra)-1,c>>>=n.extra,d-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Cd;case Cd:for(;v=n.distcode[c&(1<<n.distbits)-1],y=v>>>24,T=v>>>16&255,S=v&65535,!(y<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if((T&240)===0){for(p=y,E=T,b=S;v=n.distcode[b+((c&(1<<p+E)-1)>>p)],y=v>>>24,T=v>>>16&255,S=v&65535,!(p+y<=d);){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}c>>>=p,d-=p,n.back+=p}if(c>>>=y,d-=y,n.back+=y,T&64){e.msg="invalid distance code",n.mode=ge;break}n.offset=S,n.extra=T&15,n.mode=Pd;case Pd:if(n.extra){for(O=n.extra;d<O;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}n.offset+=c&(1<<n.extra)-1,c>>>=n.extra,d-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=ge;break}n.mode=Fd;case Fd:if(u===0)break e;if(h=l-u,n.offset>h){if(h=n.offset-h,h>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=ge;break}h>n.wnext?(h-=n.wnext,g=n.wsize-h):g=n.wnext-h,h>n.length&&(h=n.length),w=n.window}else w=r,g=s-n.offset,h=n.length;h>u&&(h=u),u-=h,n.length-=h;do r[s++]=w[g++];while(--h);n.length===0&&(n.mode=Sr);break;case Dd:if(u===0)break e;r[s++]=n.length,u--,n.mode=Sr;break;case Ls:if(n.wrap){for(;d<32;){if(o===0)break e;o--,c|=i[a++]<<d,d+=8}if(l-=u,e.total_out+=l,n.total+=l,n.wrap&4&&l&&(e.adler=n.check=n.flags?Te(n.check,r,l,s-l):vi(n.check,r,l,s-l)),l=u,n.wrap&4&&(n.flags?c:Gd(c))!==n.check){e.msg="incorrect data check",n.mode=ge;break}c=0,d=0}n.mode=Ud;case Ud:if(n.wrap&&n.flags){for(;d<32;){if(o===0)break e;o--,c+=i[a++]<<d,d+=8}if(n.wrap&4&&c!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=ge;break}c=0,d=0}n.mode=Bd;case Bd:L=Cw;break e;case ge:L=El;break e;case bl:return xl;case Tl:default:return Xe}return e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=d,(n.wsize||l!==e.avail_out&&n.mode<ge&&(n.mode<Ls||t!==pd))&&Nl(e,e.output,e.next_out,l-e.avail_out),f-=e.avail_in,l-=e.avail_out,e.total_in+=f,e.total_out+=l,n.total+=l,n.wrap&4&&l&&(e.adler=n.check=n.flags?Te(n.check,r,l,e.next_out-l):vi(n.check,r,l,e.next_out-l)),e.data_type=n.bits+(n.last?64:0)+(n.mode===pt?128:0)+(n.mode===Ar||n.mode===zs?256:0),(f===0&&l===0||t===pd)&&L===en&&(L=Fw),L},$w=e=>{if(nn(e))return Xe;let t=e.state;return t.window&&(t.window=null),e.state=null,en},Xw=(e,t)=>{if(nn(e))return Xe;let n=e.state;return(n.wrap&2)===0?Xe:(n.head=t,t.done=!1,en)},Yw=(e,t)=>{let n=t.length,i,r,a;return nn(e)||(i=e.state,i.wrap!==0&&i.mode!==br)?Xe:i.mode===br&&(r=1,r=vi(r,t,n,0),r!==i.check)?El:(a=Nl(e,t,n,n),a?(i.mode=bl,xl):(i.havedict=1,en))},Zw=Rl,jw=zl,qw=Ml,Jw=Ww,Qw=Ll,eA=Kw,tA=$w,nA=Xw,iA=Yw,rA="pako inflate (from Nodeca project)",wt={inflateReset:Zw,inflateReset2:jw,inflateResetKeep:qw,inflateInit:Jw,inflateInit2:Qw,inflate:eA,inflateEnd:tA,inflateGetHeader:nA,inflateSetDictionary:iA,inflateInfo:rA};function aA(){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 sA=aA,Ol=Object.prototype.toString,{Z_NO_FLUSH:oA,Z_FINISH:cA,Z_OK:wi,Z_STREAM_END:Is,Z_NEED_DICT:Cs,Z_STREAM_ERROR:uA,Z_DATA_ERROR:Wd,Z_MEM_ERROR:dA}=tn;function Ei(e){this.options=Dr.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 wl,this.strm.avail_out=0;let n=wt.inflateInit2(this.strm,t.windowBits);if(n!==wi)throw new Error(Jt[n]);if(this.header=new sA,wt.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=yi.string2buf(t.dictionary):Ol.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=wt.inflateSetDictionary(this.strm,t.dictionary),n!==wi)))throw new Error(Jt[n])}Ei.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?cA:oA,Ol.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=wt.inflate(n,s),a===Cs&&r&&(a=wt.inflateSetDictionary(n,r),a===wi?a=wt.inflate(n,s):a===Wd&&(a=Cs));n.avail_in>0&&a===Is&&n.state.wrap>0&&e[n.next_in]!==0;)wt.inflateReset(n),a=wt.inflate(n,s);switch(a){case uA:case Wd:case Cs:case dA:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===Is))if(this.options.to==="string"){let u=yi.utf8border(n.output,n.next_out),c=n.next_out-u,d=yi.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(d)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(a===wi&&o===0)){if(a===Is)return a=wt.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};Ei.prototype.onData=function(e){this.chunks.push(e)};Ei.prototype.onEnd=function(e){e===wi&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Dr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function to(e,t){let n=new Ei(t);if(n.push(e),n.err)throw n.msg||Jt[n.err];return n.result}function lA(e,t){return t=t||{},t.raw=!0,to(e,t)}var mA=Ei,fA=to,hA=lA,_A=to,gA=tn,vA={Inflate:mA,inflate:fA,inflateRaw:hA,ungzip:_A,constants:gA},{Deflate:pA,deflate:yA,deflateRaw:wA,gzip:AA}=xw,{Inflate:SA,inflate:kA,inflateRaw:EA,ungzip:xA}=vA,bA=pA,TA=yA,MA=wA,RA=AA,zA=SA,LA=kA,NA=EA,OA=xA,IA=tn,Vd={Deflate:bA,deflate:TA,deflateRaw:MA,gzip:RA,Inflate:zA,inflate:LA,inflateRaw:NA,ungzip:OA,constants:IA},Tr=2023,no=1,io=2,ro=4,ao=8,so=16,oo=32,Il=64,CA=128,PA=256,co=512,uo=1024,lo=2048,Mr=4096,mo=8192,Rr=16384,FA=32768,zr=65536,fo=1<<17,Lr=1<<18,Nr=1<<19,ho=1<<20,_o=1<<21,go=1<<22,DA=1<<23,vo=1<<24,Or=1<<25,po=1<<26,yo=1<<27,wo=1<<28,Ao=1<<29,So=1<<30,UA=-2147483648,ko=1,Eo=2,xo=4,BA=1,GA=2,HA=128,An=()=>({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}),Kd=()=>({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}),bo=class Cl{constructor(t,n){this.protocolVersion=0,this.isDemo=BA,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)?q.serverdata:this.protocolVersion===Tr?t:this.protocolVersion===34||this.protocolVersion===25?t<=q.frame?t:q.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 q.bad:return;case q.nop:break;case q.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case q.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case q.print:this.parsePrint();break;case q.serverdata:this.parseServerData();break;case q.configstring:this.parseConfigString();break;case q.spawnbaseline:this.parseSpawnBaseline();break;case q.centerprint:this.parseCenterPrint();break;case q.download:this.parseDownload();break;case q.frame:this.parseFrame();break;case q.packetentities:this.parsePacketEntities(!1);break;case q.deltapacketentities:this.parsePacketEntities(!0);break;case q.playerinfo:this.parsePlayerState();break;case q.stufftext:this.parseStuffText();break;case q.layout:this.parseLayout();break;case q.inventory:this.parseInventory();break;case q.sound:this.parseSound();break;case q.muzzleflash:this.parseMuzzleFlash();break;case q.muzzleflash2:this.parseMuzzleFlash2();break;case q.temp_entity:this.parseTempEntity();break;case q.splitclient:this.parseSplitClient();break;case q.configblast:this.parseConfigBlast();break;case q.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case q.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case q.damage:this.parseDamage();break;case q.locprint:this.parseLocPrint();break;case q.fog:this.parseFog();break;case q.waitingforplayers:this.parseWaitingForPlayers();break;case q.bot_chat:this.parseBotChat();break;case q.poi:this.parsePoi();break;case q.help_path:this.parseHelpPath();break;case q.muzzleflash3:this.parseMuzzleFlash3();break;case q.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===Tr){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=Vd.inflate(i);r.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new Ps(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=Vd.inflate(i);r.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new Ps(r.buffer),s=new Cl(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 d=this.stream.readShort();a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte(),this.stream.readShort(),d!==-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=An();this.parseDelta(An(),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!==q.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s} (translated)`);let o=this.parsePlayerState();if(this.isDemo===HA){let u=this.stream.readByte();for(let c=0;c<u;c++)this.stream.readByte()}this.isDemo===GA&&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=Kd(),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:Kd(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let i=An();this.parseDelta(An(),i,n.number,n.bits,n.bitsHigh),t.push(i)}return t}parseEntityBits(){let t=this.stream.readByte();t&CA&&(t|=this.stream.readByte()<<8),t&FA&&(t|=this.stream.readByte()<<16),t&DA&&(t|=this.stream.readByte()<<24);let n=0;t&UA&&(n=this.stream.readByte());let i;return t&PA?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&lo&&(n.modelindex=this.stream.readByte()),r&ho&&(n.modelindex2=this.stream.readByte()),r&_o&&(n.modelindex3=this.stream.readByte()),r&go&&(n.modelindex4=this.stream.readByte()),r&so&&(n.frame=this.stream.readByte()),r&fo&&(n.frame=this.stream.readShort()),r&zr&&r&Or?n.skinnum=this.stream.readLong():r&zr?n.skinnum=this.stream.readByte():r&Or&&(n.skinnum=this.stream.readShort()),r&Rr&&r&Nr?n.effects=this.stream.readLong():r&Rr?n.effects=this.stream.readByte():r&Nr&&(n.effects=this.stream.readShort()),r&Mr&&r&Lr?n.renderfx=this.stream.readLong():r&Mr?n.renderfx=this.stream.readByte():r&Lr&&(n.renderfx=this.stream.readShort()),r&no&&(n.origin.x=this.stream.readCoord()),r&io&&(n.origin.y=this.stream.readCoord()),r&co&&(n.origin.z=this.stream.readCoord()),r&uo&&(n.angles.x=this.stream.readAngle()),r&ro&&(n.angles.y=this.stream.readAngle()),r&ao&&(n.angles.z=this.stream.readAngle()),r&vo&&this.stream.readPos(n.old_origin),r&po&&(n.sound=this.stream.readByte()),r&oo?n.event=this.stream.readByte():n.event=0,r&yo&&(n.solid=this.stream.readShort()),r&mo&&(n.alpha=this.stream.readByte()/255),r&wo&&(n.scale=this.stream.readFloat()),r&Ao&&(n.instanceBits=this.stream.readLong()),r&So&&(n.loopVolume=this.stream.readByte()/255),a&ko&&(n.loopAttenuation=this.stream.readByte()/255),a&Eo&&(n.owner=this.stream.readShort()),a&xo&&(n.oldFrame=this.stream.readShort())}};var Pl=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 Fp(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 bo(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 WA=Object.defineProperty,Fl=(e,t)=>{for(var n in t)WA(e,n,{get:t[n],enumerable:!0})},Pt={x:0,y:0,z:0};var fC=Math.PI/180;function Br(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function Hr(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function bi(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function VA(e){return bi(e,e)}function Wr(e){return Math.sqrt(VA(e))}function Dl(e){let t=Wr(e);return t===0?e:Hr(e,1/t)}var Ul=0,Bl=1,Gl=2,KA=Math.PI/180,hC=180/Math.PI;function To(e,t){switch(t){case Ul:return e.x;case Bl:return e.y;case Gl:default:return e.z}}function Mo(e){return e*KA}function Rn(e){let t=e%360;return t<0?360+t:t}function Vr(e){let t=Mo(To(e,Bl)),n=Mo(To(e,Ul)),i=Mo(To(e,Gl)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),u=Math.sin(i),c=Math.cos(i),d={x:o*a,y:o*r,z:-s},f={x:-u*s*a-c*-r,y:-u*s*r-c*a,z:-u*o},l={x:c*s*a-u*-r,y:c*s*r-u*a,z:c*o};return{forward:d,right:f,up:l}}var Mn=[[-.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 ot=1,Ft=2;var Lo=8,No=16,$A=32;var XA=16384;var Kr=65536,Hl=1<<17,YA=1<<18,ZA=1<<19,jA=1<<20,qA=1<<21,JA=1<<22,QA=1<<23,_C=1<<24,$r=1<<25,eS=1<<26,gC=1<<27,vC=1<<28,pC=1<<29,Xr=1<<30,yC=1<<31;var wC=1<<25,AC=1<<28,SC=1<<29,kC=1<<30,EC=1<<31;var xC=ot|Ft,bC=ot|Kr|Ft|$r|Xr,TC=ot|Kr|Ft,MC=ot|Hl|Ft|$r|Xr,RC=$A|Lo|No,zC=ot|No|Lo,tS=ot|$r|Xr|Ft|eS,LC=YA|ZA|jA|qA|JA|QA,NC=ot|Lo|No|$r|Xr,OC=ot|Kr|Ft,IC=ot|Ft,CC=ot|Kr|Ft|Hl,PC=tS|XA;var FC=Number.MAX_SAFE_INTEGER-1;var Ti=(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))(Ti||{});var Wl=256;var nS=256,Mi=8192,Ri=2048,zi=512,iS=256,rS=Wl*2,aS=256,Ro=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.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+Mi]="Sounds",e[e.Images=e.Sounds+Ri]="Images",e[e.Lights=e.Images+zi]="Lights",e[e.ShadowLights=e.Lights+nS]="ShadowLights",e[e.Items=e.ShadowLights+aS]="Items",e[e.PlayerSkins=e.Items+iS]="PlayerSkins",e[e.General=e.PlayerSkins+Wl]="General",e[e.WheelWeapons=e.General+rS]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Ro]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Ro]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Ro]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ye||{}),DC=ye.MaxConfigStrings;var sS={};Fl(sS,{addReplayFrame:()=>dS,createReplaySession:()=>uS,deserializeReplay:()=>cS,serializeReplay:()=>oS});function oS(e){return JSON.stringify(e,null,2)}function cS(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 uS(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function dS(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var Li=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(Li||{});var At=(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))(At||{});function zn(e,t){return(e&t)!==0}var Yr=(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))(Yr||{}),ct=(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))(ct||{});function lS(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:u,pmWaterFriction:c}=e,d=Wr(t);if(d<1)return{x:0,y:0,z:t.z};let f=0;if(i&&!r||a){let g=d<u?u:d;f+=g*o*n}s>0&&!a&&(f+=d*c*s*n);let l=d-f;if(l<0&&(l=0),l===d)return t;let h=l/d;return Hr(t,h)}function mS(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=bi(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 fS(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=Wr(a);if(s>r){let o=r/s;a=Hr(a,o),s=r}return{wishdir:s===0?a:Dl(a),wishspeed:s}}function hS(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=Br(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=Br(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=Br(a,{x:0,y:0,z:-60}):a=Br(a,{x:0,y:0,z:10});let s=Wr(a);if(s>r){let o=r/s;a=Hr(a,o),s=r}return s*=.5,{wishdir:s===0?a:Dl(a),wishspeed:s}}function _S(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function gS(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function Oo(e){let{pmFlags:t,cmdAngles:n,deltaAngles:i}=e,r;(t&32)!==0?r={x:0,y:n.y+i.y,z:0}:(r=_S(n,i),r={...r,x:gS(r.x)});let a=Vr(r);return{viewangles:r,...a}}var Vl=200,Kl=200,$l=200,Xl=140,Yl=150,Zl=3;function vS(e){let t=Rn(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function jl(e,t){return{x:vS(e.x+t.x),y:Rn(e.y+t.y),z:Rn(e.z+t.z)}}function ql(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 rn=(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))(rn||{});var Jl=64;var Ql=0,em=1,tm=2,nm=3,im=4,rm=5,am=6,sm=7,om=8;var cm=11,um=12,dm=13;function pS(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 lm(e,t,n,i){let r=i*n,a=Math.floor(r/8),s=r%8,o=(1<<i)-1<<s;return(pS(e,t,a)&o)>>>s}var Ni=(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))(Ni||{}),Oe=(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))(Oe||{}),mm=12,fm=9,UC=Math.ceil(mm*fm/16),hm=23,_m=2,BC=Math.ceil(hm*_m/16),yS={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 gm(e,t){return t<0||t>=mm?0:lm(e,34,t,fm)}function Zr(e,t){let n;return typeof t=="number"?n=t:n=yS[t],n===void 0||n<0||n>=hm?0:lm(e,41,n,_m)}function vm(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 wS={};Fl(wS,{U_ANGLE1:()=>TS,U_ANGLE2:()=>MS,U_ANGLE3:()=>RS,U_EFFECTS:()=>NS,U_EVENT:()=>CS,U_FRAME:()=>zS,U_MODEL:()=>SS,U_MODEL2:()=>FS,U_MODEL3:()=>DS,U_MODEL4:()=>US,U_MOREBITS:()=>PS,U_NUMBER:()=>AS,U_ORIGIN1:()=>ES,U_ORIGIN2:()=>xS,U_ORIGIN3:()=>bS,U_REMOVE:()=>BS,U_RENDERFX:()=>OS,U_SKIN:()=>LS,U_SOLID:()=>IS,U_SOUND:()=>kS});var AS=1,SS=2,kS=4,ES=8,xS=16,bS=32,TS=64,MS=128,RS=256,zS=512,LS=1024,NS=2048,OS=4096,IS=8192,CS=16384,PS=32768,FS=1,DS=2,US=4,BS=32768,xi=.025,zo=33554432,Gr={None:0,Feet:1,Waist:2,Under:3},GS=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},HS=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&zo))return{...e,waterLevel:Gr.None};let s=Gr.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&zo){s=Gr.Waist;let c=e.origin.z+22;n.z=c,t(n)&zo&&(s=Gr.Under)}return{...e,waterLevel:s}},Io=(e,t,n,i)=>{let r={...e};r=GS(r,n),r=HS(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:u,viewAngles:c}=r,d=u>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:f,right:l}=Vr(d),h=lS({velocity:s,frametime:xi,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:u,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=u>=2?hS({forward:f,right:l,cmd:t,maxSpeed:320}):fS({forward:f,right:l,cmd:t,maxSpeed:320}),w=mS({velocity:h,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||u>=2?10:1,frametime:xi}),v=n(a,{x:a.x+w.x*xi,y:a.y+w.y*xi,z:a.z+w.z*xi});return{...r,origin:v.endpos,velocity:w}},pm=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=Mn[t];e.x=n[0],e.y=n[1],e.z=n[2]}},ym=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<Mn.length;i++){let r=Mn[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}},Oi=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*Mn[s][0]+t*Mn[s][1]+n*Mn[s][2];o>r&&(r=o,i=s)}}this.writeByte(i)}};var wm=(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))(wm||{}),GC=Object.keys(wm).length/2;var jr=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],Am={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 WS=Object.defineProperty,VS=(e,t)=>{for(var n in t)WS(e,n,{get:t[n],enumerable:!0})},Jr=null,qr=[1,1,1,1],Sm=["ch1","ch2","ch3"],Co=[null,null,null],KS=e=>{for(let t=0;t<Sm.length;t++){let n=Sm[t];try{Co[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{Co[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
|
|
170
|
+
`)}}}Jr=Co[0]},$S=(e,t,n)=>{if(Jr){let i=e.Draw_GetPicSize(Jr),r=(t-i.width)/2,a=(n-i.height)/2;e.SCR_DrawColorPic(r,a,Jr,{x:qr[0],y:qr[1],z:qr[2]},qr[3])}},Mm=new Map,XS=["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"],YS=e=>{for(let t of XS)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);Mm.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
|
|
171
|
+
`)}},ZS=new Map,jS=["d_left","d_right","d_up","d_down"],qS=e=>{for(let t of jS)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);ZS.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
|
|
172
|
+
`)}},JS=(e,t,n,i)=>{(!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length)},km=3e3,Em=5e3,xm=4,QS=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:km}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:Em}),this.notifyMessages.length>xm&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:km}}addNotification(e,t,n){this.notifyMessages.push({text:e,startTime:n,duration:Em}),this.notifyMessages.length>xm&&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}},ek=3e3,tk=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:ek}}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)}},nk=(e,t,n,i)=>{if(!t.blend)return;let[r,a,s,o]=t.blend},ik=(e,t,n,i)=>{if(!t.pickupIcon)return;let r=Mm.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)}},Po=(e,t,n,i,r,a,s)=>{let o=Math.abs(i).toString();for(let u=0;u<o.length;u++){let c=parseInt(o[u]),d=r[c];d&&(s?e.SCR_DrawColorPic(t+u*a,n,d,{x:s[0],y:s[1],z:s[2]},s[3]):e.SCR_DrawPic(t+u*a,n,d))}},rk=(e,t,n,i,r,a)=>{let s=t.stats[Oe.STAT_HEALTH]||0,o=t.stats[Oe.STAT_ARMOR]||0,u=t.stats[Oe.STAT_AMMO]||0,c=t.stats[Oe.STAT_ARMOR_ICON]||0,d;if(s<=25&&(d=[1,0,0,1]),n.length>0&&(Po(e,a.HEALTH_X,a.HEALTH_Y,s,n,i,d),Po(e,a.ARMOR_X,a.ARMOR_Y,o,n,i),Po(e,a.AMMO_X,a.AMMO_Y,u,n,i)),c>0){let f=e.get_configstring(ye.Images+c);if(f){let l=e.Draw_RegisterPic(f);l&&e.SCR_DrawPic(a.ARMOR_X-24,a.ARMOR_Y-2,l)}}if(t.pickupIcon){let f=e.Draw_RegisterPic(t.pickupIcon);f&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,f)}else{let f=t.stats[Oe.STAT_SELECTED_ICON]||0;if(f>0){let l=e.get_configstring(ye.Images+f);if(l){let h=e.Draw_RegisterPic(l);h&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,h)}}}},Fo=640,Ln=480,ak=(e,t)=>{let n=e/Fo,i=t/Ln,r=Math.min(n,i);return{HEALTH_X:100*r,HEALTH_Y:t-(Ln-450)*r,ARMOR_X:200*r,ARMOR_Y:t-(Ln-450)*r,AMMO_X:e-(Fo-540)*r,AMMO_Y:t-(Ln-450)*r,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*r,WEAPON_ICON_X:10*r,WEAPON_ICON_Y:t-(Ln-450)*r,POWERUP_X:e-(Fo-610)*r,POWERUP_Y:t-(Ln-450)*r,scale:r}},Ee=null,Go=[],Rm=0,Ho=new QS,zm=new tk;function sk(e){Ee=e}function ok(){if(Ee){Go.length=0;for(let e=0;e<10;e++)try{let t=Ee.Draw_RegisterPic(`pics/hud/num_${e}.pcx`);Go.push(t),e===0&&(Rm=Ee.Draw_GetPicSize(t).width)}catch{Ee.Com_Print(`Warning: Failed to load HUD image: pics/hud/num_${e}.pcx
|
|
173
|
+
`)}KS(Ee),YS(Ee),qS(Ee)}}function ck(e,t,n,i,r,a,s){if(!Ee){console.error("CG_DrawHUD: cgame imports not initialized");return}let o=Ee.CL_ClientTime(),u=ak(n.width,n.height);if(nk(Ee,s,n.width,n.height),rk(Ee,s,Go,Rm,o,u),ik(Ee,s,n.width,n.height),JS(Ee,s,n.width,n.height),s.centerPrint){let c=s.centerPrint.split(`
|
|
174
|
+
`),d=n.height/2-c.length*10;for(let f of c)Ee.SCR_DrawCenterString(d,f),d+=16}Ho.drawCenterPrint(Ee,o,u),Ho.drawNotifications(Ee,o),zm.drawSubtitles(Ee,o),$S(Ee,n.width,n.height)}function ea(){return Ho}function uk(){return zm}function dk(e,t,n){t>=ye.Models&&t<ye.Models+Mi?e.RegisterModel(n):t>=ye.Sounds&&t<ye.Sounds+Ri?e.RegisterSound(n):t>=ye.Images&&t<ye.Images+zi&&e.Draw_RegisterPic(n)}var Do=1e-6,Qr=typeof Float32Array<"u"?Float32Array:Array,bm=Math.random;function Uo(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var lk={};VS(lk,{add:()=>gk,angle:()=>Uk,bezier:()=>Lk,ceil:()=>vk,clone:()=>mk,copy:()=>hk,create:()=>Lm,cross:()=>Tk,dist:()=>Xk,distance:()=>Pm,div:()=>$k,divide:()=>Cm,dot:()=>Wo,equals:()=>Wk,exactEquals:()=>Hk,floor:()=>pk,forEach:()=>qk,fromValues:()=>fk,hermite:()=>zk,inverse:()=>xk,len:()=>Zk,length:()=>Nm,lerp:()=>Mk,max:()=>wk,min:()=>yk,mul:()=>Kk,multiply:()=>Im,negate:()=>Ek,normalize:()=>bk,random:()=>Nk,rotateX:()=>Pk,rotateY:()=>Fk,rotateZ:()=>Dk,round:()=>Ak,scale:()=>Sk,scaleAndAdd:()=>kk,set:()=>_k,slerp:()=>Rk,sqrDist:()=>Yk,sqrLen:()=>jk,squaredDistance:()=>Fm,squaredLength:()=>Dm,str:()=>Gk,sub:()=>Vk,subtract:()=>Om,transformMat3:()=>Ik,transformMat4:()=>Ok,transformQuat:()=>Ck,zero:()=>Bk});function Lm(){var e=new Qr(3);return Qr!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function mk(e){var t=new Qr(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Nm(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function fk(e,t,n){var i=new Qr(3);return i[0]=e,i[1]=t,i[2]=n,i}function hk(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function _k(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function gk(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Om(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function Im(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Cm(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function vk(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function pk(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function yk(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 wk(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 Ak(e,t){return e[0]=Uo(t[0]),e[1]=Uo(t[1]),e[2]=Uo(t[2]),e}function Sk(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function kk(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 Pm(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 Fm(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 Dm(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function Ek(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function xk(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function bk(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 Wo(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Tk(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 Mk(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 Rk(e,t,n,i){var r=Math.acos(Math.min(Math.max(Wo(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 zk(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),d=s*(3-2*a);return e[0]=t[0]*o+n[0]*u+i[0]*c+r[0]*d,e[1]=t[1]*o+n[1]*u+i[1]*c+r[1]*d,e[2]=t[2]*o+n[2]*u+i[2]*c+r[2]*d,e}function Lk(e,t,n,i,r,a){var s=1-a,o=s*s,u=a*a,c=o*s,d=3*a*o,f=3*u*s,l=u*a;return e[0]=t[0]*c+n[0]*d+i[0]*f+r[0]*l,e[1]=t[1]*c+n[1]*d+i[1]*f+r[1]*l,e[2]=t[2]*c+n[2]*d+i[2]*f+r[2]*l,e}function Nk(e,t){t=t===void 0?1:t;var n=bm()*2*Math.PI,i=bm()*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 Ok(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 Ik(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 Ck(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],d=r*c-a*u,f=a*o-i*c,l=i*u-r*o;return d=d+d,f=f+f,l=l+l,e[0]=o+s*d+r*l-a*f,e[1]=u+s*f+a*d-i*l,e[2]=c+s*l+i*f-r*d,e}function Pk(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 Fk(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 Dk(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 Uk(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&&Wo(e,t)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function Bk(e){return e[0]=0,e[1]=0,e[2]=0,e}function Gk(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function Hk(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function Wk(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)<=Do*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=Do*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=Do*Math.max(1,Math.abs(r),Math.abs(o))}var Vk=Om,Kk=Im,$k=Cm,Xk=Pm,Yk=Fm,Zk=Nm,jk=Dm,qk=(function(){var e=Lm();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 Jk={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function Qk(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 eE(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function tE(e,t,n,i,r){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=eE(t,i,r),s=e+a,u=zn(n,At.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 ta=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...Jk,...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}=Vr(Oo({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??Pt}).viewangles),r=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=zn(e.pmFlags,At.OnGround),s=tE(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=bi(e.velocity,n)*this.settings.runPitch,u=bi(e.velocity,i),c=u<0?-1:1,f=Math.abs(u)*this.settings.runRoll;f>2&&(f=2),f*=c;let l=this.bobFracSin*this.settings.bobPitch*r,h=this.bobFracSin*this.settings.bobRoll*r;zn(e.pmFlags,At.Ducked)&&a&&(l*=6,h*=6),o+=Math.min(l,this.settings.maxBobAngle),h=Math.min(h,this.settings.maxBobAngle),this.bobCycle&1&&(h=-h),f+=h;let g=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),w=0,v=0,y=0,T=0,S=0;if(this.kick&&this.kick.remainingMs>0){let x=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));w+=x*this.kick.pitch,v+=x*this.kick.roll,this.kick.origin&&(y+=x*this.kick.origin.x,T+=x*this.kick.origin.y,S+=x*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let p={x:o+w,y:0,z:f+v},E={x:y,y:T,z:g+S},b={angles:p,offset:Qk(E),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:r};return this.lastSample=b,b}},nE={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},iE=800,ut={x:0,y:0,z:0};function an(){return{origin:ut,velocity:ut,viewAngles:ut,onGround:!1,pmFlags:At.OnGround,pmType:Yr.Normal,waterLevel:Li.None,gravity:iE,deltaAngles:ut,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:ut,kick_origin:ut,gunoffset:ut,gunangles:ut,gunindex:0,pm_time:0,pm_type:Yr.Normal,pm_flags:At.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 Tm(e){return e?{...an(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:ut,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:an()}function Fe(e,t,n){return e+(t-e)*n}function Bo(e,t,n){let i=Rn(t-e);return i>180&&(i-=360),Rn(e+i*n)}function Nn(e,t,n){let i=Math.max(0,Math.min(n,1));return{...t,origin:{x:Fe(e.origin.x,t.origin.x,i),y:Fe(e.origin.y,t.origin.y,i),z:Fe(e.origin.z,t.origin.z,i)},velocity:{x:Fe(e.velocity.x,t.velocity.x,i),y:Fe(e.velocity.y,t.velocity.y,i),z:Fe(e.velocity.z,t.velocity.z,i)},viewAngles:{x:Bo(e.viewAngles.x,t.viewAngles.x,i),y:Bo(e.viewAngles.y,t.viewAngles.y,i),z:Bo(e.viewAngles.z,t.viewAngles.z,i)},damageAlpha:Fe(e.damageAlpha,t.damageAlpha,i),blend:[Fe(e.blend[0],t.blend[0],i),Fe(e.blend[1],t.blend[1],i),Fe(e.blend[2],t.blend[2],i),Fe(e.blend[3],t.blend[3],i)],health:Fe(e.health||0,t.health||0,i),armor:Fe(e.armor||0,t.armor||0,i),ammo:Fe(e.ammo||0,t.ammo||0,i)}}function rE(e,t,n,i,r){let a={forwardmove:t.forwardmove,sidemove:t.sidemove,upmove:t.upmove,buttons:t.buttons},s=Io(e,a,i,r),{viewangles:o}=Oo({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??ut});return{...s,viewAngles:o}}var na=class{constructor(e,t,n={}){this.baseFrame={frame:0,timeMs:0,state:an()},this.commands=[],this.predicted=an(),this.settings={...nE,...n},this.trace=e,this.pointContents=t,this.predicted=this.baseFrame.state??an()}setAuthoritative(e){let t=Tm(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=Tm(this.baseFrame.state);for(let t of this.commands)e=rE(e,t,this.settings,this.trace,this.pointContents);return this.predicted=e,e}},xe=null;function aE(){if(!xe){console.error("CGame Init: cgame imports not set");return}xe.Com_Print(`===== CGame Initialization =====
|
|
175
|
+
`),sk(xe),xe.Com_Print(`CGame initialized
|
|
176
|
+
`)}function sE(){xe&&xe.Com_Print(`CGame shutdown
|
|
177
|
+
`),xe=null}function oE(e,t,n,i,r,a,s){ck(e,t,n,i,r,a,s)}function cE(){ok()}function uE(e){return 0}function dE(e){return e.stats[Oe.STAT_ACTIVE_WHEEL_WEAPON]??0}function lE(e){let t=[],n=e.stats[Oe.STAT_WEAPONS_OWNED_1]||0,i=e.stats[Oe.STAT_WEAPONS_OWNED_2]||0,r=n|i<<16;for(let a=0;a<jr.length;a++)r&1<<a&&t.push(a);return t}function mE(e,t){if(t<0||t>=jr.length)return 0;let n=jr[t],i=Am[n];return i===null?-1:gm(e.stats,i)}function fE(e){let t=0,n=Object.values(Ni);for(let i of n)Zr(e.stats,i)>0&&t++;return t}function hE(e){return e.stats[Oe.STAT_HIT_MARKER]??0}function _E(e){let t=e;if(!t||!t.s||!t.cmd||!xe)return;let n=(a,s,o,u)=>{let c={x:0,y:0,z:0};return xe.PM_Trace(a,s,o||c,u||c)},i=a=>{let s={x:0,y:0,z:0};return xe.PM_Trace(a,a,s,s).contents||0},r=Io(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 gE(e,t){xe&&dk(xe,e,t)}function vE(e,t,n){if(!xe)return;ea().setCenterPrint(e,xe.CL_ClientTime())}function pE(e,t,n){if(!xe)return;ea().addNotification(t,n,xe.CL_ClientTime())}function yE(e){ea().clearNotifications()}function wE(e){ea().clearCenterPrint()}function AE(e,t){if(!xe)return;uk().addSubtitle(e,xe.CL_ClientTime())}function SE(e){return{x:0,y:0,z:0}}function kE(e){return null}function Um(e){return xe=e,{Init:aE,Shutdown:sE,DrawHUD:oE,TouchPics:cE,LayoutFlags:uE,GetActiveWeaponWheelWeapon:dE,GetOwnedWeaponWheelWeapons:lE,GetWeaponWheelAmmoCount:mE,GetPowerupWheelCount:fE,GetHitMarkerDamage:hE,Pmove:_E,ParseConfigString:gE,ParseCenterPrint:vE,NotifyMessage:pE,ShowSubtitle:AE,ClearNotify:yE,ClearCenterprint:wE,GetMonsterFlashOffset:SE,GetExtension:kE}}function Bm(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 d=o,f=n.get(d);f&&r()?.drawPic(a,s,f,[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 On=null,Dt=0;var Ii=!0,Ci=["ch1","ch2","ch3"],In=[null,null,null],Gm=async(e,t)=>{for(let n=0;n<Ci.length;n++){let i=Ci[n];try{let r=await t.loadTexture(`pics/${i}.pcx`);In[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");In[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}On=In[0]};var Hm=()=>{if(Ii?(Dt++,Dt>=Ci.length&&(Ii=!1,Dt=0)):(Ii=!0,Dt=0),Ii){if(On=In[Dt],!On){let e=!1;for(let t=0;t<Ci.length;t++){let n=(Dt+t)%Ci.length;if(In[n]){Dt=n,On=In[n],e=!0;break}}e||(On=null)}}else On=null;return Ii?Dt:-1};var EE=Object.defineProperty,xE=Object.getOwnPropertyNames,dn=(e,t)=>function(){return e&&(t=(0,e[xE(e)[0]])(e=0)),t},bE=(e,t)=>{for(var n in t)EE(e,n,{get:t[n],enumerable:!0})};function Kn(e){return{x:e.x,y:e.y,z:e.z}}function D(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 F(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function fc(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function TE(e){return fc(e,e)}function De(e){return Math.sqrt(TE(e))}function G(e){let t=De(e);return t===0?e:F(e,1/t)}function ME(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 RE(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 Ui(e,t){switch(t){case ga:return e.x;case va:return e.y;case hc:default:return e.z}}function ca(e){return e*ah}function Jo(e){return e*sh}function Qo(e){let t=e%360;return t<0?360+t:t}function j(e){let t=ca(Ui(e,va)),n=ca(Ui(e,ga)),i=ca(Ui(e,hc)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),u=Math.sin(i),c=Math.cos(i),d={x:o*a,y:o*r,z:-s},f={x:-u*s*a-c*-r,y:-u*s*r-c*a,z:-u*o},l={x:c*s*a-u*-r,y:c*s*r-u*a,z:c*o};return{forward:d,right:f,up:l}}function Yi(e){let t=Ui(e,ga),n=Ui(e,va);if(t===0)return n===0?0:n>0?90:270;let i=Jo(Math.atan2(n,t));return i<0?i+360:i}function $n(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=Jo(Math.atan2(n,t)):n>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+n*n),s=Jo(Math.atan2(i,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}function Zi(e){return new _c(e)}function zE(e){return JSON.stringify(e,null,2)}function LE(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 NE(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function OE(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}function IE(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:u,pmWaterFriction:c}=e,d=De(t);if(d<1)return{x:0,y:0,z:t.z};let f=0;if(i&&!r||a){let g=d<u?u:d;f+=g*o*n}s>0&&!a&&(f+=d*c*s*n);let l=d-f;if(l<0&&(l=0),l===d)return t;let h=l/d;return F(t,h)}function CE(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=fc(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 PE(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=De(a);if(s>r){let o=r/s;a=F(a,o),s=r}return{wishdir:s===0?a:G(a),wishspeed:s}}function FE(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=D(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=D(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=D(a,{x:0,y:0,z:-60}):a=D(a,{x:0,y:0,z:10});let s=De(a);if(s>r){let o=r/s;a=F(a,o),s=r}return s*=.5,{wishdir:s===0?a:G(a),wishspeed:s}}var Wm,Vo,V,DE,UE,ga,va,hc,ah,sh,Ze,Vm,Km,$m,Xm,ia,Ym,_c,Ie,St,BE,ra,aa,Zm,GE,HE,jm,WE,Pi,Ko,qm,Jm,Qm,ef,tf,nf,VE,Gt,Gi,KE,$E,XE,cn,YE,ZE,jE,qE,JE,QE,ex,tx,nx,ix,rx,ax,sx,ox,gc,cx,ux,Hi,oh,dx,bt,lx,mx,fx,hx,_x,gx,vx,rf,$o,af,sf,of,cf,uf,df,lf,sa,Xo,px,mf,ff,yx,se,we,ch,uh,dh,lh,mh,fh,hh,_h,gh,vh,ie,hf,_f,gf,wx,vf,pf,Ax,Sx,yf,wf,Af,Sf,kf,Ef,xf,bf,Tf,Mf,Rf,zf,Lf,Nf,Of,If,Cf,Pf,Ff,Df,Uf,Bf,Cn,oa,Fi,Gf,Hf,kx,W,I,Ex,fe,xx,U=dn({"../shared/dist/esm/index.js"(){"use strict";Wm=Object.defineProperty,Vo=(e,t)=>{for(var n in t)Wm(e,n,{get:t[n],enumerable:!0})},V={x:0,y:0,z:0},DE=.1,UE=Math.PI/180,ga=0,va=1,hc=2,ah=Math.PI/180,sh=180/Math.PI,Ze=624,Vm=397,Km=2567483615,$m=2147483648,Xm=2147483647,ia=4294967296,Ym=class{constructor(e=5489){this.state=new Uint32Array(Ze),this.index=Ze,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<Ze;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=Ze}nextUint32(){this.index>=Ze&&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<Ze;e++){let t=this.state[e]&$m|this.state[(e+1)%Ze]&Xm,n=this.state[(e+Vm)%Ze]^t>>>1;(t&1)!==0&&(n^=Km),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==Ze)throw new Error(`Expected ${Ze} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},_c=class{constructor(e={}){this.mt=new Ym(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/ia}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=ia-ia%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)}},Ie=1,St=2,BE=4,ra=8,aa=16,Zm=32,GE=64,HE=8192,jm=16384,WE=32768,Pi=65536,Ko=1<<17,qm=1<<18,Jm=1<<19,Qm=1<<20,ef=1<<21,tf=1<<22,nf=1<<23,VE=1<<24,Gt=1<<25,Gi=1<<26,KE=1<<27,$E=1<<28,XE=1<<29,cn=1<<30,YE=1<<31,ZE=1,jE=2,qE=4,JE=8,QE=16,ex=32,tx=64,nx=128,ix=1<<25,rx=1<<28,ax=1<<29,sx=1<<30,ox=1<<31,gc=Ie|St,cx=Ie|Pi|St|Gt|cn,ux=Ie|Pi|St,Hi=Ie|Ko|St|Gt|cn,oh=Zm|ra|aa,dx=Ie|aa|ra,bt=Ie|Gt|cn|St|Gi,lx=qm|Jm|Qm|ef|tf|nf,mx=Ie|ra|aa|Gt|cn,fx=Ie|Pi|St,hx=Ie|St,_x=Ie|Pi|St|Ko,gx=bt|jm,vx=Number.MAX_SAFE_INTEGER-1,rf=(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))(rf||{}),$o=256,af=256,sf=8192,of=2048,cf=512,uf=256,df=$o*2,lf=256,sa=32,Xo=(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.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+sf]="Sounds",e[e.Images=e.Sounds+of]="Images",e[e.Lights=e.Images+cf]="Lights",e[e.ShadowLights=e.Lights+af]="ShadowLights",e[e.Items=e.ShadowLights+lf]="Items",e[e.PlayerSkins=e.Items+uf]="PlayerSkins",e[e.General=e.PlayerSkins+$o]="General",e[e.WheelWeapons=e.General+df]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+sa]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+sa]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+sa]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Xo||{}),px=Xo.MaxConfigStrings,mf={},Vo(mf,{addReplayFrame:()=>OE,createReplaySession:()=>NE,deserializeReplay:()=>LE,serializeReplay:()=>zE}),ff=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(ff||{}),yx=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||{}),ch=0,uh=1,dh=2,lh=3,mh=6,fh=7,hh=8,_h=11,gh=12,vh=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||{}),hf=(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))(hf||{}),_f=12,gf=9,wx=Math.ceil(_f*gf/16),vf=23,pf=2,Ax=Math.ceil(vf*pf/16),Sx={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},yf=(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))(yf||{}),wf={},Vo(wf,{U_ANGLE1:()=>Tf,U_ANGLE2:()=>Mf,U_ANGLE3:()=>Rf,U_EFFECTS:()=>Nf,U_EVENT:()=>Cf,U_FRAME:()=>zf,U_MODEL:()=>Sf,U_MODEL2:()=>Ff,U_MODEL3:()=>Df,U_MODEL4:()=>Uf,U_MOREBITS:()=>Pf,U_NUMBER:()=>Af,U_ORIGIN1:()=>Ef,U_ORIGIN2:()=>xf,U_ORIGIN3:()=>bf,U_REMOVE:()=>Bf,U_RENDERFX:()=>Of,U_SKIN:()=>Lf,U_SOLID:()=>If,U_SOUND:()=>kf}),Af=1,Sf=2,kf=4,Ef=8,xf=16,bf=32,Tf=64,Mf=128,Rf=256,zf=512,Lf=1024,Nf=2048,Of=4096,If=8192,Cf=16384,Pf=32768,Ff=1,Df=2,Uf=4,Bf=32768,Cn=.025,oa=33554432,Fi={None:0,Feet:1,Waist:2,Under:3},Gf=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},Hf=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&oa))return{...e,waterLevel:Fi.None};let s=Fi.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&oa){s=Fi.Waist;let c=e.origin.z+22;n.z=c,t(n)&oa&&(s=Fi.Under)}return{...e,waterLevel:s}},kx=(e,t,n,i)=>{let r={...e};r=Gf(r,n),r=Hf(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:u,viewAngles:c}=r,d=u>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:f,right:l}=j(d),h=IE({velocity:s,frametime:Cn,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:u,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=u>=2?FE({forward:f,right:l,cmd:t,maxSpeed:320}):PE({forward:f,right:l,cmd:t,maxSpeed:320}),w=CE({velocity:h,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||u>=2?10:1,frametime:Cn}),v=n(a,{x:a.x+w.x*Cn,y:a.y+w.y*Cn,z:a.z+w.z*Cn});return{...r,origin:v.endpos,velocity:w}},W=(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))(W||{}),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||{}),Ex=Object.keys(I).length/2,fe=(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))(fe||{}),xx=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"]}});var bx,ln=dn({"src/inventory/ammo.ts"(){"use strict";U(),bx={[fe.Shells]:{id:fe.Shells,ammoType:I.Shells,quantity:10,weaponAmmo:!1},[fe.Bullets]:{id:fe.Bullets,ammoType:I.Bullets,quantity:50,weaponAmmo:!1},[fe.Rockets]:{id:fe.Rockets,ammoType:I.Rockets,quantity:5,weaponAmmo:!1},[fe.Grenades]:{id:fe.Grenades,ammoType:I.Grenades,quantity:5,weaponAmmo:!0},[fe.Cells]:{id:fe.Cells,ammoType:I.Cells,quantity:50,weaponAmmo:!1},[fe.Slugs]:{id:fe.Slugs,ammoType:I.Slugs,quantity:10,weaponAmmo:!1},[fe.MagSlugs]:{id:fe.MagSlugs,ammoType:I.MagSlugs,quantity:10,weaponAmmo:!1},[fe.Flechettes]:{id:fe.Flechettes,ammoType:I.Flechettes,quantity:50,weaponAmmo:!1},[fe.Disruptor]:{id:fe.Disruptor,ammoType:I.Disruptor,quantity:15,weaponAmmo:!1},[fe.Tesla]:{id:fe.Tesla,ammoType:I.Tesla,quantity:5,weaponAmmo:!1},[fe.Trap]:{id:fe.Trap,ammoType:I.Trap,quantity:5,weaponAmmo:!1},[fe.Prox]:{id:fe.Prox,ammoType:I.Prox,quantity:5,weaponAmmo:!1}}}});function Ht(e,t){return(e&t)!==0}var Wf,ph=dn({"src/combat/damageFlags.ts"(){"use strict";Wf=(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))(Wf||{})}});function Tx(e,t,n){if(e<=0||Ht(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=yh[n.armorType],r=Ht(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 Mx(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if(Ht(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},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,d=r.type==="screen"||c?1:2,f=r.type==="screen"?e/3:2*e/3;f=Math.max(1,f);let l=r.cellCount*d;Ht(t,4)&&(l=Math.max(1,Math.floor(l/2))),l>f&&(l=Math.floor(f));let h=l/d;Ht(t,4)&&(h*=2),h=Math.max(1,Math.floor(h));let g=Math.max(d,h),w=Math.max(0,r.cellCount-g);return{saved:l,remainingCells:w}}var un,yh,wh=dn({"src/combat/armor.ts"(){"use strict";U(),ph(),un=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(un||{}),yh={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 Ah(e,t){return e.ownedWeapons.has(t)?(e.currentWeapon=t,!0):!1}var ke,Kt=dn({"src/inventory/playerInventory.ts"(){"use strict";ln(),U(),wh(),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 Sh(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var Vf,kh=dn({"src/combat/weapons/state.ts"(){"use strict";Vf=(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))(Vf||{})}}),Eh={};bE(Eh,{ChangeWeapon:()=>zx,NoAmmoWeaponChange:()=>Lx,setInstantSwitch:()=>Rx,switchToBestWeapon:()=>xh});function Rx(e){pa=e}function zx(e,t){if(!e.client)return;let n=e.client;if(n.weaponstate!==2&&t){if(Ah(n.inventory,t),n.weaponstate=1,n.gun_frame=0,pa){n.weaponstate=0,n.weapon_think_time=0;return}n.weapon_think_time=0}}function Lx(e){e.client&&xh(e)}function xh(e){if(!e.client)return;let t=e.client.inventory,n=null;t.ownedWeapons.has(W.BFG10K)&&t.ammo.counts[I.Cells]>=50?n=W.BFG10K:t.ownedWeapons.has(W.RocketLauncher)&&t.ammo.counts[I.Rockets]>=1?n=W.RocketLauncher:t.ownedWeapons.has(W.Railgun)&&t.ammo.counts[I.Slugs]>=1?n=W.Railgun:t.ownedWeapons.has(W.Chaingun)&&t.ammo.counts[I.Bullets]>=1?n=W.Chaingun:t.ownedWeapons.has(W.SuperShotgun)&&t.ammo.counts[I.Shells]>=2?n=W.SuperShotgun:t.ownedWeapons.has(W.Machinegun)&&t.ammo.counts[I.Bullets]>=1?n=W.Machinegun:t.ownedWeapons.has(W.Shotgun)&&t.ammo.counts[I.Shells]>=1?n=W.Shotgun:n=W.Blaster,n&&n!==t.currentWeapon&&(Ah(t,n),e.client.weaponstate=1,e.client.gun_frame=0,pa&&(e.client.weaponstate=0),e.client.weapon_think_time=0)}var pa,Nx=dn({"src/combat/weapons/switching.ts"(){"use strict";Kt(),ln(),pa=!1}});U();Kt();ln();var Ox={...V};var eP=Object.freeze({aiflags:0,last_sighting:Ox,trail_time:0,pausetime:0});var vc=[{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:"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 Ix=20,Cx=440,Px=940,Yo=32,Fx=1<<24,da=1;U();U();function Kf(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 $t(e,t){let n=Kf(e),i=Kf(t),r=RE(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function Dx(e){return e<=Ix?"melee":e<=Cx?"near":e<=Px?"mid":"far"}function Wi(e,t){let{forward:n}=j(e.angles),i=G(P(t.origin,e.origin)),r=fc(i,n);return(e.spawnflags&da)!==0&&e.trail_time===0&&e.enemy===null?r>.15:r>-.3}function mn(e,t,n,i){if((t.flags&Fx)!==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 Ux(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=Yi(n)}function bh(e){e.angles.y=Qo(e.ideal_yaw)}function Bx(e,t,n){e.enemy&&(e.goalentity=e.enemy,Ux(e,e.enemy),bh(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function Gx(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){Bx(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 Hx(e,t,n,i){let r=$t(e,t),a=Dx(r);return a==="far"||t.light_level<=5||!mn(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||Wi(e,t):a==="mid"?Wi(e,t):!0}function Wx(e,t,n,i,r){if((e.spawnflags&da)!==0){if(!mn(e,t,r))return!1}else if(i.canHear&&!i.canHear(e,t))return!1;let a=P(t.origin,e.origin);return De(a)>1e3||i.areasConnected&&!i.areasConnected(e,t)?!1:(e.ideal_yaw=Yi(a),bh(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function Vx(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&da)===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&da)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function Kx(e){return(e.flags&Yo)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&Yo)!==0:!!(e.enemy&&(e.enemy.flags&Yo)!==0)}function pc(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}=Vx(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(Kx(a))return!1;if(s){if(!Wx(e,a,t,r,i))return!1}else{if(!Hx(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return Gx(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}function Th(e,t){if(t===0)return{x:0,y:0,z:0};let n=ca(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function ya(e,t,n){let i=Th(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function Xn(e,t){let n=Qo(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=Qo(n+a)}function _(e,t){ya(e,e.angles.y,t)}function wa(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=Yi(n)}function R(e,t,n){pc(e,n.targetAwareness,n,n.trace)||Xn(e,t)}function N(e,t,n,i){if(!pc(e,i.targetAwareness,i,i.trace)&&(wa(e,e.goalentity),Xn(e,n),t!==0&&ya(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&$t(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&&ya(e,e.angles.y,t),(e.monsterinfo.aiflags&32768)===0&&Xn(e,n)}function oe(e,t,n,i){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,i);return}pc(e,i.targetAwareness,i,i.trace),(e.monsterinfo.aiflags&32768)===0&&wa(e,e.enemy??e.goalentity),Xn(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Mh(e,e.angles.y,t,i)}function $x(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&wa(e,t),Xn(e,i),n!==0&&ya(e,e.angles.y,n)}function de(e,t,n,i){(e.monsterinfo.aiflags&32768)===0&&wa(e,e.enemy),Xn(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Mh(e,e.angles.y,t,i)}function Xx(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,Hi);if(e.groundentity=i.ent,!e.groundentity&&!i.allsolid&&!i.startsolid&&i.fraction===1){let r=t.pointcontents(n);r&oh?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function Yx(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,Hi).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,Hi).fraction<1))return!0;return!1}function Mh(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=Th(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,Hi).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&&!Yx(e,i)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&Xx(e,i),!0)}U();U();var Zx=vc.filter(e=>e.save||e.type==="callback"),tP=new Map(Zx.map(e=>[e.name,e]));U();U();wh();ph();U();function jx(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 qx(e,t,n,i,r){if(Ht(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=F(o,(t===e?1600:500)*i/s);return e.velocity=D(e.velocity,c),c}function Jx(e,t,n,i,r){let a=i,s=0,o=0,u,c;if(e.powerArmor){let d=Mx(i,r,t,n,e.powerArmor);s=d.saved,u=d.remainingCells,a-=s}if(e.regularArmor){let d=Tx(a,r,e.regularArmor);o=d.saved,c=d.remainingArmor,a-=o}return[Math.max(0,a),s,o,u,c]}function $f(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 he(e,t,n,i,r,a,s,o,u,c,d,f){if(!e.takedamage)return null;let l=jx(n,d),h=s*l,g=o*l;if(!Ht(u,32)&&((e.flags??0)&1)!==0&&h>0)return{take:0,psave:0,asave:h,knocked:{x:0,y:0,z:0},killed:!1};let v=qx(e,n,i,g,u),[y,T,S,p,E]=Jx(e,r,a,h,u);e.monsterinfo&&e.monsterinfo.freeze_time>d&&h>0&&(y=e.health+100,T=0,S=0),e.powerArmor&&p!==void 0&&(e.powerArmor.cellCount=p),e.regularArmor&&(e.regularArmor.armorCount=E??e.regularArmor.armorCount);let b=y;b>0&&(e.health-=b,f&&!Ht(u,1024)&&(e.classname==="player"||e.monsterinfo)&&f(r,1,se.temp_entity,we.BLOOD,r,a));let x=e.health<=0;return x?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,b,r,c):b>0&&e.pain&&e.pain(e,n,o,b,c),{take:b,psave:T,asave:S,knocked:v,killed:x,remainingCells:p,remainingArmor:E}}function yc(e,t,n,i,r,a,s,o,u,c={},d){let f=[],l=$f(t),h=c.canDamage??(()=>!0);for(let g of e){if(g===r||!g.takedamage||!h(g,t))continue;let w=g.mins&&g.maxs?ME(l,D(g.origin,g.mins),D(g.origin,g.maxs)):$f(g),v=P(l,w),y=De(v);if(a>0&&y>a)continue;let T=i-.5*y;if(T<=0)continue;let S=g===n?T*.5:T,p=G(P(g.origin,l)),E=he(g,t,n,p,w,p,S,S,s|1,o,u,d);f.push({target:g,result:E,appliedDamage:S})}return f}var nP=Zi();U();U();U();function Rh(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,d,f,l)=>{if(d===c.owner)return;d&&d.takedamage&&he(d,c,c.owner,c.velocity,c.origin,f?f.normal:V,r,0,0,8,e.timeSeconds,e.multicast.bind(e));let h=e.findByRadius(c.origin,120);yc(h,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 wc(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 d=e.findByRadius(c.origin,120);yc(d,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,d,f,l)=>{if(d!==c.owner){if(d&&d.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 ji(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,d,f)=>{if(c!==u.owner){if(c&&c.takedamage)he(c,u,u.owner,u.velocity,u.origin,d?d.normal:V,r,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(d){let l=we.BLASTER;s===58&&(l=we.BLUEHYPERBLASTER),e.multicast(u.origin,1,se.temp_entity,l,u.origin,d.normal)}e.free(u)}},e.finalizeSpawn(o),o}function Qx(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,d)=>{if(u!==o.owner){if(u&&u.takedamage){he(u,o,o.owner,o.velocity,o.origin,c?c.normal:V,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,V,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,V,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function e2(e,t,n,i,r,a){ji(e,t,n,i,r,a,58)}function t2(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=[],d=[],f={...r};try{for(let h=0;h<u;h++){let g=e.trace(f,null,null,o,t,Ie|Gt|cn|Gi);if(!g.ent||g.fraction>=1||(g.ent.takedamage&&g.ent!==t.owner&&he(g.ent,t,t.owner,s,g.endpos,V,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),d.push(g.ent.solid),g.ent.solid=0,f={...g.endpos}}let l=e.trace(r,null,null,o,t,Ie);e.multicast(t.origin,2,se.temp_entity,we.BFG_LASER,r,l.endpos)}finally{for(let l=0;l<c.length;l++)c[l].solid=d[l]}}function n2(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,gc).fraction<1||t2(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function i2(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=De(a),o=e.dmg_radius||100,u=(e.radius_dmg||200)*(1-Math.sqrt(s/o));u>0&&he(i,e,e.owner,e.velocity,r,V,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 zh(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,d,f)=>{if(c===u.owner)return;c&&c.takedamage&&he(c,u,u.owner,u.velocity,u.origin,d?d.normal:V,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let l=e.findByRadius(u.origin,100);yc(l,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=V,u.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),u.frame=0,u.enemy=c,u.think=(h,g)=>i2(h,g),e.scheduleThink(u,e.timeSeconds+.1)},o.think=(u,c)=>n2(u,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}U();var iP=1/40;ln();Kt();kh();Kt();var r2=1;Kt();kh();Kt();ln();U();U();var a2=22;function mt(e,t,n,i,r,a){let s=Kn(t.origin),o={...s,z:s.z+(t.viewheight??a2)},u=F(i,n.x),c=F(r,n.y),d=F(a,n.z),f=D(D(D(o,u),c),d),l=e.trace(o,null,null,f,t,gc);return l.fraction<1?{x:l.endpos.x-i.x,y:l.endpos.y-i.y,z:l.endpos.z-i.z}:f}var s2=7,o2=18,c2=36,u2=39,d2=5,l2=28,m2=52,f2=57,h2=3,_2=23,g2=52,v2=61,p2=5,y2=21,w2=52,A2=61,S2=3,k2=18,E2=51,x2=56,b2=3,T2=12,M2=34,R2=38,z2=6,L2=9,N2=28,O2=32,I2=8,C2=32,P2=54,F2=58,D2=5,U2=16,B2=36,G2=39,H2=4,W2=8,V2=52,K2=55;var $2=46,X2=53;var Y2=109,Z2=117;var j2=1;var Wt=Zi();function ft(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 ht(e){if(!e.client)return;let t=(e.client.pm_flags&2)!==0;e.client.anim_priority=j2,t?(e.frame=Y2-1,e.client.anim_end=Z2):(e.frame=$2-1,e.client.anim_end=X2)}function Lh(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?he(u.ent,t,t,V,u.endpos,u.plane?u.plane.normal:V,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 ec(e,t,n,i,r,a,s,o,u,c,d,f){for(let l=0;l<s;l++){let h=D(F(r,Wt.crandom()*c),F(a,Wt.crandom()*d)),g=D(i,h),w={x:n.x+g.x*8192,y:n.y+g.y*8192,z:n.z+g.z*8192},v=e.trace(n,null,null,w,t,0);v.ent&&v.ent.takedamage?he(v.ent,t,t,V,v.endpos,v.plane?v.plane.normal:V,o,u,16,f,e.time,e.multicast):v.plane&&Wt.frandom()>.9&&e.multicast(v.endpos,1,se.temp_entity,we.GUNSHOT,v.endpos,v.plane.normal)}}function q2(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,d=0,f=u;for(;d<16;){d++;let l=e.trace(o,null,null,u,c,0);if(f=l.endpos,l.fraction>=1||(l.ent&&l.ent.takedamage&&he(l.ent,t,t,V,l.endpos,l.plane?l.plane.normal:V,r,a,4,11,e.time,e.multicast),c=l.ent,o=l.endpos,!l.ent||l.ent===e.entities.world))break}e.multicast(s,2,se.temp_entity,we.RAILTRAIL,s,f)}function J2(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,dh),ft(t,-2,0,-2),ht(t);let{forward:i,right:r,up:a}=j(t.angles),s=mt(e,t,{x:8,y:8,z:-8},i,r,a);ec(e,t,s,i,r,a,12,4,1,500,500,2)}function Q2(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,_h),ft(t,-4,0,-4),ht(t);let{forward:i,right:r,up:a}=j(t.angles),s=mt(e,t,{x:8,y:8,z:-8},i,r,a),{forward:o,right:u,up:c}=j({...t.angles,y:t.angles.y-5});ec(e,t,s,o,u,c,10,6,1,700,700,3);let{forward:d,right:f,up:l}=j({...t.angles,y:t.angles.y+5});ec(e,t,s,d,f,l,10,6,1,700,700,3)}function e5(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,uh),ft(t,-1,Wt.crandom()*.5,0),ht(t);let{forward:i,right:r,up:a}=j(t.angles),s=mt(e,t,{x:8,y:8,z:-8},i,r,a);Lh(e,t,s,i,8,1,4)}function t5(e,t){if(!t.client)return;let n=t.client.inventory,i=Sh(t.client.weaponStates,W.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;ft(t,-.5,Wt.crandom()*(.5+a*.15),0),ht(t);let{forward:u,right:c,up:d}=j(t.angles),f=mt(e,t,{x:8,y:8,z:-8},u,c,d);for(let h=0;h<a;h++){let g=D(F(c,Wt.crandom()*4),F(d,Wt.crandom()*4)),w=D(u,g);Lh(e,t,f,w,s,o,5)}let l=lh+a-1;e.multicast(t.origin,1,se.muzzleflash,t.index,l)}function n5(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,mh),ft(t,-3,0,-3),ht(t);let{forward:i,right:r,up:a}=j(t.angles),s=mt(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?100:125,u=e.deathmatch?200:225;q2(e,t,s,i,o,u)}function i5(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,vh),ft(t,-.5,0,0),ht(t);let{forward:i,right:r,up:a}=j(t.angles),s=mt(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?15:20;ji(e.entities,t,s,i,o,1e3,10)}function r5(e,t){if(!t.client)return;e.multicast(t.origin,1,se.muzzleflash,t.index,ch),ft(t,-.5,0,0),ht(t);let{forward:n,right:i,up:r}=j(t.angles),a=mt(e,t,{x:8,y:8,z:-8},n,i,r);ji(e.entities,t,a,n,15,1500,1)}function a5(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,fh),ft(t,-2,0,-2),ht(t);let{forward:i,right:r,up:a}=j(t.angles),s=mt(e,t,{x:8,y:8,z:-8},i,r,a),o=100+e.random.irandom(21);Rh(e.entities,t,s,i,o,120,650)}function s5(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,hh),ft(t,-2,0,-2),ht(t);let{forward:i,right:r,up:a}=j(t.angles),s=mt(e,t,{x:8,y:8,z:-8},i,r,a);wc(e.entities,t,s,i,120,600)}function o5(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,gh),ft(t,-5,0,-2),ht(t);let{forward:s,right:o,up:u}=j(t.angles),c=mt(e,t,{x:8,y:8,z:-8},s,o,u),d=e.deathmatch?200:500;zh(e.entities,t,c,s,d,400,200)}}function sn(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 Tt(e,t,n,i,r,a,s,o,u){if(!e.client)return;let c=e.client,d=u.timeSeconds;if(c.weapon_think_time&&c.weapon_think_time<=d&&(c.weapon_think_time=0),!(c.weapon_think_time&&c.weapon_think_time>d)){if(c.weaponstate===1){if(c.gun_frame<t){c.gun_frame++,c.weapon_think_time=d+sn(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=d+sn(e);return}if(c.weaponstate===2){if(c.gun_frame<r){c.gun_frame++,c.weapon_think_time=d+sn(e);return}Promise.resolve().then(()=>(Nx(),Eh)).then(({ChangeWeapon:f})=>{f(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=d+sn(e),a){for(let f of a)if(c.gun_frame===f&&Wt.frandom()<.5)return}return}c.gun_frame=n+1,c.weapon_think_time=d+sn(e);return}if(c.weaponstate===3){if(s){for(let f of s)if(c.gun_frame===f){o&&o(e);break}}if(c.gun_frame<n){c.gun_frame++,c.weapon_think_time=d+sn(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=d+sn(e);return}}}function Nh(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)):Tt(e,t-1,n,i,r,null,null,s,o)}function c5(e,t){let n=Sh(e.client.weaponStates,W.Chaingun);!(e.client.buttons&r2)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0),Nh(e,p2,y2,w2,A2,0,i=>t5(t.game,i),t)}var u5=[22,28,34],d5=[8];function l5(e,t){Tt(e,s2,o2,c2,u2,u5,d5,n=>J2(t.game,n),t)}var m5=[29,42,57],f5=[22,28];function h5(e,t){Tt(e,d2,l2,m2,f2,m5,f5,n=>Q2(t.game,n),t)}var _5=[23,45],g5=[4,5,30,31];function v5(e,t){Tt(e,h2,_2,g2,v2,_5,g5,n=>e5(t.game,n),t)}var p5=[25,33],y5=[4];function w5(e,t){Tt(e,b2,T2,M2,R2,p5,y5,n=>a5(t.game,n),t)}function A5(e,t){Nh(e,z2,L2,N2,O2,0,n=>i5(t.game,n),t)}var S5=[56],k5=[4];function E5(e,t){Tt(e,S2,k2,E2,x2,S5,k5,n=>n5(t.game,n),t)}var x5=[39,45,50,54],b5=[9,22];function T5(e,t){Tt(e,I2,C2,P2,F2,x5,b5,n=>o5(t.game,n),t)}var M5=[34,51,59],R5=[6];function z5(e,t){Tt(e,D2,U2,B2,G2,M5,R5,n=>s5(t.game,n),t)}var L5=[19,32],N5=[5];function O5(e,t){Tt(e,H2,W2,V2,K2,L5,N5,n=>r5(t.game,n),t)}var rP={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:W.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5,think:O5},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:W.Shotgun,ammoType:I.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:l5},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:W.SuperShotgun,ammoType:I.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:h5},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:W.Machinegun,ammoType:I.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:v5},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:W.Chaingun,ammoType:I.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:c5},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:W.HandGrenade,ammoType:I.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:W.GrenadeLauncher,ammoType:I.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1,think:z5},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:W.RocketLauncher,ammoType:I.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1,think:w5},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:W.HyperBlaster,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:A5},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:W.Railgun,ammoType:I.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5,think:E5},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:W.BFG10K,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1,think:T5},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:W.IonRipper,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:W.Phalanx,ammoType:I.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:W.PlasmaBeam,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:W.EtfRifle,ammoType:I.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:W.ProxLauncher,ammoType:I.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};ln();ln();U();U();var Ye=Zi(),I5=1;function Xf(e,t,n,i,r){let a=e.spawn();a.classname="gib",a.origin={x:t.x+(Ye.frandom()-.5)*20,y:t.y+(Ye.frandom()-.5)*20,z:t.z+(Ye.frandom()-.5)*20},a.velocity={x:(Ye.frandom()-.5)*300,y:(Ye.frandom()-.5)*300,z:200+Ye.frandom()*100},a.movetype=9,a.solid=0,a.clipmask=1,a.avelocity={x:Ye.crandom()*600,y:Ye.crandom()*600,z:Ye.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(Ye.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&I5,a.think=u=>{e.free(u)},e.scheduleThink(a,e.timeSeconds+10+Ye.frandom()*10),e.finalizeSpawn(a),a}function Oh(e,t,n){if(typeof n=="number"){let i=n,r=4+Math.floor(Ye.frandom()*4);for(let a=0;a<r;a++)Xf(e,t,i)}else{let i=n;for(let r of i)for(let a=0;a<r.count;a++)Xf(e,t,0,r.model,r.flags)}}U();function C5(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 P5(e,t){C5(e,t),e.nextthink=t.timeSeconds+.1}var Aa=.1,Bi=80;var Ih=Zi();function F5(){return Ih.frandom()}function Ch(e,t){return Math.floor(Ih.frandom()*(t-e+1)+e)}function Bn(e,t,n){R(e,Aa,n)}function je(e,t,n){N(e,t,Aa,n)}function Pn(e,t,n){oe(e,t,Aa,n)}function pe(e,t,n){de(e,t,Aa,n)}function Z(e,t,n){_(e,t)}var Vi={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 et(e,t){t.sound(e,2,Vi.footstep,1,1,0)}function la(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function D5(e,t){}var Ac,Ph,U5,Fh,B5,G5,H5,W5,V5,Dh,K5;function $5(e,t){la(e,Ac)}function X5(e,t){e.monsterinfo.aiflags&1||e.enemy||F5()>.15||(la(e,Ph),t.sound(e,1,Vi.idle,1,2,0))}var Y5=[{ai:Bn,dist:0,think:X5},{ai:Bn,dist:0},{ai:Bn,dist:0},{ai:Bn,dist:0},{ai:Bn,dist:0}];Ac={firstframe:0,lastframe:4,frames:Y5,endfunc:null};var Z5=Array.from({length:20},()=>({ai:Bn,dist:0}));Ph={firstframe:5,lastframe:24,frames:Z5,endfunc:$5};var j5=[{ai:je,dist:9.1},{ai:je,dist:6.3},{ai:je,dist:4.9},{ai:je,dist:6.7,think:et},{ai:je,dist:6},{ai:je,dist:8.2},{ai:je,dist:7.2},{ai:je,dist:6.1},{ai:je,dist:4.9},{ai:je,dist:4.7,think:et},{ai:je,dist:4.7}];U5={firstframe:25,lastframe:35,frames:j5,endfunc:null};var q5=[{ai:Pn,dist:21},{ai:Pn,dist:11,think:et},{ai:Pn,dist:21},{ai:Pn,dist:25,think:D5},{ai:Pn,dist:18,think:et},{ai:Pn,dist:19}];Fh={firstframe:36,lastframe:41,frames:q5,endfunc:null};function qi(e,t){e.monsterinfo.aiflags&1?la(e,Ac):la(e,Fh)}function Uh(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},u={x:a.x+s.x*Bi,y:a.y+s.y*Bi,z:a.z+s.z*Bi},c=r.trace(a,null,null,u,e,536870913);return!c.ent||!c.ent.takedamage?!1:(he(c.ent,e,e,s,c.endpos,c.plane?.normal||V,n,i,0,0,r.timeSeconds,r.multicast.bind(r)),!0)}function J5(e,t){Uh(e,{x:Bi,y:0,z:-24},Ch(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function Bh(e,t){t.sound(e,1,Vi.punch,1,1,0)}var Q5=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:Bh},{ai:pe,dist:0,think:J5},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];B5={firstframe:67,lastframe:74,frames:Q5,endfunc:qi};function eb(e,t){Uh(e,{x:Bi,y:0,z:-4},Ch(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var tb=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:et},{ai:pe,dist:0},{ai:pe,dist:0,think:Bh},{ai:pe,dist:0},{ai:pe,dist:0,think:eb},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];G5={firstframe:75,lastframe:86,frames:tb,endfunc:qi};function nb(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 d=Math.max(1,n*c*c),f=r*c*c,l=G(P(o.origin,e.origin));he(o,e,t,l,o.origin,l,d,f,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function Sc(e,t){t.sound(e,1,Vi.thud,1,1,0),t.sound(e,2,Vi.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},nb(e,e,8,165,300,t)}function ib(e,t,n,i,r){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,Sc(e,r))}function kc(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function rb(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=$n(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,d,f)=>{ib(u,c,d,f,t),u.groundentity&&(u.frame=104,Sc(u,t),u.touch=void 0)},kc(e,t)}function ab(e,t){if(kc(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(Sc(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var sb=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:Z,dist:0,think:rb},{ai:Z,dist:0,think:kc},{ai:Z,dist:0,think:ab},{ai:Z,dist:0,think:et},{ai:Z,dist:0},{ai:Z,dist:0,think:et},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:et}];H5={firstframe:87,lastframe:109,frames:sb,endfunc:qi};var ob=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0}];W5={firstframe:149,lastframe:152,frames:ob,endfunc:qi};var cb=Array.from({length:20},(e,t)=>({ai:Z,dist:0,think:t%5===4?et:void 0}));V5={firstframe:153,lastframe:172,frames:cb,endfunc:qi};function Gh(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=Dh.lastframe,e.nextthink=-1,e.deadflag=2}var ub=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:et},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0}];Dh={firstframe:173,lastframe:185,frames:ub,endfunc:Gh};var db=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:et},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0}];K5={firstframe:186,lastframe:193,frames:db,endfunc:Gh};U();function Yf(){return 2*Math.random()-1}function ma(e,t,n,i,r,a,s,o,u,c=0){let d=n;if(a>0||s>0){let h=$n(n),{right:g,up:w}=j(h),v=Yf()*a,y=Yf()*s;d={x:n.x+g.x*v+w.x*y,y:n.y+g.y*v+w.y*y,z:n.z+g.z*v+w.z*y},d=G(d)}let f=D(t,F(d,8192)),l=u.trace(t,f,V,V,e,bt);!l.ent||l.fraction===1||he(l.ent,e,e,d,l.endpos,l.plane?.normal||V,i,r,18,c,u.timeSeconds)}var Vt=ma;function lb(e,t,n,i,r,a,s,o,u,c,d=2){for(let f=0;f<o;f++)Vt(e,t,n,i,r,a,s,u,c,d)}function _t(e,t,n,i,r,a,s,o,u=1){ji(o,e,t,n,i,r,u)}function mb(e,t,n,i,r,a,s,o){e2(o,e,t,n,i,r)}function fb(e,t,n,i,r,a,s,o){Qx(o,e,t,n,i,r)}function hb(e,t,n,i,r,a,s){wc(s,e,t,n,i,r)}function Ji(e,t,n,i,r,a,s){Rh(s,e,t,n,i,120,r)}function Hh(e,t,n,i,r,a,s,o,u){zh(u,e,t,n,i,r,s)}function Wh(e,t,n,i,r,a,s){let o=D(t,F(n,8192)),u=s.trace(t,o,V,V,e,bt);s.multicast(t,2,se.temp_entity,we.RAILTRAIL,t,u.endpos),u.ent&&u.ent.takedamage&&he(u.ent,e,e,n,u.endpos,V,i,r,6,11,s.timeSeconds)}function Qi(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,u=D(s,F(a,o)),c=r.trace(s,u,V,V,e,bt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let d=G(P(c.endpos,s));return he(c.ent,e,e,d,c.endpos,c.plane?.normal||V,n,i,0,0,r.timeSeconds),!0}return!1}function _b(e,t,n,i,r,a,s,o){Ji(e,t,n,i,r,a,o)}function Zf(e,t){let n={...e.origin},i=D(n,F(e.movedir,2048)),r={...n},a=16,s=[],o=[];try{for(let u=0;u<a;u++){let c=t.trace(r,i,V,V,e,Ie|Gt|cn|Gi);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&he(c.ent,e,e.owner,e.movedir,c.endpos,V,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||V,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 gb(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function tc(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?gb(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{i(s,o),Zf(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),Zf(a,r)}U();var Ec=.1,vb={x:0,y:30,z:-15},pb={x:0,y:15,z:0},yb={x:0,y:-15,z:0},wb={x:0,y:-30,z:-15},Ab={x:30,y:20,z:0},Sb={x:30,y:-20,z:0};function kb(e,t,n){R(e,Ec,n)}function Eb(e,t,n){N(e,t,Ec,n)}function Sa(e,t,n){de(e,t,Ec,n)}function xc(e,t,n){_(e,t)}var bc,Vh,Kh,xb,$h,Xh,bb,Tb,Mb,Yh;function Rb(e){e.monsterinfo.current_move=bc}function zb(e){e.monsterinfo.current_move=Vh}function er(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Kh:e.monsterinfo.current_move=bc}function Zh(e){e.monsterinfo.current_move=$h}function Lb(e){e.enemy&&Wi(e,e.enemy)&&Math.random()<=.7?Zh(e):e.monsterinfo.current_move=Xh}function nc(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=F(n,t.x),o=F(i,t.y),u=F(r,t.z);return D(D(D(a,s),o),u)}function Nb(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=nc(e,Ab),i=G(P(e.enemy.origin,n));Vt(e,n,i,6,4,.1,.05,0,t,4);let r=nc(e,Sb),a=G(P(e.enemy.origin,r));Vt(e,r,a,6,4,.1,.05,0,t,4)}function Ob(e,t){if(!e.enemy)return;let n=[vb,pb,yb,wb],i=n[Math.floor(Math.random()*n.length)],r=nc(e,i),a=G(P(e.enemy.origin,r));Ji(e,r,a,50,500,0,t)}function Ib(e){e.monsterinfo.nextframe=Yh.lastframe,e.nextthink=-1}var jh=Array.from({length:20},()=>({ai:Eb,dist:10}));Vh={firstframe:0,lastframe:19,frames:jh,endfunc:zb};Kh={firstframe:0,lastframe:19,frames:jh,endfunc:er};var Cb=Array.from({length:21},()=>({ai:kb,dist:0}));bc={firstframe:29,lastframe:49,frames:Cb,endfunc:Rb};var Pb=Array.from({length:9},(e,t)=>({ai:Sa,dist:2,think:t===8?Zh:null}));xb={firstframe:50,lastframe:58,frames:Pb,endfunc:null};var Fb=Array.from({length:6},()=>({ai:Sa,dist:2,think:Nb}));$h={firstframe:59,lastframe:64,frames:Fb,endfunc:Lb};var Db=Array.from({length:4},()=>({ai:Sa,dist:2}));Xh={firstframe:65,lastframe:68,frames:Db,endfunc:er};var Ub=Array.from({length:21},(e,t)=>({ai:Sa,dist:2,think:t===12?Ob:null}));bb={firstframe:69,lastframe:89,frames:Ub,endfunc:er};var Bb=Array.from({length:18},()=>({ai:xc,dist:0}));Tb={firstframe:90,lastframe:107,frames:Bb,endfunc:er};var Gb=Array.from({length:4},()=>({ai:xc,dist:0}));Mb={firstframe:108,lastframe:111,frames:Gb,endfunc:er};var Hb=Array.from({length:49},()=>({ai:xc,dist:0}));Yh={firstframe:112,lastframe:160,frames:Hb,endfunc:Ib};U();var ka=.1,Tc=80,Ea=Math.random;function qh(e,t,n){R(e,ka,n)}function qe(e,t,n){N(e,t,ka,n)}function Je(e,t,n){oe(e,t,ka,n)}function C(e,t,n){de(e,t,ka,n)}function X(e,t,n){_(e,t)}var Mc,Wb,Vb,Jh,Qh,Kb,$b,Xb,Yb,Zb,jb,qb,Jb,Qb;function e0(e){e.monsterinfo.current_move=Mc}function Xt(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=Mc:e.monsterinfo.current_move=Jh}function e3(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function t3(e,t){let n={x:Tc,y:e.maxs.x,z:8};Qi(e,n,15+Math.floor(Ea()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function n3(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function i3(e,t){let n={x:Tc,y:e.mins.x,z:8};Qi(e,n,15+Math.floor(Ea()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function t0(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function n0(e,t){Qi(e,{x:Tc,y:0,z:8},10+Math.floor(Ea()*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 i0(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=Qh)}function jf(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,V,V,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);he(e.enemy,e,e,s,e.enemy.origin,V,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=j(e.angles).forward;e.enemy.velocity=F(o,-1200)}var qf=[{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}],Jf=[{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 r3(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>=qf.length)&&(s=0);let o=qf[s],u=D(n.origin,F(r,o.x));u=D(u,F(i,o.y)),u=D(u,F(a,o.z));let c=G(P(n.enemy.origin,u));e.origin=u,e.movedir=c,t.linkentity(e)}function a3(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>=Jf.length)&&(s=0);let o=Jf[s],u=D(n.origin,F(r,o.x));u=D(u,F(i,o.y)),u=D(u,F(a,o.z));let c=G(P(n.enemy.origin,u));e.origin=u,e.movedir=c,t.linkentity(e)}function dt(e,t){tc(e,1,!1,r3,t),tc(e,1,!0,a3,t)}function s3(e){Ea()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function o3(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function c3(e){}function u3(e){e.monsterinfo.aiflags&=-17}var d3=Array.from({length:30},()=>({ai:qh,dist:0}));Mc={firstframe:162,lastframe:191,frames:d3,endfunc:e0};var l3=Array.from({length:30},()=>({ai:qh,dist:0}));Wb={firstframe:192,lastframe:221,frames:l3,endfunc:e0};var m3=[{ai:qe,dist:7},{ai:qe,dist:2},{ai:qe,dist:3},{ai:qe,dist:3},{ai:qe,dist:1},{ai:qe,dist:0},{ai:qe,dist:0},{ai:qe,dist:9},{ai:qe,dist:-4},{ai:qe,dist:-1},{ai:qe,dist:2}];Vb={firstframe:0,lastframe:10,frames:m3,endfunc:null};var f3=[{ai:Je,dist:9},{ai:Je,dist:2},{ai:Je,dist:3},{ai:Je,dist:3},{ai:Je,dist:1},{ai:Je,dist:0},{ai:Je,dist:0},{ai:Je,dist:10},{ai:Je,dist:-4},{ai:Je,dist:-1},{ai:Je,dist:2}];Jh={firstframe:0,lastframe:10,frames:f3,endfunc:null};var h3=[{ai:C,dist:8},{ai:C,dist:3},{ai:C,dist:5},{ai:C,dist:0},{ai:C,dist:-3,think:e3},{ai:C,dist:0},{ai:C,dist:-5},{ai:C,dist:-7,think:t3},{ai:C,dist:0},{ai:C,dist:6,think:n3},{ai:C,dist:1},{ai:C,dist:2,think:i3},{ai:C,dist:-3},{ai:C,dist:6},{ai:C,dist:-1},{ai:C,dist:-3},{ai:C,dist:2},{ai:C,dist:-11}];Qh={firstframe:53,lastframe:70,frames:h3,endfunc:Xt};var _3=[{ai:C,dist:5},{ai:C,dist:-4},{ai:C,dist:-4},{ai:C,dist:-3},{ai:C,dist:0,think:t0},{ai:C,dist:0},{ai:C,dist:13,think:n0},{ai:C,dist:0},{ai:C,dist:2},{ai:C,dist:0},{ai:C,dist:-9,think:i0},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];Kb={firstframe:71,lastframe:87,frames:_3,endfunc:Xt};var g3=[{ai:C,dist:5},{ai:C,dist:-4},{ai:C,dist:-4},{ai:C,dist:-3},{ai:C,dist:0,think:t0},{ai:C,dist:0,think:jf},{ai:C,dist:13},{ai:C,dist:0,think:n0},{ai:C,dist:2},{ai:C,dist:0,think:jf},{ai:C,dist:-9,think:i0},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];$b={firstframe:71,lastframe:87,frames:g3,endfunc:Xt};var v3=[{ai:C,dist:9,think:dt},{ai:C,dist:2,think:dt},{ai:C,dist:3,think:dt},{ai:C,dist:3,think:dt},{ai:C,dist:1,think:dt},{ai:C,dist:0,think:dt},{ai:C,dist:0,think:dt},{ai:C,dist:10,think:dt},{ai:C,dist:-4,think:dt},{ai:C,dist:-1,think:dt},{ai:C,dist:2,think:s3}];Xb={firstframe:0,lastframe:10,frames:v3,endfunc:Xt};var p3=[{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}];Yb={firstframe:88,lastframe:108,frames:p3,endfunc:Xt};var y3=[{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}];Zb={firstframe:109,lastframe:116,frames:y3,endfunc:Xt};var w3=[{ai:X,dist:-2},{ai:X,dist:2},{ai:X,dist:1},{ai:X,dist:3},{ai:X,dist:0},{ai:X,dist:-4}];jb={firstframe:117,lastframe:122,frames:w3,endfunc:Xt};var A3=Array.from({length:18},()=>({ai:X,dist:0}));qb={firstframe:123,lastframe:140,frames:A3,endfunc:r0};var S3=[{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:9},{ai:X,dist:0}];Jb={firstframe:141,lastframe:145,frames:S3,endfunc:r0};var k3=[{ai:X,dist:0},{ai:X,dist:-2,think:o3},{ai:X,dist:17,think:c3},{ai:X,dist:-3},{ai:X,dist:-1,think:u3},{ai:X,dist:-5},{ai:X,dist:-6},{ai:X,dist:-6}];Qb={firstframe:146,lastframe:153,frames:k3,endfunc:Xt};function r0(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 xa=.1,E3=80,Yn=Math.random;function a0(e,t,n){R(e,xa,n)}function x3(e,t,n){N(e,t,xa,n)}function b3(e,t,n){oe(e,t,xa,n)}function Y(e,t,n){de(e,t,xa,n)}function Zn(e,t,n){_(e,t)}var Rc,s0,o0,T3,zc,ic,M3,Lc,c0,R3,z3,L3,N3,O3,I3,u0;function d0(e){e.monsterinfo.current_move=Rc}function C3(e){e.monsterinfo.current_move=s0}function fn(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Rc;return}e.monsterinfo.current_move=o0}function P3(e){e.monsterinfo.aiflags&4||e.enemy||Yn()<=.3&&(e.monsterinfo.current_move=u0)}function F3(e,t){Yn()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function D3(e,t){let n={x:E3,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),Qi(e,n,10+Math.floor(Yn()*6),100,t)}function U3(e,t){let{forward:n,right:i}=j(e.angles),r={x:0,y:20,z:40},a=D(e.origin,F(n,r.x)),s=F(i,r.y),o=D(a,s),u={...o,z:o.z+r.z},c=e.skin>1?500:650,d=!!e.monsterinfo.blindfire,f=V;if(d&&e.monsterinfo.blind_fire_target)f=e.monsterinfo.blind_fire_target;else if(e.enemy)f=e.enemy.origin;else return;let l=P(f,u);!d&&e.enemy&&(Yn()<.33||u.z<e.enemy.absmin.z?l={...l,z:l.z+e.enemy.viewheight}:l={...l,z:e.enemy.absmin.z+1-u.z});let h=G(l);e.skin>1?_b(e,u,h,50,c,0,.075,t):Ji(e,u,h,50,c,0,t)}function B3(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=$n(n).y}}function G3(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function H3(e){e.monsterinfo.current_move=zc}function W3(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=ic;return}if(e.enemy&&e.enemy.health>0&&Yn()<=.6){e.monsterinfo.current_move=zc;return}e.monsterinfo.current_move=ic}function V3(e){if(e.enemy&&e.enemy.health>0&&Yn()<=.9){e.monsterinfo.current_move=Lc;return}e.monsterinfo.current_move=c0}function K3(e){e.monsterinfo.current_move=Lc}var $3=Array.from({length:30},(e,t)=>({ai:a0,dist:0,think:t===8?(n,i)=>F3(n,i):null}));u0={firstframe:201,lastframe:230,frames:$3,endfunc:d0};var X3=Array.from({length:30},(e,t)=>({ai:a0,dist:0,think:t===29?P3:null}));Rc={firstframe:101,lastframe:130,frames:X3,endfunc:d0};var Y3=Array.from({length:10},()=>({ai:x3,dist:6}));s0={firstframe:171,lastframe:180,frames:Y3,endfunc:C3};var Z3=Array.from({length:10},()=>({ai:b3,dist:12}));o0={firstframe:171,lastframe:180,frames:Z3,endfunc:fn};var j3=Array.from({length:5},()=>({ai:Zn,dist:0}));R3={firstframe:90,lastframe:94,frames:j3,endfunc:fn};var q3=Array.from({length:5},()=>({ai:Zn,dist:0}));z3={firstframe:95,lastframe:99,frames:q3,endfunc:fn};var J3=Array.from({length:21},()=>({ai:Zn,dist:0}));L3={firstframe:100,lastframe:120,frames:J3,endfunc:fn};var Q3=Array.from({length:12},()=>({ai:Zn,dist:0}));N3={firstframe:48,lastframe:59,frames:Q3,endfunc:l0};var e6=Array.from({length:23},()=>({ai:Zn,dist:0}));O3={firstframe:60,lastframe:82,frames:e6,endfunc:l0};function l0(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var t6=[{ai:Y,dist:0,think:B3},{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:H3}];T3={firstframe:0,lastframe:12,frames:t6,endfunc:null};var n6=[{ai:Y,dist:19,think:U3},{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:G3},{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:W3}];zc={firstframe:13,lastframe:26,frames:n6,endfunc:null};var i6=[{ai:Y,dist:-3},{ai:Y,dist:0},{ai:Y,dist:-6},{ai:Y,dist:-4},{ai:Y,dist:-2}];ic={firstframe:27,lastframe:31,frames:i6,endfunc:fn};var r6=[{ai:Y,dist:1},{ai:Y,dist:8},{ai:Y,dist:3}];M3={firstframe:32,lastframe:34,frames:r6,endfunc:K3};var a6=[{ai:Y,dist:1},{ai:Y,dist:7,think:D3},{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:V3}];Lc={firstframe:35,lastframe:43,frames:a6,endfunc:null};var s6=[{ai:Y,dist:-6},{ai:Y,dist:-1},{ai:Y,dist:-6},{ai:Y,dist:0}];c0={firstframe:44,lastframe:47,frames:s6,endfunc:fn};var o6=Array.from({length:7},()=>({ai:Zn,dist:0}));I3={firstframe:83,lastframe:89,frames:o6,endfunc:fn};var ba=.1,c6=80,u6=24;function d6(e,t,n){R(e,ba,n)}function l6(e,t,n){N(e,t,ba,n)}function m0(e,t,n){oe(e,t,ba,n)}function Ae(e,t,n){de(e,t,ba,n)}function Nc(e,t,n){_(e,t)}var m6,f6,f0,h0,h6,_6,g6,v6;function p6(e){e.monsterinfo.current_move=h0}function Oc(e){e.monsterinfo.current_move=f0}function Qf(e,t){Qi(e,{x:c6,y:0,z:0},5,0,t)}function y6(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var w6=[{ai:d6,dist:0}];m6={firstframe:41,lastframe:41,frames:w6,endfunc:null};var A6=Array.from({length:24},()=>({ai:m0,dist:u6}));h0={firstframe:70,lastframe:93,frames:A6,endfunc:null};var S6=Array.from({length:6},()=>({ai:m0,dist:8}));f0={firstframe:65,lastframe:70,frames:S6,endfunc:p6};var k6=Array.from({length:24},()=>({ai:l6,dist:4}));f6={firstframe:41,lastframe:64,frames:k6,endfunc:null};var E6=Array.from({length:5},()=>({ai:Nc,dist:0}));_6={firstframe:99,lastframe:103,frames:E6,endfunc:Oc};var x6=Array.from({length:5},()=>({ai:Nc,dist:0}));g6={firstframe:94,lastframe:98,frames:x6,endfunc:Oc};var b6=[{ai:Ae,dist:0,think:y6},{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:Qf},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0},{ai:Ae,dist:0,think:Qf},{ai:Ae,dist:0}];h6={firstframe:0,lastframe:19,frames:b6,endfunc:Oc};function T6(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var M6=Array.from({length:56},()=>({ai:Nc,dist:0}));v6={firstframe:104,lastframe:159,frames:M6,endfunc:T6};U();var Ta=.1;function R6(e,t,n){R(e,Ta,n)}function z6(e,t,n){N(e,t,Ta,n)}function L6(e,t,n){oe(e,t,Ta,n)}function N6(e,t,n){de(e,t,Ta,n)}function _0(e,t,n){_(e,t)}var Ic,g0,v0,O6,I6,p0;function C6(e){e.monsterinfo.current_move=Ic}function P6(e){e.monsterinfo.current_move=g0}function Cc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=v0:e.monsterinfo.current_move=Ic}function F6(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));_t(e,n,i,5,1e3,0,0,t,1)}function D6(e){e.monsterinfo.nextframe=p0.lastframe,e.nextthink=-1}var U6=Array.from({length:46},()=>({ai:R6,dist:0}));Ic={firstframe:0,lastframe:45,frames:U6,endfunc:C6};var B6=Array.from({length:46},()=>({ai:z6,dist:5}));g0={firstframe:0,lastframe:45,frames:B6,endfunc:P6};var G6=Array.from({length:46},()=>({ai:L6,dist:10}));v0={firstframe:0,lastframe:45,frames:G6,endfunc:Cc};var H6=Array.from({length:20},(e,t)=>({ai:N6,dist:0,think:t===10?F6:null}));O6={firstframe:46,lastframe:65,frames:H6,endfunc:Cc};var W6=Array.from({length:6},()=>({ai:_0,dist:0}));I6={firstframe:66,lastframe:71,frames:W6,endfunc:Cc};var V6=Array.from({length:10},()=>({ai:_0,dist:0}));p0={firstframe:84,lastframe:93,frames:V6,endfunc:D6};U();var Ma=.1;function K6(e,t,n){R(e,Ma,n)}function $6(e,t,n){N(e,t,Ma,n)}function X6(e,t,n){oe(e,t,Ma,n)}function Y6(e,t,n){de(e,t,Ma,n)}function y0(e,t,n){_(e,t)}var Pc,w0,A0,Z6,j6,S0;function q6(e){e.monsterinfo.current_move=Pc}function J6(e){e.monsterinfo.current_move=w0}function Fc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=A0:e.monsterinfo.current_move=Pc}function Q6(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));_t(e,n,i,5,1e3,0,0,t,1)}function eT(e,t){if(!e.enemy)return;let n=5+Math.random()*5;$t(e,e.enemy)<=80&&Wi(e,e.enemy)&&he(e.enemy,e,e,G(P(e.enemy.origin,e.origin)),e.enemy.origin,V,n,5,2,0,t.timeSeconds)}function tT(e){e.monsterinfo.nextframe=S0.lastframe,e.nextthink=-1}var nT=Array.from({length:46},()=>({ai:K6,dist:0}));Pc={firstframe:0,lastframe:45,frames:nT,endfunc:q6};var iT=Array.from({length:46},()=>({ai:$6,dist:5}));w0={firstframe:0,lastframe:45,frames:iT,endfunc:J6};var rT=Array.from({length:46},()=>({ai:X6,dist:10}));A0={firstframe:0,lastframe:45,frames:rT,endfunc:Fc};var aT=Array.from({length:20},(e,t)=>({ai:Y6,dist:0,think:t===10?Q6:t===12?eT:null}));Z6={firstframe:46,lastframe:65,frames:aT,endfunc:Fc};var sT=Array.from({length:6},()=>({ai:y0,dist:0}));j6={firstframe:66,lastframe:71,frames:sT,endfunc:Fc};var oT=Array.from({length:10},()=>({ai:y0,dist:0}));S0={firstframe:84,lastframe:93,frames:oT,endfunc:tT};U();var Ra=.1;function cT(e,t,n){R(e,Ra,n)}function uT(e,t,n){N(e,t,Ra,n)}function dT(e,t,n){oe(e,t,Ra,n)}function k0(e,t,n){de(e,t,Ra,n)}function E0(e,t,n){_(e,t)}var Dc,x0,b0,lT,mT,fT,T0;function hT(e){e.monsterinfo.current_move=Dc}function _T(e){e.monsterinfo.current_move=x0}function za(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=b0:e.monsterinfo.current_move=Dc}function gT(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function vT(e,t){if(!e.enemy||!Wi(e,e.enemy))return;let n=$t(e,e.enemy);if(gT(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));he(e.enemy,e,e,r,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function pT(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));Wh(e,n,i,50,100,0,t)}function yT(e){e.monsterinfo.nextframe=T0.lastframe,e.nextthink=-1}var wT=Array.from({length:30},()=>({ai:cT,dist:0}));Dc={firstframe:0,lastframe:29,frames:wT,endfunc:hT};var AT=Array.from({length:40},()=>({ai:uT,dist:3}));x0={firstframe:30,lastframe:69,frames:AT,endfunc:_T};var ST=Array.from({length:20},()=>({ai:dT,dist:12}));b0={firstframe:70,lastframe:89,frames:ST,endfunc:za};var kT=Array.from({length:10},(e,t)=>({ai:k0,dist:0,think:t===5?vT:null}));lT={firstframe:90,lastframe:99,frames:kT,endfunc:za};var ET=Array.from({length:12},(e,t)=>({ai:k0,dist:0,think:t===6?pT:null}));mT={firstframe:100,lastframe:111,frames:ET,endfunc:za};var xT=Array.from({length:6},()=>({ai:E0,dist:0}));fT={firstframe:112,lastframe:117,frames:xT,endfunc:za};var bT=Array.from({length:12},()=>({ai:E0,dist:0}));T0={firstframe:118,lastframe:129,frames:bT,endfunc:yT};U();var La=.1;function M0(e,t,n){R(e,La,n)}function TT(e,t,n){N(e,t,La,n)}function R0(e,t,n){oe(e,t,La,n)}function Na(e,t,n){de(e,t,La,n)}function Se(e,t,n){_(e,t)}var Uc,z0,MT,L0,RT,zT,LT,Bc,N0,NT,OT,IT,O0,CT,I0;function PT(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function FT(e){e.monsterinfo.current_move=Uc}function DT(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=z0)}function hn(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Uc:e.monsterinfo.current_move=L0}function UT(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function BT(e,t){e.monsterinfo.current_move=Bc}function GT(e,t){if(e.enemy&&e.enemy.health>0&&mn(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=Bc;return}e.monsterinfo.current_move=N0}function HT(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),Vt(e,n,i,r,a,300,500,0,t,5)}function C0(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),wc(t,e,n,i,r,a)}function WT(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&C0(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function VT(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function KT(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function $T(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=$n(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 XT(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 YT(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=I0)}var ZT=Array.from({length:30},(e,t)=>({ai:M0,dist:0,think:t===29?DT:null}));Uc={firstframe:0,lastframe:29,frames:ZT,endfunc:null};var jT=Array.from({length:40},(e,t)=>({ai:M0,dist:0,think:t===7?PT:null}));z0={firstframe:30,lastframe:69,frames:jT,endfunc:FT};var qT=[0,3,4,5,7,2,6,4,2,7,5,7,4],JT=qT.map(e=>({ai:TT,dist:e}));MT={firstframe:76,lastframe:88,frames:JT,endfunc:null};var QT=[26,9,9,9,15,10,13,6],eM=QT.map((e,t)=>({ai:R0,dist:e,think:t%4===0?YT:null}));L0={firstframe:94,lastframe:101,frames:eM,endfunc:null};var tM=[32,15,10,18,8,20],nM=tM.map(e=>({ai:R0,dist:e}));RT={firstframe:102,lastframe:107,frames:nM,endfunc:null};var iM=Array.from({length:21},(e,t)=>({ai:Na,dist:0,think:[4,7,10,13].includes(t)?C0:null}));LT={firstframe:108,lastframe:128,frames:iM,endfunc:hn};var rM=Array.from({length:7},(e,t)=>({ai:Na,dist:0,think:t===0?UT:null}));zT={firstframe:137,lastframe:143,frames:rM,endfunc:BT};var aM=Array.from({length:8},()=>({ai:Na,dist:0,think:HT}));Bc={firstframe:144,lastframe:151,frames:aM,endfunc:GT};var sM=Array.from({length:7},()=>({ai:Na,dist:0}));N0={firstframe:152,lastframe:158,frames:sM,endfunc:hn};var oM=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],cM=oM.map(e=>({ai:Se,dist:e}));NT={firstframe:159,lastframe:176,frames:cM,endfunc:hn};var uM=[-2,11,6,2,-1,-7,-2,-7],dM=uM.map(e=>({ai:Se,dist:e}));OT={firstframe:177,lastframe:184,frames:dM,endfunc:hn};var lM=[-3,1,1,0,1],mM=lM.map(e=>({ai:Se,dist:e}));IT={firstframe:185,lastframe:189,frames:mM,endfunc:hn};var fM=[0,0,0,-7,-3,-5,8,6,0,0,0],hM=fM.map(e=>({ai:Se,dist:e}));function _M(e){e.monsterinfo.nextframe=O0.lastframe,e.nextthink=-1,e.solid=0}O0={firstframe:190,lastframe:200,frames:hM,endfunc:_M};var gM=[{ai:Se,dist:1,think:WT},{ai:Se,dist:1},{ai:Se,dist:1,think:VT},{ai:Se,dist:0},{ai:Se,dist:-1},{ai:Se,dist:-1},{ai:Se,dist:0,think:KT},{ai:Se,dist:-1}];CT={firstframe:201,lastframe:208,frames:gM,endfunc:hn};var vM=[{ai:Se,dist:0,think:$T},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0,think:XT},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0}];I0={firstframe:209,lastframe:216,frames:vM,endfunc:hn};U();var Oa=.1;function pM(e,t,n){R(e,Oa,n)}function yM(e,t,n){N(e,t,Oa,n)}function wM(e,t,n){oe(e,t,Oa,n)}function AM(e,t,n){de(e,t,Oa,n)}function P0(e,t,n){_(e,t)}var Gc,F0,D0,SM,kM,U0;function EM(e){e.monsterinfo.current_move=Gc}function xM(e){e.monsterinfo.current_move=F0}function Hc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=D0:e.monsterinfo.current_move=Gc}function bM(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));_t(e,n,i,5,1e3,0,0,t,1)}function TM(e){e.monsterinfo.nextframe=U0.lastframe,e.nextthink=-1}var MM=Array.from({length:46},()=>({ai:pM,dist:0}));Gc={firstframe:0,lastframe:45,frames:MM,endfunc:EM};var RM=Array.from({length:46},()=>({ai:yM,dist:5}));F0={firstframe:0,lastframe:45,frames:RM,endfunc:xM};var zM=Array.from({length:46},()=>({ai:wM,dist:10}));D0={firstframe:0,lastframe:45,frames:zM,endfunc:Hc};var LM=Array.from({length:20},(e,t)=>({ai:AM,dist:0,think:t===10?bM:null}));SM={firstframe:46,lastframe:65,frames:LM,endfunc:Hc};var NM=Array.from({length:6},()=>({ai:P0,dist:0}));kM={firstframe:66,lastframe:71,frames:NM,endfunc:Hc};var OM=Array.from({length:10},()=>({ai:P0,dist:0}));U0={firstframe:84,lastframe:93,frames:OM,endfunc:TM};U();var Ia=.1;function IM(e,t,n){R(e,Ia,n)}function CM(e,t,n){N(e,t,Ia,n)}function PM(e,t,n){oe(e,t,Ia,n)}function FM(e,t,n){de(e,t,Ia,n)}function B0(e,t,n){_(e,t)}var Wc,G0,H0,DM,UM,W0;function BM(e){e.monsterinfo.current_move=Wc}function GM(e){e.monsterinfo.current_move=G0}function Vc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=H0:e.monsterinfo.current_move=Wc}function HM(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));_t(e,n,i,5,1e3,0,0,t,1)}function WM(e){e.monsterinfo.nextframe=W0.lastframe,e.nextthink=-1}var VM=Array.from({length:46},()=>({ai:IM,dist:0}));Wc={firstframe:0,lastframe:45,frames:VM,endfunc:BM};var KM=Array.from({length:46},()=>({ai:CM,dist:5}));G0={firstframe:0,lastframe:45,frames:KM,endfunc:GM};var $M=Array.from({length:46},()=>({ai:PM,dist:10}));H0={firstframe:0,lastframe:45,frames:$M,endfunc:Vc};var XM=Array.from({length:20},(e,t)=>({ai:FM,dist:0,think:t===10?HM:null}));DM={firstframe:46,lastframe:65,frames:XM,endfunc:Vc};var YM=Array.from({length:6},()=>({ai:B0,dist:0}));UM={firstframe:66,lastframe:71,frames:YM,endfunc:Vc};var ZM=Array.from({length:10},()=>({ai:B0,dist:0}));W0={firstframe:84,lastframe:93,frames:ZM,endfunc:WM};U();var Ca=.1;function jM(e,t,n){R(e,Ca,n)}function qM(e,t,n){N(e,t,Ca,n)}function JM(e,t,n){oe(e,t,Ca,n)}function QM(e,t,n){de(e,t,Ca,n)}function Kc(e,t,n){_(e,t)}var $c,V0,K0,e8,t8,$0,n8;function i8(e){e.monsterinfo.current_move=$c}function r8(e){e.monsterinfo.current_move=V0}function Pa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=K0:e.monsterinfo.current_move=$c}function a8(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));Vt(e,n,r,5,2,.05,.05,0,t,4)}var s8=Array.from({length:22},()=>({ai:jM,dist:0}));$c={firstframe:0,lastframe:21,frames:s8,endfunc:i8};var o8=Array.from({length:15},()=>({ai:qM,dist:4}));V0={firstframe:22,lastframe:36,frames:o8,endfunc:r8};var c8=Array.from({length:8},()=>({ai:JM,dist:12}));K0={firstframe:37,lastframe:44,frames:c8,endfunc:Pa};var u8=Array.from({length:15},(e,t)=>({ai:QM,dist:0,think:t>=5&&t<=7?a8:null}));e8={firstframe:45,lastframe:59,frames:u8,endfunc:Pa};var d8=Array.from({length:10},()=>({ai:Kc,dist:0}));t8={firstframe:60,lastframe:69,frames:d8,endfunc:Pa};var l8=Array.from({length:20},()=>({ai:Kc,dist:0}));function m8(e){e.monsterinfo.nextframe=$0.lastframe,e.nextthink=-1}$0={firstframe:70,lastframe:89,frames:l8,endfunc:m8};var f8=Array.from({length:5},()=>({ai:Kc,dist:0}));n8={firstframe:90,lastframe:94,frames:f8,endfunc:Pa};U();var tr=.1,h8={x:30,y:28,z:24},_8={x:26,y:16,z:24},g8={x:26,y:-14,z:24};function v8(e,t,n){R(e,tr,n)}function p8(e,t,n){N(e,t,tr,n)}function y8(e,t,n){oe(e,t,tr,n)}function X0(e,t,n){de(e,t,tr,n)}function jn(e,t,n){_(e,t)}var Xc,Y0,Z0,j0,Yc,q0,J0,Q0,e1,Zc,rc;function t1(e){e.monsterinfo.current_move=Xc}function n1(e){e.monsterinfo.current_move=Y0}function Mt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Z0:e.monsterinfo.current_move=Xc}function w8(e){if(!e.enemy)return;let t=Math.random();t<=.3?e.monsterinfo.current_move=j0:t<=.6?e.monsterinfo.current_move=Yc:e.monsterinfo.current_move=q0}function jc(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=F(n,t.x),o=F(i,t.y),u=F(r,t.z);return D(D(D(a,s),o),u)}function A8(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=jc(e,h8),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=G(P(i,n));Hh(e,n,r,50,300,100,300,0,t)}function S8(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=jc(e,g8),i=G(P(e.pos1,n));Wh(e,n,i,50,100,0,t)}function k8(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function E8(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=jc(e,_8),i=(e.monsterinfo.nextframe||0)-Yc.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=P(s,n),c={...$n(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}_t(e,n,a,15,1e3,0,0,t,1)}function x8(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=J0):i<=110?(r.engine.sound?.(e,0,"makron/pain2.wav",1,1,0),e.monsterinfo.current_move=Q0):Math.random()<=.45&&(r.engine.sound?.(e,0,"makron/pain3.wav",1,1,0),e.monsterinfo.current_move=e1)))}function b8(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 T8(e,t){e.frame=346,e.model="models/monsters/boss3/rider/tris.md2",e.skin=1,e.think=b8,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=F(i,120),a=F(n,-120);e.velocity=D(D(e.velocity,r),a),e.origin=D(e.origin,F(n,-10)),e.angles={...e.angles,x:90},e.avelocity=V,t.linkentity(e)}function M8(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,T8(n,t)}function R8(e,t){t.engine.sound?.(e,0,"makron/death.wav",1,1,0),M8(e,t),e.monsterinfo.current_move=Zc,e.mins={x:-60,y:-60,z:0},e.maxs={x:60,y:60,z:48}}function z8(e){e.monsterinfo.nextframe=Zc.lastframe,e.nextthink=-1}var L8=Array.from({length:60},()=>({ai:v8,dist:0}));Xc={firstframe:0,lastframe:59,frames:L8,endfunc:t1};var N8=Array.from({length:10},()=>({ai:p8,dist:8}));Y0={firstframe:60,lastframe:69,frames:N8,endfunc:n1};var O8=Array.from({length:10},()=>({ai:y8,dist:8}));Z0={firstframe:60,lastframe:69,frames:O8,endfunc:Mt};var I8=Array.from({length:8},(e,t)=>({ai:X0,dist:0,think:t===3?A8:null}));j0={firstframe:70,lastframe:77,frames:I8,endfunc:Mt};var C8=Array.from({length:26},(e,t)=>({ai:jn,dist:0,think:t>=4&&t<=20?E8:null}));Yc={firstframe:78,lastframe:103,frames:C8,endfunc:Mt};var P8=Array.from({length:16},(e,t)=>({ai:X0,dist:0,think:t===7?k8:t===8?S8:null}));q0={firstframe:104,lastframe:119,frames:P8,endfunc:Mt};var F8=Array.from({length:4},()=>({ai:jn,dist:0}));J0={firstframe:120,lastframe:123,frames:F8,endfunc:Mt};var D8=Array.from({length:4},()=>({ai:jn,dist:0}));Q0={firstframe:124,lastframe:127,frames:D8,endfunc:Mt};var U8=Array.from({length:27},()=>({ai:jn,dist:0}));e1={firstframe:128,lastframe:154,frames:U8,endfunc:Mt};var B8=Array.from({length:95},()=>({ai:jn,dist:0}));Zc={firstframe:155,lastframe:249,frames:B8,endfunc:z8};var G8=Array.from({length:13},()=>({ai:jn,dist:0}));rc={firstframe:250,lastframe:262,frames:G8,endfunc:Mt};function H8(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)=>x8(n,i,r,a,t.entities),e.die=(n,i,r,a,s)=>{if(n.health<=-2e3){Oh(t.entities,n.origin,a),t.entities.free(n);return}n.deadflag=2,n.solid=0,R8(n,t.entities)},e.monsterinfo.stand=t1,e.monsterinfo.walk=n1,e.monsterinfo.run=Mt,e.monsterinfo.attack=w8,e.monsterinfo.sight=(n,i)=>{t.entities.sound?.(n,0,"makron/sight.wav",1,1,0),n.monsterinfo.current_move=rc},e.think=P5,e.monsterinfo.current_move=rc,e.nextthink=e.timestamp+tr}U();var Fa=.1,W8={x:40,y:-20,z:20},V8={x:40,y:20,z:20},K8={x:30,y:0,z:40};function $8(e,t,n){R(e,Fa,n)}function X8(e,t,n){N(e,t,Fa,n)}function Y8(e,t,n){oe(e,t,Fa,n)}function qc(e,t,n){de(e,t,Fa,n)}function nr(e,t,n){_(e,t)}var Jc,i1,r1,Qc,ac,Z8,j8,q8,J8,a1;function Q8(e){e.monsterinfo.current_move=Jc}function eR(e){e.monsterinfo.current_move=i1}function qn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=r1:e.monsterinfo.current_move=Jc}function tR(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&&mn(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=Qc:e.monsterinfo.current_move=ac}function sc(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=F(n,t.x),o=F(i,t.y),u=F(r,t.z);return D(D(D(a,s),o),u)}function nR(e,t){if(!e.enemy)return;let n=sc(e,V8),i=G(P(e.enemy.origin,n));ma(e,n,i,6,4,.05,.05,0,t,4);let r=sc(e,W8),a=G(P(e.enemy.origin,r));ma(e,r,a,6,4,.05,.05,0,t,4)}function iR(e,t){if(!e.enemy)return;let n=sc(e,K8),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=G(P(i,n));Hh(e,n,r,50,300,100,200,0,t)}function rR(e){e.monsterinfo.nextframe=a1.lastframe,e.nextthink=-1}function aR(e,t){let n=t.spawn();if(n.classname="monster_makron",n.origin={...e.origin},n.target=e.target,n.enemy=e.enemy,H8(n,{entities:t}),n.enemy&&n.enemy.health>0){let r=P(n.enemy.origin,n.origin);n.angles={...n.angles,y:Yi(r)};let a=G(r),s=F(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 sR=Array.from({length:51},()=>({ai:$8,dist:0}));Jc={firstframe:0,lastframe:50,frames:sR,endfunc:Q8};var oR=Array.from({length:14},()=>({ai:X8,dist:10}));i1={firstframe:51,lastframe:64,frames:oR,endfunc:eR};var cR=Array.from({length:14},()=>({ai:Y8,dist:10}));r1={firstframe:51,lastframe:64,frames:cR,endfunc:qn};var uR=Array.from({length:8},()=>({ai:qc,dist:0})),dR={firstframe:65,lastframe:72,frames:uR,endfunc:null},lR=Array.from({length:6},()=>({ai:qc,dist:0,think:nR}));Qc={firstframe:73,lastframe:78,frames:lR,endfunc:tR};dR.endfunc=e=>{e.monsterinfo.current_move=Qc};var mR=Array.from({length:4},()=>({ai:nr,dist:0}));ac={firstframe:79,lastframe:82,frames:mR,endfunc:qn};var fR=Array.from({length:13},(e,t)=>({ai:qc,dist:0,think:t===6?iR:null}));Z8={firstframe:83,lastframe:95,frames:fR,endfunc:qn};var hR=Array.from({length:3},()=>({ai:nr,dist:0}));j8={firstframe:96,lastframe:98,frames:hR,endfunc:qn};var _R=Array.from({length:3},()=>({ai:nr,dist:0}));q8={firstframe:99,lastframe:101,frames:_R,endfunc:qn};var gR=Array.from({length:25},()=>({ai:nr,dist:0}));J8={firstframe:102,lastframe:126,frames:gR,endfunc:qn};var vR=Array.from({length:50},(e,t)=>({ai:nr,dist:0,think:t===49?((n,i)=>{}):t===48?aR:null}));a1={firstframe:127,lastframe:176,frames:vR,endfunc:rR};var eu=.1,Da=4,s1=8,Ua=16,pR=32,tu=64,yR=0,wR=39,AR=40,SR=58,kR=59,o1=64,ER=93,xR=95,nu=99,c1=159,u1=160,d1=172,l1=173,m1=198,bR=199,TR=209,MR=210,RR=226,iu=227,ru=235,f1=236,fa=244,zR=245,LR=251,NR=252,OR=266,IR=267,CR=281,h1,_1,g1,v1,p1,ir,y1,w1,A1,S1,PR,FR,k1,E1,DR,UR,au,x1,BR="insane/insane11.wav",GR="insane/insane5.wav",HR="insane/insane7.wav",eh=["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 oc(e,t){t.sound(e,2,BR,1,1,0)}function WR(e,t){(e.spawnflags&tu)===0&&t.sound(e,2,GR,1,1,0)}function su(e,t){e.spawnflags&tu||(e.monsterinfo.attack_finished??0)<t.timeSeconds&&(t.sound(e,2,HR,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2)}function Yt(e,t){if(!(e.spawnflags&tu)&&(e.monsterinfo.attack_finished??0)<t.timeSeconds){let n=eh[Math.floor(Math.random()*eh.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function We(e,t){}function b1(e,t){e.spawnflags&pR||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=g1:e.monsterinfo.current_move=p1)}function VR(e,t){e.spawnflags&Da&&e.spawnflags&Ua||Math.random()<.5&&(e.monsterinfo.current_move=v1)}function ou(e,t){e.monsterinfo.current_move=ir}function T1(e,t){Math.random()<.8?e.monsterinfo.current_move=au:e.monsterinfo.current_move=x1}function cu(e,t){e.spawnflags&s1?(e.monsterinfo.current_move=au,e.monsterinfo.aiflags|=1):e.spawnflags&Da&&e.spawnflags&Ua?e.monsterinfo.current_move=ir:Math.random()<.5?e.monsterinfo.current_move=h1:e.monsterinfo.current_move=_1}function uu(e,t){if(e.spawnflags&Ua&&e.frame===fa){e.monsterinfo.current_move=ir;return}e.spawnflags&Da?e.monsterinfo.current_move=k1:Math.random()<=.5?e.monsterinfo.current_move=y1:e.monsterinfo.current_move=A1}function rr(e,t){if(e.spawnflags&Ua&&e.frame===fa){e.monsterinfo.current_move=ir;return}let n=e.frame;e.spawnflags&Da||n>=f1&&n<=fa||n>=iu&&n<=ru||n>=nu&&n<=c1?e.monsterinfo.current_move=E1:Math.random()<=.5?e.monsterinfo.current_move=w1:e.monsterinfo.current_move=S1}function M1(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 m(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,eu,a)},dist:t}}var KR=[m(R),m(R),m(R),m(R),m(R),m(R,0,b1)];h1={firstframe:kR,lastframe:o1,frames:KR,endfunc:cu};var $R=[m(R,0,WR),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R),m(R,0,b1)];_1={firstframe:o1,lastframe:ER,frames:$R,endfunc:cu};var XR=[m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_,0,su),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_,2.7),m(_,4.1),m(_,6),m(_,7.6),m(_,3.6),m(_),m(_),m(_,0,oc),m(_),m(_),m(_),m(_),m(_),m(_,0,oc),m(_),m(_),m(_),m(_),m(_),m(_)];g1={firstframe:yR,lastframe:wR,frames:XR,endfunc:ou};var YR=[m(_,-.7),m(_,-1.2),m(_,-1.5),m(_,-4.5),m(_,-3.5),m(_,-.2),m(_),m(_,-1.3),m(_,-3),m(_,-2),m(_),m(_),m(_),m(_,-3.3),m(_,-1.6),m(_,-.3),m(_),m(_),m(_)];v1={firstframe:AR,lastframe:SR,frames:YR,endfunc:cu};var ZR=[m(_,.2),m(_,11.5),m(_,5.1),m(_,7.1),m(_)];p1={firstframe:xR,lastframe:nu,frames:ZR,endfunc:ou};var jR=[m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_,-1.7),m(_,-1.6),m(_),m(_),m(_),m(_,0,oc),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_,0,su),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_,.5),m(_),m(_,-.2,Yt),m(_),m(_,.2),m(_,.4),m(_,.6),m(_,.8),m(_,.7),m(_,0,VR)];ir={firstframe:nu,lastframe:c1,frames:jR,endfunc:ou};var cc=[m(N,0,Yt),m(N,2.5),m(N,3.5),m(N,1.7),m(N,2.3),m(N,2.4),m(N,2.2,We),m(N,4.2),m(N,5.6),m(N,3.3),m(N,2.4),m(N,.9),m(N,0,We)];y1={firstframe:u1,lastframe:d1,frames:cc,endfunc:uu};w1={firstframe:u1,lastframe:d1,frames:cc.map(e=>({ai:(t,n,i)=>{e.ai===cc[0].ai&&Yt(t,i),oe(t,n,eu,i)},dist:e.dist})),endfunc:rr};var uc=[m(N,0,Yt),m(N,3.4),m(N,3.6),m(N,2.9),m(N,2.2),m(N,2.6,We),m(N),m(N,.7),m(N,4.8),m(N,5.3),m(N,1.1),m(N,2,We),m(N,.5),m(N),m(N),m(N,4.9),m(N,6.7),m(N,3.8),m(N,2,We),m(N,.2),m(N),m(N,3.4),m(N,6.4),m(N,5),m(N,1.8,We),m(N)];A1={firstframe:l1,lastframe:m1,frames:uc,endfunc:uu};S1={firstframe:l1,lastframe:m1,frames:uc.map(e=>({ai:(t,n,i)=>{e.ai===uc[0].ai&&Yt(t,i),oe(t,n,eu,i)},dist:e.dist})),endfunc:rr};var qR=[m(_),m(_),m(_),m(_),m(_,0,We),m(_),m(_),m(_),m(_),m(_),m(_,0,We)];PR={firstframe:bR,lastframe:TR,frames:qR,endfunc:rr};var JR=[m(_),m(_),m(_),m(_),m(_,0,We),m(_),m(_),m(_),m(_),m(_),m(_,0,We),m(_),m(_,0,We),m(_),m(_),m(_),m(_)];FR={firstframe:MR,lastframe:RR,frames:JR,endfunc:M1};var R1=[m(N,0,Yt),m(N,1.5),m(N,2.1),m(N,3.6),m(N,2,We),m(N,.9),m(N,3),m(N,3.4),m(N,2.4,We)];k1={firstframe:iu,lastframe:ru,frames:R1,endfunc:uu};E1={firstframe:iu,lastframe:ru,frames:R1,endfunc:rr};var QR=[m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_)];DR={firstframe:f1,lastframe:fa,frames:QR,endfunc:rr};var e4=[m(_),m(_),m(_),m(_),m(_,0,Yt),m(_),m(_)];UR={firstframe:zR,lastframe:LR,frames:e4,endfunc:M1};var t4=[m(_,0,su),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_)];au={firstframe:NR,lastframe:OR,frames:t4,endfunc:T1};var n4=[m(_,0,Yt),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_),m(_)];x1={firstframe:IR,lastframe:CR,frames:n4,endfunc:T1};U();U();var i4=.1,r4=0;var dc=0,z1=39,a4=40,s4=47,o4=48,c4=53,u4=54,d4=56,l4=57,m4=59,f4=60,h4=62,_4=63,g4=76,v4=77,p4=93,y4=94,w4=100,A4=101,S4=113,k4=114,E4=117,L1,N1,O1,x4,b4,T4,M4,R4,z4,L4,N4;function A(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,i4,a)},dist:t}}function th(e,t){e.monsterinfo.current_move=L1,t.timeSeconds<1&&(e.frame=dc+Math.floor(Math.random()*(z1-dc+1)))}function O4(e,t){e.monsterinfo.current_move=N1}function Jn(e,t){if(t.timeSeconds<e.pain_debounce_time&&!e.enemy){e.movetarget?O4(e,t):th(e,t);return}if(e.monsterinfo.aiflags&1){th(e,t);return}e.monsterinfo.current_move=O1}function I4(e,t){let n={x:0,y:0,z:0},r=j(e.angles).forward,a=Kn(e.origin);a.z+=e.viewheight;let s;if(e.enemy){let o;e.enemy.health>0?(o=P(e.enemy.origin,F(e.enemy.velocity,.2)),o.z+=e.enemy.viewheight):(o=Kn(e.enemy.absmin),o.z+=e.enemy.size.z/2+1),s=P(o,a),s=G(s)}else s=r;Vt(e,a,s,3,4,0,0,r4,t)}function I1(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 C4(e,t){I4(e,t);let n=e.monsterinfo.fire_wait??0;t.timeSeconds>=n?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}var P4=[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)];L1={firstframe:dc,lastframe:z1,frames:P4,endfunc:null};var F4=[A(N),A(N,6),A(N,10),A(N,3),A(N,2),A(N,7),A(N,10),A(N,1)];N1={firstframe:a4,lastframe:s4,frames:F4,endfunc:null};var D4=[A(oe,4),A(oe,15),A(oe,15),A(oe,8),A(oe,20),A(oe,15)];O1={firstframe:o4,lastframe:c4,frames:D4,endfunc:null};var U4=[A(_,-5),A(_,4),A(_,1)];x4={firstframe:u4,lastframe:d4,frames:U4,endfunc:Jn};var B4=[A(_,-4),A(_,4),A(_)];b4={firstframe:l4,lastframe:m4,frames:B4,endfunc:Jn};var G4=[A(_,-1),A(_,1),A(_,0)];T4={firstframe:f4,lastframe:h4,frames:G4,endfunc:Jn};var H4=[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)];M4={firstframe:_4,lastframe:g4,frames:H4,endfunc:Jn};var W4=[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)];R4={firstframe:v4,lastframe:p4,frames:W4,endfunc:Jn};var V4=[A(_),A(_),A(_,-13),A(_,14),A(_,3),A(_,-2),A(_,1)];z4={firstframe:y4,lastframe:w4,frames:V4,endfunc:I1};var K4=[A(_),A(_,7),A(_,-6),A(_,-5),A(_,1),A(_),A(_,-1),A(_,-2),A(_,-1),A(_,-9),A(_,-13),A(_,-13),A(_)];L4={firstframe:A4,lastframe:S4,frames:K4,endfunc:I1};var $4=[A(de,-2,C4),A(de,-2),A(de,3),A(de,2)];N4={firstframe:k4,lastframe:E4,frames:$4,endfunc:Jn};U();U();var Ki=.1;function X4(e,t,n){if(e.classname==="monster_medic"&&D1(e,n)){e.monsterinfo.current_move=ar;return}R(e,Ki,n)}function Y4(e,t,n){N(e,t,Ki,n)}function Z4(e,t,n){e.classname==="monster_medic"&&D1(e,n)?e.monsterinfo.current_move=ar:oe(e,t,Ki,n)}function lt(e,t,n){de(e,t,Ki,n)}function du(e,t,n){_(e,t)}var lu,C1,ar,j4,P1,q4,J4,F1;function Q4(e){e.monsterinfo.current_move=lu}function ez(e){e.monsterinfo.current_move=C1}function sr(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&$t(e,e.enemy)<80){e.monsterinfo.current_move=P1;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ar:e.monsterinfo.current_move=lu}function tz(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));_t(e,n,i,2,1e3,0,0,t,10)}function Bt(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if($t(e,e.enemy)>400){e.monsterinfo.current_move=ar;return}let i=j(e.angles),r=i.forward,a=i.right,s=i.up,o={x:24,y:0,z:6},u=D(e.origin,D(F(r,o.x),D(F(a,o.y),F(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 nz(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),Bt(e,t)}function iz(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,i=t.getSpawnFunction(n.classname);if($t(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 D1(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,d)=>{let f=t.trace(a,s,o,u,c,d);return{fraction:f.fraction,ent:f.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!mn(e,a,r))return;let s=$t(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function rz(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=F(a.forward,64),o=D(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,Ie|Gt|Gi);if(c.fraction<1||c.startsolid||c.allsolid)return;let d=t.spawn();d.origin=u,d.angles={...e.angles},r(d,{entities:t,keyValues:{classname:i},warn:()=>{},free:l=>t.free(l)}),d.enemy=e.enemy,t.multicast(u,1,se.muzzleflash,{entId:d.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function az(e){e.monsterinfo.nextframe=F1.lastframe,e.nextthink=-1}var sz=Array.from({length:30},()=>({ai:X4,dist:0}));lu={firstframe:0,lastframe:29,frames:sz,endfunc:Q4};var oz=Array.from({length:40},()=>({ai:Y4,dist:3}));C1={firstframe:30,lastframe:69,frames:oz,endfunc:ez};var cz=Array.from({length:20},()=>({ai:Z4,dist:12}));ar={firstframe:70,lastframe:89,frames:cz,endfunc:sr};var uz=Array.from({length:16},(e,t)=>({ai:lt,dist:0,think:t>=4&&t<=13?tz:null}));j4={firstframe:90,lastframe:105,frames:uz,endfunc:sr};var dz=[{ai:lt,dist:0,think:nz},{ai:lt,dist:0,think:Bt},{ai:lt,dist:0,think:Bt},{ai:lt,dist:0,think:Bt},{ai:lt,dist:0,think:Bt},{ai:lt,dist:0,think:Bt},{ai:lt,dist:0,think:Bt},{ai:lt,dist:0,think:Bt},{ai:lt,dist:0,think:iz}];P1={firstframe:106,lastframe:114,frames:dz,endfunc:sr};var lz=Array.from({length:6},()=>({ai:du,dist:0}));J4={firstframe:116,lastframe:121,frames:lz,endfunc:sr};var mz=Array.from({length:23},(e,t)=>({ai:du,dist:0,think:t===11?rz:null}));q4={firstframe:122,lastframe:144,frames:mz,endfunc:sr};var fz=Array.from({length:30},()=>({ai:du,dist:0}));F1={firstframe:161,lastframe:190,frames:fz,endfunc:az};U();var or=.1;function K(e,t,n){R(e,or,n)}function Ge(e,t,n){N(e,t,or,n)}function Fn(e,t,n){oe(e,t,or,n)}function Ut(e,t,n){de(e,t,or,n)}function ue(e,t,n){_(e,t)}function Zo(e,t,n){$x(e,null,t,or)}var U1,B1,ha,hz,_z,gz,vz,G1,H1;function pz(e){e.monsterinfo.current_move=B1}function yz(e){e.monsterinfo.current_move=U1}function Qn(e){e.monsterinfo.current_move=ha}function W1(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(De(i)>100)return;let a=G(i);he(e.enemy,e,e,a,e.enemy.origin,V,t,0,0,0,n.timeSeconds)}function wz(e,t){W1(e,30,t)}function nh(e,t){W1(e,30,t)}function Gn(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=ha),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=ha)}function Az(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),he(t,e,e,G(e.velocity),e.origin,V,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function Sz(e,t){let n=j(e.angles).forward;e.movetype=7,e.touch=Az,e.velocity=D(F(n,300),{x:0,y:0,z:300}),e.velocity=D(F(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function kz(e){e.monsterinfo.nextframe=G1.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var Ez=[{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}];U1={firstframe:0,lastframe:50,frames:Ez,endfunc:yz};var xz=[{ai:Ge,dist:3},{ai:Ge,dist:1},{ai:Ge,dist:5},{ai:Ge,dist:10},{ai:Ge,dist:13},{ai:Ge,dist:12},{ai:Ge,dist:0},{ai:Ge,dist:0},{ai:Ge,dist:5},{ai:Ge,dist:6},{ai:Ge,dist:16},{ai:Ge,dist:15},{ai:Ge,dist:6}];B1={firstframe:51,lastframe:63,frames:xz,endfunc:pz};var bz=[{ai:Fn,dist:20},{ai:Fn,dist:15},{ai:Fn,dist:35},{ai:Fn,dist:20},{ai:Fn,dist:10},{ai:Fn,dist:20}];ha={firstframe:64,lastframe:69,frames:bz,endfunc:Qn};var Tz=[{ai:Ut,dist:0},{ai:Ut,dist:0},{ai:Ut,dist:0,think:nh},{ai:Ut,dist:0},{ai:Ut,dist:0,think:wz},{ai:Ut,dist:0},{ai:Ut,dist:0,think:nh},{ai:Ut,dist:0}];hz={firstframe:70,lastframe:77,frames:Tz,endfunc:Qn};var Mz=[{ai:Zo,dist:0},{ai:Zo,dist:0},{ai:Zo,dist:0,think:Sz},{ai:ue,dist:0,think:Gn},{ai:ue,dist:0,think:Gn},{ai:ue,dist:0,think:Gn},{ai:ue,dist:0,think:Gn},{ai:ue,dist:0,think:Gn}];H1={firstframe:93,lastframe:100,frames:Mz,endfunc:Qn};H1.frames[3].ai=(e,t,n)=>{Gn(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var Rz=[{ai:ue,dist:4},{ai:ue,dist:-3},{ai:ue,dist:-8},{ai:ue,dist:2},{ai:ue,dist:5}];_z={firstframe:78,lastframe:82,frames:Rz,endfunc:Qn};var zz=[{ai:ue,dist:-24},{ai:ue,dist:11},{ai:ue,dist:5},{ai:ue,dist:-2}];gz={firstframe:83,lastframe:86,frames:zz,endfunc:Qn};var Lz=[{ai:ue,dist:11},{ai:ue,dist:0},{ai:ue,dist:-2},{ai:ue,dist:0},{ai:ue,dist:0},{ai:ue,dist:0}];vz={firstframe:87,lastframe:92,frames:Lz,endfunc:Qn};var Nz=[{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}];G1={firstframe:101,lastframe:109,frames:Nz,endfunc:kz};U();var Ba=.1,Oz=()=>Math.random();function ne(e,t,n){R(e,Ba,n)}function kt(e,t,n){N(e,t,Ba,n)}function Et(e,t,n){oe(e,t,Ba,n)}function Me(e,t,n){de(e,t,Ba,n)}function Re(e,t,n){_(e,t)}var mu,V1,K1,Iz,Cz,$1,X1,Pz,Fz,fu,Y1;function Dz(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function Uz(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function Dn(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function lc(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function Bz(e){e.monsterinfo.current_move=fu}function Gz(e){Oz()<=.8?e.monsterinfo.current_move=fu:e.monsterinfo.current_move=Y1}function Z1(e){e.monsterinfo.current_move=mu}function hu(e){e.monsterinfo.current_move=V1}function j1(e){e.monsterinfo.current_move=X1}function q1(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=mu:e.monsterinfo.current_move=K1}function jo(e,t){let n=P(t,e);if(De(n)>256)return!1;let a=$n(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function Qe(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=D(e.origin,D(F(i,s.x),D(F(r,s.y),F(a,s.z)))),u=Kn(e.enemy.origin);if(!jo(o,u)&&(u={...u,z:e.enemy.origin.z+e.enemy.maxs.z-8},!jo(o,u)&&(u={...u,z:e.enemy.origin.z+e.enemy.mins.z+8},!jo(o,u)))||t.trace(o,u,V,V,e,bt).ent!==e.enemy)return;let d=2,f=e.frame;f===41?(d=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(f===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),d=2),t.multicast(e.origin,0,se.temp_entity,{te:we.PARASITE_ATTACK,entId:e.index,start:o,end:u});let l=G(P(o,u));he(e.enemy,e,e,l,e.enemy.origin,V,d,0,8,0,t.timeSeconds),e.health<e.max_health&&(e.health+=d,e.health>e.max_health&&(e.health=e.max_health))}function Hz(e){e.monsterinfo.nextframe=$1.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var Wz=[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Dn},{ai:ne,dist:0},{ai:ne,dist:0,think:Dn},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Dn},{ai:ne,dist:0},{ai:ne,dist:0,think:Dn},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Dn},{ai:ne,dist:0},{ai:ne,dist:0,think:Dn}];mu={firstframe:83,lastframe:99,frames:Wz,endfunc:Z1};var Vz=[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}];Fz={firstframe:100,lastframe:103,frames:Vz,endfunc:Bz};var Kz=[{ai:ne,dist:0,think:lc},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:lc},{ai:ne,dist:0},{ai:ne,dist:0}];fu={firstframe:104,lastframe:109,frames:Kz,endfunc:Gz};var $z=[{ai:ne,dist:0,think:lc},{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}];Y1={firstframe:110,lastframe:117,frames:$z,endfunc:Z1};var Xz=[{ai:Et,dist:0},{ai:Et,dist:30}];X1={firstframe:68,lastframe:69,frames:Xz,endfunc:q1};var Yz=[{ai:Et,dist:30},{ai:Et,dist:30},{ai:Et,dist:22},{ai:Et,dist:19},{ai:Et,dist:24},{ai:Et,dist:28},{ai:Et,dist:25}];K1={firstframe:70,lastframe:76,frames:Yz,endfunc:q1};var Zz=[{ai:kt,dist:0},{ai:kt,dist:30,think:hu}];Pz={firstframe:68,lastframe:69,frames:Zz,endfunc:hu};var jz=[{ai:kt,dist:30},{ai:kt,dist:30},{ai:kt,dist:22},{ai:kt,dist:19},{ai:kt,dist:24},{ai:kt,dist:28},{ai:kt,dist:25}];V1={firstframe:70,lastframe:76,frames:jz,endfunc:hu};var qz=[{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}];Cz={firstframe:57,lastframe:67,frames:qz,endfunc:j1};var Jz=[{ai:Me,dist:0,think:Dz},{ai:Me,dist:0},{ai:Me,dist:15,think:Qe},{ai:Me,dist:0,think:Qe},{ai:Me,dist:0,think:Qe},{ai:Me,dist:0,think:Qe},{ai:Me,dist:0,think:Qe},{ai:Me,dist:-2,think:Qe},{ai:Me,dist:-2,think:Qe},{ai:Me,dist:-3,think:Qe},{ai:Me,dist:-2,think:Qe},{ai:Me,dist:0,think:Qe},{ai:Me,dist:-1,think:Qe},{ai:Me,dist:0,think:Uz},{ai:Me,dist:-2},{ai:Me,dist:-2},{ai:Me,dist:-3},{ai:Me,dist:0}];Iz={firstframe:39,lastframe:56,frames:Jz,endfunc:j1};var Qz=[{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}];$1={firstframe:32,lastframe:38,frames:Qz,endfunc:Hz};U();var Ga=.1;var eL=2,tL=4;function nL(e,t,n){R(e,Ga,n)}function iL(e,t,n){N(e,t,Ga,n)}function rL(e,t,n){oe(e,t,Ga,n)}function J1(e,t,n){de(e,t,Ga,n)}function Q1(e,t,n){_(e,t)}var _u,e_,t_,aL,sL,oL,n_;function cL(e){e.monsterinfo.current_move=_u}function uL(e){e.monsterinfo.current_move=e_}function Ha(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=t_:e.monsterinfo.current_move=_u}function cr(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function ur(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 dL(e,t){if(!e.enemy)return;let n=cr(e),i=ur(e,n);_t(e,n,i,5,600,0,0,t,1)}function lL(e,t){if(!e.enemy)return;let n=cr(e),i=ur(e,n),r=2,a=4,s=20,o=.15,u=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),lb(e,n,i,r,a,o,u,s,0,t,3)}function mL(e,t){if(!e.enemy)return;let n=cr(e),i=ur(e,n),r=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),Vt(e,n,i,r,a,s,o,0,t,4)}function fL(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=D(s,F(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 hL(e,t){if(!e.enemy)return;let n=cr(e),i=ur(e,n);fb(e,n,i,5,600,0,0,t)}function _L(e,t){if(!e.enemy)return;let n=cr(e),i=ur(e,n),r=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),mb(e,n,i,r,a,0,0,t)}function gL(e,t){e.enemy&&tc(e,1,!1,fL,t)}function vL(e,t){e.count<2?hL(e,t):e.count<4?_L(e,t):gL(e,t)}function i_(e,t){if(e.style===1){vL(e,t);return}e.spawnflags&eL?lL(e,t):e.spawnflags&tL?mL(e,t):dL(e,t)}var pL=Array.from({length:30},()=>({ai:nL,dist:0}));_u={firstframe:0,lastframe:29,frames:pL,endfunc:cL};var yL=Array.from({length:40},()=>({ai:iL,dist:2}));e_={firstframe:30,lastframe:69,frames:yL,endfunc:uL};var wL=Array.from({length:20},()=>({ai:rL,dist:10}));t_={firstframe:70,lastframe:89,frames:wL,endfunc:Ha};var AL=Array.from({length:10},(e,t)=>({ai:J1,dist:0,think:t===5?i_:null}));aL={firstframe:90,lastframe:99,frames:AL,endfunc:Ha};var SL=Array.from({length:10},(e,t)=>({ai:J1,dist:0,think:t>=4&&t<=8?i_:null}));sL={firstframe:90,lastframe:99,frames:SL,endfunc:Ha};var kL=Array.from({length:6},()=>({ai:Q1,dist:0}));oL={firstframe:100,lastframe:105,frames:kL,endfunc:Ha};var EL=Array.from({length:10},()=>({ai:Q1,dist:0}));function xL(e){e.monsterinfo.nextframe=n_.lastframe,e.nextthink=-1}n_={firstframe:106,lastframe:115,frames:EL,endfunc:xL};U();var r_=.1,bL={x:30,y:30,z:40},TL={x:30,y:-30,z:40},ML={x:20,y:0,z:70};function RL(e,t,n){R(e,r_,n)}function zL(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=vu:e.monsterinfo.current_move=Wa}function gu(e,t,n){de(e,t,r_,n)}function dr(e,t,n){_(e,t)}var Wa,vu,LL,NL,a_,s_,OL,IL,CL,o_;function PL(e){e.monsterinfo.current_move=Wa}function _n(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=vu:e.monsterinfo.current_move=Wa}function pu(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=F(n,t.x),o=F(i,t.y),u=F(r,t.z);return D(D(D(a,s),o),u)}function FL(e,t){if(!e.enemy)return;let n=pu(e,TL),i=G(P(e.enemy.origin,n));Ji(e,n,i,50,650,0,t)}function DL(e,t){if(!e.enemy)return;let n=pu(e,ML),i=G(P(e.enemy.origin,n));hb(e,n,i,50,600,0,t)}function UL(e,t){if(!e.enemy)return;let n=pu(e,bL),i=G(P(e.enemy.origin,n));ma(e,n,i,6,4,.05,.05,0,t,4)}function BL(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&&mn(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 GL(e){e.monsterinfo.nextframe=o_.lastframe,e.nextthink=-1}var HL=Array.from({length:60},()=>({ai:RL,dist:0}));Wa={firstframe:0,lastframe:59,frames:HL,endfunc:PL};var WL=Array.from({length:18},()=>({ai:zL,dist:12}));vu={firstframe:60,lastframe:77,frames:WL,endfunc:_n};var VL=Array.from({length:4},()=>({ai:dr,dist:0}));CL={firstframe:78,lastframe:81,frames:VL,endfunc:_n};var KL=Array.from({length:4},()=>({ai:dr,dist:0}));IL={firstframe:82,lastframe:85,frames:KL,endfunc:_n};var $L=Array.from({length:4},()=>({ai:dr,dist:0}));OL={firstframe:86,lastframe:89,frames:$L,endfunc:_n};var XL=Array.from({length:24},()=>({ai:dr,dist:0}));o_={firstframe:90,lastframe:113,frames:XL,endfunc:GL};var YL=Array.from({length:6},(e,t)=>({ai:gu,dist:0,think:t===0||t===3?DL:null}));NL={firstframe:114,lastframe:119,frames:YL,endfunc:_n};var ZL=Array.from({length:27},(e,t)=>({ai:gu,dist:0,think:t===7||t===10||t===13?FL:null}));LL={firstframe:120,lastframe:146,frames:ZL,endfunc:_n};var jL=Array.from({length:6},()=>({ai:gu,dist:0,think:UL}));a_={firstframe:147,lastframe:152,frames:jL,endfunc:BL};var qL=Array.from({length:14},()=>({ai:dr,dist:0}));s_={firstframe:153,lastframe:166,frames:qL,endfunc:_n};U();var yu=.1;function c_(e,t,n,i,r){let a=r.trace(t,n,V,V,e,bt);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return G(P(n,t));let s=D(n,F(i,-20)),o=r.trace(t,s,V,V,e,bt);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return G(P(s,t));let u=D(n,F(i,20)),c=r.trace(t,u,V,V,e,bt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?G(P(u,t)):null}function u_(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=Yi(n)}}function JL(e,t,n){R(e,yu,n)}function QL(e,t,n){N(e,t,yu,n)}function eN(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Au:e.monsterinfo.current_move=Va}function wu(e,t,n){de(e,t,yu,n)}function d_(e,t,n){_(e,t)}var Va,l_,Au,tN,nN,iN,rN,m_;function aN(e){e.monsterinfo.current_move=Va}function sN(e){e.monsterinfo.current_move=l_}function lr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Au:e.monsterinfo.current_move=Va}function oN(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}=j(o),c=e.monsterinfo.blind_fire_target,d=c_(e,n,c,u,t);if(!d)return;i=d}else i=G(P(e.enemy.origin,n));_t(e,n,i,30,1e3,0,0,t,1)}function cN(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));Vt(e,n,i,20,2,.05,.05,0,t,4)}function uN(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}=j(o),c=e.monsterinfo.blind_fire_target,d=c_(e,n,c,u,t);if(!d)return;i=d}else i=G(P(e.enemy.origin,n));Ji(e,n,i,50,650,0,t)}function dN(e){e.monsterinfo.nextframe=m_.lastframe,e.nextthink=-1}function lN(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),lr(e)}var mN=Array.from({length:30},()=>({ai:JL,dist:0}));Va={firstframe:0,lastframe:29,frames:mN,endfunc:aN};var fN=Array.from({length:16},()=>({ai:QL,dist:5}));l_={firstframe:30,lastframe:45,frames:fN,endfunc:sN};var hN=Array.from({length:16},()=>({ai:eN,dist:10}));Au={firstframe:46,lastframe:61,frames:hN,endfunc:lr};var _N=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=u_:t>5&&t<12&&(n=oN),{ai:wu,dist:0,think:n}});tN={firstframe:62,lastframe:77,frames:_N,endfunc:lr};var gN=Array.from({length:20},(e,t)=>({ai:wu,dist:0,think:t%2===0&&t>5?cN:null}));nN={firstframe:78,lastframe:97,frames:gN,endfunc:lr};var vN=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=u_:(t===8||t===12||t===16)&&(n=uN),{ai:wu,dist:0,think:n}});iN={firstframe:98,lastframe:115,frames:vN,endfunc:lN};var pN=Array.from({length:6},()=>({ai:d_,dist:0}));rN={firstframe:116,lastframe:121,frames:pN,endfunc:lr};var yN=Array.from({length:16},()=>({ai:d_,dist:0}));m_={firstframe:122,lastframe:137,frames:yN,endfunc:dN};U();var Su=.1;function wN(e,t,n){R(e,Su,n)}function ku(e,t,n){oe(e,t,Su,n)}function AN(e,t,n){de(e,t,Su,n)}var Eu,f_,SN,kN,h_;function EN(e){e.monsterinfo.current_move=Eu}function xu(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=f_:e.monsterinfo.current_move=Eu}function xN(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),_t(e,i,r,2,1e3,1,0,t)}var bN=Array.from({length:1},()=>({ai:wN,dist:0}));Eu={firstframe:0,lastframe:0,frames:bN,endfunc:EN};var TN=Array.from({length:1},()=>({ai:ku,dist:0}));f_={firstframe:0,lastframe:0,frames:TN,endfunc:xu};var MN=Array.from({length:8},(e,t)=>({ai:AN,dist:0,think:t===4?xN:void 0}));SN={firstframe:1,lastframe:8,frames:MN,endfunc:xu};var RN=Array.from({length:2},()=>({ai:ku,dist:0}));kN={firstframe:9,lastframe:10,frames:RN,endfunc:xu};var zN=Array.from({length:4},()=>({ai:ku,dist:0}));function LN(e){e.monsterinfo.nextframe=h_.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}h_={firstframe:11,lastframe:14,frames:zN,endfunc:LN};U();var Ka=.1;var $i=()=>Math.random(),$a=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;function ei(e,t,n){R(e,Ka,n)}function Un(e,t,n){N(e,t,Ka,n)}function He(e,t,n){oe(e,t,Ka,n)}function $(e,t,n){de(e,t,Ka,n)}function Ce(e,t,n){_(e,t)}var bu,__,g_,Xa,Tu,NN,v_,ON,p_,y_,w_,A_,S_,IN,CN,PN,FN,DN,UN,BN,GN,HN,WN,Ya=2,k_=80,VN=100;var KN=8;var Mu=32;function ti(e,t){!(e.spawnflags&Mu)&&e.waterlevel>=Ya&&rO(e)}function $N(e){e.waterlevel>=Ya?(e.flags|=2,e.monsterinfo.current_move=__):e.monsterinfo.current_move!==Tu&&(e.monsterinfo.current_move=bu)}function E_(e){e.flags|=2,e.monsterinfo.current_move=g_}function Za(e,t){if(!e.enemy)return;let n=$a(5,10),i=100,r=P(e.enemy.origin,e.origin);De(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck2.wav",1,1,0),he(e.enemy,e,e,G(r),e.enemy.origin,V,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function Ru(e,t){if(!e.enemy)return;let n=$a(5,10),i=100,r=P(e.enemy.origin,e.origin);De(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck3.wav",1,1,0),he(e.enemy,e,e,G(r),e.enemy.origin,V,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function zu(e,t){if(!e.enemy)return;let n=5,i=k_,r=P(e.enemy.origin,e.origin);De(r)<=i&&he(e.enemy,e,e,G(r),e.enemy.origin,V,n,0,0,0,t.timeSeconds)}function XN(e){e.monsterinfo.current_move=Tu}function x_(e){$i()>.75&&e.health<e.max_health&&(e.monsterinfo.nextframe=0)}function b_(e,t){let n=$a(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 T_(e,t){if(e.spawnflags&KN){let n=$i();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+=$a(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 Rt(e){!(e.spawnflags&Mu)&&e.waterlevel>=Ya?e.monsterinfo.current_move=Xa:e.monsterinfo.current_move=y_}function YN(e){!(e.spawnflags&Mu)&&e.waterlevel>=Ya?e.monsterinfo.current_move=Xa:e.monsterinfo.current_move=p_}function M_(e){if(!e.enemy||e.enemy.health<=0)return;De(P(e.enemy.origin,e.origin))<=k_&&(e.frame===114?e.monsterinfo.current_move=A_:e.frame===123&&(e.monsterinfo.current_move=w_))}function ZN(e,t,n,i,r,a){let s=ji(a,e,t,n,i,r,0);s.model="models/objects/loogy/tris.md2"}function jN(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=D(e.origin,D(F(i,s.x),D(F(r,s.y),F(a,s.z))));o.z+=2;let u=Kn(e.enemy.origin);u.z+=e.enemy.viewheight||0;let c=G(P(u,o));ZN(e,o,c,5,550,t),t.engine.sound?.(e,0,"gek/gk_atck4.wav",1,1,0)}function qN(e){if($i()>.8&&e.health<e.max_health){e.monsterinfo.current_move=v_;return}if(e.enemy&&e.enemy.health>0){let t=De(P(e.enemy.origin,e.origin));$i()>.7&&t<=VN&&(e.monsterinfo.current_move=S_)}}function JN(e,t,n,i){if(e.health<=0){e.touch=void 0;return}e.touch=void 0}function QN(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=D(F(i,700),{x:0,y:0,z:250}),e.groundentity=null,e.touch=JN}function eO(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.velocity=V;return}}function on(e){e.groundentity&&(e.velocity=V)}function tO(e,t){}function ja(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.nextthink=-1}function R_(e,t){Oh(t,e.origin,20),e.deadflag=2}function nO(e,t){$i()>.9&&R_(e,t)}function iO(e){e.maxs.z=0}function rO(e){e.flags|=2,e.yaw_speed=10,e.viewheight=10,e.monsterinfo.current_move=Xa,e.mins={x:-18,y:-18,z:-24},e.maxs={x:18,y:18,z:16}}var z_=Array(38).fill({ai:ei,dist:0});z_[38]={ai:ei,dist:0,think:ti};bu={firstframe:0,lastframe:38,frames:z_,endfunc:null};var aO=Array(32).fill({ai:ei,dist:14});__={firstframe:39,lastframe:70,frames:aO,endfunc:null};var sO=Array(32).fill({ai:He,dist:14});g_={firstframe:39,lastframe:70,frames:sO,endfunc:E_};var qa=Array(32).fill({ai:He,dist:14});qa[8]={ai:He,dist:18,think:Za};qa[14]={ai:He,dist:24,think:Ru};qa[20]={ai:He,dist:22,think:zu};Xa={firstframe:39,lastframe:70,frames:qa,endfunc:E_};var Lu=Array(32).fill({ai:ei,dist:0});Lu[0]={ai:ei,dist:0,think:T_};Lu[31]={ai:ei,dist:0,think:x_};NN={firstframe:71,lastframe:102,frames:Lu,endfunc:$N};var Ja=Array(32).fill({ai:Ce,dist:0});Ja[0]={ai:Ce,dist:0,think:T_};Ja[31]={ai:Ce,dist:0,think:x_};v_={firstframe:71,lastframe:102,frames:Ja,endfunc:e=>_O(e,bu)};Tu={firstframe:71,lastframe:102,frames:Ja,endfunc:XN};var oO=[{ai:Un,dist:3.8,think:ti},{ai:Un,dist:19.6},{ai:Un,dist:25.5},{ai:Un,dist:34.6,think:b_},{ai:Un,dist:27.3},{ai:Un,dist:28.4}];ON={firstframe:103,lastframe:108,frames:oO,endfunc:null};var cO=[{ai:He,dist:3.8,think:ti},{ai:He,dist:19.6},{ai:He,dist:25.5},{ai:He,dist:34.6,think:b_},{ai:He,dist:27.3},{ai:He,dist:28.4}];p_={firstframe:103,lastframe:108,frames:cO,endfunc:null};var uO=[{ai:He,dist:.2},{ai:He,dist:19.7}];y_={firstframe:0,lastframe:1,frames:uO,endfunc:YN};var dO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:jN},{ai:$,dist:0,think:qN}];S_={firstframe:133,lastframe:139,frames:dO,endfunc:Rt};var lO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:Za},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:M_}];w_={firstframe:109,lastframe:117,frames:lO,endfunc:Rt};var mO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:Za},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:Ru},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:M_}];A_={firstframe:118,lastframe:126,frames:mO,endfunc:Rt};var L_=[{ai:$,dist:0},{ai:$,dist:-.3},{ai:$,dist:-1.1},{ai:$,dist:-.2},{ai:$,dist:6.7,think:QN},{ai:$,dist:6.4},{ai:$,dist:.1},{ai:$,dist:28.3},{ai:$,dist:24.1},{ai:$,dist:31.7},{ai:$,dist:35.9,think:eO},{ai:$,dist:12.3,think:on},{ai:$,dist:20.1,think:on},{ai:$,dist:-1,think:on},{ai:$,dist:2.5,think:on},{ai:$,dist:.5,think:on},{ai:$,dist:1.8,think:on},{ai:$,dist:1.2,think:on},{ai:$,dist:-.4,think:ti}];IN={firstframe:140,lastframe:158,frames:L_,endfunc:Rt};CN={firstframe:140,lastframe:158,frames:L_,endfunc:Rt};var ni=Array(21).fill({ai:$,dist:16});ni[0]={ai:$,dist:16,think:tO};ni[4]={ai:$,dist:16,think:zu};ni[9]={ai:$,dist:16,think:zu};ni[13]={ai:$,dist:16,think:Za};ni[18]={ai:$,dist:16,think:Ru};PN={firstframe:159,lastframe:179,frames:ni,endfunc:Rt};var fO=Array(6).fill({ai:Ce,dist:0});FN={firstframe:180,lastframe:185,frames:fO,endfunc:Rt};var N_=Array(11).fill({ai:Ce,dist:0});N_[10]={ai:Ce,dist:0,think:ti};DN={firstframe:186,lastframe:196,frames:N_,endfunc:Rt};var O_=Array(13).fill({ai:Ce,dist:0});O_[12]={ai:Ce,dist:0,think:ti};UN={firstframe:197,lastframe:209,frames:O_,endfunc:Rt};var I_=Array(10).fill({ai:Ce,dist:0});I_[5]={ai:Ce,dist:-7,think:iO};BN={firstframe:210,lastframe:219,frames:I_,endfunc:ja};var C_=Array(7).fill({ai:Ce,dist:0});C_[5]={ai:Ce,dist:-7,think:nO};GN={firstframe:220,lastframe:226,frames:C_,endfunc:ja};var P_=Array(35).fill({ai:Ce,dist:0});P_[34]={ai:Ce,dist:0,think:R_};HN={firstframe:227,lastframe:261,frames:P_,endfunc:ja};var hO=Array(45).fill({ai:Ce,dist:0});WN={firstframe:262,lastframe:306,frames:hO,endfunc:ja};function _O(e,t){e.monsterinfo.current_move=t}U();var Nu=.1,gO=()=>Math.random(),ih=()=>Math.random();function vO(e,t,n){N(e,t,Nu,n)}function pO(e,t,n){oe(e,t,Nu,n)}function Qa(e,t,n){de(e,t,Nu,n)}function tt(e,t,n){_(e,t)}var Xi,yO,Ou,F_,D_,wO,AO,SO,kO,EO,xO,bO,TO=1;function MO(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)&&mn(e,a,t.trace)){if(!r){r=a;continue}a.max_health<=r.max_health||(r=a)}return r}function RO(e,t){if(e.enemy)return;let n=MO(e,t);n?(e.enemy=n,e.monsterinfo.aiflags|=8192,mr(e),void 0):gO()<.1&&t.engine.sound?.(e,0,"flyer/flysght1.wav",1,1,0)}function zO(e,t){if(!e.enemy||!e.enemy.inUse){e.monsterinfo.current_move=Ou;return}let n=j(e.angles),i=D(e.origin,D(F(n.forward,0),D(F(n.right,0),F(n.up,0)))),r=Kn(e.enemy.origin);r.z+=e.enemy.viewheight||0;let a=G(P(r,i));_t(e,i,a,15,1e3,TO,0,t)}function LO(e,t){if(!e.enemy||!e.enemy.inUse||e.enemy.health<=-40){e.monsterinfo.current_move=Xi,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=Xi,e.monsterinfo.aiflags&=-8193,e.enemy=null)}function NO(e,t){if(ih()>.8){let n=ih();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 mr(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Xi:e.monsterinfo.current_move=Ou}function OO(e){e.monsterinfo.aiflags&8192?e.monsterinfo.current_move=D_:e.monsterinfo.current_move=F_}function Iu(e){e.goalentity&&e.goalentity.health>0||(e.monsterinfo.current_move=Xi)}var U_=Array(19).fill({ai:tt,dist:0});U_[18]={ai:tt,dist:0,think:RO};Xi={firstframe:58,lastframe:76,frames:U_,endfunc:null};var IO=[{ai:vO,dist:5}];yO={firstframe:0,lastframe:0,frames:IO,endfunc:null};var CO=[{ai:pO,dist:10}];Ou={firstframe:0,lastframe:0,frames:CO,endfunc:null};var B_=Array(31).fill({ai:Qa,dist:0});B_[20]={ai:Qa,dist:0,think:zO};F_={firstframe:121,lastframe:151,frames:B_,endfunc:mr};var PO=Array(6).fill({ai:Qa,dist:0,think:LO});D_={firstframe:115,lastframe:120,frames:PO,endfunc:null};var G_=Array(10).fill({ai:tt,dist:0});G_[9]={ai:tt,dist:0,think:Iu};wO={firstframe:77,lastframe:86,frames:G_,endfunc:null};var H_=Array(7).fill({ai:tt,dist:0,think:NO});H_[6]={ai:tt,dist:0,think:Iu};AO={firstframe:87,lastframe:93,frames:H_,endfunc:null};var W_=Array(7).fill({ai:tt,dist:-2});W_[6]={ai:tt,dist:-2,think:Iu};SO={firstframe:94,lastframe:100,frames:W_,endfunc:null};var FO=[{ai:Qa,dist:0}];kO={firstframe:0,lastframe:0,frames:FO,endfunc:OO};var DO=[{ai:tt,dist:-1}];EO={firstframe:0,lastframe:0,frames:DO,endfunc:mr};var UO=Array(8).fill({ai:tt,dist:0});xO={firstframe:107,lastframe:114,frames:UO,endfunc:mr};var BO=Array(6).fill({ai:tt,dist:0});bO={firstframe:101,lastframe:106,frames:BO,endfunc:mr};U();U();var Cu=.1;function GO(e,t,n){R(e,Cu,n)}function HO(e,t,n){N(e,t,Cu,n)}function WO(e,t,n){oe(e,t,Cu,n)}var aP=Array.from({length:1},()=>({ai:GO,dist:0})),sP=Array.from({length:1},()=>({ai:HO,dist:5})),oP=Array.from({length:1},()=>({ai:WO,dist:10}));var cP=new Map(vc.map(e=>[e.name,e]));U();var VO=2166136261,KO=16777619;function V_(e,t){let n=e>>>0;for(let i=0;i<t.length;i+=1)n^=t[i]&255,n=Math.imul(n,KO)>>>0;return n>>>0}function Hn(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let r=new Uint8Array(n);return V_(e,r)}function mc(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i)&255;return V_(e,n)}var qo=2,$O=1;function Ve(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 Wn(e,t,n){return e===void 0?n:ve(e,t)}function _a(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function ua(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 XO(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Ve(e,"level");return{frameNumber:Wn(t.frameNumber,"level.frameNumber",0),timeSeconds:Wn(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:Wn(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:Wn(t.deltaSeconds,"level.deltaSeconds",0)}}function YO(e){if(e===void 0)return new _c().getState();let t=Ve(e,"rng"),n=Ve(t.mt,"rng.mt"),i=ua(n.state,"rng.mt.state");return{mt:{index:ve(n.index,"rng.mt.index"),state:i}}}function ZO(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=Ve(t,`thinks[${n}]`);return{time:ve(i.time,`thinks[${n}].time`),entityIndex:ve(i.entityIndex,`thinks[${n}].entityIndex`)}})}function jO(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=Ve(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 qO(e){if(e===void 0)return{};let t=Ve(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=Ve(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 JO(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let i=Ve(t,`entities[${n}]`);return{index:ve(i.index,`entities[${n}].index`),fields:qO(i.fields)}})}function QO(e){let t=Ve(e,"pool");return{capacity:ve(t.capacity,"pool.capacity"),activeOrder:ua(t.activeOrder,"pool.activeOrder"),freeList:ua(t.freeList,"pool.freeList"),pendingFree:ua(t.pendingFree,"pool.pendingFree")}}function eI(e){let t=Ve(e,"entities");return{timeSeconds:ve(t.timeSeconds,"entities.timeSeconds"),pool:QO(t.pool),entities:JO(t.entities),thinks:ZO(t.thinks),awareness:jO(t.awareness),crossLevelFlags:Wn(t.crossLevelFlags,"entities.crossLevelFlags",0),crossUnitFlags:Wn(t.crossUnitFlags,"entities.crossUnitFlags",0)}}function tI(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=Ve(t,`cvars[${n}]`);return{name:_a(i.name,`cvars[${n}].name`),value:_a(i.value,`cvars[${n}].value`),flags:ve(i.flags,`cvars[${n}].flags`)}})}function nI(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>_a(t,`configstrings[${n}]`))}function iI(e){return e===void 0?{}:Ve(e,"gameState")}function xt(e,t){if(t==null)return e;if(typeof t=="number")return Hn(e,t);if(typeof t=="string")return mc(e,t);if(typeof t=="boolean")return Hn(e,t?1:0);if(Array.isArray(t)){let n=e;for(let i of t)n=xt(n,i);return n}if(typeof t=="object"){let n=e,i=Object.keys(t).sort();for(let r of i)n=mc(n,r),n=xt(n,t[r]);return n}return e}function rI(e){let t=VO;return t=Hn(t,e.version),t=Hn(t,e.timestamp),t=mc(t,e.map),t=Hn(t,e.difficulty),t=Hn(t,e.playtimeSeconds),t=xt(t,e.gameState),t=xt(t,e.level),t=xt(t,e.rng),t=xt(t,e.entities),t=xt(t,e.cvars),t=xt(t,e.configstrings),e.player&&(t=xt(t,e.player)),t>>>0}function K_(e,t={}){let{allowNewerVersion:n=!0}=t,i=typeof e=="string"?JSON.parse(e):e,r=Ve(i,"save"),a=r.version??qo,s=ve(a,"version");if(s<$O)throw new Error(`Unsupported save version ${s}`);if(s>qo&&!n)throw new Error(`Save version ${s} is newer than supported ${qo}`);let o={version:s,timestamp:ve(r.timestamp,"timestamp"),map:_a(r.map,"map"),difficulty:ve(r.difficulty,"difficulty"),playtimeSeconds:ve(r.playtimeSeconds,"playtimeSeconds"),gameState:iI(r.gameState),level:XO(r.level),rng:YO(r.rng),entities:eI(r.entities),cvars:tI(r.cvars),configstrings:nI(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=rI(o);if(u!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${u}`)}return o}U();var uP=new Set(vc.filter(e=>e.save).map(e=>e.name));var rh=globalThis.TextEncoder;function Vn(e){return K_({...e},{allowNewerVersion:!0})}function aI(e){return rh?new rh().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var sI=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:Vn(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:Vn(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:Vn(e.save)}))}},oI=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:Vn(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:Vn(t.save)}))}},Pu=class Di{constructor(t={}){let{dbName:n=Di.DEFAULT_DB_NAME,storeName:i=Di.DEFAULT_STORE}=t,r=t.indexedDB??globalThis.indexedDB;r?this.adapter=new oI(r,n,i):this.adapter=new sI}async save(t,n,i={}){let r=Vn(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:aI(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 K_(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(Di.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(Di.QUICK_SLOT,t)}};Pu.DEFAULT_DB_NAME="quake2ts-saves";Pu.DEFAULT_STORE="saves";Pu.QUICK_SLOT="quicksave";U();Kt();U();U();var dP=Zi();U();Kt();var lP=[{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 cI=new Map,uI=["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"],$_=async(e,t)=>{for(let n of uI)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);cI.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var dI=new Map,lI=["d_left","d_right","d_up","d_down"],X_=async(e,t)=>{for(let n of lI)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);dI.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Fu=[],mI=0,Y_=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);Fu.push(r)}catch(i){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,i)}Fu.length>0&&(mI=Fu[0].width),await Gm(e,t),await $_(e,t),await X_(e,t)};var Du=[{type:"null"},{type:"armor",id:un.BODY},{type:"armor",id:un.COMBAT},{type:"armor",id:un.JACKET},{type:"armor",id:un.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:W.Grapple},{type:"weapon",id:W.Blaster},{type:"weapon",id:W.ChainFist},{type:"weapon",id:W.Shotgun},{type:"weapon",id:W.SuperShotgun},{type:"weapon",id:W.Machinegun},{type:"weapon",id:W.EtfRifle},{type:"weapon",id:W.Chaingun},{type:"ammo",id:I.Grenades},{type:"ammo",id:I.Trap},{type:"ammo",id:I.Tesla},{type:"weapon",id:W.GrenadeLauncher},{type:"weapon",id:W.ProxLauncher},{type:"weapon",id:W.RocketLauncher},{type:"weapon",id:W.HyperBlaster},{type:"weapon",id:W.IonRipper},{type:"weapon",id:W.PlasmaBeam},{type:"weapon",id:W.Railgun},{type:"weapon",id:W.Phalanx},{type:"weapon",id:W.BFG10K},{type:"weapon",id:W.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}];var fI=32768,es=class{constructor(t,n){this.configstrings=new Array(fI).fill("");this.entities=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.baselines.clear(),this.latestFrame=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.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&Il){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=An();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&lo&&(t.modelindex=n.modelindex),i&ho&&(t.modelindex2=n.modelindex2),i&_o&&(t.modelindex3=n.modelindex3),i&go&&(t.modelindex4=n.modelindex4),i&so&&(t.frame=n.frame),i&fo&&(t.frame=n.frame),(i&zr||i&Or)&&(t.skinnum=n.skinnum),(i&Rr||i&Nr)&&(t.effects=n.effects),(i&Mr||i&Lr)&&(t.renderfx=n.renderfx),i&no&&(t.origin.x=n.origin.x),i&io&&(t.origin.y=n.origin.y),i&co&&(t.origin.z=n.origin.z),i&uo&&(t.angles.x=n.angles.x),i&ro&&(t.angles.y=n.angles.y),i&ao&&(t.angles.z=n.angles.z),i&vo&&(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&po&&(t.sound=n.sound),i&oo&&(t.event=n.event),i&yo&&(t.solid=n.solid),i&mo&&(t.alpha=n.alpha),i&wo&&(t.scale=n.scale),i&Ao&&(t.instanceBits=n.instanceBits),i&So&&(t.loopVolume=n.loopVolume),r&ko&&(t.loopAttenuation=n.loopAttenuation),r&Eo&&(t.owner=n.owner),r&xo&&(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,d=a??0;s&&s>0?this.imports.engine.audio.sound(s,0,n,u,c,d):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=Pt,c=Zr(this.stats,Ni.QuadDamage)?4:1;switch(n){case tm:r=-2,o={x:-2,y:0,z:0};break;case cm:r=-4,o={x:-4,y:0,z:0};break;case em:r=-1,a=Math.random()-.5;break;case nm:case im:case rm:r=-.5,a=Math.random()-.5;break;case am:r=-3,o={x:-3,y:0,z:0};break;case sm:case om:r=-2,o={x:-2,y:0,z:0};break;case um:r=-5,o={x:-2,y:0,z:0};break;case dm:case Ql: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>=Du.length)break;let d=Du[u];switch(d.type){case"weapon":i.ownedWeapons.add(d.id);break;case"ammo":i.ammo.counts[d.id]||(i.ammo.counts[d.id]=0),i.ammo.counts[d.id]=c;break;case"armor":i.armor={armorType:d.id,armorCount:c};break;case"powerup":i.powerups.set(d.id,c);break;case"key":i.keys.add(d.id);break;case"health":break;case"item":i.items.add(d.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:Li.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:Pt,kick_origin:Pt,gunoffset:Pt,gunangles:Pt,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 an();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>=r&&t<=i){let a=(t-r)/(i-r),s=this.convertFrameToPredictionState(this.previousFrame);return Nn(s,n,Math.max(0,Math.min(1,a)))}}return n}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var ii=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+Mi){let i=t-ye.Models;this.models[i]=n}else if(t>=ye.Sounds&&t<ye.Sounds+Ri){let i=t-ye.Sounds;this.sounds[i]=n}else if(t>=ye.Images&&t<ye.Images+zi){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 ts=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 ns=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} (${Z_(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} (${Z_(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 Z_(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 is=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 fr=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 rs=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 as=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 ss=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 j_(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((d,f)=>{let l=c+40+f*o,h=d.label;if(d.type==="input"&&d.getValue){if(h+=`: ${d.getValue()}`,f===t.selectedIndex){let g=Date.now();Math.floor(g/500)%2===0&&(h+="_")}}else d.type==="toggle"&&d.getValue&&(h+=`: ${d.getValue()}`);if(f===t.selectedIndex){let y=h.replace(/\^[0-9]/g,"").length*8,T=(n-y)/2;e.drawString(T-16,l,"\r")}e.drawCenterString(l,h)})}var hr=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&Ti.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 os=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 cs=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 us=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 ds=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}`)}};function ri(e,t,n){return e+(t-e)*n}function Uu(e,t,n){return ri(e,t,n)}function q_(e,t,n,i,r){let a=[],s=r.engine.assets;if(!s)return a;let o=new Map(t.map(u=>[u.number,u]));for(let u of e){let c=o.get(u.number)??u,d=i.getModelName(u.modelIndex);if(!d)continue;let f=s.getMd2Model(d)||s.getMd3Model(d);if(!f)continue;let l={x:ri(c.origin.x,u.origin.x,n),y:ri(c.origin.y,u.origin.y,n),z:ri(c.origin.z,u.origin.z,n)},h={x:Uu(c.angles.x,u.angles.x,n),y:Uu(c.angles.y,u.angles.y,n),z:Uu(c.angles.z,u.angles.z,n)},g=u.frame,w=c.frame,v=c.scale!==void 0?c.scale:1,y=u.scale!==void 0?u.scale:1,T=ri(v,y,n),S=k=>k===void 0||k===0?255:k,p=S(c.alpha),E=S(u.alpha),x=ri(p,E,n)/255,L=me.create();me.translate(L,L,[l.x,l.y,l.z]),me.rotateZ(L,L,h.z*Math.PI/180),me.rotateY(L,L,h.y*Math.PI/180),me.rotateX(L,L,h.x*Math.PI/180),me.scale(L,L,[T,T,T]),f.header.magic===844121161?a.push({type:"md2",model:f,blend:{frame0:w,frame1:g,lerp:n},transform:L,skin:u.skinNum>0?i.getImageName(u.skinNum):void 0,alpha:x}):f.header.magic===860898377&&a.push({type:"md3",model:f,blend:{frame0:w,frame1:g,lerp:n},transform:L,alpha:x})}return a}var ls=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 ms=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 ls,this.options=t,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;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>Jl&&this.commandHistory.shift();let i=new ym;i.writeLong(0),i.writeLong(0),i.writeByte(rn.move),i.writeByte(0),i.writeLong(this.latestServerFrame),vm(i,n),this.driver.send(i.getData())}handleMessage(t){let n=t.buffer;if(n instanceof SharedArrayBuffer){let s=new ArrayBuffer(t.byteLength);new Uint8Array(s).set(t),n=s}let i=new pm(n),r=i.readLong(),a=i.readLong();this.parser=new bo(i,this),this.parser.parseMessage()}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new Oi;t.writeByte(rn.stringcmd),t.writeString("getchallenge"),this.driver.send(t.getData())}sendConnect(t){let n=new Oi;n.writeByte(rn.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 ${Tr} ${t} ${i}`),this.driver.send(n.getData())}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 Oi;o.writeByte(rn.stringcmd),o.writeString("new"),this.driver.send(o.getData()),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 Oi;t.writeByte(rn.stringcmd),t.writeString("begin"),this.driver.send(t.getData()),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 hI=[{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"}],gn=class{constructor(t=hI){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 J_(){return new gn}function Bu(e){return e}function _r(e){return e.trim().toLowerCase()}var _I=250,Gu=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}}},fs=(y=>(y.Forward="+forward",y.Back="+back",y.MoveLeft="+moveleft",y.MoveRight="+moveright",y.MoveUp="+moveup",y.MoveDown="+movedown",y.Jump="+jump",y.Crouch="+crouch",y.Attack="+attack",y.Use="+use",y.Holster="+holster",y.TurnLeft="+left",y.TurnRight="+right",y.LookUp="+lookup",y.LookDown="+lookdown",y.SpeedModifier="+speed",y.Zoom="+zoom",y))(fs||{}),gI={"+attack":ct.Attack,"+use":ct.Use,"+holster":ct.Holster,"+jump":ct.Jump,"+crouch":ct.Crouch},vI=new Map(Object.values(fs).map(e=>[_r(e),e]));function pI(e){return vI.get(_r(e))}function gr(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var ai=class{constructor(t={},n=new gn){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??Vl,this.sideSpeed=t.sideSpeed??Kl,this.upSpeed=t.upSpeed??$l,this.yawSpeed=t.yawSpeed??Xl,this.pitchSpeed=t.pitchSpeed??Yl,this.sensitivity=t.sensitivity??Zl,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=gr()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!0,i,n)}handleKeyUp(t,n=gr()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!1,i,n)}handleMouseButtonDown(t,n=gr()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!0,i,n)}handleMouseButtonUp(t,n=gr()){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=gr(),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),d={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 O=this.gamepadLook.y*(this.invertGamepadY?-1:1);d={x:d.x+O*a*this.gamepadLookScale,y:d.y+this.gamepadLook.x*r*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let O=this.touchLook.y*(this.invertMouseY?-1:1);d={x:d.x+O*a,y:d.y+this.touchLook.x*r,z:0}}if(this.pointerLocked||!this.requirePointerLock){let O=this.sampleMouseDelta(),J=ql(O,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});d={x:d.x+J.x,y:d.y+J.y,z:0}}let f=jl(this.viewAngles,d);this.viewAngles=f;let l=this.sample("+forward",t,n),h=this.sample("+back",t,n),g=this.sample("+moveleft",t,n),w=this.sample("+moveright",t,n),v=this.sample("+moveup",t,n),y=this.sample("+movedown",t,n),T=this.sample("+speed",t,n),S=this.sample("+jump",t,n),p=this.sample("+crouch",t,n),E=this.runByDefault?T.active?.5:1:T.active?1:.5,b=this.forwardSpeed*(l.fraction-h.fraction)*E,x=this.sideSpeed*(w.fraction-g.fraction)*E,L=this.upSpeed*(v.fraction-y.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(b+=this.forwardSpeed*this.gamepadMove.y*E,x+=this.sideSpeed*this.gamepadMove.x*E),(this.touchMove.x!==0||this.touchMove.y!==0)&&(b+=this.forwardSpeed*this.touchMove.y*E,x+=this.sideSpeed*this.touchMove.x*E),this.jumpAddsUpMove&&S.fraction>0&&(L+=this.upSpeed*S.fraction),this.crouchAddsDownMove&&p.fraction>0&&(L-=this.upSpeed*p.fraction),b=this.clampMove(b,this.forwardSpeed),x=this.clampMove(x,this.sideSpeed),L=this.clampMove(L,this.upSpeed);let k=this.collectButtonBits(t,n),z=Math.min(Math.max(Math.round(t),1),_I);return(this.anyPressed||k!==ct.None)&&(k|=ct.Any),this.anyPressed=!1,{msec:z,buttons:k,angles:{...this.viewAngles},forwardmove:b,sidemove:x,upmove:L,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 d=c.pressed||c.value>this.gamepadDeadZone,f=this.gamepadButtonCode(a,u);d&&i.add(f);let l=this.gamepadButtons.get(f)??!1;d!==l&&(this.applyCommand(this.bindings.getBinding(f),d,f,t),this.gamepadButtons.set(f,d))}}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=pI(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=ct.None;for(let[r,a]of Object.entries(gI)){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 Gu,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 hs=class{constructor(t,n=new ai(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 _s={x:0,y:0,z:0},Q_=(i=>(i[i.Normal=0]="Normal",i[i.DemoPlayback=1]="DemoPlayback",i[i.Multiplayer=2]="Multiplayer",i))(Q_||{});function yI(e){let t=M=>{let H={x:0,y:0,z:0};return e.engine.trace(M,M,H,H).contents||0},n=new na(e.engine.trace,t),i=new ta,r=new Pl,a=new es(e);a.setView(i);let s=!1,o=null,u=0,c=new is,d=new cs,f=new us,l=new ds,h=new hr(new os),g,w,v=new ii,y,T=0,S=!1,E=Bm(e,{get tickRate(){return 10},get frameTimeMs(){return y?.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 S}}),b=Um(E),x=new ms({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}}),L=new ss(c,x);a.setCallbacks({onCenterPrint:M=>b.ParseCenterPrint(M,0,!1),onPrint:(M,H)=>b.NotifyMessage(0,H,!1),onConfigString:(M,H)=>{v.set(M,H),b.ParseConfigString(M,H)},onServerData:(M,H)=>{H&&H>0?r.setFrameDuration(1e3/H):r.setFrameDuration(100)}}),r.setHandler(a);let k,z,O,J=90,ce=!1;if(e.host){w=new fr(c,e.host),g=new as(c,w,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)});h.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=Hm();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}...`),x.connect(H).catch(ee=>{console.error("Failed to connect:",ee),f.show("Connection Failed",ee instanceof Error?ee.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{x.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Ti.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:d,errorDialog:f,init(M){this.Init(M)},Init(M){y=M,M?.state&&n.setAuthoritative(M),b.Init(),e.engine.assets&&e.engine.renderer&&(d.start(100,"Loading assets..."),Y_(e.engine.renderer,e.engine.assets).then(()=>{d.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(),x.isConnected()&&x.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}));h.saveCvars(M)}}else g&&c.pushMenu(g.createPauseMenu())},createMainMenu(M,H,ee,gt,be){let ze=new ns(c,H,ee,gt,be),vt=w;if(!vt){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");vt=new fr(c,e.host)}let vn=e.engine.assets,eg={findByExtension:pn=>vn?vn.listFiles(pn):[]},tg=new rs(c,eg,pn=>{console.log(`Starting map: ${pn}`),e.host?.commands.execute(`map ${pn}`)}),ng=new ts(c,ze,{...M,optionsFactory:vt,mapsFactory:tg,multiplayerFactory:L,onSetDifficulty:pn=>{e.host?.cvars&&e.host.cvars.setValue("skill",pn.toString())}});return{menuSystem:c,factory:ng}},render(M){let H=[];if(s){let be=M.nowMs,ze=T>0?Math.max(0,be-T):0;T=be,r.update(ze),k=a.getPredictionState(r.getCurrentTime())}else T=M.nowMs,M.latest?.state&&(n.setAuthoritative(M.latest),y=M.latest),M.previous?.state&&M.latest?.state?(k=Nn(M.previous.state,M.latest.state,M.alpha),M.latest.state.packetEntities&&M.previous.state.packetEntities&&(H=q_(M.latest.state.packetEntities,M.previous.state.packetEntities,M.alpha,v,e))):k=M.latest?.state??M.previous?.state??n.getPredictedState();let ee=M.latest&&M.previous?Math.max(0,M.latest.timeMs-M.previous.timeMs):0;z=i.sample(k,ee);let gt={};if(k){let{origin:be,viewAngles:ze}=k;O=new Jd,O.position=_e.fromValues(be.x,be.y,be.z);let vt=z?.offset??{x:0,y:0,z:0};_e.add(O.position,O.position,[vt.x,vt.y,vt.z]);let vn=z?.angles??{x:0,y:0,z:0};O.angles=_e.fromValues(ze.x+vn.x,ze.y+vn.y,ze.z+vn.z),O.fov=ce?40:J,O.aspect=4/3,e.engine.renderer&&(O.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&O){let be;if(e.engine.assets){let ze=v.getModelName(1);if(ze){let vt=e.engine.assets.getMap(ze)}}e.engine.renderer.renderFrame({camera:O,world:be,dlights:[]},H)}if(e.engine.renderer&&k&&k.client){let be=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},ze=M.latest?.timeMs??0;this.DrawHUD(be,ze)}return gt},DrawHUD(M,H){if(!e.engine.renderer)return;let ee=e.engine.renderer,gt=ee.width,be=ee.height;if(k&&k.client){let ze={origin:k.origin,velocity:k.velocity,viewAngles:k.viewAngles,onGround:zn(k.pmFlags,At.OnGround),waterLevel:k.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:k.damageAlpha??0,damageIndicators:k.damageIndicators??[],blend:k.blend??[0,0,0,0],pickupIcon:k.pickupIcon,centerPrint:void 0,notify:void 0,stats:k.stats?[...k.stats]:new Array(32).fill(0),kick_angles:_s,kick_origin:_s,gunoffset:_s,gunangles:_s,gunindex:0,pm_type:k.pm_type??0,pm_time:k.pm_time??0,pm_flags:k.pmFlags,gun_frame:k.gun_frame??0,rdflags:k.rdflags??0,fov:k.fov??90};ze.stats[Oe.STAT_HEALTH]=k.health??0,ze.stats[Oe.STAT_AMMO]=k.ammo??0,ze.stats[Oe.STAT_ARMOR]=k.armor??0,ee.begin2D(),b.DrawHUD(0,null,{x:0,y:0,width:gt,height:be},{x:0,y:0,width:gt,height:be},1,0,ze),ee.end2D()}c.isActive()&&j_(e.engine.renderer,c.getState(),e.engine.renderer.width,e.engine.renderer.height),k&&k.client&&l.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,k.client),f.render(e.engine.renderer),d.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(b.Shutdown(),y=void 0,k=void 0,e.host?.cvars){let M=e.host.cvars.list().map(H=>({name:H.name,value:H.string,flags:H.flags}));h.saveCvars(M)}},get prediction(){return n},get lastRendered(){return k},get view(){return i},get lastView(){return z},get camera(){return O},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,T=0,v.clear()},stopDemoPlayback(){r.stop(),s=!1,o=null,u=0},ParseCenterPrint(M){b.ParseCenterPrint(M,0,!1)},ParseNotify(M){b.NotifyMessage(0,M,!1)},showSubtitle(M,H){b.ShowSubtitle(M,H)},ParseConfigString(M,H){v.set(M,H),b.ParseConfigString(M,H)},demoHandler:a,multiplayer:x,configStrings:v}}return og(wI);})();
|
|
178
178
|
/*! Bundled license information:
|
|
179
179
|
|
|
180
180
|
pako/dist/pako.esm.mjs:
|