mirror of
https://github.com/exogen/t2-mapper.git
synced 2026-03-12 08:51:45 +00:00
1 line
No EOL
177 KiB
JavaScript
1 line
No EOL
177 KiB
JavaScript
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,12631,e=>{"use strict";var t=e.i(71645),a=e.i(8155);let r=e=>{let r=(0,a.createStore)(e),n=e=>(function(e,a=e=>e){let r=t.default.useSyncExternalStore(e.subscribe,t.default.useCallback(()=>a(e.getState()),[e,a]),t.default.useCallback(()=>a(e.getInitialState()),[e,a]));return t.default.useDebugValue(r),r})(r,e);return Object.assign(n,r),n};var n=e.i(79473);let i=t.createContext(null);function o({map:e,children:a,onChange:o,domElement:s}){let l=e.map(e=>e.name+e.keys).join("-"),d=t.useMemo(()=>{let t;return(t=(0,n.subscribeWithSelector)(()=>e.reduce((e,t)=>({...e,[t.name]:!1}),{})))?r(t):r},[l]),c=t.useMemo(()=>[d.subscribe,d.getState,d],[l]),u=d.setState;return t.useEffect(()=>{let t=e.map(({name:e,keys:t,up:a})=>({keys:t,up:a,fn:t=>{u({[e]:t}),o&&o(e,t,c[1]())}})).reduce((e,{keys:t,fn:a,up:r=!0})=>(t.forEach(t=>e[t]={fn:a,pressed:!1,up:r}),e),{}),a=({key:e,code:a})=>{let r=t[e]||t[a];if(!r)return;let{fn:n,pressed:i,up:o}=r;r.pressed=!0,(o||!i)&&n(!0)},r=({key:e,code:a})=>{let r=t[e]||t[a];if(!r)return;let{fn:n,up:i}=r;r.pressed=!1,i&&n(!1)},n=s||window;return n.addEventListener("keydown",a,{passive:!0}),n.addEventListener("keyup",r,{passive:!0}),()=>{n.removeEventListener("keydown",a),n.removeEventListener("keyup",r)}},[s,l]),t.createElement(i.Provider,{value:c,children:a})}function s(e){let[a,r,n]=t.useContext(i);return e?n(e):[a,r]}e.s(["KeyboardControls",()=>o,"useKeyboardControls",()=>s],12631)},5729,e=>{"use strict";var t,a=e.i(43476),r=e.i(932),n=e.i(71645),i=e.i(90072),o=e.i(71753),s=e.i(15080),l=e.i(12631),d=e.i(85413),c=Object.defineProperty,u=(e,t,a)=>{let r;return(r="symbol"!=typeof t?t+"":t)in e?c(e,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[r]=a,a};let h=new i.Euler(0,0,0,"YXZ"),g=new i.Vector3,p={type:"change"},m={type:"lock"},f={type:"unlock"},F=Math.PI/2;class v extends d.EventDispatcher{constructor(e,t){super(),u(this,"camera"),u(this,"domElement"),u(this,"isLocked"),u(this,"minPolarAngle"),u(this,"maxPolarAngle"),u(this,"pointerSpeed"),u(this,"onMouseMove",e=>{this.domElement&&!1!==this.isLocked&&(h.setFromQuaternion(this.camera.quaternion),h.y-=.002*e.movementX*this.pointerSpeed,h.x-=.002*e.movementY*this.pointerSpeed,h.x=Math.max(F-this.maxPolarAngle,Math.min(F-this.minPolarAngle,h.x)),this.camera.quaternion.setFromEuler(h),this.dispatchEvent(p))}),u(this,"onPointerlockChange",()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(m),this.isLocked=!0):(this.dispatchEvent(f),this.isLocked=!1))}),u(this,"onPointerlockError",()=>{console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}),u(this,"connect",e=>{this.domElement=e||this.domElement,this.domElement&&(this.domElement.ownerDocument.addEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.addEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this.onPointerlockError))}),u(this,"disconnect",()=>{this.domElement&&(this.domElement.ownerDocument.removeEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this.onPointerlockError))}),u(this,"dispose",()=>{this.disconnect()}),u(this,"getObject",()=>this.camera),u(this,"direction",new i.Vector3(0,0,-1)),u(this,"getDirection",e=>e.copy(this.direction).applyQuaternion(this.camera.quaternion)),u(this,"moveForward",e=>{g.setFromMatrixColumn(this.camera.matrix,0),g.crossVectors(this.camera.up,g),this.camera.position.addScaledVector(g,e)}),u(this,"moveRight",e=>{g.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(g,e)}),u(this,"lock",()=>{this.domElement&&this.domElement.requestPointerLock()}),u(this,"unlock",()=>{this.domElement&&this.domElement.ownerDocument.exitPointerLock()}),this.camera=e,this.domElement=t,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,t&&this.connect(t)}}var y=e.i(79123),S=e.i(68294),k=e.i(93784);(t={}).forward="forward",t.backward="backward",t.left="left",t.right="right",t.up="up",t.down="down",t.lookUp="lookUp",t.lookDown="lookDown",t.lookLeft="lookLeft",t.lookRight="lookRight",t.camera1="camera1",t.camera2="camera2",t.camera3="camera3",t.camera4="camera4",t.camera5="camera5",t.camera6="camera6",t.camera7="camera7",t.camera8="camera8",t.camera9="camera9";let b=Math.PI/2-.01;function P(){let e,t,a,d,c,u,h,g,p,m,f,F,P,x=(0,r.c)(26),{speedMultiplier:I,setSpeedMultiplier:D}=(0,y.useControls)(),[C,E]=(0,l.useKeyboardControls)(),{camera:w,gl:M}=(0,s.useThree)(),{nextCamera:B,setCameraIndex:T,cameraCount:R}=(0,S.useCameras)(),N=(0,n.useRef)(null);x[0]===Symbol.for("react.memo_cache_sentinel")?(e=new i.Vector3,x[0]=e):e=x[0];let G=(0,n.useRef)(e);x[1]===Symbol.for("react.memo_cache_sentinel")?(t=new i.Vector3,x[1]=t):t=x[1];let A=(0,n.useRef)(t);x[2]===Symbol.for("react.memo_cache_sentinel")?(a=new i.Vector3,x[2]=a):a=x[2];let U=(0,n.useRef)(a);x[3]===Symbol.for("react.memo_cache_sentinel")?(d=new i.Euler(0,0,0,"YXZ"),x[3]=d):d=x[3];let j=(0,n.useRef)(d);return x[4]!==w||x[5]!==M.domElement?(c=()=>{let e=new v(w,M.domElement);return N.current=e,()=>{e.dispose()}},u=[w,M.domElement],x[4]=w,x[5]=M.domElement,x[6]=c,x[7]=u):(c=x[6],u=x[7]),(0,n.useEffect)(c,u),x[8]!==w||x[9]!==M.domElement||x[10]!==B?(h=()=>{let e=M.domElement,t=new i.Euler(0,0,0,"YXZ"),a=!1,r=!1,n=0,o=0,s=t=>{N.current?.isLocked||t.target===e&&(a=!0,r=!1,n=t.clientX,o=t.clientY)},l=e=>{!a||!r&&3>Math.abs(e.clientX-n)&&3>Math.abs(e.clientY-o)||(r=!0,t.setFromQuaternion(w.quaternion,"YXZ"),t.y=t.y-.003*e.movementX,t.x=t.x-.003*e.movementY,t.x=Math.max(-b,Math.min(b,t.x)),w.quaternion.setFromEuler(t))},d=()=>{a=!1},c=t=>{let a=N.current;!a||a.isLocked?B():t.target!==e||r||a.lock()};return e.addEventListener("mousedown",s),document.addEventListener("mousemove",l),document.addEventListener("mouseup",d),document.addEventListener("click",c),()=>{e.removeEventListener("mousedown",s),document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",d),document.removeEventListener("click",c)}},g=[w,M.domElement,B],x[8]=w,x[9]=M.domElement,x[10]=B,x[11]=h,x[12]=g):(h=x[11],g=x[12]),(0,n.useEffect)(h,g),x[13]!==R||x[14]!==T||x[15]!==C?(p=()=>{let e=["camera1","camera2","camera3","camera4","camera5","camera6","camera7","camera8","camera9"];return C(t=>{for(let a=0;a<e.length;a++)if(t[e[a]]&&a<R){T(a);break}})},m=[C,T,R],x[13]=R,x[14]=T,x[15]=C,x[16]=p,x[17]=m):(p=x[16],m=x[17]),(0,n.useEffect)(p,m),x[18]!==M.domElement||x[19]!==D?(f=()=>{let e=e=>{e.preventDefault();let t=e.deltaY>0?-1:1,a=Math.max(.05,Math.min(.5,Math.abs(.01*e.deltaY)))*t;D(e=>Math.max(.1,Math.min(5,Math.round((e+a)*20)/20)))},t=M.domElement;return t.addEventListener("wheel",e,{passive:!1}),()=>{t.removeEventListener("wheel",e)}},F=[M.domElement,D],x[18]=M.domElement,x[19]=D,x[20]=f,x[21]=F):(f=x[20],F=x[21]),(0,n.useEffect)(f,F),x[22]!==w||x[23]!==E||x[24]!==I?(P=(e,t)=>{let a=k.streamPlaybackStore.getState();if(a.playback&&!a.freeFlyCamera)return;let{forward:r,backward:n,left:i,right:o,up:s,down:l,lookUp:d,lookDown:c,lookLeft:u,lookRight:h}=E();if((d||c||u||h)&&(j.current.setFromQuaternion(w.quaternion,"YXZ"),u&&(j.current.y=j.current.y+ +t),h&&(j.current.y=j.current.y-t),d&&(j.current.x=j.current.x+ +t),c&&(j.current.x=j.current.x-t),j.current.x=Math.max(-b,Math.min(b,j.current.x)),w.quaternion.setFromEuler(j.current)),!r&&!n&&!i&&!o&&!s&&!l)return;let g=80*I;w.getWorldDirection(G.current),G.current.normalize(),A.current.crossVectors(w.up,G.current).normalize(),U.current.set(0,0,0),r&&U.current.add(G.current),n&&U.current.sub(G.current),i&&U.current.add(A.current),o&&U.current.sub(A.current),s&&(U.current.y=U.current.y+1),l&&(U.current.y=U.current.y-1),U.current.lengthSq()>0&&(U.current.normalize().multiplyScalar(g*t),w.position.add(U.current))},x[22]=w,x[23]=E,x[24]=I,x[25]=P):P=x[25],(0,o.useFrame)(P),null}function x(){let e,t,i=(0,r.c)(2);return i[0]===Symbol.for("react.memo_cache_sentinel")?(e=[],i[0]=e):e=i[0],(0,n.useEffect)(I,e),i[1]===Symbol.for("react.memo_cache_sentinel")?(t=(0,a.jsx)(P,{}),i[1]=t):t=i[1],t}function I(){return window.addEventListener("keydown",D,{capture:!0}),window.addEventListener("keyup",D,{capture:!0}),()=>{window.removeEventListener("keydown",D,{capture:!0}),window.removeEventListener("keyup",D,{capture:!0})}}function D(e){(e.metaKey||e.ctrlKey)&&"k"===e.key||e.metaKey&&e.stopImmediatePropagation()}e.s(["ARROW_LOOK_SPEED",0,1,"KEYBOARD_CONTROLS",0,[{name:"forward",keys:["KeyW"]},{name:"backward",keys:["KeyS"]},{name:"left",keys:["KeyA"]},{name:"right",keys:["KeyD"]},{name:"up",keys:["Space"]},{name:"down",keys:["ShiftLeft","ShiftRight"]},{name:"lookUp",keys:["ArrowUp"]},{name:"lookDown",keys:["ArrowDown"]},{name:"lookLeft",keys:["ArrowLeft"]},{name:"lookRight",keys:["ArrowRight"]},{name:"camera1",keys:["Digit1"]},{name:"camera2",keys:["Digit2"]},{name:"camera3",keys:["Digit3"]},{name:"camera4",keys:["Digit4"]},{name:"camera5",keys:["Digit5"]},{name:"camera6",keys:["Digit6"]},{name:"camera7",keys:["Digit7"]},{name:"camera8",keys:["Digit8"]},{name:"camera9",keys:["Digit9"]}],"MOUSE_SENSITIVITY",0,.003,"ObserverControls",()=>x],5729)},76775,(e,t,a)=>{function r(e,t,a,r){return Math.round(e/a)+" "+r+(t>=1.5*a?"s":"")}t.exports=function(e,t){t=t||{};var a,n,i,o,s=typeof e;if("string"===s&&e.length>0){var l=e;if(!((l=String(l)).length>100)){var d=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(l);if(d){var c=parseFloat(d[1]);switch((d[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*c;case"weeks":case"week":case"w":return 6048e5*c;case"days":case"day":case"d":return 864e5*c;case"hours":case"hour":case"hrs":case"hr":case"h":return 36e5*c;case"minutes":case"minute":case"mins":case"min":case"m":return 6e4*c;case"seconds":case"second":case"secs":case"sec":case"s":return 1e3*c;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:break}}}return}if("number"===s&&isFinite(e)){return t.long?(n=Math.abs(a=e))>=864e5?r(a,n,864e5,"day"):n>=36e5?r(a,n,36e5,"hour"):n>=6e4?r(a,n,6e4,"minute"):n>=1e3?r(a,n,1e3,"second"):a+" ms":(o=Math.abs(i=e))>=864e5?Math.round(i/864e5)+"d":o>=36e5?Math.round(i/36e5)+"h":o>=6e4?Math.round(i/6e4)+"m":o>=1e3?Math.round(i/1e3)+"s":i+"ms"}throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},7003,(e,t,a)=>{t.exports=function(t){function a(e){let t,n,i,o=null;function s(...e){if(!s.enabled)return;let r=Number(new Date);s.diff=r-(t||r),s.prev=t,s.curr=r,t=r,e[0]=a.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let n=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,(t,r)=>{if("%%"===t)return"%";n++;let i=a.formatters[r];if("function"==typeof i){let a=e[n];t=i.call(s,a),e.splice(n,1),n--}return t}),a.formatArgs.call(s,e),(s.log||a.log).apply(s,e)}return s.namespace=e,s.useColors=a.useColors(),s.color=a.selectColor(e),s.extend=r,s.destroy=a.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==o?o:(n!==a.namespaces&&(n=a.namespaces,i=a.enabled(e)),i),set:e=>{o=e}}),"function"==typeof a.init&&a.init(s),s}function r(e,t){let r=a(this.namespace+(void 0===t?":":t)+e);return r.log=this.log,r}function n(e,t){let a=0,r=0,n=-1,i=0;for(;a<e.length;)if(r<t.length&&(t[r]===e[a]||"*"===t[r]))"*"===t[r]?(n=r,i=a):a++,r++;else{if(-1===n)return!1;r=n+1,a=++i}for(;r<t.length&&"*"===t[r];)r++;return r===t.length}return a.debug=a,a.default=a,a.coerce=function(e){return e instanceof Error?e.stack||e.message:e},a.disable=function(){let e=[...a.names,...a.skips.map(e=>"-"+e)].join(",");return a.enable(""),e},a.enable=function(e){for(let t of(a.save(e),a.namespaces=e,a.names=[],a.skips=[],("string"==typeof e?e:"").trim().replace(/\s+/g,",").split(",").filter(Boolean)))"-"===t[0]?a.skips.push(t.slice(1)):a.names.push(t)},a.enabled=function(e){for(let t of a.skips)if(n(e,t))return!1;for(let t of a.names)if(n(e,t))return!0;return!1},a.humanize=e.r(76775),a.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(t).forEach(e=>{a[e]=t[e]}),a.names=[],a.skips=[],a.formatters={},a.selectColor=function(e){let t=0;for(let a=0;a<e.length;a++)t=(t<<5)-t+e.charCodeAt(a)|0;return a.colors[Math.abs(t)%a.colors.length]},a.enable(a.load()),a}},48450,(e,t,a)=>{let r;var n=e.i(47167);a.formatArgs=function(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+t.exports.humanize(this.diff),!this.useColors)return;let a="color: "+this.color;e.splice(1,0,a,"color: inherit");let r=0,n=0;e[0].replace(/%[a-zA-Z%]/g,e=>{"%%"!==e&&(r++,"%c"===e&&(n=r))}),e.splice(n,0,a)},a.save=function(e){try{e?a.storage.setItem("debug",e):a.storage.removeItem("debug")}catch(e){}},a.load=function(){let e;try{e=a.storage.getItem("debug")||a.storage.getItem("DEBUG")}catch(e){}return!e&&void 0!==n.default&&"env"in n.default&&(e=n.default.env.DEBUG),e},a.useColors=function(){let e;return"u">typeof window&&!!window.process&&("renderer"===window.process.type||!!window.process.__nwjs)||!("u">typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("u">typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"u">typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"u">typeof navigator&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||"u">typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},a.storage=function(){try{return localStorage}catch(e){}}(),r=!1,a.destroy=()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))},a.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],a.log=console.debug||console.log||(()=>{}),t.exports=e.r(7003)(a);let{formatters:i}=t.exports;i.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},50593,17711,58281,45853,25311,89119,10244,e=>{"use strict";var t={},a=function(e,a,r,n,i){var o=new Worker(t[a]||(t[a]=URL.createObjectURL(new Blob([e+';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'],{type:"text/javascript"}))));return o.onmessage=function(e){var t=e.data,a=t.$e$;if(a){var r=Error(a[0]);r.code=a[1],r.stack=a[2],i(r,null)}else i(null,t)},o.postMessage(r,n),o},r=Uint8Array,n=Uint16Array,i=Int32Array,o=new r([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,0,0,0]),s=new r([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,0,0]),l=new r([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=function(e,t){for(var a=new n(31),r=0;r<31;++r)a[r]=t+=1<<e[r-1];for(var o=new i(a[30]),r=1;r<30;++r)for(var s=a[r];s<a[r+1];++s)o[s]=s-a[r]<<5|r;return{b:a,r:o}},c=d(o,2),u=c.b,h=c.r;u[28]=258,h[258]=28;for(var g=d(s,0),p=g.b,m=g.r,f=new n(32768),F=0;F<32768;++F){var v=(43690&F)>>1|(21845&F)<<1;v=(61680&(v=(52428&v)>>2|(13107&v)<<2))>>4|(3855&v)<<4,f[F]=((65280&v)>>8|(255&v)<<8)>>1}for(var y=function(e,t,a){for(var r,i=e.length,o=0,s=new n(t);o<i;++o)e[o]&&++s[e[o]-1];var l=new n(t);for(o=1;o<t;++o)l[o]=l[o-1]+s[o-1]<<1;if(a){r=new n(1<<t);var d=15-t;for(o=0;o<i;++o)if(e[o])for(var c=o<<4|e[o],u=t-e[o],h=l[e[o]-1]++<<u,g=h|(1<<u)-1;h<=g;++h)r[f[h]>>d]=c}else for(o=0,r=new n(i);o<i;++o)e[o]&&(r[o]=f[l[e[o]-1]++]>>15-e[o]);return r},S=new r(288),F=0;F<144;++F)S[F]=8;for(var F=144;F<256;++F)S[F]=9;for(var F=256;F<280;++F)S[F]=7;for(var F=280;F<288;++F)S[F]=8;for(var k=new r(32),F=0;F<32;++F)k[F]=5;var b=y(S,9,0),P=y(S,9,1),x=y(k,5,0),I=y(k,5,1),D=function(e){for(var t=e[0],a=1;a<e.length;++a)e[a]>t&&(t=e[a]);return t},C=function(e,t,a){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(7&t)&a},E=function(e,t){var a=t/8|0;return(e[a]|e[a+1]<<8|e[a+2]<<16)>>(7&t)},w=function(e){return(e+7)/8|0},M=function(e,t,a){return(null==t||t<0)&&(t=0),(null==a||a>e.length)&&(a=e.length),new r(e.subarray(t,a))},B=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],T=function(e,t,a){var r=Error(t||B[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,T),!a)throw r;return r},R=function(e,t,a,n){var i=e.length,d=n?n.length:0;if(!i||t.f&&!t.l)return a||new r(0);var c=!a,h=c||2!=t.i,g=t.i;c&&(a=new r(3*i));var m=function(e){var t=a.length;if(e>t){var n=new r(Math.max(2*t,e));n.set(a),a=n}},f=t.f||0,F=t.p||0,v=t.b||0,S=t.l,k=t.d,b=t.m,x=t.n,B=8*i;do{if(!S){f=C(e,F,1);var R=C(e,F+1,3);if(F+=3,R)if(1==R)S=P,k=I,b=9,x=5;else if(2==R){var N=C(e,F,31)+257,G=C(e,F+10,15)+4,A=N+C(e,F+5,31)+1;F+=14;for(var U=new r(A),j=new r(19),O=0;O<G;++O)j[l[O]]=C(e,F+3*O,7);F+=3*G;for(var z=D(j),L=(1<<z)-1,V=y(j,z,1),O=0;O<A;){var _=V[C(e,F,L)];F+=15&_;var q=_>>4;if(q<16)U[O++]=q;else{var $=0,H=0;for(16==q?(H=3+C(e,F,3),F+=2,$=U[O-1]):17==q?(H=3+C(e,F,7),F+=3):18==q&&(H=11+C(e,F,127),F+=7);H--;)U[O++]=$}}var W=U.subarray(0,N),X=U.subarray(N);b=D(W),x=D(X),S=y(W,b,1),k=y(X,x,1)}else T(1);else{var q=w(F)+4,Z=e[q-4]|e[q-3]<<8,Y=q+Z;if(Y>i){g&&T(0);break}h&&m(v+Z),a.set(e.subarray(q,Y),v),t.b=v+=Z,t.p=F=8*Y,t.f=f;continue}if(F>B){g&&T(0);break}}h&&m(v+131072);for(var J=(1<<b)-1,K=(1<<x)-1,Q=F;;Q=F){var $=S[E(e,F)&J],ee=$>>4;if((F+=15&$)>B){g&&T(0);break}if($||T(2),ee<256)a[v++]=ee;else if(256==ee){Q=F,S=null;break}else{var et=ee-254;if(ee>264){var O=ee-257,ea=o[O];et=C(e,F,(1<<ea)-1)+u[O],F+=ea}var er=k[E(e,F)&K],en=er>>4;er||T(3),F+=15&er;var X=p[en];if(en>3){var ea=s[en];X+=E(e,F)&(1<<ea)-1,F+=ea}if(F>B){g&&T(0);break}h&&m(v+131072);var ei=v+et;if(v<X){var eo=d-X,es=Math.min(X,ei);for(eo+v<0&&T(3);v<es;++v)a[v]=n[eo+v]}for(;v<ei;++v)a[v]=a[v-X]}}t.l=S,t.p=Q,t.b=v,t.f=f,S&&(f=1,t.m=b,t.d=k,t.n=x)}while(!f)return v!=a.length&&c?M(a,0,v):a.subarray(0,v)},N=function(e,t,a){a<<=7&t;var r=t/8|0;e[r]|=a,e[r+1]|=a>>8},G=function(e,t,a){a<<=7&t;var r=t/8|0;e[r]|=a,e[r+1]|=a>>8,e[r+2]|=a>>16},A=function(e,t){for(var a=[],i=0;i<e.length;++i)e[i]&&a.push({s:i,f:e[i]});var o=a.length,s=a.slice();if(!o)return{t:_,l:0};if(1==o){var l=new r(a[0].s+1);return l[a[0].s]=1,{t:l,l:1}}a.sort(function(e,t){return e.f-t.f}),a.push({s:-1,f:25001});var d=a[0],c=a[1],u=0,h=1,g=2;for(a[0]={s:-1,f:d.f+c.f,l:d,r:c};h!=o-1;)d=a[a[u].f<a[g].f?u++:g++],c=a[u!=h&&a[u].f<a[g].f?u++:g++],a[h++]={s:-1,f:d.f+c.f,l:d,r:c};for(var p=s[0].s,i=1;i<o;++i)s[i].s>p&&(p=s[i].s);var m=new n(p+1),f=U(a[h-1],m,0);if(f>t){var i=0,F=0,v=f-t,y=1<<v;for(s.sort(function(e,t){return m[t.s]-m[e.s]||e.f-t.f});i<o;++i){var S=s[i].s;if(m[S]>t)F+=y-(1<<f-m[S]),m[S]=t;else break}for(F>>=v;F>0;){var k=s[i].s;m[k]<t?F-=1<<t-m[k]++-1:++i}for(;i>=0&&F;--i){var b=s[i].s;m[b]==t&&(--m[b],++F)}f=t}return{t:new r(m),l:f}},U=function(e,t,a){return -1==e.s?Math.max(U(e.l,t,a+1),U(e.r,t,a+1)):t[e.s]=a},j=function(e){for(var t=e.length;t&&!e[--t];);for(var a=new n(++t),r=0,i=e[0],o=1,s=function(e){a[r++]=e},l=1;l<=t;++l)if(e[l]==i&&l!=t)++o;else{if(!i&&o>2){for(;o>138;o-=138)s(32754);o>2&&(s(o>10?o-11<<5|28690:o-3<<5|12305),o=0)}else if(o>3){for(s(i),--o;o>6;o-=6)s(8304);o>2&&(s(o-3<<5|8208),o=0)}for(;o--;)s(i);o=1,i=e[l]}return{c:a.subarray(0,r),n:t}},O=function(e,t){for(var a=0,r=0;r<t.length;++r)a+=e[r]*t[r];return a},z=function(e,t,a){var r=a.length,n=w(t+2);e[n]=255&r,e[n+1]=r>>8,e[n+2]=255^e[n],e[n+3]=255^e[n+1];for(var i=0;i<r;++i)e[n+i+4]=a[i];return(n+4+r)*8},L=function(e,t,a,r,i,d,c,u,h,g,p){N(t,p++,a),++i[256];for(var m,f,F,v,P=A(i,15),I=P.t,D=P.l,C=A(d,15),E=C.t,w=C.l,M=j(I),B=M.c,T=M.n,R=j(E),U=R.c,L=R.n,V=new n(19),_=0;_<B.length;++_)++V[31&B[_]];for(var _=0;_<U.length;++_)++V[31&U[_]];for(var q=A(V,7),$=q.t,H=q.l,W=19;W>4&&!$[l[W-1]];--W);var X=g+5<<3,Z=O(i,S)+O(d,k)+c,Y=O(i,I)+O(d,E)+c+14+3*W+O(V,$)+2*V[16]+3*V[17]+7*V[18];if(h>=0&&X<=Z&&X<=Y)return z(t,p,e.subarray(h,h+g));if(N(t,p,1+(Y<Z)),p+=2,Y<Z){m=y(I,D,0),f=I,F=y(E,w,0),v=E;var J=y($,H,0);N(t,p,T-257),N(t,p+5,L-1),N(t,p+10,W-4),p+=14;for(var _=0;_<W;++_)N(t,p+3*_,$[l[_]]);p+=3*W;for(var K=[B,U],Q=0;Q<2;++Q)for(var ee=K[Q],_=0;_<ee.length;++_){var et=31&ee[_];N(t,p,J[et]),p+=$[et],et>15&&(N(t,p,ee[_]>>5&127),p+=ee[_]>>12)}}else m=b,f=S,F=x,v=k;for(var _=0;_<u;++_){var ea=r[_];if(ea>255){var et=ea>>18&31;G(t,p,m[et+257]),p+=f[et+257],et>7&&(N(t,p,ea>>23&31),p+=o[et]);var er=31&ea;G(t,p,F[er]),p+=v[er],er>3&&(G(t,p,ea>>5&8191),p+=s[er])}else G(t,p,m[ea]),p+=f[ea]}return G(t,p,m[256]),p+f[256]},V=new i([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),_=new r(0),q=function(e,t,a,l,d,c){var u=c.z||e.length,g=new r(l+u+5*(1+Math.ceil(u/7e3))+d),p=g.subarray(l,g.length-d),f=c.l,F=7&(c.r||0);if(t){F&&(p[0]=c.r>>3);for(var v=V[t-1],y=v>>13,S=8191&v,k=(1<<a)-1,b=c.p||new n(32768),P=c.h||new n(k+1),x=Math.ceil(a/3),I=2*x,D=function(t){return(e[t]^e[t+1]<<x^e[t+2]<<I)&k},C=new i(25e3),E=new n(288),B=new n(32),T=0,R=0,N=c.i||0,G=0,A=c.w||0,U=0;N+2<u;++N){var j=D(N),O=32767&N,_=P[j];if(b[O]=_,P[j]=O,A<=N){var q=u-N;if((T>7e3||G>24576)&&(q>423||!f)){F=L(e,p,0,C,E,B,R,G,U,N-U,F),G=T=R=0,U=N;for(var $=0;$<286;++$)E[$]=0;for(var $=0;$<30;++$)B[$]=0}var H=2,W=0,X=S,Z=O-_&32767;if(q>2&&j==D(N-Z))for(var Y=Math.min(y,q)-1,J=Math.min(32767,N),K=Math.min(258,q);Z<=J&&--X&&O!=_;){if(e[N+H]==e[N+H-Z]){for(var Q=0;Q<K&&e[N+Q]==e[N+Q-Z];++Q);if(Q>H){if(H=Q,W=Z,Q>Y)break;for(var ee=Math.min(Z,Q-2),et=0,$=0;$<ee;++$){var ea=N-Z+$&32767,er=b[ea],en=ea-er&32767;en>et&&(et=en,_=ea)}}}_=b[O=_],Z+=O-_&32767}if(W){C[G++]=0x10000000|h[H]<<18|m[W];var ei=31&h[H],eo=31&m[W];R+=o[ei]+s[eo],++E[257+ei],++B[eo],A=N+H,++T}else C[G++]=e[N],++E[e[N]]}}for(N=Math.max(N,A);N<u;++N)C[G++]=e[N],++E[e[N]];F=L(e,p,f,C,E,B,R,G,U,N-U,F),f||(c.r=7&F|p[F/8|0]<<3,F-=7,c.h=P,c.p=b,c.i=N,c.w=A)}else{for(var N=c.w||0;N<u+f;N+=65535){var es=N+65535;es>=u&&(p[F/8|0]=f,es=u),F=z(p,F+1,e.subarray(N,es))}c.i=u}return M(g,0,l+w(F)+d)},$=function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var a=t,r=9;--r;)a=(1&a&&-0x12477ce0)^a>>>1;e[t]=a}return e}(),H=function(){var e=-1;return{p:function(t){for(var a=e,r=0;r<t.length;++r)a=$[255&a^t[r]]^a>>>8;e=a},d:function(){return~e}}},W=function(){var e=1,t=0;return{p:function(a){for(var r=e,n=t,i=0|a.length,o=0;o!=i;){for(var s=Math.min(o+2655,i);o<s;++o)n+=r+=a[o];r=(65535&r)+15*(r>>16),n=(65535&n)+15*(n>>16)}e=r,t=n},d:function(){return e%=65521,t%=65521,(255&e)<<24|(65280&e)<<8|(255&t)<<8|t>>8}}},X=function(e,t,a,n,i){if(!i&&(i={l:1},t.dictionary)){var o=t.dictionary.subarray(-32768),s=new r(o.length+e.length);s.set(o),s.set(e,o.length),e=s,i.w=o.length}return q(e,null==t.level?6:t.level,null==t.mem?i.l?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(e.length)))):20:12+t.mem,a,n,i)},Z=function(e,t){var a={};for(var r in e)a[r]=e[r];for(var r in t)a[r]=t[r];return a},Y=function(e,t,a){for(var r=e(),n=e.toString(),i=n.slice(n.indexOf("[")+1,n.lastIndexOf("]")).replace(/\s+/g,"").split(","),o=0;o<r.length;++o){var s=r[o],l=i[o];if("function"==typeof s){t+=";"+l+"=";var d=s.toString();if(s.prototype)if(-1!=d.indexOf("[native code]")){var c=d.indexOf(" ",8)+1;t+=d.slice(c,d.indexOf("(",c))}else for(var u in t+=d,s.prototype)t+=";"+l+".prototype."+u+"="+s.prototype[u].toString();else t+=d}else a[l]=s}return t},J=[],K=function(e){var t=[];for(var a in e)e[a].buffer&&t.push((e[a]=new e[a].constructor(e[a])).buffer);return t},Q=function(e,t,r,n){if(!J[r]){for(var i="",o={},s=e.length-1,l=0;l<s;++l)i=Y(e[l],i,o);J[r]={c:Y(e[s],i,o),e:o}}var d=Z({},J[r].e);return a(J[r].c+";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage="+t.toString()+"}",r,d,K(d),n)},ee=function(){return[r,n,i,o,s,l,u,p,P,I,f,B,y,D,C,E,w,M,T,R,eI,en,ei]},et=function(){return[r,n,i,o,s,l,h,m,b,S,x,k,f,V,_,y,N,G,A,U,j,O,z,L,w,M,q,X,eb,en]},ea=function(){return[ep,em]},er=function(){return[ev]},en=function(e){return postMessage(e,[e.buffer])},ei=function(e){return e&&{out:e.size&&new r(e.size),dictionary:e.dictionary}},eo=function(e,t,a,r,n,i){var o=Q(a,r,n,function(e,t){o.terminate(),i(e,t)});return o.postMessage([e,t],t.consume?[e.buffer]:[]),function(){o.terminate()}},es=function(e){return e.ondata=function(e,t){return postMessage([e,t],[e.buffer])},function(t){t.data.length?(e.push(t.data[0],t.data[1]),postMessage([t.data[0].length])):e.flush()}},el=function(e,t,a,r,n,i,o){var s,l=Q(e,r,n,function(e,a){e?(l.terminate(),t.ondata.call(t,e)):Array.isArray(a)?1==a.length?(t.queuedSize-=a[0],t.ondrain&&t.ondrain(a[0])):(a[1]&&l.terminate(),t.ondata.call(t,e,a[0],a[1])):o(a)});l.postMessage(a),t.queuedSize=0,t.push=function(e,a){t.ondata||T(5),s&&t.ondata(T(4,0,1),null,!!a),t.queuedSize+=e.length,l.postMessage([e,s=a],[e.buffer])},t.terminate=function(){l.terminate()},i&&(t.flush=function(){l.postMessage([])})},ed=function(e,t){return e[t]|e[t+1]<<8},ec=function(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0},eu=function(e,t){return ec(e,t)+0x100000000*ec(e,t+4)},eh=function(e,t,a){for(;a;++t)e[t]=a,a>>>=8},eg=function(e,t){var a=t.filename;if(e[0]=31,e[1]=139,e[2]=8,e[8]=t.level<2?4:2*(9==t.level),e[9]=3,0!=t.mtime&&eh(e,4,Math.floor(new Date(t.mtime||Date.now())/1e3)),a){e[3]=8;for(var r=0;r<=a.length;++r)e[r+10]=a.charCodeAt(r)}},ep=function(e){(31!=e[0]||139!=e[1]||8!=e[2])&&T(6,"invalid gzip data");var t=e[3],a=10;4&t&&(a+=(e[10]|e[11]<<8)+2);for(var r=(t>>3&1)+(t>>4&1);r>0;r-=!e[a++]);return a+(2&t)},em=function(e){var t=e.length;return(e[t-4]|e[t-3]<<8|e[t-2]<<16|e[t-1]<<24)>>>0},ef=function(e){return 10+(e.filename?e.filename.length+1:0)},eF=function(e,t){var a=t.level;if(e[0]=120,e[1]=(0==a?0:a<6?1:9==a?3:2)<<6|(t.dictionary&&32),e[1]|=31-(e[0]<<8|e[1])%31,t.dictionary){var r=W();r.p(t.dictionary),eh(e,2,r.d())}},ev=function(e,t){return((15&e[0])!=8||e[0]>>4>7||(e[0]<<8|e[1])%31)&&T(6,"invalid zlib data"),(e[1]>>5&1)==+!t&&T(6,"invalid zlib data: "+(32&e[1]?"need":"unexpected")+" dictionary"),(e[1]>>3&4)+2};function ey(e,t){return"function"==typeof e&&(t=e,e={}),this.ondata=t,e}var eS=function(){function e(e,t){if("function"==typeof e&&(t=e,e={}),this.ondata=t,this.o=e||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new r(98304),this.o.dictionary){var a=this.o.dictionary.subarray(-32768);this.b.set(a,32768-a.length),this.s.i=32768-a.length}}return e.prototype.p=function(e,t){this.ondata(X(e,this.o,0,0,this.s),t)},e.prototype.push=function(e,t){this.ondata||T(5),this.s.l&&T(4);var a=e.length+this.s.z;if(a>this.b.length){if(a>2*this.b.length-32768){var n=new r(-32768&a);n.set(this.b.subarray(0,this.s.z)),this.b=n}var i=this.b.length-this.s.z;this.b.set(e.subarray(0,i),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(e.subarray(i),32768),this.s.z=e.length-i+32768,this.s.i=32766,this.s.w=32768}else this.b.set(e,this.s.z),this.s.z+=e.length;this.s.l=1&t,(this.s.z>this.s.w+8191||t)&&(this.p(this.b,t||!1),this.s.w=this.s.i,this.s.i-=2)},e.prototype.flush=function(){this.ondata||T(5),this.s.l&&T(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2},e}(),ek=function(e,t){el([et,function(){return[es,eS]}],this,ey.call(this,e,t),function(e){onmessage=es(new eS(e.data))},6,1)};function eb(e,t){return X(e,t||{},0,0)}var eP=function(){function e(e,t){"function"==typeof e&&(t=e,e={}),this.ondata=t;var a=e&&e.dictionary&&e.dictionary.subarray(-32768);this.s={i:0,b:a?a.length:0},this.o=new r(32768),this.p=new r(0),a&&this.o.set(a)}return e.prototype.e=function(e){if(this.ondata||T(5),this.d&&T(4),this.p.length){if(e.length){var t=new r(this.p.length+e.length);t.set(this.p),t.set(e,this.p.length),this.p=t}}else this.p=e},e.prototype.c=function(e){this.s.i=+(this.d=e||!1);var t=this.s.b,a=R(this.p,this.s,this.o);this.ondata(M(a,t,this.s.b),this.d),this.o=M(a,this.s.b-32768),this.s.b=this.o.length,this.p=M(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(e,t){this.e(e),this.c(t)},e}(),ex=function(e,t){el([ee,function(){return[es,eP]}],this,ey.call(this,e,t),function(e){onmessage=es(new eP(e.data))},7,0)};function eI(e,t){return R(e,{i:2},t&&t.out,t&&t.dictionary)}(function(){function e(e,t){this.c=H(),this.l=0,this.v=1,eS.call(this,e,t)}e.prototype.push=function(e,t){this.c.p(e),this.l+=e.length,eS.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){var a=X(e,this.o,this.v&&ef(this.o),t&&8,this.s);this.v&&(eg(a,this.o),this.v=0),t&&(eh(a,a.length-8,this.c.d()),eh(a,a.length-4,this.l)),this.ondata(a,t)},e.prototype.flush=function(){eS.prototype.flush.call(this)}})();var eD=function(){function e(e,t){this.v=1,this.r=0,eP.call(this,e,t)}return e.prototype.push=function(e,t){if(eP.prototype.e.call(this,e),this.r+=e.length,this.v){var a=this.p.subarray(this.v-1),n=a.length>3?ep(a):4;if(n>a.length){if(!t)return}else this.v>1&&this.onmember&&this.onmember(this.r-a.length);this.p=a.subarray(n),this.v=0}eP.prototype.c.call(this,t),!this.s.f||this.s.l||t||(this.v=w(this.s.p)+9,this.s={i:0},this.o=new r(0),this.push(new r(0),t))},e}(),eC=function(e,t){var a=this;el([ee,ea,function(){return[es,eP,eD]}],this,ey.call(this,e,t),function(e){var t=new eD(e.data);t.onmember=function(e){return postMessage(e)},onmessage=es(t)},9,0,function(e){return a.onmember&&a.onmember(e)})},eE=(function(){function e(e,t){this.c=W(),this.v=1,eS.call(this,e,t)}e.prototype.push=function(e,t){this.c.p(e),eS.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){var a=X(e,this.o,this.v&&(this.o.dictionary?6:2),t&&4,this.s);this.v&&(eF(a,this.o),this.v=0),t&&eh(a,a.length-4,this.c.d()),this.ondata(a,t)},e.prototype.flush=function(){eS.prototype.flush.call(this)}}(),function(){function e(e,t){eP.call(this,e,t),this.v=e&&e.dictionary?2:1}return e.prototype.push=function(e,t){if(eP.prototype.e.call(this,e),this.v){if(this.p.length<6&&!t)return;this.p=this.p.subarray(ev(this.p,this.v-1)),this.v=0}t&&(this.p.length<4&&T(6,"invalid zlib data"),this.p=this.p.subarray(0,-4)),eP.prototype.c.call(this,t)},e}()),ew=function(e,t){el([ee,er,function(){return[es,eP,eE]}],this,ey.call(this,e,t),function(e){onmessage=es(new eE(e.data))},11,0)},eM=function(){function e(e,t){this.o=ey.call(this,e,t)||{},this.G=eD,this.I=eP,this.Z=eE}return e.prototype.i=function(){var e=this;this.s.ondata=function(t,a){e.ondata(t,a)}},e.prototype.push=function(e,t){if(this.ondata||T(5),this.s)this.s.push(e,t);else{if(this.p&&this.p.length){var a=new r(this.p.length+e.length);a.set(this.p),a.set(e,this.p.length)}else this.p=e;this.p.length>2&&(this.s=31==this.p[0]&&139==this.p[1]&&8==this.p[2]?new this.G(this.o):(15&this.p[0])!=8||this.p[0]>>4>7||(this.p[0]<<8|this.p[1])%31?new this.I(this.o):new this.Z(this.o),this.i(),this.s.push(this.p,t),this.p=null)}},e}();function eB(e,t){eM.call(this,e,t),this.queuedSize=0,this.G=eC,this.I=ex,this.Z=ew}eB.prototype.i=function(){var e=this;this.s.ondata=function(t,a,r){e.ondata(t,a,r)},this.s.ondrain=function(t){e.queuedSize-=t,e.ondrain&&e.ondrain(t)}},eB.prototype.push=function(e,t){this.queuedSize+=e.length,eM.prototype.push.call(this,e,t)};var eT="u">typeof TextEncoder&&new TextEncoder,eR="u">typeof TextDecoder&&new TextDecoder,eN=0;try{eR.decode(_,{stream:!0}),eN=1}catch(e){}var eG=function(e){for(var t="",a=0;;){var r=e[a++],n=(r>127)+(r>223)+(r>239);if(a+n>e.length)return{s:t,r:M(e,a-1)};n?3==n?t+=String.fromCharCode(55296|(r=((15&r)<<18|(63&e[a++])<<12|(63&e[a++])<<6|63&e[a++])-65536)>>10,56320|1023&r):1&n?t+=String.fromCharCode((31&r)<<6|63&e[a++]):t+=String.fromCharCode((15&r)<<12|(63&e[a++])<<6|63&e[a++]):t+=String.fromCharCode(r)}};function eA(e,t){if(t){for(var a=new r(e.length),n=0;n<e.length;++n)a[n]=e.charCodeAt(n);return a}if(eT)return eT.encode(e);for(var i=e.length,o=new r(e.length+(e.length>>1)),s=0,l=function(e){o[s++]=e},n=0;n<i;++n){if(s+5>o.length){var d=new r(s+8+(i-n<<1));d.set(o),o=d}var c=e.charCodeAt(n);c<128||t?l(c):(c<2048?l(192|c>>6):(c>55295&&c<57344?(l(240|(c=65536+(1047552&c)|1023&e.charCodeAt(++n))>>18),l(128|c>>12&63)):l(224|c>>12),l(128|c>>6&63)),l(128|63&c))}return M(o,0,s)}(function(e){this.ondata=e,eN?this.t=new TextDecoder:this.p=_}).prototype.push=function(e,t){if(this.ondata||T(5),t=!!t,this.t){this.ondata(this.t.decode(e,{stream:!0}),t),t&&(this.t.decode().length&&T(8),this.t=null);return}this.p||T(4);var a=new r(this.p.length+e.length);a.set(this.p),a.set(e,this.p.length);var n=eG(a),i=n.s,o=n.r;t?(o.length&&T(8),this.p=null):this.p=o,this.ondata(i,t)},(function(e){this.ondata=e}).prototype.push=function(e,t){this.ondata||T(5),this.d&&T(4),this.ondata(eA(e),this.d=t||!1)};var eU=function(e){return 1==e?3:e<6?2:+(9==e)},ej=function(e,t){for(;1!=ed(e,t);t+=4+ed(e,t+2));return[eu(e,t+12),eu(e,t+4),eu(e,t+20)]},eO=function(e){var t=0;if(e)for(var a in e){var r=e[a].length;r>65535&&T(9),t+=r+4}return t},ez=function(e,t,a,r,n,i,o,s){var l=r.length,d=a.extra,c=s&&s.length,u=eO(d);eh(e,t,null!=o?0x2014b50:0x4034b50),t+=4,null!=o&&(e[t++]=20,e[t++]=a.os),e[t]=20,t+=2,e[t++]=a.flag<<1|(i<0&&8),e[t++]=n&&8,e[t++]=255&a.compression,e[t++]=a.compression>>8;var h=new Date(null==a.mtime?Date.now():a.mtime),g=h.getFullYear()-1980;if((g<0||g>119)&&T(10),eh(e,t,g<<25|h.getMonth()+1<<21|h.getDate()<<16|h.getHours()<<11|h.getMinutes()<<5|h.getSeconds()>>1),t+=4,-1!=i&&(eh(e,t,a.crc),eh(e,t+4,i<0?-i-2:i),eh(e,t+8,a.size)),eh(e,t+12,l),eh(e,t+14,u),t+=16,null!=o&&(eh(e,t,c),eh(e,t+6,a.attrs),eh(e,t+10,o),t+=14),e.set(r,t),t+=l,u)for(var p in d){var m=d[p],f=m.length;eh(e,t,+p),eh(e,t+2,f),e.set(m,t+4),t+=4+f}return c&&(e.set(s,t),t+=c),t},eL=function(e,t,a,r,n){eh(e,t,0x6054b50),eh(e,t+8,a),eh(e,t+10,a),eh(e,t+12,r),eh(e,t+16,n)},eV=function(){function e(e){this.filename=e,this.c=H(),this.size=0,this.compression=0}return e.prototype.process=function(e,t){this.ondata(null,e,t)},e.prototype.push=function(e,t){this.ondata||T(5),this.c.p(e),this.size+=e.length,t&&(this.crc=this.c.d()),this.process(e,t||!1)},e}();function e_(e,t){var a=this;t||(t={}),eV.call(this,e),this.d=new eS(t,function(e,t){a.ondata(null,e,t)}),this.compression=8,this.flag=eU(t.level)}function eq(e,t){var a=this;t||(t={}),eV.call(this,e),this.d=new ek(t,function(e,t,r){a.ondata(e,t,r)}),this.compression=8,this.flag=eU(t.level),this.terminate=this.d.terminate}function e$(e){this.ondata=e,this.u=[],this.d=1}e_.prototype.process=function(e,t){try{this.d.push(e,t)}catch(e){this.ondata(e,null,t)}},e_.prototype.push=function(e,t){eV.prototype.push.call(this,e,t)},eq.prototype.process=function(e,t){this.d.push(e,t)},eq.prototype.push=function(e,t){eV.prototype.push.call(this,e,t)},e$.prototype.add=function(e){var t=this;if(this.ondata||T(5),2&this.d)this.ondata(T(4+(1&this.d)*8,0,1),null,!1);else{var a=eA(e.filename),n=a.length,i=e.comment,o=i&&eA(i),s=n!=e.filename.length||o&&i.length!=o.length,l=n+eO(e.extra)+30;n>65535&&this.ondata(T(11,0,1),null,!1);var d=new r(l);ez(d,0,e,a,s,-1);var c=[d],u=function(){for(var e=0,a=c;e<a.length;e++){var r=a[e];t.ondata(null,r,!1)}c=[]},h=this.d;this.d=0;var g=this.u.length,p=Z(e,{f:a,u:s,o:o,t:function(){e.terminate&&e.terminate()},r:function(){if(u(),h){var e=t.u[g+1];e?e.r():t.d=1}h=1}}),m=0;e.ondata=function(a,n,i){if(a)t.ondata(a,n,i),t.terminate();else if(m+=n.length,c.push(n),i){var o=new r(16);eh(o,0,0x8074b50),eh(o,4,e.crc),eh(o,8,m),eh(o,12,e.size),c.push(o),p.c=m,p.b=l+m+16,p.crc=e.crc,p.size=e.size,h&&p.r(),h=1}else h&&u()},this.u.push(p)}},e$.prototype.end=function(){var e=this;2&this.d?this.ondata(T(4+(1&this.d)*8,0,1),null,!0):(this.d?this.e():this.u.push({r:function(){1&e.d&&(e.u.splice(-1,1),e.e())},t:function(){}}),this.d=3)},e$.prototype.e=function(){for(var e=0,t=0,a=0,n=0,i=this.u;n<i.length;n++){var o=i[n];a+=46+o.f.length+eO(o.extra)+(o.o?o.o.length:0)}for(var s=new r(a+22),l=0,d=this.u;l<d.length;l++){var o=d[l];ez(s,e,o,o.f,o.u,-o.c-2,t,o.o),e+=46+o.f.length+eO(o.extra)+(o.o?o.o.length:0),t+=o.b}eL(s,e,this.u.length,a,t),this.ondata(null,s,!0),this.d=2},e$.prototype.terminate=function(){for(var e=0,t=this.u;e<t.length;e++)t[e].t();this.d=2};var eH=function(){function e(){}return e.prototype.push=function(e,t){this.ondata(null,e,t)},e.compression=0,e}();function eW(){var e=this;this.i=new eP(function(t,a){e.ondata(null,t,a)})}function eX(e,t){var a=this;t<32e4?this.i=new eP(function(e,t){a.ondata(null,e,t)}):(this.i=new ex(function(e,t,r){a.ondata(e,t,r)}),this.terminate=this.i.terminate)}function eZ(e){this.onfile=e,this.k=[],this.o={0:eH},this.p=_}eW.prototype.push=function(e,t){try{this.i.push(e,t)}catch(e){this.ondata(e,null,t)}},eW.compression=8,eX.prototype.push=function(e,t){this.i.terminate&&(e=M(e,0)),this.i.push(e,t)},eX.compression=8,eZ.prototype.push=function(e,t){var a=this;if(this.onfile||T(5),this.p||T(4),this.c>0){var n=Math.min(this.c,e.length),i=e.subarray(0,n);if(this.c-=n,this.d?this.d.push(i,!this.c):this.k[0].push(i),(e=e.subarray(n)).length)return this.push(e,t)}else{var o=0,s=0,l=void 0,d=void 0;this.p.length?e.length?((d=new r(this.p.length+e.length)).set(this.p),d.set(e,this.p.length)):d=this.p:d=e;for(var c=d.length,u=this.c,h=u&&this.d,g=this;s<c-4&&"break"!==function(){var e=ec(d,s);if(0x4034b50==e){o=1,l=s,g.d=null,g.c=0;var t=ed(d,s+6),r=ed(d,s+8),n=8&t,i=ed(d,s+26),h=ed(d,s+28);if(c>s+30+i+h){var p,m,f=[];g.k.unshift(f),o=2;var F=ec(d,s+18),v=ec(d,s+22),y=function(e,t){if(t){for(var a="",r=0;r<e.length;r+=16384)a+=String.fromCharCode.apply(null,e.subarray(r,r+16384));return a}if(eR)return eR.decode(e);var n=eG(e),i=n.s,a=n.r;return a.length&&T(8),i}(d.subarray(s+30,s+=30+i),!(2048&t));0xffffffff==F?(F=(p=n?[-2]:ej(d,s))[0],v=p[1]):n&&(F=-1),s+=h,g.c=F;var S={name:y,compression:r,start:function(){if(S.ondata||T(5),F){var e=a.o[r];e||S.ondata(T(14,"unknown compression type "+r,1),null,!1),(m=F<0?new e(y):new e(y,F,v)).ondata=function(e,t,a){S.ondata(e,t,a)};for(var t=0;t<f.length;t++){var n=f[t];m.push(n,!1)}a.k[0]==f&&a.c?a.d=m:m.push(_,!0)}else S.ondata(null,_,!0)},terminate:function(){m&&m.terminate&&m.terminate()}};F>=0&&(S.size=F,S.originalSize=v),g.onfile(S)}return"break"}if(u){if(0x8074b50==e)return l=s+=12+(-2==u&&8),o=3,g.c=0,"break";else if(0x2014b50==e)return l=s-=4,o=3,g.c=0,"break"}}();++s);if(this.p=_,u<0){var p=o?d.subarray(0,l-12-(-2==u&&8)-(0x8074b50==ec(d,l-16)&&4)):d.subarray(0,s);h?h.push(p,!!o):this.k[+(2==o)].push(p)}if(2&o)return this.push(d.subarray(s),t);this.p=d.subarray(s)}t&&(this.c&&T(13),this.p=null)},eZ.prototype.register=function(e){this.o[e.compression]=e},"function"==typeof queueMicrotask&&queueMicrotask;var eY=e.i(48450);let eJ=[0,0,0,0,0,0,0,0,0,329,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2809,68,0,27,0,58,3,62,4,7,0,0,15,65,554,3,394,404,189,117,30,51,27,15,34,32,80,1,142,3,142,39,0,144,125,44,122,275,70,135,61,127,8,12,113,246,122,36,185,1,149,309,335,12,11,14,54,151,0,0,2,0,0,211,0,2090,344,736,993,2872,701,605,646,1552,328,305,1240,735,1533,1713,562,3,1775,1149,1469,979,407,553,59,279,31,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function eK(e){return e.node?e.node.pop:e.leaf.pop}let eQ=new class{nodes=[];leaves=[];tablesBuilt=!1;buildTables(){if(this.tablesBuilt)return;this.tablesBuilt=!0,this.leaves=[];for(let t=0;t<256;t++){var e;this.leaves.push({pop:eJ[t]+ +((e=t)>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122)+1,symbol:t,numBits:0,code:0})}this.nodes=[{pop:0,index0:0,index1:0}];let t=256,a=[];for(let e=0;e<256;e++)a.push({node:null,leaf:this.leaves[e]});for(;1!==t;){let e=0xfffffffe,r=0xffffffff,n=-1,i=-1;for(let o=0;o<t;o++){let t=eK(a[o]);t<e?(r=e,i=n,e=t,n=o):t<r&&(r=t,i=o)}let o={pop:eK(a[n])+eK(a[i]),index0:this.determineIndex(a[n]),index1:this.determineIndex(a[i])};this.nodes.push(o);let s=n<i?n:i,l=n>i?n:i;a[s]={node:o,leaf:null},l!==t-1&&(a[l]=a[t-1]),t--}this.nodes[0]=a[0].node,this.generateCodes(0,0,0)}determineIndex(e){return null!==e.leaf?-(this.leaves.indexOf(e.leaf)+1):this.nodes.indexOf(e.node)}generateCodes(e,t,a){if(t<0){let r=this.leaves[-(t+1)];r.code=e,r.numBits=a}else{let r=this.nodes[t];this.generateCodes(e,r.index0,a+1),this.generateCodes(e|1<<a,r.index1,a+1)}}readHuffBuffer(e){if(this.tablesBuilt||this.buildTables(),e.readFlag()){let t=e.readInt(8),a=[];for(let r=0;r<t;r++){let t=0;for(;;)if(t>=0)t=e.readFlag()?this.nodes[t].index1:this.nodes[t].index0;else{a.push(this.leaves[-(t+1)].symbol);break}}return String.fromCharCode(...a)}{let t=e.readInt(8);return String.fromCharCode(...e.readBytes(t))}}};class e0{data;bitNum;maxReadBitNum;error;stringBuffer=null;constructor(e,t=0){this.data=e,this.bitNum=t,this.maxReadBitNum=e.length<<3,this.error=!1}getCurPos(){return this.bitNum}setCurPos(e){this.bitNum=e}getBytePosition(){return this.bitNum+7>>3}isError(){return this.error}isFull(){return this.bitNum>this.maxReadBitNum}getRemainingBits(){return this.maxReadBitNum-this.bitNum}getMaxPos(){return this.maxReadBitNum}readFlag(){if(this.bitNum>=this.maxReadBitNum)return this.error=!0,!1;let e=1<<(7&this.bitNum),t=(this.data[this.bitNum>>3]&e)!=0;return this.bitNum++,t}readInt(e){if(0===e)return 0;if(this.bitNum+e>this.maxReadBitNum)return this.error=!0,0;let t=this.bitNum>>3,a=7&this.bitNum;if(this.bitNum+=e,e+a<=32){let r=0,n=e+a+7>>3;for(let e=0;e<n&&t+e<this.data.length;e++)r|=this.data[t+e]<<8*e;return(r>>>=a,32===e)?r>>>0:r&(1<<e)-1}let r=0,n=e+a+7>>3;for(let e=0;e<n&&t+e<this.data.length;e++)r+=this.data[t+e]*2**(8*e);return(r=Math.floor(r/2**a),32===e)?r>>>0:r&(1<<e)-1}readSignedInt(e){return this.readFlag()?-this.readInt(e-1):this.readInt(e-1)}readFloat(e){return this.readInt(e)/((1<<e)-1)}readSignedFloat(e){return 2*this.readInt(e)/((1<<e)-1)-1}readRangedU32(e,t){let a=Math.ceil(Math.log2(t-e+1))||1;return this.readInt(a)+e}readBitsBuffer(e){if(0===e)return new Uint8Array(0);let t=e+7>>3,a=new Uint8Array(t),r=this.bitNum>>3,n=7&this.bitNum,i=8-n;if(0===n)a.set(this.data.subarray(r,r+t));else{let e=this.data[r];for(let o=0;o<t;o++){let t=r+o+1<this.data.length?this.data[r+o+1]:0;a[o]=(e>>n|t<<i)&255,e=t}}let o=7&e;return 0!==o&&(a[t-1]&=(1<<o)-1),this.bitNum+=e,a}readBytes(e){return Array.from(this.readBitsBuffer(8*e))}readU8(){return this.readInt(8)}readU16(){return this.readInt(16)}readU32(){return this.readInt(32)}readS32(){return 0|this.readU32()}static f32Buf=new ArrayBuffer(4);static f32View=new DataView(e0.f32Buf);static f32U8=new Uint8Array(e0.f32Buf);readF32(){if(this.bitNum+32>this.maxReadBitNum)return this.error=!0,0;let e=this.bitNum>>3,t=7&this.bitNum,a=e0.f32U8;if(0===t)a[0]=this.data[e],a[1]=this.data[e+1],a[2]=this.data[e+2],a[3]=this.data[e+3];else{let r=8-t;for(let n=0;n<4;n++){let i=this.data[e+n],o=e+n+1<this.data.length?this.data[e+n+1]:0;a[n]=(i>>t|o<<r)&255}}return this.bitNum+=32,e0.f32View.getFloat32(0,!0)}readBool(){return 0!==this.readU8()}readNormalVector(e){let t=this.readSignedFloat(e+1)*Math.PI,a=this.readSignedFloat(e)*(Math.PI/2);return{x:Math.sin(t)*Math.cos(a),y:Math.cos(t)*Math.cos(a),z:Math.sin(a)}}readAffineTransform(){let e={x:this.readF32(),y:this.readF32(),z:this.readF32()},t=this.readF32(),a=this.readF32(),r=this.readF32(),n=Math.sqrt(Math.max(0,1-(t*t+a*a+r*r)));return this.readFlag()&&(n=-n),{position:e,rotation:{x:t,y:a,z:r,w:n}}}readString(){if(null!==this.stringBuffer&&this.readFlag()){let e=this.readInt(8),t=eQ.readHuffBuffer(this),a=this.stringBuffer.substring(0,e)+t;return this.stringBuffer=a,a}let e=eQ.readHuffBuffer(this);return null!==this.stringBuffer&&(this.stringBuffer=e),e}setStringBuffer(e){this.stringBuffer=e?"":null}skipBits(e){this.bitNum+=e}readPoint3F(){return{x:this.readF32(),y:this.readF32(),z:this.readF32()}}readCompressedPoint(e,t=.01){let a=this.readInt(2);if(3===a)return{x:this.readF32(),y:this.readF32(),z:this.readF32()};let r=[16,18,20][a],n=this.readSignedInt(r),i=this.readSignedInt(r),o=this.readSignedInt(r);return{x:e.x+n*t,y:e.y+i*t,z:e.z+o*t}}readMatrixF(){let e=Array(16);for(let t=0;t<16;t++)e[t]=this.readF32();return{elements:e,position:{x:e[3],y:e[7],z:e[11]}}}unpackNetString(){switch(this.readInt(2)){case 0:default:return"";case 1:return this.readString();case 2:{let e=this.readInt(10);return`\x01${e}`}case 3:{let e,t=this.readFlag();return e=this.readFlag()?this.readInt(7):this.readFlag()?this.readInt(15):this.readInt(31),t&&(e=-e),String(e)}}}savePos(){return this.bitNum}restorePos(e){this.bitNum=e,this.error=!1}getBuffer(){return this.data}}let e2=["AudioDescription","AudioEnvironment","AudioProfile","AudioSampleEnvironment","BombProjectileData","CameraData","CannedChatItem","CommanderIconData","DebrisData","DecalData","ELFProjectileData","EffectProfile","EnergyProjectileData","ExplosionData","FireballAtmosphereData","FlareProjectileData","FlyingVehicleData","ForceFieldBareData","GameBaseData","GrenadeProjectileData","HoverVehicleData","ItemData","JetEffectData","LightningData","LinearFlareProjectileData","LinearProjectileData","MissionMarkerData","ParticleData","ParticleEmissionDummyData","ParticleEmitterData","PlayerData","PrecipitationData","ProjectileData","RepairProjectileData","RunningLightData","SeekerProjectileData","SensorData","ShapeBaseData","ShapeBaseImageData","ShockLanceProjectileData","ShockwaveData","SimDataBlock","SniperProjectileData","SplashData","StaticShapeData","StationFXPersonalData","StationFXVehicleData","TSShapeConstructor","TargetProjectileData","TracerProjectileData","TriggerData","TurretData","TurretImageData","WheeledVehicleData"],e3=["AIObjective","AudioEmitter","BeaconObject","BombProjectile","Camera","Debris","ELFProjectile","EnergyProjectile","FireballAtmosphere","FlareProjectile","FlyingVehicle","ForceFieldBare","GameBase","GrenadeProjectile","HoverVehicle","InteriorInstance","Item","Lightning","LinearFlareProjectile","LinearProjectile","Marker","MissionArea","MissionMarker","ParticleEmissionDummy","PhysicalZone","Player","Precipitation","Projectile","RepairProjectile","ScopeAlwaysShape","SeekerProjectile","ShapeBase","ShockLanceProjectile","Shockwave","SimpleNetObject","Sky","SniperProjectile","SpawnSphere","Splash","StaticShape","StationFXPersonal","StationFXVehicle","Sun","TSStatic","TargetProjectile","TerrainBlock","TracerProjectile","Trigger","Turret","VehicleBlocker","WaterBlock","WayPoint","WheeledVehicle"],e1=["CRCChallengeEvent","CRCChallengeResponseEvent","FogChallengeEvent","GhostAlwaysObjectEvent","GhostingMessageEvent","GravityEvent","LightningStrikeEvent","NetStringEvent","PathManagerEvent","RemoteCommandEvent","RemoveClientTargetTypeEvent","ResetClientTargetsEvent","SensorGroupColorEvent","SetMissionCRCEvent","SetObjectActiveImageEvent","SetSensorGroupEvent","SetServerTargetEvent","Sim2DAudioEvent","Sim3DAudioEvent","SimDataBlockEvent","SimTargetAudioEvent","SimVoiceStreamEvent","SimpleMessageEvent","TargetFreeEvent","TargetInfoEvent","TargetToEvent"];e.s(["BlockTypeInfo",0,3,"BlockTypeMove",0,2,"BlockTypePacket",0,0,"BlockTypeSendPacket",0,1,"DataBlockClassFirst",0,128,"DataBlockClassNames",0,e2,"DataPacket",0,0,"GhostIdBitSize",0,10,"MaxGhostCount",0,1024,"MaxTriggerKeys",0,6,"NetEventClassBitSize",0,6,"NetEventClassFirst",0,255,"NetEventClassNames",0,e1,"NetObjectClassBitSize",0,7,"NetObjectClassFirst",0,0,"NetObjectClassNames",0,e3,"SimDBEventClassIdBits",0,7,"SimDBEventIndexBits",0,11,"SimDBEventObjectIdBits",0,11,"SimDBEventTotalBits",0,12],17711);let e5=(0,eY.default)("t2-demo-parser:ghosts");class e6{registry;ghostTracker;compressionPoint={x:0,y:0,z:0};controlParserByGhostIndex=new Map;dataBlockDataMap;lastSeqRecvdAtSend=Array(32).fill(0);lastSeqRecvd=0;highestAckedSeq=0;lastSendSeq=0;recvAckMask=0;connectSequence=0;lastRecvAckAck=0;_connectionEstablished=!1;nextRecvEventSeq=0;pendingGuaranteedEvents=[];controlObjectParsed=0;controlObjectFailed=0;eventsParsed=0;eventsFailed=0;ghostCreatesParsed=0;ghostUpdatesParsed=0;ghostDeletes=0;ghostsFailed=0;ghostsTrackerDiverged=0;packetsParsed=0;protocolRejected=0;protocolNoDispatch=0;constructor(e,t,a){this.registry=e,this.ghostTracker=t,this.dataBlockDataMap=a?.dataBlockDataMap,a?.connectionProtocolState&&this.setConnectionProtocolState(a.connectionProtocolState),"number"==typeof a?.nextRecvEventSeq&&(this.nextRecvEventSeq=a.nextRecvEventSeq>>>0)}getCompressionPoint(){return this.compressionPoint}getDataBlockDataMap(){return this.dataBlockDataMap}getConnectionContext(){let e=this.dataBlockDataMap;return{compressionPoint:this.compressionPoint,ghostTracker:this.ghostTracker,getDataBlockParser:e=>this.registry.getDataBlockParser(e),getDataBlockData:e?t=>e.get(t):void 0,getGhostParser:e=>this.registry.getGhostParser(e)}}_setNextRecvEventSeq(e){this.nextRecvEventSeq=e>>>0}setConnectionProtocolState(e){for(this.lastSeqRecvdAtSend=e.lastSeqRecvdAtSend.slice(0,32);this.lastSeqRecvdAtSend.length<32;)this.lastSeqRecvdAtSend.push(0);this.lastSeqRecvd=e.lastSeqRecvd>>>0,this.highestAckedSeq=e.highestAckedSeq>>>0,this.lastSendSeq=e.lastSendSeq>>>0,this.recvAckMask=e.ackMask>>>0,this.connectSequence=e.connectSequence>>>0,this.lastRecvAckAck=e.lastRecvAckAck>>>0,this._connectionEstablished=e.connectionEstablished}onSendPacketTrigger(){this.lastSendSeq=this.lastSendSeq+1>>>0,this.lastSeqRecvdAtSend[31&this.lastSendSeq]=this.lastSeqRecvd>>>0}applyProtocolHeader(e){if(e.connectSeqBit!==(1&this.connectSequence)||e.ackByteCount>4||e.packetType>2)return{accepted:!1,dispatchData:!1};let t=(e.seqNumber|0xfffffe00&this.lastSeqRecvd)>>>0;if(t<this.lastSeqRecvd&&(t=t+512>>>0),this.lastSeqRecvd+31<t)return{accepted:!1,dispatchData:!1};let a=(e.highestAck|0xfffffe00&this.highestAckedSeq)>>>0;if(a<this.highestAckedSeq&&(a=a+512>>>0),this.lastSendSeq<a)return{accepted:!1,dispatchData:!1};let r=t-this.lastSeqRecvd&31;this.recvAckMask=this.recvAckMask<<r>>>0,0===e.packetType&&(this.recvAckMask=(1|this.recvAckMask)>>>0);for(let t=this.highestAckedSeq+1;t<=a;t++)(e.ackMask&1<<(a-t&31))!=0&&(this.lastRecvAckAck=this.lastSeqRecvdAtSend[31&t]>>>0);t-this.lastRecvAckAck>32&&(this.lastRecvAckAck=t-32),this.highestAckedSeq=a;let n=this.lastSeqRecvd!==t&&0===e.packetType;return this.lastSeqRecvd=t,{accepted:!0,dispatchData:n}}parsePacket(e){let t=new e0(e),a=this.readDnetHeader(t),r=this.applyProtocolHeader(a);if(this.packetsParsed++,!r.accepted)return this.protocolRejected++,{dnetHeader:a,rateInfo:{},gameState:this.emptyGameState(),events:[],ghosts:[]};if(!r.dispatchData)return this.protocolNoDispatch++,{dnetHeader:a,rateInfo:{},gameState:this.emptyGameState(),events:[],ghosts:[]};let n=this.readRateInfo(t);t.setStringBuffer(!0);let i=this.readGameState(t),o=void 0===i.controlObjectDataStart||void 0!==i.controlObjectData,s=o?this.readEvents(t):[],l=s[s.length-1],d=!l||l.dataBitsEnd!==l.dataBitsStart,c=o&&d?t.getCurPos():void 0,u=o&&d?this.readGhosts(t,a.seqNumber):[];return t.setStringBuffer(!1),{dnetHeader:a,rateInfo:n,gameState:i,events:s,ghosts:u,ghostSectionStart:c}}readDnetHeader(e){let t=e.readFlag(),a=e.readInt(1),r=e.readInt(9),n=e.readInt(9),i=e.readInt(2),o=e.readInt(3),s=o>0?e.readInt(8*o):0;return{gameFlag:t,connectSeqBit:a,seqNumber:r,highestAck:n,packetType:i,ackByteCount:o,ackMask:s}}readRateInfo(e){let t={};return e.readFlag()&&(t.updateDelay=e.readInt(10),t.packetSize=e.readInt(10)),e.readFlag()&&(t.maxUpdateDelay=e.readInt(10),t.maxPacketSize=e.readInt(10)),t}readGameState(e){let t,a,r,n,i,o,s,l,d,c,u,h,g,p,m,f=e.readInt(32);e.readFlag()&&(e.readFlag()&&(t=e.readFloat(7)),e.readFlag()&&(a=1.5*e.readFloat(7))),e.readFlag()&&(r=e.readFlag(),n=e.readFlag()),e.readFlag()&&((i=e.readFlag())&&(o={x:e.readF32(),y:e.readF32(),z:e.readF32()}),1===(s=e.readRangedU32(0,2))?e.readFlag()&&(l=e.readRangedU32(0,1023)):2===s&&(d={x:e.readF32(),y:e.readF32(),z:e.readF32()}));let F=e.readFlag(),v=e.readFlag();if(e.readFlag())if(e.readFlag()){let m=e.readInt(10);c=m,u=e.getCurPos();let y=e.savePos(),S=this.ghostTracker.getGhost(m),k=S?this.registry.getGhostParser(S.classId):void 0,b=this.controlParserByGhostIndex.get(m),P=this.registry.getGhostParser(25),x=this.registry.getGhostParser(4),I=[],D=new Set,C=e=>{!e?.readPacketData||D.has(e.name)||(D.add(e.name),I.push(e))};C(k),C(b),C(P),C(x);let E=!1;for(let t of I){e.restorePos(y);try{let a=this.getConnectionContext(),r=t.readPacketData(e,a);if(e.getCurPos()-u<=0||e.isError())continue;g=r,h=e.getCurPos(),this.controlParserByGhostIndex.set(m,t),a.compressionPoint!==this.compressionPoint&&(this.compressionPoint=a.compressionPoint,p=this.compressionPoint),this.controlObjectParsed++,E=!0;break}catch{}}if(!E)return e.restorePos(y),h=u,this.controlObjectFailed++,{lastMoveAck:f,damageFlash:t,whiteOut:a,selfLocked:r,selfHomed:n,seekerTracking:i,seekerTrackingPos:o,seekerMode:s,seekerObjectGhostIndex:l,targetPos:d,pinged:F,jammed:v,controlObjectGhostIndex:c,controlObjectDataStart:u,controlObjectDataEnd:h,controlObjectData:g,targetVisibility:[]}}else p={x:e.readF32(),y:e.readF32(),z:e.readF32()},this.compressionPoint=p;let y=[];for(;e.readFlag();)y.push({index:e.readInt(4),mask:e.readInt(32)});return e.readFlag()&&(m=e.readInt(8)),{lastMoveAck:f,damageFlash:t,whiteOut:a,selfLocked:r,selfHomed:n,seekerTracking:i,seekerTrackingPos:o,seekerMode:s,seekerObjectGhostIndex:l,targetPos:d,pinged:F,jammed:v,controlObjectGhostIndex:c,controlObjectDataStart:u,controlObjectDataEnd:h,controlObjectData:g,compressionPoint:p,targetVisibility:y.length>0?y:void 0,cameraFov:m}}readEvents(e){let t=[],a=!0,r=-2;for(;;){let n,i,o,s=e.readFlag();if(a&&!s){if(a=!1,!e.readFlag()){this.dispatchGuaranteedEvents(t);break}}else if(a||s){if(!s)break}else{this.dispatchGuaranteedEvents(t);break}!a&&(r=n=e.readFlag()?r+1&127:e.readInt(7),(i=n|0xffffff80&this.nextRecvEventSeq)<this.nextRecvEventSeq&&(i+=128));let l=e.readInt(6)+255,d=e.getCurPos(),c=this.registry.getEventParser(l);if(c)try{let t=this.getConnectionContext();o=c.unpack(e,t),this.eventsParsed++}catch{this.eventsFailed++,t.push({classId:l,guaranteed:!a,sequenceNumber:n,absoluteSequenceNumber:i,dataBitsStart:d,dataBitsEnd:d});break}else{t.push({classId:l,guaranteed:!a,sequenceNumber:n,absoluteSequenceNumber:i,dataBitsStart:d,dataBitsEnd:d});break}let u={classId:l,guaranteed:!a,sequenceNumber:n,absoluteSequenceNumber:i,dataBitsStart:d,dataBitsEnd:e.getCurPos(),parsedData:o};a?(t.push(u),o&&this.applyEventSideEffects(o)):void 0!==i&&this.enqueueGuaranteedEvent(i,u)}return t}enqueueGuaranteedEvent(e,t){let a=0;for(;a<this.pendingGuaranteedEvents.length&&this.pendingGuaranteedEvents[a].absoluteSequenceNumber<e;)a++;this.pendingGuaranteedEvents.splice(a,0,{absoluteSequenceNumber:e,event:t})}dispatchGuaranteedEvents(e){for(;this.pendingGuaranteedEvents.length>0&&this.pendingGuaranteedEvents[0].absoluteSequenceNumber===this.nextRecvEventSeq;){let t=this.pendingGuaranteedEvents.shift();if(!t)break;this.nextRecvEventSeq=this.nextRecvEventSeq+1>>>0,e.push(t.event),t.event.parsedData&&this.applyEventSideEffects(t.event.parsedData)}}applyEventSideEffects(e){let t=e.type;if("GhostingMessageEvent"===t){let t=e.message;"number"==typeof t&&2===t&&this.ghostTracker.clear();return}if("GhostAlwaysObjectEvent"===t){let t=e.ghostIndex,a=e.classId;if("number"==typeof t&&"number"==typeof a){let e=this.registry.getGhostParser(a);this.ghostTracker.createGhost(t,a,e?.name??`unknown_${a}`)}}"SimDataBlockEvent"===t&&this.dataBlockDataMap&&e.dataBlockData&&"number"==typeof e.objectId&&this.dataBlockDataMap.set(e.objectId,e.dataBlockData)}readGhosts(e,t){let a=[];if(!e.readFlag())return a;let r=e.readInt(3)+3;for(;e.readFlag();){let n;if(e.isError())break;let i=e.readInt(r);if(e.isError())break;if(e.readFlag()){this.ghostTracker.deleteGhost(i),this.ghostDeletes++,a.push({index:i,type:"delete",updateBitsStart:e.getCurPos(),updateBitsEnd:e.getCurPos()});continue}let o=!this.ghostTracker.hasGhost(i);n=o?e.readInt(7)+0:this.ghostTracker.getGhost(i)?.classId;let s=e.getCurPos(),l=void 0!==n?this.registry.getGhostParser(n):void 0;if(o&&!l){this.ghostsTrackerDiverged++,e5("DIVERGED pkt=%d seq=%d idx=%d classId=%d bit=%d/%d trackerSize=%d (server sent UPDATE for ghost not in our tracker; 7-bit classId is actually update data)",this.packetsParsed,t,i,n,s,e.getMaxPos(),this.ghostTracker.size()),a.push({index:i,type:"create",classId:n,updateBitsStart:s,updateBitsEnd:s});break}let d=!1;if(l)try{let t=this.getConnectionContext();t.currentGhostIndex=i;let r=l.unpackUpdate(e,o,t),c=e.getCurPos();o&&void 0!==n?(this.ghostTracker.createGhost(i,n,l.name),this.ghostCreatesParsed++):this.ghostUpdatesParsed++,a.push({index:i,type:o?"create":"update",classId:n,updateBitsStart:s,updateBitsEnd:c,parsedData:r}),d=!0}catch(c){this.ghostsFailed++;let r=o?"create":"update",d=c instanceof Error?c.message:String(c);e5("FAIL pkt=%d seq=%d #%d idx=%d op=%s classId=%d parser=%s bit=%d/%d trackerSize=%d err=%s",this.packetsParsed,t,a.length,i,r,n,l.name,s,e.getMaxPos(),this.ghostTracker.size(),d)}if(!d){e5("STOP pkt=%d seq=%d idx=%d op=%s classId=%d parser=%s bit=%d/%d",this.packetsParsed,t,i,o?"create":"update",n,l?.name??"NONE",s,e.getMaxPos()),a.push({index:i,type:o?"create":"update",classId:n,updateBitsStart:s,updateBitsEnd:s});break}}return a}emptyGameState(){return{lastMoveAck:0,pinged:!1,jammed:!1}}}class e8{eventParsers=new Map;ghostParsers=new Map;dataBlockParsers=new Map;eventCatalog=new Map;ghostCatalog=new Map;dataBlockCatalog=new Map;catalogEvent(e){this.eventCatalog.set(e.name,e)}catalogGhost(e){this.ghostCatalog.set(e.name,e)}catalogDataBlock(e){this.dataBlockCatalog.set(e.name,e)}bindDeterministicDataBlocks(e,t){let a=0,r=[];for(let n=0;n<e.length;n++){let i=e[n],o=this.dataBlockCatalog.get(i);o?(this.dataBlockParsers.set(t+n,o),a++):r.push(i)}return{bound:a,missing:r}}bindDeterministicEvents(e,t){let a=0,r=[];for(let n=0;n<e.length;n++){let i=e[n],o=this.eventCatalog.get(i);o?(this.eventParsers.set(t+n,o),a++):r.push(i)}return{bound:a,missing:r}}bindDeterministicGhosts(e,t){let a=0,r=[];for(let n=0;n<e.length;n++){let i=e[n],o=this.ghostCatalog.get(i);o?(this.ghostParsers.set(t+n,o),a++):r.push(i)}return{bound:a,missing:r}}getEventParser(e){return this.eventParsers.get(e)}getGhostParser(e){return this.ghostParsers.get(e)}getDataBlockParser(e){return this.dataBlockParsers.get(e)}getGhostCatalog(){return this.ghostCatalog}getEventBindings(){let e=new Map;for(let[t,a]of this.eventParsers)e.set(t,a.name);return e}getGhostBindings(){let e=new Map;for(let[t,a]of this.ghostParsers)e.set(t,a.name);return e}}class e4{ghosts=new Map;getGhost(e){return this.ghosts.get(e)}hasGhost(e){return this.ghosts.has(e)}createGhost(e,t,a){let r={classId:t,className:a,state:{}};return this.ghosts.set(e,r),r}deleteGhost(e){this.ghosts.delete(e)}getAllGhosts(){return this.ghosts}size(){return this.ghosts.size}clear(){this.ghosts.clear()}}function e7(e){let t=e.readFlag()?e.readInt(16):0,a=e.readFlag()?e.readInt(16):0,r=e.readFlag()?e.readInt(16):0,n=e.readInt(6),i=e.readInt(6),o=e.readInt(6),s=e.readFlag(),l=[];for(let t=0;t<6;t++)l.push(e.readFlag());return{pyaw:t,ppitch:a,proll:r,px:n,py:i,pz:o,freeLook:s,trigger:l}}function e9(e){return e.readInt(11)}function te(e,t,a){let r={};return e.readFlag()&&(r.dataBlockId=e9(e)),e.readFlag()&&(r.targetId=e.readFlag()?e.readInt(9):-1),r}function tt(e,t,a){let r=te(e,t,a);if(!e.readFlag())return r;if(e.readFlag()&&(r.damageLevel=e.readFloat(6),r.damageState=e.readInt(2),r.blowApart=e.readFlag(),r.damageDir=e.readNormalVector(8)),e.readFlag()){let t=[];for(let a=0;a<4;a++)if(e.readFlag()){let r=e.readFlag(),n={index:a,playing:r};r&&(n.profileId=e9(e)),t.push(n)}t.length>0&&(r.sounds=t)}if(e.readFlag()){let t=[];for(let a=0;a<4;a++)e.readFlag()&&t.push({index:a,sequence:e.readInt(5),state:e.readInt(2),forward:e.readFlag(),atEnd:e.readFlag()});t.length>0&&(r.threads=t)}let n=!1;if(e.readFlag()){let a=[];for(let r=0;r<8;r++)if(e.readFlag()){let i={index:r};e.readFlag()?i.dataBlockId=e9(e):i.dataBlockId=0,e.readFlag()&&(e.readFlag()?i.skinTagIndex=e.readInt(10):i.skinName=e.readString(),n=!0),i.triggerDown=e.readFlag(),i.loaded=e.readFlag(),i.ammo=e.readFlag(),i.wet=e.readFlag(),i.target=e.readFlag(),i.fireCount=e.readInt(3),t&&(i.imageExtraFlag=e.readFlag()),a.push(i)}a.length>0&&(r.images=a)}if(e.readFlag()){if(e.readFlag()){r.stateAEnabled=e.readFlag(),r.stateB=e.readFlag();let t=e.readFlag();r.hasInvulnerability=t,t?(r.invulnerabilityVisual=e.readFlag(),r.invulnerabilityTicks=e.readU32()):r.binaryCloak=e.readFlag()}if(e.readFlag())if(e.readFlag()){let t=e.readFlag();r.stateBMode=t,t?r.energyPackOn=!0:r.energyPackOn=!1}else r.shieldNormal=e.readNormalVector(8),r.energyPercent=e.readFloat(5);e.readFlag()&&(r.stateValue1=e.readU32(),r.stateValue2=e.readU32())}return n&&(r.imageSkinDirty=!0),e.readFlag()&&(e.readFlag()?(r.mountObject=e.readInt(10),r.mountNode=e.readInt(5)):r.mountObject=-1),r}function ta(e,t,a){let r=tt(e,t,a);if(e.readFlag()&&(r.impactSound=e.readInt(3)),e.readFlag()&&(r.action=e.readInt(8),r.actionHoldAtEnd=e.readFlag(),r.actionAtEnd=e.readFlag(),r.actionFirstPerson=e.readFlag(),!r.actionAtEnd&&e.readFlag()&&(r.actionAnimPos=e.readSignedFloat(6))),e.readFlag()&&(r.armAction=e.readInt(8)),e.readFlag())return r;if(e.readFlag()){if(r.actionState=e.readInt(3),e.readFlag()&&(r.recoverTicks=e.readInt(7)),r.moveFlag0=e.readFlag(),r.moveFlag1=e.readFlag(),r.position=e.readCompressedPoint(a.compressionPoint),e.readFlag()){let t=e.readInt(13)/32,a=e.readNormalVector(10);r.velocity={x:a.x*t,y:a.y*t,z:a.z*t}}else r.velocity={x:0,y:0,z:0};r.headX=e.readSignedFloat(6),r.headZ=e.readSignedFloat(6),r.rotationZ=2*e.readFloat(7)*Math.PI,r.move=e7(e),r.allowWarp=e.readFlag()}return r.energy=e.readFloat(5),r}function tr(e,t){let a={};if(a.energyLevel=e.readF32(),a.rechargeRate=e.readF32(),a.actionState=e.readInt(3),e.readFlag()&&(a.recoverTicks=e.readInt(7)),e.readFlag()&&(a.jumpDelay=e.readInt(7)),e.readFlag()){let r={x:e.readF32(),y:e.readF32(),z:e.readF32()};a.position=r,t.compressionPoint=r,a.velocity={x:e.readF32(),y:e.readF32(),z:e.readF32()},a.jumpSurfaceLastContact=e.readInt(4)}if(a.headX=e.readF32(),a.headZ=e.readF32(),a.rotationZ=e.readF32(),e.readFlag()){let r=e.readInt(10);a.controlObjectGhost=r;let n=t.ghostTracker.getGhost(r),i=n?t.getGhostParser?.(n.classId):void 0;if(i?.readPacketData){let n=t.currentGhostIndex;t.currentGhostIndex=r,a.controlObjectData=i.readPacketData(e,t),t.currentGhostIndex=n}}return a.disableMove=e.readFlag(),a.pilot=e.readFlag(),a}function tn(e,t,a){let r=tt(e,t,a);return(r.jetting=e.readFlag(),e.readFlag())?r._controlledEarlyReturn=!0:(r.steeringYaw=e.readFloat(9),r.steeringPitch=e.readFloat(9),r.move=e7(e),r.frozen=e.readFlag(),e.readFlag()&&(r.position=e.readCompressedPoint(a.compressionPoint),r.angPosition={x:e.readF32(),y:e.readF32(),z:e.readF32(),w:e.readF32()},r.linMomentum=e.readPoint3F(),r.angMomentum=e.readPoint3F()),e.readFlag()&&(r.energy=e.readFloat(8))),r}function ti(e,t){let a={};a.energyLevel=e.readF32(),a.rechargeRate=e.readF32(),a.steering={x:e.readF32(),y:e.readF32()};let r={x:e.readF32(),y:e.readF32(),z:e.readF32()};return a.linPosition=r,a.angPosition={x:e.readF32(),y:e.readF32(),z:e.readF32(),w:e.readF32()},a.linMomentum=e.readPoint3F(),a.angMomentum=e.readPoint3F(),a.disableMove=e.readFlag(),a.frozen=e.readFlag(),t.compressionPoint=r,a}function to(e,t){let a=ti(e,t);a.braking=e.readFlag();let r=4,n=t.currentGhostIndex;if(void 0!==n){let e=tX.get(n);void 0!==e&&(r=e)}let i=[];for(let t=0;t<r;t++)i.push({avel:e.readF32(),Dy:e.readF32(),Dx:e.readF32()});return a.wheels=i,a}function ts(e,t,a){let r=tn(e,t,a);return e.readFlag()||(r.createHeightOn=e.readFlag(),r.thrustDirection=e.readInt(3)),r}function tl(e,t,a){let r=tn(e,t,a);return r.thrustDirection=e.readInt(3),r}function td(e,t,a){let r=tt(e,t,a);if(e.readFlag()&&(r.rotate=e.readFlag(),r.isStatic=e.readFlag(),r.collideable=e.readFlag(),e.readFlag()&&(r.scale=e.readPoint3F())),e.readFlag()&&(r.collisionObject=e.readInt(10)),e.readFlag()&&(r.rotation={zSign:e.readFlag()?-1:1,angle:e.readF32()}),e.readFlag()){r.position=e.readPoint3F();let t=e.readFlag();r.atRest=t,t||(r.velocity=e.readPoint3F()),r.warp=e.readFlag()}return r}function tc(e,t,a){let r=tt(e,t,a);return e.readFlag()&&(r.transform=e.readAffineTransform(),r.position=r.transform.position,r.scale=e.readPoint3F()),r.powered=e.readFlag(),r}function tu(e,t,a){return tc(e,t,a)}function th(e,t,a){return{position:e.readPoint3F()}}function tg(e,t,a){return{message:e.readString()}}function tp(e,t,a){let r=tc(e,t,a);return e.readFlag()&&(r.beaconType=e.readInt(2)),r}function tm(e,t,a){let r=tt(e,t,a);return e.readFlag()&&(r.transform=e.readAffineTransform(),r.position=r.transform.position,r.scale=e.readPoint3F()),r}function tf(e,t,a){let r=te(e,t,a);r.value0=e.readF32(),r.value1=e.readF32(),r.value2=e.readF32(),r.value3=e.readF32(),r.value4=e.readF32(),r.value5=e.readF32(),r.bool0=e.readBool(),r.bool1=e.readBool(),r.bool2=e.readBool(),r.bool3=e.readBool(),r.value6=e.readF32(),r.value7=e.readF32(),r.value8=e.readF32(),r.value9=e.readF32(),r.value10=e.readF32(),r.value11=e.readF32(),r.bool4=e.readBool(),r.bool5=e.readBool(),r.value12=e.readF32(),r.value13=e.readF32(),r.value14=e.readF32(),r.bool6=e.readBool(),r.string0=e.readString(),r.string1=e.readString();let n=[];for(let t=0;t<2;t++)n.push(e.readFlag()?e9(e):-1);return r.objectRefs=n,r.objectRef2=e.readFlag()?e9(e):-1,r}function tF(e,t,a){return te(e,t,a)}function tv(e,t,a){let r={};return(e.readFlag()&&(r.dataBlockId=e9(e)),e.readFlag()&&(r.targetId=e.readFlag()?e.readInt(9):-1),e.readFlag())?(r.position={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.velocity={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.currTick=e.readInt(12),e.readFlag()&&(r.resetFlag=!0),e.readFlag()&&(r.explodePoint={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.explodeNormal={x:e.readF32(),y:e.readF32(),z:e.readF32()}),e.readFlag()?(r.sourceObject=e.readInt(11),r.sourceSlot=e.readInt(3)):(r.sourceObject=-1,r.sourceSlot=-1),e.readFlag()?r.vehicleObject=e.readInt(11):r.vehicleObject=0,r):(e.readFlag()&&(r.position={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.velocity={x:e.readF32(),y:e.readF32(),z:e.readF32()}),e.readFlag()&&(r.endPoint={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.endNormal={x:e.readF32(),y:e.readF32(),z:e.readF32()}),r)}function ty(e,t,a){let r=te(e,t,a);return e.readFlag()?(r.position=e.readPoint3F(),r.velocity=e.readPoint3F(),r.currTick=e.readRangedU32(0,4095),r.quickSplash=e.readFlag(),e.readFlag()&&(r.explodePoint=e.readPoint3F(),r.explodeNormal=e.readPoint3F()),e.readFlag()&&(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7)),e.readFlag()&&(r.vehicleObject=e.readRangedU32(0,1024))):(e.readFlag()&&(r.position=e.readPoint3F(),r.velocity=e.readPoint3F()),e.readFlag()&&(r.explodePoint=e.readPoint3F(),r.explodeNormal=e.readPoint3F())),r}function tS(e,t,a){let r=te(e,t,a);return e.readFlag()?(r.position={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.velocity={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.orientation={x:e.readF32(),y:e.readF32(),z:e.readF32()},e.readFlag()?(r.sourceObject=e.readInt(11),r.sourceSlot=e.readInt(3)):(r.sourceObject=-1,r.sourceSlot=-1),e.readFlag()?e.readFlag()?(r.targetGhost=e.readInt(11),r.targetMode=0):(r.targetDirection={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.targetMode=1):r.targetMode=2,r.timeoutReset=e.readFlag(),r):(e.readFlag()?(r.explodePosition={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.explodeNormal={x:e.readF32(),y:e.readF32(),z:e.readF32()}):(r.position={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.velocity={x:e.readF32(),y:e.readF32(),z:e.readF32()},e.readFlag()?e.readFlag()?(r.targetGhost=e.readInt(11),r.targetMode=0):(r.targetDirection={x:e.readF32(),y:e.readF32(),z:e.readF32()},r.targetMode=1):r.targetMode=2),r)}function tk(e,t,a){let r=tc(e,t,a);return e.readFlag()&&(r.capacitorEnergy=e.readFloat(8)),e.readFlag()||e.readFlag()&&(r.phi=e.readFloat(10),r.theta=e.readFloat(10),r.activationLevel=e.readFloat(8)),r}function tb(e,t,a){let r={};return e.readFlag()?(r.crc=e.readU32(),r.interiorFile=e.readString(),r.showTerrainInside=e.readFlag(),r.transform=e.readMatrixF(),r.scale=e.readPoint3F(),r.alarmState=e.readFlag(),r.skinBase=e.readString(),e.readFlag()&&(r.audioProfileId=e9(e)),e.readFlag()&&(r.audioEnvironmentId=e9(e))):(e.readFlag()&&(r.transform=e.readMatrixF(),r.scale=e.readPoint3F()),r.alarmState=e.readFlag(),e.readFlag()&&(r.skinBase=e.readString()),e.readFlag()&&(e.readFlag()&&(r.audioProfileId=e9(e)),e.readFlag()&&(r.audioEnvironmentId=e9(e)))),r}function tP(e,t,a){let r=tt(e,t,a);return e.readFlag()||e.readFlag()&&(r.posX=e.readF32(),r.posY=e.readF32(),r.posZ=e.readF32(),r.fovOrDist=e.readF32(),r.orbitParam=e.readF32()),r}function tx(e,t){let a={};a.energyLevel=e.readF32(),a.rechargeRate=e.readF32();let r={x:e.readF32(),y:e.readF32(),z:e.readF32()};a.position=r,a.rotX=e.readF32(),a.rotZ=e.readF32();let n=e.readInt(3);return a.cameraMode=n,(3===n||4===n)&&(a.minOrbitDist=e.readF32(),a.maxOrbitDist=e.readF32(),a.curOrbitDist=e.readF32(),3===n&&(a.observingClientObject=e.readFlag(),a.orbitObjectGhostIndex=e.readInt(10)),4===n&&(a.orbitPoint=e.readCompressedPoint(t.compressionPoint,.01))),t.compressionPoint=r,a}function tI(e,t,a){let r=te(e,t,a);return e.readFlag()?e.readFlag()?(r.hidden=!0,r.explodePosition=e.readCompressedPoint(a.compressionPoint),r.explodeNormal=e.readNormalVector(14),r.endedWithDecal=e.readFlag()):(r.position=e.readCompressedPoint(a.compressionPoint),r.direction=e.readNormalVector(14),r.currTick=e.readRangedU32(0,511),e.readFlag()&&(r.sourceObject=e.readInt(10),r.sourceSlot=e.readRangedU32(0,7),e.readFlag()&&(r.excessVel=e.readRangedU32(0,255),r.excessDir=e.readNormalVector(7))),e.readFlag()&&(r.vehicleObject=e.readInt(10))):(r.explodePosition=e.readCompressedPoint(a.compressionPoint),r.explodeNormal=e.readNormalVector(14),r.endedWithDecal=e.readFlag()),r}function tD(e,t,a){let r=te(e,t,a);return e.readFlag()&&e.readFlag()&&(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7),r.targetObject=e.readRangedU32(0,1024)),r}function tC(e,t,a){let r=te(e,t,a);return e.readFlag()&&e.readFlag()&&(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7),r.repairingObject=e.readRangedU32(0,1024)),r}function tE(e,t,a){let r=te(e,t,a);return e.readFlag()?(r.initialPosition=e.readPoint3F(),r.endPos=e.readPoint3F(),r.truncated=e.readFlag(),e.readFlag()&&(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7),r.clientOwned=e.readFlag())):(e.readFlag()?(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7),r.clientOwned=e.readFlag()):r.initialPosition=e.readPoint3F(),r.endPos=e.readPoint3F(),r.truncated=e.readFlag()),r}function tw(e,t,a){let r=tm(e,t,a);return e.readFlag()&&(r.name=e.readString()),e.readFlag()&&(r.teamId=e.readS32()),e.readFlag()&&(r.hidden=e.readFlag()),r}function tM(e,t,a){let r=tm(e,t,a);return e.readFlag()&&(r.radius=e.readF32(),r.sphereWeight=e.readF32(),r.indoorWeight=e.readF32(),r.outdoorWeight=e.readF32()),r}function tB(e,t,a){let r=te(e,t,a);if(e.readFlag()?(r.transform=e.readAffineTransform(),r.scale=e.readPoint3F()):e.readFlag()&&(r.transform=e.readAffineTransform(),r.scale=e.readPoint3F()),e.readFlag()){let t=e.readInt(2);r.state=t,3===t?r.position=0:0===t||(r.position=e.readU32())}return r}function tT(e,t,a){let r={};return r.transform=e.readMatrixF(),r.scale=e.readPoint3F(),r.shapeName=e.readString(),r}function tR(e,t,a){let r={};if(e.readFlag()){r.crc=e.readU32(),r.terrFileName=e.readString(),r.detailTextureName=e.readString(),r.squareSize=e.readU32();let t=e.readU32(),a=[];for(let r=0;r<t;r++)a.push(e.readU32());r.emptySquareRunCount=t}else if(e.readFlag()){let t=e.readU32(),a=[];for(let r=0;r<t;r++)a.push(e.readU32());r.emptySquareRunCount=t}return r}function tN(e,t,a){let r={};if(e.readFlag()){let t=[];for(let a=0;a<5;a++)t.push(e.readString());r.textures=t}if(e.readFlag()){let t=[];for(let a=0;a<19;a++)t.push(e.readF32());r.direction={x:t[0],y:t[1],z:t[2]},r.color={r:t[3],g:t[4],b:t[5],a:t[6]},r.ambient={r:t[7],g:t[8],b:t[9],a:t[10]},r.extraLightProps=t.slice(11)}return r}function tG(e,t,a){let r={};if(e.readFlag()){r.materialList=e.readString(),r.fogColor={r:e.readF32(),g:e.readF32(),b:e.readF32()};let t=e.readU32();if(t>64)throw Error(`Invalid Sky fogVolumeCount: ${t}`);r.fogVolumeCount=t,r.useSkyTextures=e.readBool(),r.renderBottomTexture=e.readBool(),r.skySolidColor={r:e.readF32(),g:e.readF32(),b:e.readF32()},r.windEffectPrecipitation=e.readBool();let a=[];for(let r=0;r<t;r++)a.push({visibleDistance:e.readF32(),minHeight:e.readF32(),maxHeight:e.readF32(),color:{r:e.readF32(),g:e.readF32(),b:e.readF32()}});r.fogVolumes=a;let n=[];for(let t=0;t<3;t++)n.push({texture:e.readString(),heightPercent:e.readF32(),speed:e.readF32()});r.cloudLayers=n,r.windVelocity=e.readPoint3F(),r.stormCurrent=e.readF32(),e.readFlag()&&(r.stormInit={startPct:e.readF32(),duration:e.readF32(),indexOrMode:e.readF32(),startTime:e.readF32(),targetPct:e.readF32()})}return e.readFlag()&&(r.stormCloudsOn=e.readBool()),e.readFlag()&&(r.stormFogOn=e.readBool()),e.readFlag()&&(r.visibleDistance=e.readF32(),r.fogDistance=e.readF32()),e.readFlag()&&(r.stormType=e.readF32(),r.stormMagnitude=e.readF32()),e.readFlag()&&(r.stormTimeline={startPct:e.readF32(),duration:e.readF32(),indexOrMode:e.readF32()}),e.readFlag()&&(r.stormCloudProfile={enabled:e.readF32(),value0:e.readF32(),value1:e.readF32(),value2:e.readF32()}),e.readFlag()&&(r.windVelocity=e.readPoint3F()),r}function tA(e,t,a){let r=te(e,t,a);return e.readFlag()&&(r.position=e.readPoint3F(),r.scale=e.readPoint3F(),r.strikeWidth=e.readF32(),r.chanceToHitTarget=e.readF32(),r.strikeRadius=e.readF32(),r.boltStartRadius=e.readF32(),r.color={r:e.readF32(),g:e.readF32(),b:e.readF32()},r.fadeColor={r:e.readF32(),g:e.readF32(),b:e.readF32()},r.useFog=0!==e.readInt(8),r.strikesPerMinute=e.readF32()),r}function tU(e,t,a){let r={};r.transform=e.readAffineTransform(),r.scale=e.readPoint3F(),r.surfaceName=e.readString(),r.envMapName=e.readString();let n=[];for(let t=0;t<2;t++)n.push(e.readString());return r.submergeNames=n,r.liquidType=e.readS32(),r.density=e.readF32(),r.viscosity=e.readF32(),r.waveMagnitude=e.readF32(),r.surfaceOpacity=e.readF32(),r.envMapIntensity=e.readF32(),r.removeWetEdges=0!==e.readInt(8),e.readFlag()&&(r.audioEnvironmentId=e9(e)),r}function tj(e,t,a){let r={};return e.readFlag()&&(r.area={x:e.readS32(),y:e.readS32(),w:e.readS32(),h:e.readS32()},r.flightCeiling=e.readF32(),r.flightCeilingRange=e.readF32()),r}function tO(e,t,a){let r=te(e,t,a);return e.readFlag()&&(r.position=e.readPoint3F()),r}function tz(e,t,a){let r=te(e,t,a);return e.readFlag()&&(r.position=e.readPoint3F(),r.normal=e.readPoint3F()),r}function tL(e,t,a){let r=te(e,t,a);return e.readFlag()&&(r.dropRadius=e.readF32(),r.dropsPerMinute=e.readF32(),r.maxDropAngle=e.readF32(),r.minDropAngle=e.readF32(),r.startVelocity=e.readF32(),r.dropHeight=e.readF32(),r.dropDir=e.readPoint3F()),r}function tV(e,t,a){let r={};return r.transform=e.readMatrixF(),r.boundsMin=e.readPoint3F(),r.boundsMax=e.readPoint3F(),r}function t_(e,t,a){let r=te(e,t,a);return r.transform=e.readMatrixF(),r.scale=e.readPoint3F(),e.readFlag()&&(r.emitterDatablockId=e9(e)),r}function tq(e,t,a){let r=te(e,t,a);if(e.readFlag()){r.percentage=e.readF32();let t=e.readS32();if(r.colorCount=t,t<0||t>3)throw Error(`Invalid precipitation colorCount: ${t}`);let a=[];for(let r=0;r<t;r++)a.push({r:e.readInt(8)/255,g:e.readInt(8)/255,b:e.readInt(8)/255,a:e.readInt(8)/255});r.colors=a,r.offsetSpeed=e.readF32(),r.minVelocity=e.readF32(),r.maxVelocity=e.readF32(),r.maxDrops=e.readS32(),r.maxRadius=e.readF32(),e.readFlag()&&(r.stormLastTime=e.readF32(),r.stormTime=e.readF32(),r.stormEndPercentage=e.readF32())}return e.readFlag()&&(r.stormPrecipitationOn=e.readBool()),e.readFlag()&&(r.stormTime=e.readF32(),r.stormEndPercentage=e.readF32()),e.readFlag()&&(r.percentageUpdate=e.readF32()),r}function t$(e,t,a){let r=te(e,t,a);return e.readFlag()?(r.energyPercentage=e.readFloat(7),r.initialPosition=e.readPoint3F(),r.endPos=e.readPoint3F(),r.truncated=e.readFlag(),r.hitWater=e.readFlag(),e.readFlag()&&(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7),r.clientOwned=e.readFlag())):(e.readFlag()?(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7),r.clientOwned=e.readFlag()):r.initialPosition=e.readPoint3F(),r.endPos=e.readPoint3F(),r.truncated=e.readFlag()),r}function tH(e,t,a){let r=te(e,t,a);return e.readFlag()&&(r.targetObject=e.readRangedU32(0,1024)),e.readFlag()&&(r.start=e.readPoint3F(),r.end=e.readPoint3F(),r.hitObject=e.readFlag(),e.readFlag()&&(r.sourceObject=e.readRangedU32(0,1024),r.sourceSlot=e.readRangedU32(0,7))),r}let tW=new Map,tX=new Map;function tZ(e,t,a){let r=tn(e,t,a);if(r.braking=e.readFlag(),e.readFlag()){let t=4,n=r.dataBlockId,i=a.currentGhostIndex;if(void 0!==n){let e=tW.get(n);if(void 0!==e)t=e;else if(a.getDataBlockData){let e=a.getDataBlockData(n);e&&(t=function(e){if(!e)return 6;let t=e.toLowerCase();return t.includes("mpb")||t.includes("mpbase"),6}(e.shapeName),tW.set(n,t))}void 0!==i&&tX.set(i,t)}else if(void 0!==i){let e=tX.get(i);void 0!==e&&(t=e)}let o=[];for(let a=0;a<t;a++)o.push({avel:e.readF32(),dy:e.readF32(),dx:e.readF32()});r.wheels=o}return r}function tY(e,t,a){return{tickPeriodMS:e.readU32()}}function tJ(e,t,a){let r={};if(e.readFlag()){r.transform=e.readMatrixF(),r.scale=e.readPoint3F();let t=e.readU32();if(t>Math.floor(e.getRemainingBits()/96))throw Error(`Invalid physicalZone point count: ${t}`);let a=[];for(let r=0;r<t;r++)a.push(e.readPoint3F());r.points=a;let n=e.readU32();if(n>Math.floor(e.getRemainingBits()/128))throw Error(`Invalid physicalZone plane count: ${n}`);let i=[];for(let t=0;t<n;t++)i.push({x:e.readF32(),y:e.readF32(),z:e.readF32(),d:e.readF32()});r.planes=i;let o=e.readU32();if(o>Math.floor(e.getRemainingBits()/128))throw Error(`Invalid physicalZone edge count: ${o}`);let s=[];for(let t=0;t<o;t++)s.push({face0:e.readU32(),face1:e.readU32(),vertex0:e.readU32(),vertex1:e.readU32()});r.edges=s,r.velocityMod=e.readF32(),r.gravityMod=e.readF32(),r.appliedForce=e.readPoint3F(),r.active=e.readFlag()}else r.active=e.readFlag();return r}function tK(e,t,a){let r={};return r.initialUpdate=e.readFlag(),e.readFlag()&&(r.transform=e.readAffineTransform()),e.readFlag()&&e.readFlag()&&(r.audioProfileId=e9(e)),e.readFlag()&&e.readFlag()&&(r.audioDescriptionId=e9(e)),e.readFlag()&&(r.filename=e.readString()),e.readFlag()&&(r.useProfileDescription=e.readFlag()),e.readFlag()&&(r.volume=e.readF32()),e.readFlag()&&(r.isLooping=e.readFlag()),e.readFlag()&&(r.is3D=e.readFlag()),e.readFlag()&&(r.minDistance=e.readF32()),e.readFlag()&&(r.maxDistance=e.readF32()),e.readFlag()&&(r.coneInsideAngle=e.readS32()),e.readFlag()&&(r.coneOutsideAngle=e.readS32()),e.readFlag()&&(r.coneOutsideVolume=e.readF32()),e.readFlag()&&(r.coneVector=e.readPoint3F()),e.readFlag()&&(r.loopCount=e.readS32()),e.readFlag()&&(r.minLoopGap=e.readS32()),e.readFlag()&&(r.maxLoopGap=e.readS32()),e.readFlag()&&(r.audioType=e.readS32()),e.readFlag()&&(r.outsideAmbient=e.readFlag()),r}function tQ(e,t,a){let r=te(e,t,a);return e.readFlag()&&e.readFlag()&&(r.stationObject=e.readRangedU32(0,1024)),r}function t0(e,t,a){let r=tt(e,t,a);return e.readFlag()&&(r.transform=e.readAffineTransform(),r.scale=e.readPoint3F()),r.unknownFlag=e.readFlag(),r}function t2(e){e.catalogGhost({name:"AIObjective",unpackUpdate:t0}),e.catalogGhost({name:"BeaconObject",unpackUpdate:tp}),e.catalogGhost({name:"BombProjectile",unpackUpdate:tv}),e.catalogGhost({name:"Player",unpackUpdate:ta,readPacketData:tr}),e.catalogGhost({name:"Debris",unpackUpdate:tf}),e.catalogGhost({name:"GameBase",unpackUpdate:te}),e.catalogGhost({name:"ShapeBase",unpackUpdate:tt,readPacketData:ti}),e.catalogGhost({name:"Vehicle",unpackUpdate:tn,readPacketData:ti}),e.catalogGhost({name:"FlyingVehicle",unpackUpdate:ts,readPacketData:ti}),e.catalogGhost({name:"HoverVehicle",unpackUpdate:tl,readPacketData:ti}),e.catalogGhost({name:"Item",unpackUpdate:td}),e.catalogGhost({name:"Marker",unpackUpdate:th}),e.catalogGhost({name:"MissionMarker",unpackUpdate:tm}),e.catalogGhost({name:"StaticShape",unpackUpdate:tc}),e.catalogGhost({name:"Projectile",unpackUpdate:tF}),e.catalogGhost({name:"ScopeAlwaysShape",unpackUpdate:tu}),e.catalogGhost({name:"GrenadeProjectile",unpackUpdate:ty}),e.catalogGhost({name:"SimpleNetObject",unpackUpdate:tg}),e.catalogGhost({name:"SeekerProjectile",unpackUpdate:tS}),e.catalogGhost({name:"Turret",unpackUpdate:tk}),e.catalogGhost({name:"InteriorInstance",unpackUpdate:tb}),e.catalogGhost({name:"Camera",unpackUpdate:tP,readPacketData:tx}),e.catalogGhost({name:"LinearProjectile",unpackUpdate:tI}),e.catalogGhost({name:"ELFProjectile",unpackUpdate:tD}),e.catalogGhost({name:"RepairProjectile",unpackUpdate:tC}),e.catalogGhost({name:"TargetProjectile",unpackUpdate:tE}),e.catalogGhost({name:"TracerProjectile",unpackUpdate:tI}),e.catalogGhost({name:"WayPoint",unpackUpdate:tw}),e.catalogGhost({name:"SpawnSphere",unpackUpdate:tM}),e.catalogGhost({name:"ForceFieldBare",unpackUpdate:tB}),e.catalogGhost({name:"TSStatic",unpackUpdate:tT}),e.catalogGhost({name:"TerrainBlock",unpackUpdate:tR}),e.catalogGhost({name:"Sun",unpackUpdate:tN}),e.catalogGhost({name:"Sky",unpackUpdate:tG}),e.catalogGhost({name:"Lightning",unpackUpdate:tA}),e.catalogGhost({name:"WaterBlock",unpackUpdate:tU}),e.catalogGhost({name:"MissionArea",unpackUpdate:tj}),e.catalogGhost({name:"Splash",unpackUpdate:tO}),e.catalogGhost({name:"Shockwave",unpackUpdate:tz}),e.catalogGhost({name:"FireballAtmosphere",unpackUpdate:tL}),e.catalogGhost({name:"VehicleBlocker",unpackUpdate:tV}),e.catalogGhost({name:"ParticleEmissionDummy",unpackUpdate:t_}),e.catalogGhost({name:"Precipitation",unpackUpdate:tq}),e.catalogGhost({name:"EnergyProjectile",unpackUpdate:ty}),e.catalogGhost({name:"FlareProjectile",unpackUpdate:ty}),e.catalogGhost({name:"LinearFlareProjectile",unpackUpdate:tI}),e.catalogGhost({name:"SniperProjectile",unpackUpdate:t$}),e.catalogGhost({name:"ShockLanceProjectile",unpackUpdate:tH}),e.catalogGhost({name:"WheeledVehicle",unpackUpdate:tZ,readPacketData:to}),e.catalogGhost({name:"Trigger",unpackUpdate:tY}),e.catalogGhost({name:"PhysicalZone",unpackUpdate:tJ}),e.catalogGhost({name:"AudioEmitter",unpackUpdate:tK}),e.catalogGhost({name:"StationFXPersonal",unpackUpdate:tQ}),e.catalogGhost({name:"StationFXVehicle",unpackUpdate:tQ})}function t3(e,t){if(!e.readFlag())return{type:"SimDataBlockEvent",mProcess:!1};let a=e.readInt(11)+0,r=e.readInt(7)+128,n=e.readInt(11),i=e.readInt(12),o={type:"SimDataBlockEvent",mProcess:!0};o.objectId=a,o.classId=r,o.index=n,o.total=i,o._payloadBitPos=e.getCurPos();let s=t.getDataBlockParser?.(r);if(s)try{o.dataBlockData=s.unpackData(e),o.dataBlockClassName=s.name}catch{o._needsClassParser=!0}else o._needsClassParser=!0;return o}function t1(e,t){let a=e.readInt(10),r=e.readFlag(),n=r?e.readString():void 0;return{type:"NetStringEvent",id:a,hasValue:r,value:n}}function t5(e,t){return{type:"Sim2DAudioEvent",profileId:e.readInt(11)}}function t6(e,t){let a,r=e.readInt(11);if(e.readFlag()){let t=e.readFloat(8),r=e.readFloat(8),n=e.readFloat(8),i=Math.sqrt(Math.max(0,1-(t*t+r*r+n*n)));e.readFlag()&&(i=-i),a={x:t,y:r,z:n,w:i}}return{type:"Sim3DAudioEvent",profileId:r,rotation:a,position:e.readCompressedPoint(t.compressionPoint,.5)}}function t8(e,t){return{type:"SetSensorGroupEvent",sensorGroup:e.readInt(5)}}function t4(e,t){let a={type:"SetServerTargetEvent"};return e.readFlag()&&(a.targetId=e.readInt(9)),a.targetPos={x:e.readF32(),y:e.readF32(),z:e.readF32()},a}function t7(e,t){let a={type:"TargetToEvent"};return e.readFlag()&&(a.targetId=e.readInt(9)),e.readFlag()&&(a.targetPos={x:e.readF32(),y:e.readF32(),z:e.readF32()}),a.assign=e.readFlag(),a}function t9(e,t){return{type:"SetObjectActiveImageEvent",objectId:e.readRangedU32(0,1023),imageSlot:e.readRangedU32(0,8)}}function ae(e,t){return{type:"SetMissionCRCEvent",crc:e.readU32()}}function at(e,t){let a=e.readInt(5),r=[];for(let t=0;t<a;t++)r.push(e.unpackNetString());return{type:"RemoteCommandEvent",argc:a,argv:r,funcName:r[0]??"",args:r.slice(1)}}function aa(e,t){let a={type:"TargetInfoEvent"};return a.targetId=e.readInt(9),e.readFlag()&&(a.nameTag=e.readFlag()?e.readInt(10):1024),e.readFlag()&&(a.skinTag=e.readFlag()?e.readInt(10):1024),e.readFlag()&&(a.skinPrefTag=e.readFlag()?e.readInt(10):1024),e.readFlag()&&(a.voiceTag=e.readFlag()?e.readInt(10):1024),e.readFlag()&&(a.typeTag=e.readFlag()?e.readInt(10):1024),e.readFlag()&&(a.sensorGroup=e.readInt(5)),e.readFlag()&&(a.dataBlockId=e.readFlag()?e.readInt(11):-2),e.readFlag()&&(a.renderFlags=e.readInt(9)),e.readFlag()&&(a.voicePitch=1.5*e.readFloat(7)+.5),a}function ar(e,t){return{type:"TargetFreeEvent",targetId:e.readInt(9)}}function an(e,t){let a={type:"SimTargetAudioEvent"};return a.targetId=e.readInt(9),a.fileTag=e.readInt(12),a.descriptionId=e.readRangedU32(3,1026),e.readFlag()&&(a.position=e.readCompressedPoint(t.compressionPoint,.5)),a.updateSound=e.readFlag(),a}function ai(e,t){let a={type:"SensorGroupColorEvent"};a.sensorGroup=e.readInt(5);let r=e.readU32();a.updateMask=r;let n=[];for(let t=0;t<32;t++)1<<t&r&&(e.readFlag()?n.push({index:t,r:e.readU8(),g:e.readU8(),b:e.readU8(),a:e.readU8()}):n.push({index:t,default:!0}));return a.colors=n,a}function ao(e,t){return{type:"ResetClientTargetsEvent",clientTargetsOnly:e.readFlag()}}function as(e,t){return{type:"RemoveClientTargetTypeEvent",targetType:e.readRangedU32(0,3)}}function al(e,t){let a={type:"SimVoiceStreamEvent"};a.streamId=e.readInt(5),a.sequence=e.readInt(6),a.codecId=e.readInt(2),a.clientId=e.readU8(),0===a.sequence&&(a.objectId=e.readInt(10)),e.readFlag()?a.size=e.readInt(5):a.size=16;let r=a.size;return r>0&&(a.audioData=e.readBitsBuffer(8*r)),a}function ad(e,t){return{type:"GhostingMessageEvent",sequence:e.readU32(),message:e.readInt(3),ghostCount:e.readInt(11)}}function ac(e,t){let a={type:"GhostAlwaysObjectEvent"};a.ghostIndex=e.readInt(10);let r=e.readFlag();if(a._hasObjectData=r,r){let r=e.readInt(7);a.classId=r;let n=t.getGhostParser?.(r);if(!n)throw Error(`No ghost parser for GhostAlwaysObjectEvent classId=${r}`);a.objectData=n.unpackUpdate(e,!0,t)}return a}function au(e,t){let a={type:"PathManagerEvent"};if(e.readFlag()){a.messageType="NewPaths";let t=e.readU32(),r=[];for(let a=0;a<t&&a<256;a++){let t=e.readU32(),a=e.readU32(),n=[];for(let t=0;t<a&&t<1024;t++)n.push({position:e.readPoint3F(),msToNext:e.readU32()});r.push({totalTime:t,points:n})}a.paths=r}else{a.messageType="ModifyPath",a.modifiedPath=e.readU32();let t=e.readU32(),r=e.readU32(),n=[];for(let t=0;t<r&&t<1024;t++)n.push({position:e.readPoint3F(),msToNext:e.readU32()});a.path={totalTime:t,points:n}}return a}function ah(e,t){let a={type:"LightningStrikeEvent"};return e.readFlag()&&(a.sourceGhost=e.readInt(11),a.startX=e.readFloat(10),a.startY=e.readFloat(10),e.readFlag()&&(a.targetGhost=e.readInt(11))),a}function ag(e,t){let a=e.readRangedU32(0,63),r=e.readBitsBuffer(8*a);return{type:"FileChunkEvent",chunkLen:a,chunkData:r}}function ap(e,t){return{type:"DownloadMessageEvent",value:e.readU32(),message:e.readInt(3)}}function am(e,t){let a=e.readRangedU32(0,31),r=[];for(let t=0;t<a;t++)r.push(e.readString());return{type:"FileDownloadRequestEvent",fileNames:r}}function af(e,t){return{type:"SimpleMessageEvent",message:e.readString()}}function aF(e,t){return{type:"CRCChallengeEvent",crcValue:e.readU32(),field1:e.readU32(),field2:e.readU32(),flag:e.readFlag()}}function av(e,t){return{type:"CRCChallengeResponseEvent",crcValue:e.readU32(),field1:e.readU32(),field2:e.readU32()}}function ay(e,t){return{type:"GravityEvent",gravity:e.readF32()}}function aS(e,t){return{type:"FogChallengeEvent"}}function ak(e){e.catalogEvent({name:"SimDataBlockEvent",unpack:t3}),e.catalogEvent({name:"NetStringEvent",unpack:t1}),e.catalogEvent({name:"Sim2DAudioEvent",unpack:t5}),e.catalogEvent({name:"Sim3DAudioEvent",unpack:t6}),e.catalogEvent({name:"SetSensorGroupEvent",unpack:t8}),e.catalogEvent({name:"SetServerTargetEvent",unpack:t4}),e.catalogEvent({name:"TargetToEvent",unpack:t7}),e.catalogEvent({name:"SetObjectActiveImageEvent",unpack:t9}),e.catalogEvent({name:"SetMissionCRCEvent",unpack:ae}),e.catalogEvent({name:"RemoteCommandEvent",unpack:at}),e.catalogEvent({name:"TargetInfoEvent",unpack:aa}),e.catalogEvent({name:"TargetFreeEvent",unpack:ar}),e.catalogEvent({name:"SimTargetAudioEvent",unpack:an}),e.catalogEvent({name:"SensorGroupColorEvent",unpack:ai}),e.catalogEvent({name:"ResetClientTargetsEvent",unpack:ao}),e.catalogEvent({name:"RemoveClientTargetTypeEvent",unpack:as}),e.catalogEvent({name:"SimVoiceStreamEvent",unpack:al}),e.catalogEvent({name:"GhostingMessageEvent",unpack:ad}),e.catalogEvent({name:"GhostAlwaysObjectEvent",unpack:ac}),e.catalogEvent({name:"PathManagerEvent",unpack:au}),e.catalogEvent({name:"LightningStrikeEvent",unpack:ah}),e.catalogEvent({name:"FileChunkEvent",unpack:ag}),e.catalogEvent({name:"DownloadMessageEvent",unpack:ap}),e.catalogEvent({name:"FileDownloadRequestEvent",unpack:am}),e.catalogEvent({name:"SimpleMessageEvent",unpack:af}),e.catalogEvent({name:"CRCChallengeEvent",unpack:aF}),e.catalogEvent({name:"CRCChallengeResponseEvent",unpack:av}),e.catalogEvent({name:"GravityEvent",unpack:ay}),e.catalogEvent({name:"FogChallengeEvent",unpack:aS})}function ab(e){return e.readFlag()?e.readInt(11):null}function aP(e,t,a){return e.readRangedU32(0,a-t)+t}function ax(e){return{r:e.readInt(8)/255,g:e.readInt(8)/255,b:e.readInt(8)/255,a:e.readInt(8)/255}}function aI(e){return 0!==e.readInt(8)}function aD(e,t,a,r){return t+e.readInt(r)/((1<<r)-1)*(a-t)}function aC(e){let t={};e.readFlag()&&(t.crc=e.readU32()),t.shapeName=e.readString(),e.readFlag()&&(t.mass=e.readF32()),e.readFlag()&&(t.drag=e.readF32()),e.readFlag()&&(t.density=e.readF32()),e.readFlag()&&(t.maxEnergy=e.readF32()),e.readFlag()&&(t.cameraMaxDist=e.readF32()),e.readFlag()&&(t.cameraMinDist=e.readF32()),e.readFlag()&&(t.cameraDefaultFov=e.readF32()),e.readFlag()&&(t.cameraMinFov=e.readF32()),e.readFlag()&&(t.cameraMaxFov=e.readF32()),t.debrisShapeName=e.readString(),e.readFlag()&&(t.sensorRadius=e.readInt(10),t.sensorColor={r:e.readInt(8),g:e.readInt(8),b:e.readInt(8),a:e.readInt(8)}),e.readFlag()&&(t.heat=e.readF32()),t.cmdCategory=e.readString(),t.cmdMiniIconName=e.readString(),t.canControl=e.readFlag(),t.canObserve=e.readFlag(),t.observeThroughObject=e.readFlag(),t.firstPersonOnly=e.readFlag(),t.isInvincible=e.readFlag(),t.renderWhenDestroyed=e.readFlag(),t.debris=ab(e),t.explosion=ab(e),t.underwaterExplosion=ab(e),t.debrisEmitter=ab(e),t.inheritEnergyFromMount=e.readFlag(),t.useEyePoint=e.readFlag(),t.emap=e.readFlag(),t.shieldEffectLifetimeMS=e.readU32(),e.readFlag()&&(t.shieldEffectScale={x:e.readF32(),y:e.readF32(),z:e.readF32()});let a=[];for(let t=0;t<8;t++){if(!e.readFlag())continue;let t={};t.friendlyName=e.readString(),e.readFlag()&&(t.enemyName=e.readString()),t.renderCenter=e.readFlag(),t.renderModulated=e.readFlag(),t.renderAlways=e.readFlag(),t.renderDistance=e.readFlag(),t.renderName=e.readFlag(),a.push(t)}return a.length>0&&(t.hudImages=a),t}function aE(e){let t={};e.readFlag()&&(t.crc=e.readU32()),t.shapeName=e.readString(),t.mountPoint=e.readU32(),e.readFlag()||(t.offset=e.readAffineTransform()),t.firstPerson=e.readFlag(),t.mass=e.readF32(),t.usesEnergy=e.readFlag(),t.minEnergy=e.readF32(),t.hasFlash=e.readFlag(),t.projectile=ab(e),t.muzzleFlash=ab(e),t.isSeeker=e.readFlag(),t.isSeeker&&(t.seekerRadius=e.readF32(),t.maxSeekAngle=e.readF32(),t.seekerLockTime=e.readF32(),t.seekerFreeTime=e.readF32(),t.isTargetLockRequired=e.readFlag(),t.maxLockRange=e.readF32()),t.cloakable=e.readFlag(),t.lightType=e.readRangedU32(0,3),0!==t.lightType&&(t.lightRadius=e.readF32(),t.lightTime=e.readS32(),t.lightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7),a:e.readFloat(7)}),t.shellExitDir={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.shellExitVariance=e.readF32(),t.shellVelocity=e.readF32(),t.casing=ab(e),t.accuFire=e.readFlag();let a=[];for(let t=0;t<31;t++){if(!e.readFlag())continue;let t={};t.name=e.readString(),t.transitionOnAmmo=e.readInt(5),t.transitionOnNoAmmo=e.readInt(5),t.transitionOnTarget=e.readInt(5),t.transitionOnNoTarget=e.readInt(5),t.transitionOnWet=e.readInt(5),t.transitionOnNotWet=e.readInt(5),t.transitionOnTriggerUp=e.readInt(5),t.transitionOnTriggerDown=e.readInt(5),t.transitionOnTimeout=e.readInt(5),t.transitionGeneric0In=e.readInt(5),t.transitionGeneric0Out=e.readInt(5),e.readFlag()&&(t.timeoutValue=e.readF32()),t.waitForTimeout=e.readFlag(),t.fire=e.readFlag(),t.ejectShell=e.readFlag(),t.scaleAnimation=e.readFlag(),t.direction=e.readFlag(),t.reload=e.readFlag(),e.readFlag()&&(t.energyDrain=e.readF32()),t.loaded=e.readInt(3),t.spin=e.readInt(3),t.recoil=e.readInt(3),e.readFlag()&&(t.sequence=e.readSignedInt(16)),e.readFlag()&&(t.sequenceVis=e.readSignedInt(16)),t.flashSequence=e.readFlag(),t.ignoreLoadedForReady=e.readFlag(),t.emitter=ab(e),null!==t.emitter&&(t.emitterTime=e.readF32(),t.emitterNode=e.readS32()),t.sound=ab(e),a.push(t)}return t.states=a,t}function aw(e){let t=aC(e);t.renderFirstPerson=e.readFlag(),t.minLookAngle=e.readF32(),t.maxLookAngle=e.readF32(),t.maxFreelookAngle=e.readF32(),t.maxTimeScale=e.readF32(),t.maxStepHeight=e.readF32(),t.runForce=e.readF32(),t.runEnergyDrain=e.readF32(),t.minRunEnergy=e.readF32(),t.maxForwardSpeed=e.readF32(),t.maxBackwardSpeed=e.readF32(),t.maxSideSpeed=e.readF32(),t.maxUnderwaterForwardSpeed=e.readF32(),t.maxUnderwaterBackwardSpeed=e.readF32(),t.maxUnderwaterSideSpeedRef=ab(e),e.readFlag()&&(t.runSurfaceAngleRef=e.readInt(11)),t.runSurfaceAngle=e.readF32(),t.recoverDelay=e.readF32(),t.recoverRunForceScale=e.readF32(),t.jumpForce=e.readF32(),t.jumpEnergyDrain=e.readF32(),t.minJumpEnergy=e.readF32(),t.minJumpSpeed=e.readF32(),t.maxJumpSpeed=e.readF32(),t.jumpSurfaceAngle=e.readF32(),t.minJetEnergy=e.readF32(),t.splashVelocity=e.readF32(),t.splashAngle=e.readF32(),t.splashFreqMod=e.readF32(),t.splashVelEpsilon=e.readF32(),t.bubbleEmitTime=e.readF32(),t.medSplashSoundVel=e.readF32(),t.hardSplashSoundVel=e.readF32(),t.exitSplashSoundVel=e.readF32(),t.jumpDelay=e.readInt(7),t.horizMaxSpeed=e.readF32(),t.horizResistSpeed=e.readF32(),t.horizResistFactor=e.readF32(),t.upMaxSpeed=e.readF32(),t.upResistSpeed=e.readF32(),t.upResistFactor=e.readF32(),t.jetEnergyDrain=e.readF32(),t.canJet=e.readF32(),t.maxJetHorizontalPercentage=e.readF32(),t.maxJetForwardSpeed=e.readF32(),t.jetForce=e.readF32(),t.minJetSpeed=e.readF32(),t.maxDamage=e.readF32(),t.minImpactDamageSpeed=e.readF32(),t.impactDamageScale=e.readF32(),t.footSplashHeight=e.readF32();let a=[];for(let t=0;t<32;t++)e.readFlag()?a.push(e.readInt(11)):a.push(null);t.sounds=a,t.boxSize={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.footPuffEmitter=ab(e),t.footPuffNumParts=e.readF32(),t.footPuffRadius=e.readF32(),t.decalData=ab(e),t.decalOffset=e.readF32(),t.dustEmitter=ab(e),t.splash=ab(e);let r=[];for(let t=0;t<3;t++)r.push(ab(e));return t.splashEmitters=r,t.groundImpactMinSpeed=e.readF32(),t.groundImpactShakeFreq={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.groundImpactShakeAmp={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.groundImpactShakeDuration=e.readF32(),t.groundImpactShakeFalloff=e.readF32(),t.boundingRadius=e.readF32(),t.moveBubbleSize=e.readF32(),t}function aM(e){let t=aC(e);t.bodyRestitution=e.readF32(),t.bodyFriction=e.readF32();let a=[];for(let t=0;t<2;t++)a.push(ab(e));t.impactSounds=a,t.minImpactSpeed=e.readF32(),t.softImpactSpeed=e.readF32(),t.hardImpactSpeed=e.readF32(),t.minRollSpeed=e.readF32(),t.maxSteeringAngle=e.readF32(),t.maxDrag=e.readF32(),t.minDrag=e.readF32(),t.cameraOffset=e.readF32(),t.cameraLag=e.readF32(),t.jetForce=e.readF32(),t.jetEnergyDrain=e.readF32(),t.minJetEnergy=e.readF32(),t.integration=e.readF32(),t.collisionTol=e.readF32(),t.massCenter=e.readF32(),t.exitSplashSoundVelocity=e.readF32(),t.softSplashSoundVelocity=e.readF32(),t.mediumSplashSoundVelocity=e.readF32(),t.hardSplashSoundVelocity=e.readF32();let r=[];for(let t=0;t<5;t++)r.push(ab(e));t.waterSounds=r,t.dustEmitter=ab(e);let n=[];for(let t=0;t<3;t++)n.push(ab(e));t.damageEmitters=n;let i=[];for(let t=0;t<2;t++)i.push(ab(e));return t.splashEmitters=i,t.damageEmitterOffset0={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.damageEmitterOffset1={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.damageLevelTolerance0=e.readF32(),t.damageLevelTolerance1=e.readF32(),t.splashFreqMod=e.readF32(),t.splashVelEpsilon=e.readF32(),t.collDamageThresholdVel=e.readF32(),t.collDamageMultiplier=e.readF32(),t}function aB(e){let t=aM(e);t.jetActivateSound=ab(e),t.jetDeactivateSound=ab(e);let a=[];for(let t=0;t<4;t++)a.push(ab(e));return t.jetEmitters=a,t.maneuveringForce=e.readF32(),t.horizontalSurfaceForce=e.readF32(),t.verticalSurfaceForce=e.readF32(),t.autoInputDamping=e.readF32(),t.steeringForce=e.readF32(),t.steeringRollForce=e.readF32(),t.rollForce=e.readF32(),t.autoAngularForce=e.readF32(),t.rotationalDrag=e.readF32(),t.maxAutoSpeed=e.readF32(),t.autoLinearForce=e.readF32(),t.hoverHeight=e.readF32(),t.createHoverHeight=e.readF32(),t.minTrailSpeed=e.readF32(),t.vertThrustMultiple=e.readF32(),t.maxForwardSpeed=e.readF32(),t}function aT(e){let t=aM(e);t.dragForce=e.readF32(),t.mainThrustForce=e.readF32(),t.reverseThrustForce=e.readF32(),t.strafeThrustForce=e.readF32(),t.turboFactor=e.readF32(),t.stabLenMin=e.readF32(),t.stabLenMax=e.readF32(),t.stabSpringConstant=e.readF32(),t.stabDampingConstant=e.readF32(),t.gyroDrag=e.readF32(),t.normalForce=e.readF32(),t.restorativeForce=e.readF32(),t.steeringForce=e.readF32(),t.rollForce=e.readF32(),t.pitchForce=e.readF32(),t.floatingThrustFactor=e.readF32(),t.brakingForce=e.readF32(),t.dustTrailOffset={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.dustTrailFreqMod=e.readF32(),t.triggerTrailHeight=e.readF32(),t.floatSound=ab(e),t.thrustSound=ab(e),t.turboSound=ab(e);let a=[];for(let t=0;t<3;t++)a.push(ab(e));return t.jetEmitters=a,t.dustTrailEmitter=ab(e),t.mainThrustEmitterFactor=e.readF32(),t.strafeThrustEmitterFactor=e.readF32(),t.reverseThrustEmitterFactor=e.readF32(),t}function aR(e){let t=aM(e);return t.tireRadius=e.readF32(),t.tireStaticFriction=e.readF32(),t.tireKineticFriction=e.readF32(),t.tireRestitution=e.readF32(),t.tireLateralForce=e.readF32(),t.tireLateralDamping=e.readF32(),t.tireLateralRelaxation=e.readF32(),t.tireLongitudinalForce=e.readF32(),t.tireLongitudinalDamping=e.readF32(),t.tireEmitter=ab(e),t.jetSound=ab(e),t.engineSound=ab(e),t.squealSound=ab(e),t.wadeSound=ab(e),t.spring=e.readF32(),t.springDamping=e.readF32(),t.springLength=e.readF32(),t.brakeTorque=e.readF32(),t.engineTorque=e.readF32(),t.engineBrake=e.readF32(),t.maxWheelSpeed=e.readF32(),t.steeringAngle=e.readF32(),t.steeringReturn=e.readF32(),t.steeringDamping=e.readF32(),t.powerSteeringFactor=e.readF32(),t}function aN(e){let t=aC(e);return t.noIndividualDamage=e.readFlag(),t.dynamicTypeField=e.readS32(),t}function aG(e){let t=aN(e);return t.thetaMin=e.readF32(),t.thetaMax=e.readF32(),t.thetaNull=e.readF32(),t.neverUpdateControl=e.readFlag(),t.primaryAxis=e.readRangedU32(0,3),t.maxCapacitorEnergy=e.readF32(),t.capacitorRechargeRate=e.readF32(),t}function aA(e){let t=aE(e);return t.activationMS=e.readInt(8),t.deactivateDelayMS=e.readInt(8),t.degPerSecTheta=e.readRangedU32(0,1080),t.degPerSecPhi=e.readRangedU32(0,1080),t.dontFireInsideDamageRadius=e.readFlag(),t.damageRadius=e.readF32(),t.useCapacitor=e.readFlag(),t}function aU(e){let t=aC(e);return t.friction=e.readFloat(10),t.elasticity=e.readFloat(10),t.sticky=e.readFlag(),e.readFlag()&&(t.gravityMod=e.readFloat(10)),e.readFlag()&&(t.maxVelocity=e.readF32()),e.readFlag()&&(t.lightType=e.readInt(2),t.lightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7),a:e.readFloat(7)},t.lightTime=e.readS32(),t.lightRadius=e.readF32(),t.lightOnlyStatic=e.readFlag()),t}function aj(e){let t={};t.projectileShapeName=e.readString(),t.faceViewerLinkTime=e.readS32(),t.lifetime=e.readS32(),t.faceViewer=e.readFlag(),e.readFlag()&&(t.scale={x:e.readF32(),y:e.readF32(),z:e.readF32()}),t.baseEmitter=ab(e),t.delayEmitter=ab(e),t.bubbleEmitter=ab(e),t.explosion=ab(e),t.underwaterExplosion=ab(e),t.splash=ab(e),t.sound=ab(e),t.wetFireSound=ab(e),t.fireSound=ab(e);let a=[];for(let t=0;t<6;t++)a.push(ab(e));return t.decals=a,e.readFlag()&&(t.lightRadius=e.readFloat(8),t.lightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7)}),e.readFlag()&&(t.underwaterLightColor={r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7)}),t.explodeOnWaterImpact=aI(e),t.depthTolerance=e.readF32(),t}function aO(e){let t=aj(e);return t.dryVelocity=e.readF32(),t.wetVelocity=e.readF32(),t.fizzleTime=e.readU32(),t.fizzleType=e.readU32(),t.hardRetarget=e.readFlag(),t.inheritedVelocityScale=e.readRangedU32(0,90),t.lifetimeMS=e.readRangedU32(0,90),t.collideWithOwnerTimeMS=e.readU32(),t.proximityRadius=e.readU32(),t.tracerProjectile=e.readFlag(),t}function az(e){let t=aj(e);return t.armingDelayMS=e.readS32(),t.muzzleVelocity=e.readF32(),t.grenadeElasticity=e.readF32(),t.grenadeFriction=e.readF32(),t.drag=e.readF32(),t.density=e.readF32(),t.gravityMod=e.readF32(),t.lifetimeMS=e.readS32(),t}function aL(e){let t=aj(e);return t.lifetimeMS=e.readS32(),t.muzzleVelocity=e.readF32(),t.turningSpeed=e.readF32(),t.proximityRadius=e.readF32(),t.terrainAvoidanceSpeed=e.readF32(),t.terrainScanAhead=e.readF32(),t.terrainHeightFail=e.readF32(),t.terrainAvoidanceRadius=e.readF32(),t.flareDistance=e.readF32(),t.flareAngle=e.readF32(),t.useFlechette=aI(e),t.maxVelocity=e.readF32(),t.acceleration=e.readF32(),t.flechetteDelayMs=e.readS32(),t.exhaustTimeMs=e.readS32(),t.exhaustNodeName=e.readString(),t.casingShapeName=e.readString(),t.casingDebris=ab(e),t.puffEmitter=ab(e),t.exhaustEmitter=ab(e),t}function aV(e){let t=aj(e);t.maxRifleRange=e.readF32(),t.rifleHeadMultiplier=e.readF32(),t.beamColor=ax(e),t.fadeTime=e.readF32(),t.startBeamWidth=e.readF32(),t.endBeamWidth=e.readF32(),t.pulseBeamWidth=e.readF32(),t.beamFlareAngle=e.readF32(),t.minFlareSize=e.readF32(),t.maxFlareSize=e.readF32(),t.pulseSpeed=e.readF32(),t.pulseLength=e.readF32(),t.lightColor=ax(e),t.lightRadius=e.readF32();let a=[];for(let t=0;t<12;t++)a.push(e.readString());return t.textures=a,t}function a_(e){let t=aj(e);t.zapDuration=e.readF32(),t.boltLength=e.readF32(),t.numParts=e.readF32(),t.lightningFreq=e.readF32(),t.lightningDensity=e.readF32(),t.lightningAmp=e.readF32(),t.lightningWidth=e.readF32(),t.shockwave=ab(e);let a=[],r=[],n=[],i=[];for(let t=0;t<2;t++)a.push(e.readF32()),r.push(e.readF32()),n.push(e.readF32()),i.push(e.readF32());t.startWidth=a,t.endWidth=r,t.boltSpeed=n,t.texWrap=i;let o=[];for(let t=0;t<4;t++)o.push(e.readString());return t.textures=o,t.emitter=ab(e),t}function aq(e){let t=aj(e);return t.beamRange=e.readF32(),t.beamDrainRate=e.readF32(),t.muzzleVelocity=e.readF32(),t.proximityRadius=e.readF32(),t.startWidth=e.readF32(),t.endWidth=e.readF32(),t.mainBeamTexture=e.readString(),t.innerBeamTexture=e.readString(),t.flareTexture=e.readString(),t.hitEmitter=ab(e),t}function a$(e){let t=aj(e);return t.beamRange=e.readF32(),t.beamRepairRate=e.readF32(),t.muzzleVelocity=e.readF32(),t.proximityRadius=e.readF32(),t.startWidth=e.readF32(),t.endWidth=e.readF32(),t.startBeamWidth=e.readF32(),t.endBeamWidth=e.readF32(),t.mainBeamTexture=e.readString(),t.innerBeamTexture=e.readString(),t}function aH(e){let t=aj(e);t.maxRifleRange=e.readF32(),t.beamColor=ax(e),t.startBeamWidth=e.readF32(),t.pulseBeamWidth=e.readF32(),t.beamFlareAngle=e.readF32(),t.minFlareSize=e.readF32(),t.maxFlareSize=e.readF32(),t.pulseSpeed=e.readF32(),t.pulseLength=e.readF32();let a=[];for(let t=0;t<4;t++)a.push(e.readString());return t.textures=a,t}function aW(e){let t=aO(e);return t.tracerLength=e.readF32(),t.tracerAlpha=e.readF32(),t.tracerMinPixels=e.readF32(),t.crossViewFraction=aI(e),t.tracerColor=ax(e),t.tracerWidth=e.readF32(),t.muzzleVelocity=e.readF32(),t.proximityRadius=aI(e),t.textureName0=e.readString(),t.textureName1=e.readString(),t}function aX(e){let t=az(e);return t.energyDrainPerSecond=e.readF32(),t.energyMinDrain=e.readF32(),t.beamWidth=e.readF32(),t.beamRange=e.readF32(),t.numSegments=e.readF32(),t.texRepeat=e.readF32(),t.beamFlareAngle=e.readF32(),t.beamTexture=e.readString(),t.flareTexture=e.readString(),t}function aZ(e){let t=aO(e);return t.numFlares=e.readF32(),t.flareColor=ax(e),t.flareTexture=e.readString(),t.smokeTexture=e.readString(),t.size=e.readF32(),t.flareModTexture=e.readF32(),t.smokeSize=e.readF32(),t}function aY(e){let t=az(e);return t.smokeDist=e.readF32(),t.noSmoke=e.readF32(),t.boomTime=e.readF32(),t.casingDist=e.readF32(),t.smokeCushion=e.readF32(),t.noSmokeCounter=e.readF32(),t.smokeTexture=e.readString(),t.bombTexture=e.readString(),t}function aJ(e){let t=az(e);return t.size=e.readF32(),t.useLensFlare=aI(e),t.flareTexture=e.readString(),t.lensFlareTexture=e.readString(),t}function aK(e){let t={};t.dtsFileName=e.readString(),t.soundProfile=ab(e),t.particleEmitter=ab(e),t.particleDensity=e.readInt(14),t.particleRadius=e.readF32(),t.faceViewer=e.readFlag(),e.readFlag()&&(t.explosionScale={x:e.readInt(16),y:e.readInt(16),z:e.readInt(16)}),t.playSpeed=e.readInt(14),t.debrisThetaMin=e.readRangedU32(0,180),t.debrisThetaMax=e.readRangedU32(0,180),t.debrisPhiMin=e.readRangedU32(0,360),t.debrisPhiMax=e.readRangedU32(0,360),t.debrisMinVelocity=e.readRangedU32(0,1e3),t.debrisMaxVelocity=e.readRangedU32(0,1e3),t.debrisNum=e.readInt(14),t.debrisVariance=e.readRangedU32(0,1e4),t.delayMS=e.readInt(16),t.delayVariance=e.readInt(16),t.lifetimeMS=e.readInt(16),t.lifetimeVariance=e.readInt(16),t.offset=e.readF32(),t.shakeCamera=e.readFlag(),t.hasLight=e.readFlag(),t.camShakeFreq={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.camShakeAmp={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.camShakeDuration=e.readF32(),t.camShakeRadius=e.readF32(),t.camShakeFalloff=e.readF32(),t.shockwave=ab(e),t.debris=ab(e);let a=[];for(let t=0;t<4;t++)a.push(ab(e));t.emitters=a;let r=[];for(let t=0;t<5;t++)r.push(ab(e));t.subExplosions=r;let n=e.readRangedU32(0,4),i=[];for(let t=0;t<n;t++)i.push(e.readFloat(8));t.times=i;let o=[];for(let t=0;t<n;t++)o.push({x:e.readRangedU32(0,16e3),y:e.readRangedU32(0,16e3),z:e.readRangedU32(0,16e3)});return t.sizes=o,t}function aQ(e){let t={};return t.elasticity=e.readF32(),t.friction=e.readF32(),t.numBounces=e.readS32(),t.bounceVariance=e.readS32(),t.minSpinSpeed=e.readF32(),t.maxSpinSpeed=e.readF32(),t.render2D=aI(e),t.explodeOnMaxBounce=aI(e),t.staticOnMaxBounce=aI(e),t.snapOnMaxBounce=aI(e),t.lifetime=e.readF32(),t.lifetimeVariance=e.readF32(),t.minSpinSpeed_dup=e.readF32(),t.maxSpinSpeed_dup=e.readF32(),t.velocity=e.readF32(),t.velocityVariance=e.readF32(),t.useRadiusMass=aI(e),t.fade=aI(e),t.baseRadius=e.readF32(),t.gravModifier=e.readF32(),t.terminalVelocity=e.readF32(),t.ignoreWater=aI(e),t.shapeFileName=e.readString(),t.skinName=e.readString(),t.emitter0=ab(e),t.emitter1=ab(e),t.explosion=ab(e),t}function a0(e){let t={};t.scale={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.delayMS=e.readS32(),t.delayVariance=e.readS32(),t.lifetimeMS=e.readS32(),t.lifetimeVariance=e.readS32(),t.width=e.readF32(),t.numSegments=e.readS32(),t.velocity=e.readF32(),t.height=e.readF32(),t.acceleration=e.readF32(),t.texWrap=e.readF32(),t.texFactor=e.readF32(),t.ejectionFreq=e.readF32(),t.ejectionAngle=e.readF32(),t.ringLifetime=e.readF32(),t.startRadius=e.readF32(),t.explosion=ab(e);let a=[];for(let t=0;t<3;t++)a.push(ab(e));t.emitters=a;let r=[];for(let t=0;t<4;t++)r.push(ax(e));t.colors=r;let n=[];for(let t=0;t<4;t++)n.push(e.readF32());return t.times=n,t.textureName=e.readString(),t.foamTexture=e.readString(),t}function a2(e){let t={};t.scale={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.delayMS=e.readS32(),t.delayVariance=e.readS32(),t.lifetimeMS=e.readS32(),t.lifetimeVariance=e.readS32(),t.width=e.readF32(),t.numSegments=e.readS32(),t.numVertSegments=e.readS32(),t.velocity=e.readF32(),t.height=e.readF32(),t.verticalCurve=e.readF32(),t.acceleration=e.readF32(),t.texWrap=e.readF32(),t.is2D=aI(e),t.orientToNormal=aI(e),t.mapToTerrain=aI(e),t.renderBottom=aI(e),t.renderSquare=aI(e);let a=[];for(let t=0;t<3;t++)a.push(ab(e));t.emitters=a;let r=[];for(let t=0;t<4;t++)r.push(ax(e));t.colors=r;let n=[];for(let t=0;t<4;t++)n.push(e.readF32());return t.times=n,t.textureName=e.readString(),t.mapToTexture=e.readString(),t}function a3(e){let t={};t.ejectionPeriodMS=e.readInt(10),t.periodVarianceMS=e.readInt(10),t.ejectionVelocity=e.readInt(16),t.velocityVariance=e.readInt(14),e.readFlag()&&(t.ejectionOffset=e.readInt(16)),t.thetaMin=e.readRangedU32(0,180),t.thetaMax=e.readRangedU32(0,180),e.readFlag()&&(t.phiReferenceVel=e.readRangedU32(0,360)),e.readFlag()&&(t.phiVariance=e.readRangedU32(0,360)),t.overrideAdvances=e.readFlag(),t.orientParticles=e.readFlag(),t.orientOnVelocity=e.readFlag(),t.lifetimeMS=e.readInt(10),t.lifetimeVarianceMS=e.readInt(10),t.useEmitterSizes=e.readFlag(),t.useEmitterColors=e.readFlag();let a=e.readU32(),r=[];for(let t=0;t<a&&t<16;t++)r.push(ab(e));return t.particles=r,t}function a1(e){let t={};t.dragCoefficient=e.readFloat(10),e.readFlag()&&(t.windCoefficient=e.readF32()),t.gravityCoefficient=e.readSignedFloat(12),t.inheritedVelFactor=e.readFloat(9),e.readFlag()&&(t.constantAcceleration=e.readF32()),t.lifetimeMS=e.readInt(10),t.lifetimeVarianceMS=e.readInt(10),e.readFlag()&&(t.spinSpeed=e.readF32()),e.readFlag()&&(t.spinRandomMin=e.readInt(11),t.spinRandomMax=e.readInt(11)),t.useInvAlpha=e.readFlag();let a=e.readInt(2)+1,r=[];for(let t=0;t<a;t++)r.push({r:e.readFloat(7),g:e.readFloat(7),b:e.readFloat(7),a:e.readFloat(7),size:e.readFloat(14),time:e.readFloat(8)});t.keys=r;let n=e.readInt(6),i=[];for(let t=0;t<n&&t<50;t++)i.push(e.readString());return t.textures=i,t}function a5(e){let t={};return t.volume=e.readFloat(6),t.isLooping=e.readFlag(),t.isLooping&&(t.loopCount=e.readS32(),t.minLoopGap=e.readS32(),t.maxLoopGap=e.readS32()),t.is3D=e.readFlag(),t.is3D&&(t.referenceDistance=e.readF32(),t.maxDistance=e.readF32(),t.coneInsideAngle=e.readInt(9),t.coneOutsideAngle=e.readInt(9),t.coneOutsideVolume=e.readFloat(6),t.coneVector=e.readNormalVector(8),t.environmentLevel=e.readF32()),t.type=e.readInt(3),t}function a6(e){let t={};return t.description=ab(e),t.environment=ab(e),t.sampleEnvironment=ab(e),t.filename=e.readString(),t}function a8(e){let t={};return t.useRoom=e.readFlag(),t.useRoom?t.room=e.readRangedU32(0,26):(t.roomHF=aP(e,-1e4,0),t.reflections=aP(e,-1e4,1e4),t.reverb=aP(e,-1e4,2e3),t.roomRolloffFactor=aD(e,.1,10,8),t.decayTime=aD(e,.1,20,8),t.decayHFRatio=aD(e,.1,20,8),t.reflectionsDelay=aD(e,0,.3,9),t.reverbDelay=aD(e,0,.1,7),t.roomVolume=aP(e,-1e4,0),t.effectVolume=aD(e,0,1,9),t.damping=aD(e,0,2,10),t.environmentSize=aD(e,1,100,8),t.environmentDiffusion=aD(e,0,1,10),t.flags=e.readInt(6)),t.effectVolumeHF=aD(e,0,1,8),t}function a4(e){let t={};return t.direct=aP(e,-1e4,1e3),t.directHF=aP(e,-1e4,0),t.room=aP(e,-1e4,1e3),t.roomHF=aP(e,-1e4,0),t.obstruction=aD(e,0,1,9),t.obstructionLFRatio=aD(e,0,1,8),t.occlusion=aD(e,0,1,9),t.occlusionLFRatio=aD(e,0,1,8),t.occlusionRoomRatio=aD(e,0,10,9),t.roomRolloff=aD(e,0,10,9),t.airAbsorption=aD(e,0,10,9),t.outsideVolumeHF=aP(e,-1e4,0),t.flags=e.readInt(3),t}function a7(e){return{sizeX:e.readF32(),sizeY:e.readF32(),textureName:e.readString()}}function a9(e){return aC(e)}function re(e){return{}}function rt(e){return{tickPeriodMS:e.readS32()}}function ra(e){let t={};return t.fadeMS=e.readS32(),t.baseTranslucency=e.readF32(),t.powerOffTranslucency=e.readF32(),t.fadeInOnly=e.readFlag(),t.triggerEnable=e.readFlag(),t.color1=ax(e),t.color2=ax(e),t.banRadius=e.readF32(),t.speed=e.readF32(),t.maxSpeed=e.readF32(),t.attackMS=e.readF32(),t.decayMS=e.readF32(),t.texture0=e.readString(),t.texture1=e.readString(),t.texture2=e.readString(),t.texture3=e.readString(),t.texture4=e.readString(),t}function rr(e){return{timeMultiple:e.readF32()}}function rn(e){let t=["baseImage","activeImage","inactiveImage","selectImage","hilightImage"],a={};for(let r=0;r<5;r++)a[t[r]]=e.readString();return a}function ri(e){let t={};return t.soundProfile=ab(e),t.numDrops=e.readS32(),t.maxSize=e.readF32(),t.materialList=e.readString(),t.sizeX=e.readF32(),t.sizeY=e.readF32(),t.movingBoxPer=e.readF32(),t.divHeightVal=e.readF32(),t.sizeBigBox=e.readF32(),t.topBoxSpeed=e.readF32(),t.frontBoxSpeed=e.readF32(),t.topBoxDrawPer=e.readF32(),t.bottomDrawHeight=e.readF32(),t.skipIfPer=e.readF32(),t.bottomSpeedPer=e.readF32(),t.frontSpeedPer=e.readF32(),t.frontRadiusPer=e.readF32(),t}function ro(e){return{emitter:ab(e)}}function rs(e){let t={},a=[];for(let t=0;t<8;t++)a.push(ab(e));t.strikeSounds=a;let r=[];for(let t=0;t<8;t++)r.push(e.readString());return t.strikeTextures=r,t.thunderSound=ab(e),t}function rl(e){let t={};t.glowTopHeight=e.readF32(),t.glowBottomHeight=e.readF32(),t.glowTopRadius=e.readF32(),t.glowBottomRadius=e.readF32(),t.numGlowSegments=e.readF32(),t.glowFadeTime=e.readF32(),t.armLightDelay=e.readF32(),t.armLightLifetime=e.readF32(),t.armLightFadeTime=e.readF32(),t.lifetime=e.readF32(),t.numArcSegments=e.readF32(),t.sphereColor=ax(e),t.spherePhiSegments=e.readF32(),t.sphereThetaSegments=e.readF32(),t.sphereRadius=e.readF32(),t.scale={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.glowTexture=e.readString();for(let a=0;a<4;a++)t[`padTexture${a}0`]=e.readString(),t[`padTexture${a}1`]=e.readString();return t.lightStartColor=e.readString(),t.lightEndColor=e.readString(),t}function rd(e){let t={};return t.glowTopRadius=e.readF32(),t.glowBottomRadius=e.readF32(),t.glowTopHeight=e.readF32(),t.glowBottomHeight=e.readF32(),t.numGlowSegments=e.readF32(),t.numGlowPanels=e.readF32(),t.topAlpha=e.readF32(),t.bottomAlpha=e.readF32(),t.glowSpeed=e.readF32(),t.scrollSpeed=e.readF32(),t.glowTexture=e.readString(),t.padTexture=e.readString(),t.lightStartColor=e.readString(),t.lightEndColor=e.readString(),t}function rc(e){return{chatText:e.readString()}}function ru(e){return aC(e)}function rh(e){return{}}function rg(e){return{}}function rp(e){let t={};t.shape=e.readString();let a=e.readInt(7),r=[];for(let t=0;t<a&&t<128;t++)r.push(e.readString());return t.sequences=r,t}function rm(e){let t={};return t.minDistance=e.readF32(),t.maxDistance=e.readF32(),t.audioScale=e.readF32(),t.directional=aI(e),t.effectName=e.readString(),t}function rf(e){let t={};return t.coolColor=ax(e),t.hotColor=ax(e),t.activateTime=e.readF32(),t.deactivateTime=e.readF32(),t.length=e.readF32(),t.width=e.readF32(),t.speed=e.readF32(),t.stretch=e.readF32(),t.yOffset=e.readF32(),e.readFlag()&&(t.texture=e.readString()),t}function rF(e){let t={};return t.radius=e.readF32(),t.color=ax(e),t.type=e.readF32(),t.length=e.readF32(),t.nodeName=e.readString(),t.direction={x:e.readF32(),y:e.readF32(),z:e.readF32()},t.offset={x:e.readF32(),y:e.readF32(),z:e.readF32()},e.readFlag()&&(t.texture=e.readString()),t}function rv(e){e.catalogDataBlock({name:"ShapeBaseData",unpackData:aC}),e.catalogDataBlock({name:"ShapeBaseImageData",unpackData:aE}),e.catalogDataBlock({name:"PlayerData",unpackData:aw}),e.catalogDataBlock({name:"VehicleData",unpackData:aM}),e.catalogDataBlock({name:"FlyingVehicleData",unpackData:aB}),e.catalogDataBlock({name:"HoverVehicleData",unpackData:aT}),e.catalogDataBlock({name:"WheeledVehicleData",unpackData:aR}),e.catalogDataBlock({name:"StaticShapeData",unpackData:aN}),e.catalogDataBlock({name:"TurretData",unpackData:aG}),e.catalogDataBlock({name:"TurretImageData",unpackData:aA}),e.catalogDataBlock({name:"ItemData",unpackData:aU}),e.catalogDataBlock({name:"ProjectileData",unpackData:aj}),e.catalogDataBlock({name:"LinearProjectileData",unpackData:aO}),e.catalogDataBlock({name:"GrenadeProjectileData",unpackData:az}),e.catalogDataBlock({name:"SeekerProjectileData",unpackData:aL}),e.catalogDataBlock({name:"SniperProjectileData",unpackData:aV}),e.catalogDataBlock({name:"ShockLanceProjectileData",unpackData:a_}),e.catalogDataBlock({name:"ELFProjectileData",unpackData:aq}),e.catalogDataBlock({name:"RepairProjectileData",unpackData:a$}),e.catalogDataBlock({name:"TargetProjectileData",unpackData:aH}),e.catalogDataBlock({name:"TracerProjectileData",unpackData:aW}),e.catalogDataBlock({name:"EnergyProjectileData",unpackData:aX}),e.catalogDataBlock({name:"LinearFlareProjectileData",unpackData:aZ}),e.catalogDataBlock({name:"BombProjectileData",unpackData:aY}),e.catalogDataBlock({name:"FlareProjectileData",unpackData:aJ}),e.catalogDataBlock({name:"ExplosionData",unpackData:aK}),e.catalogDataBlock({name:"DebrisData",unpackData:aQ}),e.catalogDataBlock({name:"SplashData",unpackData:a0}),e.catalogDataBlock({name:"ShockwaveData",unpackData:a2}),e.catalogDataBlock({name:"ParticleEmitterData",unpackData:a3}),e.catalogDataBlock({name:"ParticleData",unpackData:a1}),e.catalogDataBlock({name:"AudioDescription",unpackData:a5}),e.catalogDataBlock({name:"AudioProfile",unpackData:a6}),e.catalogDataBlock({name:"AudioEnvironment",unpackData:a8}),e.catalogDataBlock({name:"AudioSampleEnvironment",unpackData:a4}),e.catalogDataBlock({name:"DecalData",unpackData:a7}),e.catalogDataBlock({name:"CameraData",unpackData:a9}),e.catalogDataBlock({name:"SensorData",unpackData:re}),e.catalogDataBlock({name:"TriggerData",unpackData:rt}),e.catalogDataBlock({name:"ForceFieldBareData",unpackData:ra}),e.catalogDataBlock({name:"ParticleEmissionDummyData",unpackData:rr}),e.catalogDataBlock({name:"CommanderIconData",unpackData:rn}),e.catalogDataBlock({name:"PrecipitationData",unpackData:ri}),e.catalogDataBlock({name:"FireballAtmosphereData",unpackData:ro}),e.catalogDataBlock({name:"LightningData",unpackData:rs}),e.catalogDataBlock({name:"StationFXVehicleData",unpackData:rl}),e.catalogDataBlock({name:"StationFXPersonalData",unpackData:rd}),e.catalogDataBlock({name:"CannedChatItem",unpackData:rc}),e.catalogDataBlock({name:"MissionMarkerData",unpackData:ru}),e.catalogDataBlock({name:"GameBaseData",unpackData:rh}),e.catalogDataBlock({name:"SimDataBlock",unpackData:rg}),e.catalogDataBlock({name:"TSShapeConstructor",unpackData:rp}),e.catalogDataBlock({name:"EffectProfile",unpackData:rm}),e.catalogDataBlock({name:"JetEffectData",unpackData:rf}),e.catalogDataBlock({name:"RunningLightData",unpackData:rF})}let ry=(0,eY.default)("t2-demo-parser"),rS=(0,eY.default)("t2-demo-parser:initial"),rk=(0,eY.default)("t2-demo-parser:blocks");class rb{buffer;view;offset;registry;ghostTracker;packetParser;_loaded=!1;_header;_initialBlock;_decompressedData;_decompressedView;_blockStreamOffset=0;_blockCount;_blockCursor=0;constructor(e){this.buffer=e,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.offset=0,this.registry=new e8,this.ghostTracker=new e4,ak(this.registry),t2(this.registry),rv(this.registry);const{bound:t,missing:a}=this.registry.bindDeterministicDataBlocks(e2,128);a.length>0&&ry("DataBlock binding: %d/%d bound, missing parsers: %s",t,e2.length,a.join(", "));const{bound:r,missing:n}=this.registry.bindDeterministicGhosts(e3,0);n.length>0&&ry("Ghost binding: %d/%d bound, missing parsers: %s",r,e3.length,n.join(", "));const{bound:i,missing:o}=this.registry.bindDeterministicEvents(e1,255);o.length>0&&ry("Event binding: %d/%d bound, missing parsers: %s",i,e1.length,o.join(", ")),this.packetParser=new e6(this.registry,this.ghostTracker)}getRegistry(){return this.registry}getGhostTracker(){return this.ghostTracker}getPacketParser(){return this.packetParser}get loaded(){return this._loaded}get header(){if(!this._loaded)throw Error("must call load() first");return this._header}get initialBlock(){if(!this._loaded)throw Error("must call load() first");return this._initialBlock}get blockCount(){if(!this._loaded)throw Error("must call load() first");if(void 0===this._blockCount){let e=this._decompressedData,t=this._decompressedView,a=0,r=0;for(;r+2<=e.length;){let n=4095&t.getUint16(r,!0);if((r+=2+n)>e.length)break;a++}this._blockCount=a}return this._blockCount}get blockCursor(){if(!this._loaded)throw Error("must call load() first");return this._blockCursor}async load(){if(this._loaded)return{header:this._header,initialBlock:this._initialBlock};let e=this.readHeader();ry('header: "%s" version=0x%s length=%dms (%smin) initialBlockSize=%d',e.identString,e.protocolVersion.toString(16),e.demoLengthMs,(e.demoLengthMs/1e3/60).toFixed(1),e.initialBlockSize);let t=this.buffer.subarray(this.offset,this.offset+e.initialBlockSize),a=this.readInitialBlock(t);this.offset+=e.initialBlockSize;let r=this.buffer.subarray(this.offset);ry("compressed block stream: %d bytes",r.length);let n=await new Promise((e,t)=>{var a,n;a=(a,r)=>{a?t(a):e(r)},n||(n=a,a={}),"function"!=typeof n&&T(7),eo(r,a,[ee],function(e){return en(eI(e.data[0],ei(e.data[1])))},1,n)});return ry("decompressed block stream: %d bytes",n.length),this._decompressedData=n,this._decompressedView=new DataView(n.buffer,n.byteOffset,n.byteLength),this.setupPacketParser(a),this._header=e,this._initialBlock=a,this._blockStreamOffset=0,this._blockCursor=0,this._loaded=!0,{header:e,initialBlock:a}}nextBlock(){if(!this._loaded)throw Error("must call load() first");let e=this._decompressedData,t=this._decompressedView,a=this._blockStreamOffset;if(a+2>e.length)return;let r=t.getUint16(a,!0),n=r>>12,i=4095&r;if(a+2+i>e.length)return void rk("block %d: size %d would exceed decompressed data (offset=%d remaining=%d), stopping",this._blockCursor,i,a+2,e.length-a-2);let o=e.subarray(a+2,a+2+i);this._blockStreamOffset=a+2+i;let s={index:this._blockCursor,type:n,size:i,data:o};if(this._blockCursor++,0===n)try{s.parsed=this.packetParser.parsePacket(o)}catch{}else if(1===n)this.packetParser.onSendPacketTrigger();else if(2===n&&64===i)try{s.parsed=this.readRawMove(o)}catch{}else if(3===n&&8===i)try{s.parsed=this.readInfoBlock(o)}catch{}return s}reset(){if(!this._loaded)throw Error("must call load() first");this._blockStreamOffset=0,this._blockCursor=0,this._blockCount=void 0,this.setupPacketParser(this._initialBlock)}processBlocks(e){if(!this._loaded)throw Error("must call load() first");let t=0;for(let a=0;a<e&&this.nextBlock();a++)t++;return t}setupPacketParser(e){let t=new Map;for(let[a,r]of e.dataBlocks)t.set(a,r.data);let a=new e4;for(let t of e.initialGhosts){if("create"!==t.type||void 0===t.classId)continue;let e=this.registry.getGhostParser(t.classId);a.createGhost(t.index,t.classId,e?.name??`unknown_${t.classId}`)}let r=new e6(this.registry,a,{dataBlockDataMap:t,connectionProtocolState:e.connectionState,nextRecvEventSeq:e.nextRecvEventSeq});this.ghostTracker=a,this.packetParser=r}async parseFullDemo(){let e,{header:t,initialBlock:a}=await this.load(),r=[];for(;e=this.nextBlock();)r.push(e);return{header:t,initialBlock:a,blocks:r}}readHeader(){let e=this.view.getUint8(this.offset);this.offset+=1;let t=new TextDecoder("ascii").decode(this.buffer.subarray(this.offset,this.offset+e));this.offset+=e;let a=this.view.getUint32(this.offset,!0);this.offset+=4;let r=this.view.getUint32(this.offset,!0);this.offset+=4;let n=this.view.getUint32(this.offset,!0);return this.offset+=4,{identString:t,protocolVersion:a,demoLengthMs:r,initialBlockSize:n}}readInitialBlock(e){let t,a,r=new e0(e),n=new Map;for(let e=0;e<1024;e++)r.readFlag()&&n.set(e,r.readString());rS("after tagged strings bit=%d count=%d",r.getCurPos(),n.size);let i=r.readU32(),o=[],s=new Map,l=0;for(;r.readFlag();){if(l++,!r.readFlag())continue;let e=r.readInt(11),t=r.readInt(7)+128,a=r.readInt(11),n=r.readInt(12),i=r.getCurPos();o.push({objectId:e,classId:t,index:a,total:n,dataBitsStart:i});let d=this.registry.getDataBlockParser(t);if(d){let a=d.unpackData(r);s.set(e,{classId:t,className:d.name,objectId:e,data:a})}else{let e=t>=128&&t<128+e2.length?e2[t-128]:`unknown(${t})`;throw Error(`No parser for DataBlock classId ${t} (${e}) at bit ${i}`)}}ry("all %d/%d DataBlocks parsed (%d payloads), bit position after DataBlocks: %d",l,i,s.size,r.getCurPos());let d=r.readU8(),c=[];for(let e=0;e<6;e++)c.push(r.readU32());let u=[];for(let e=0;e<16;e++)u.push(r.readU32());let h=r.readU32(),g=[];for(let e=0;e<h;e++)g.push(this.readScoreEntry(r));rS("after score entries bit=%d scoreCount=%d",r.getCurPos(),h);let p=this.readDemoValues(r);rS("after demo values bit=%d demoValues=%d",r.getCurPos(),p.length);let{sensorGroupColors:m,targets:f}=this.readComplexTargetManager(r);rS("after complex target manager bit=%d targets=%d sensorGroupColors=%d",r.getCurPos(),f.length,m.length);let F=this.readConnectionProtocol(r);rS("after connection protocol bit=%d lastRecv=%d highestAck=%d lastSend=%d connected=%s",r.getCurPos(),F.lastSeqRecvd,F.highestAckedSeq,F.lastSendSeq,F.connectionEstablished);let v=r.readF32(),y=r.readF32();rS("after RTT/loss bit=%d rtt=%d loss=%d",r.getCurPos(),v,y);let S=this.readPathManager(r);rS("after path manager bit=%d entries=%d",r.getCurPos(),S.length);let k=r.readU32();rS("after notify count bit=%d notifyCount=%d",r.getCurPos(),k);let b=8*r.getBuffer().length,P=new e4,x=this.ghostTracker;this.ghostTracker=P;let I=[],D=0,C=0,E=[],w=-1,M="",B=0;try{rS("phase2 start bit=%d remaining=%d",r.getCurPos(),b-r.getCurPos()),({nextRecvEventSeq:D,events:I}=this.readEventStartBlock(r)),rS("after initial events bit=%d count=%d",r.getCurPos(),I.length);let e=this.readGhostStartBlock(r,s);if(C=e.ghostingSequence,E=e.ghosts,rS("after initial ghosts bit=%d count=%d seq=%d",r.getCurPos(),E.length,C),w=r.readS32(),rS("after control ghost index bit=%d control=%d",r.getCurPos(),w),-1!==w){let e=P.getGhost(w);if(e){let a=this.registry.getGhostParser(e.classId);a?.readPacketData&&(t=a.readPacketData(r,{compressionPoint:{x:0,y:0,z:0},ghostTracker:P}),rS("after control readPacketData bit=%d parser=%s",r.getCurPos(),a.name))}}M=r.readString(),B=r.readU32(),r.setCurPos(r.getCurPos()+7>>3<<3),this.readSimpleTargetManager(r),this.readSimpleTargetManager(r),rS('after sequential tail bit=%d mission="%s" CRC=0x%s',r.getCurPos(),M,B.toString(16))}catch(e){a=e instanceof Error?e.message:String(e)}finally{this.ghostTracker=x}let T=b-r.getCurPos(),R=M.length>0?M.split("").filter(e=>{let t=e.charCodeAt(0);return t>=32&&t<=126}).length/M.length:1,N=M.length>0&&R>=.8&&void 0===a;return ry('initial block: events=%d ghosts=%d ghostingSeq=%d controlObj=%d mission="%s" CRC=0x%s valid=%s%s',I.length,E.length,C,w,M,B.toString(16),N,a?` error=${a}`:""),{taggedStrings:n,dataBlockHeaders:o,dataBlockCount:l,dataBlocks:s,demoSetting:d,connectionFields:c,stateArray:u,scoreEntries:g,demoValues:p,sensorGroupColors:m,targetEntries:f,connectionState:F,roundTripTime:v,packetLoss:y,pathManager:S,notifyCount:k,nextRecvEventSeq:D,ghostingSequence:C,initialGhosts:E,initialEvents:I,controlObjectGhostIndex:w,controlObjectData:t,missionName:M,missionCRC:B,phase2TrailingBits:T,phase2Valid:N,phase2Error:a}}readScoreEntry(e){let t=e.readFlag()?e.readInt(16):0,a=e.readFlag()?e.readInt(16):0,r=e.readFlag()?e.readInt(16):0,n=e.readInt(6),i=e.readInt(6),o=e.readInt(6),s=e.readFlag(),l=[];for(let t=0;t<6;t++)l.push(e.readFlag());return{clientId:t,teamId:a,score:r,field0:n,field1:i,field2:o,isBot:s,triggerFlags:l}}readDemoValues(e){let t=[];for(;e.readFlag();)t.push(e.readString());return t}readComplexTargetManager(e){e.readU8(),e.readU8(),e.readU8(),e.readU8();let t=[];for(let a=0;a<32;a++)for(let r=0;r<32;r++)e.readFlag()&&t.push({group:a,targetGroup:r,r:e.readU8(),g:e.readU8(),b:e.readU8(),a:e.readU8()});let a=[];for(let t=0;t<512;t++){if(!e.readFlag())continue;let r={targetId:t,sensorGroup:0,targetData:0,damageLevel:0};e.readFlag()&&(r.sensorData=e.readU32()),e.readFlag()&&(r.voiceMapData=e.readU32()),e.readFlag()&&(r.name=e.readString()),e.readFlag()&&(r.skin=e.readString()),e.readFlag()&&(r.skinPref=e.readString()),e.readFlag()&&(r.voice=e.readString()),e.readFlag()&&(r.typeDescription=e.readString()),r.sensorGroup=e.readInt(5),r.targetData=e.readInt(9),t>=32&&e.readFlag()&&(r.dataBlockRef=e.readInt(11)),r.damageLevel=e.readFloat(7),a.push(r)}return{sensorGroupColors:t,targets:a}}readPathManager(e){let t=[],a=e.readU32();for(let r=0;r<a;r++){let a=e.readU32(),r=e.readU32(),n=[];for(let t=0;t<r;t++)n.push({field0:e.readU32(),field1:e.readU32(),field2:e.readU32(),auxField:e.readU32()});t.push({entryId:a,records:n})}return t}readSimpleTargetManager(e){e.readU8(),e.readU32(),e.readU32(),e.readU32(),e.readU32()}readConnectionProtocol(e){let t=[];for(let a=0;a<32;a++)t.push(e.readU32());let a=e.readU32(),r=e.readU32(),n=e.readU32(),i=e.readU32(),o=e.readU32();return{lastSeqRecvdAtSend:t,lastSeqRecvd:a,highestAckedSeq:r,lastSendSeq:n,ackMask:i,connectSequence:o,lastRecvAckAck:e.readU32(),connectionEstablished:e.readBool()}}readEventStartBlock(e){let t=e.readU32(),a=[];for(rS("event block: nextRecvEventSeq=%d bit=%d",t,e.getCurPos());e.readFlag();){let t,r=e.readInt(6)+255,n=e.getCurPos(),i=this.registry.getEventParser(r);if(i)try{let a={compressionPoint:{x:0,y:0,z:0},ghostTracker:this.ghostTracker,getDataBlockParser:e=>this.registry.getDataBlockParser(e)};t=i.unpack(e,a)}catch{a.push({classId:r,guaranteed:!0,dataBitsStart:n,dataBitsEnd:n});break}else{a.push({classId:r,guaranteed:!0,dataBitsStart:n,dataBitsEnd:n});break}a.push({classId:r,guaranteed:!0,dataBitsStart:n,dataBitsEnd:e.getCurPos(),parsedData:t}),rS(" event classId=%d bits=%d",r,e.getCurPos()-n)}return{nextRecvEventSeq:t,events:a}}readGhostStartBlock(e,t){let a=e.readU32(),r=[];rS("ghost block: seq=%d bit=%d",a,e.getCurPos());let n=this.registry.getGhostCatalog(),i=8*e.getBuffer().length,o=new Map;for(let[e,a]of t)o.set(e,a.data);for(;e.readFlag()&&!e.isError();){let a=e.readInt(10),s=e.readInt(7)+0,l=e.getCurPos(),d=[],c=new Set,{entry:u}=this.identifyGhostViaDataBlock(e,t,n),h=this.registry.getGhostParser(s);h&&(d.push({entry:h,method:"registry"}),c.add(h)),u&&!c.has(u)&&(d.push({entry:u,method:"datablock"}),c.add(u));let g={getDataBlockData:e=>o.get(e),getDataBlockParser:e=>this.registry.getDataBlockParser(e)},p=!1;for(let{entry:t,method:n}of d){let o="registry"===n,d=this.tryGhostParser(e,t,l,i,!1,g,o);if(!1!==d){this.ghostTracker.createGhost(a,s,t.name),rS(" ghost idx=%d classId=%d parser=%s bits=%d via=%s",a,s,t.name,e.getCurPos()-l,n),r.push({index:a,type:"create",classId:s,updateBitsStart:l,updateBitsEnd:e.getCurPos(),parsedData:d}),p=!0;break}}if(!p){rS(" ghost idx=%d classId=%d NO PARSER (stopping at bit=%d, remaining=%d)",a,s,l,i-l);break}}return rS("ghost loop ended at bit=%d remaining=%d count=%d",e.getCurPos(),i-e.getCurPos(),r.length),{ghostingSequence:a,ghosts:r}}tryGhostParser(e,t,a,r,n=!1,i,o=!1){let s=e.savePos();n||rS(" try %s: startBit=%d",t.name,a);try{let l=t.unpackUpdate(e,!0,{compressionPoint:{x:0,y:0,z:0},ghostTracker:this.ghostTracker,...i}),d=e.getCurPos()-a,c=r-e.getCurPos();if(e.isError()||!o&&d<3)return n||rS(" reject %s: bits=%d isError=%s",t.name,d,e.isError()),e.restorePos(s),!1;if(c>1e3){let a=e.getCurPos(),r=e.readFlag();if(e.setCurPos(a),!r)return n||rS(" reject %s: bits=%d misaligned (remaining=%d)",t.name,d,c),e.restorePos(s),!1}return l??{}}catch(a){return n||rS(" reject %s: error at bit=%d: %s",t.name,e.getCurPos(),a instanceof Error?a.message:String(a)),e.restorePos(s),!1}}identifyGhostViaDataBlock(e,t,a){let r;if(!t)return{entry:void 0,dbFlag:!1};let n=e.savePos(),i=!1;try{if(i=e.readFlag()){let n=e.readInt(11),i=t.get(n);if(i){let e=i.className.replace(/Data$/,"");(r=a.get(e))||rS(" identifyGhostViaDataBlock: dbId=%d className=%s ghostName=%s (no ghost parser)",n,i.className,e)}else rS(" identifyGhostViaDataBlock: dbId=%d (no DataBlock found)",n)}else rS(" identifyGhostViaDataBlock: DataBlock flag=0")}catch{}return e.restorePos(n),{entry:r,dbFlag:i}}readRawMove(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),a=t.getInt32(0,!0),r=t.getInt32(4,!0),n=t.getInt32(8,!0),i=t.getUint32(12,!0),o=t.getUint32(16,!0),s=t.getUint32(20,!0),l=t.getFloat32(24,!0),d=t.getFloat32(28,!0),c=t.getFloat32(32,!0),u=t.getFloat32(36,!0),h=t.getFloat32(40,!0),g=t.getFloat32(44,!0),p=t.getUint32(48,!0),m=t.getUint32(52,!0),f=0!==e[56],F=[];for(let t=0;t<6;t++)F.push(0!==e[57+t]);return{px:a,py:r,pz:n,pyaw:i,ppitch:o,proll:s,x:l,y:d,z:c,yaw:u,pitch:h,roll:g,id:p,sendCount:m,freeLook:f,trigger:F}}readInfoBlock(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength);return{value1:t.getUint32(0,!0),value2:t.getFloat32(4,!0)}}}function rP(){let e=new e8,t=new e4;ak(e),t2(e),rv(e),e.bindDeterministicDataBlocks(e2,128),e.bindDeterministicGhosts(e3,0),e.bindDeterministicEvents(e1,255);let a=new e6(e,t,{dataBlockDataMap:new Map});return{registry:e,ghostTracker:t,packetParser:a}}e.s(["DemoParser",()=>rb],58281),e.s(["createLiveParser",()=>rP],45853),e.s([],50593);var rx=e.i(90072);let rI=new Set(["FlyingVehicle","HoverVehicle","WheeledVehicle"]),rD=new Set(["BombProjectile","EnergyProjectile","FlareProjectile","GrenadeProjectile","LinearFlareProjectile","LinearProjectile","Projectile","SeekerProjectile","TracerProjectile"]),rC=new Set(["LinearProjectile","TracerProjectile","LinearFlareProjectile","Projectile"]),rE=new Set(["GrenadeProjectile","EnergyProjectile","FlareProjectile","BombProjectile"]),rw=new Set(["SeekerProjectile"]),rM=new Set(["StaticShape","ScopeAlwaysShape","Turret","BeaconObject","ForceFieldBare"]);function rB(e){return"Player"===e?"Player":rI.has(e)?"Vehicle":"Item"===e?"Item":rD.has(e)?"Projectile":rM.has(e)?"Deployable":"Ghost"}function rT(e,t){return`${e}_${t}`}let rR=Object.freeze({r:0,g:255,b:0}),rN=Object.freeze({r:255,g:0,b:0});e.s(["IFF_GREEN",0,rR,"IFF_RED",0,rN,"TICK_DURATION_MS",0,32,"ballisticProjectileClassNames",0,rE,"linearProjectileClassNames",0,rC,"projectileClassNames",0,rD,"seekerProjectileClassNames",0,rw,"toEntityId",()=>rT,"toEntityType",()=>rB],25311);let rG=new rx.Matrix4,rA=new rx.Quaternion;function rU(e,t,a){return e<t?t:e>a?a:e}let rj=.494*Math.PI;function rO(e,t){let a=Math.sin(t),r=Math.cos(t),n=Math.sin(e),i=Math.cos(e);return rG.set(-n,i*a,-i*r,0,0,r,a,0,i,n*a,-n*r,0,0,0,0,1),rA.setFromRotationMatrix(rG),[rA.x,rA.y,rA.z,rA.w]}function rz(e){let t=-e/2;return[0,Math.sin(t),0,Math.cos(t)]}function rL(e){if(!Number.isFinite(e.x)||!Number.isFinite(e.y)||!Number.isFinite(e.z)||!Number.isFinite(e.w))return null;let t=-e.y,a=-e.z,r=-e.x,n=e.w,i=t*t+a*a+r*r+n*n;if(i<=1e-12)return null;let o=1/Math.sqrt(i);return[t*o,a*o,r*o,n*o]}function rV(e){return null!=e&&Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(e.z)}function r_(e){return!!e&&"object"==typeof e&&"number"==typeof e.x&&"number"==typeof e.y&&"number"==typeof e.z}function rq(e){return!!e&&"object"==typeof e&&"number"==typeof e.x&&"number"==typeof e.y&&"number"==typeof e.z&&"number"==typeof e.w}function r$(e,t){let a;if(t)return"string"==typeof(a=rD.has(e)||e.endsWith("ProjectileData")?t.projectileShapeName:"DebrisData"===e?t.shapeFileName:t.shapeName)&&a.length>0?a:void 0}function rH(e,t){if(e)for(let a of t){let t=e[a];if("number"==typeof t&&Number.isFinite(t))return t}}function rW(e,t){if(e)for(let a of t){let t=e[a];if("string"==typeof t&&t.length>0)return t}}function rX(e,t){if(!t)return;let a=rW(t,["tracerTex0","textureName0","texture0"])??"";if(!("TracerProjectile"===e||a.length>0&&null!=rH(t,["tracerLength"]))||!a)return;let r=rW(t,["tracerTex1","textureName1","texture1"]),n=rH(t,["tracerLength"])??10,i=rH(t,["tracerWidth"]),o=rH(t,["tracerAlpha"]),s=null!=i&&(null!=rH(t,["crossViewAng"])||i<=.7)?i:o??i??.5,l=rH(t,["crossViewAng","crossViewFraction"])??("number"==typeof t.tracerWidth&&t.tracerWidth>.7?t.tracerWidth:.98);return{kind:"tracer",texture:a,crossTexture:r,tracerLength:n,tracerWidth:s,crossViewAng:l,crossSize:rH(t,["crossSize","muzzleVelocity"])??.45,renderCross:function(e,t){if(e)for(let a of t){let t=e[a];if("boolean"==typeof t)return t}}(t,["renderCross","proximityRadius"])??!0}}function rZ(e,t){if(t){if("LinearFlareProjectile"===e){let e=rW(t,["smokeTexture","flareTexture"]);if(!e)return;let a=t.flareColor,r=rH(t,["size"])??.5;return{kind:"sprite",texture:e,color:a?{r:a.r,g:a.g,b:a.b}:{r:1,g:1,b:1},size:r}}if("FlareProjectile"===e){let e=rW(t,["flareTexture"]);if(!e)return;return{kind:"sprite",texture:e,color:{r:1,g:.9,b:.5},size:rH(t,["size"])??4}}}}function rY(e){let t=e.states;if(Array.isArray(t)&&0!==t.length)return t.map(e=>{let t=e=>null==e?-1:e-1;return{name:e.name??"",transitionOnNotLoaded:t(e.transitionOnAmmo),transitionOnLoaded:t(e.transitionOnNoAmmo),transitionOnNoAmmo:t(e.transitionOnTarget),transitionOnAmmo:t(e.transitionOnNoTarget),transitionOnNoTarget:t(e.transitionOnWet),transitionOnTarget:t(e.transitionOnNotWet),transitionOnNotWet:t(e.transitionOnTriggerUp),transitionOnWet:t(e.transitionOnTriggerDown),transitionOnTriggerUp:t(e.transitionOnTimeout),transitionOnTriggerDown:t(e.transitionGeneric0In),transitionOnTimeout:t(e.transitionGeneric0Out),timeoutValue:e.timeoutValue,waitForTimeout:e.waitForTimeout??!1,fire:e.fire??!1,sequence:e.sequence,spin:e.spin??0,direction:e.direction??!0,scaleAnimation:e.scaleAnimation??!1,loaded:e.loaded??0,soundDataBlockId:e.sound??-1}})}function rJ(e){let t="";for(let a=0;a<e.length;a++)e.charCodeAt(a)>=32&&(t+=e[a]);return t}let rK={2:0,3:1,4:2,5:3,6:4,7:5,8:6,11:7,12:8,14:9};function rQ(e){for(let t=0;t<e.length;t++){let a=e.charCodeAt(t),r=rK[a];if(void 0!==r)return r;if(a>=32)break}}function r0(e){let t=[],a=0,r="",n=!1;for(let i=0;i<e.length;i++){let o=e.charCodeAt(i);if(16===o){n=!0;continue}if(17===o){n=!1;continue}if(n){o>=32&&(r+=e[i]);continue}let s=rK[o];void 0!==s?(r&&(t.push({text:r,colorCode:a}),r=""),a=s):15===o?(r&&(t.push({text:r,colorCode:a}),r=""),a=0):o>=32&&(r+=e[i])}return r&&t.push({text:r,colorCode:a}),t}function r2(e){let t=e.indexOf("~w");return -1===t?{text:e,wavPath:null}:{text:e.substring(0,t),wavPath:e.substring(t+2)}}function r3(e){return e?"number"==typeof e.cameraMode?"camera":"number"==typeof e.rotationZ?"player":null:null}let r1=new Map([["gui/hud_new_packammo",0],["gui/hud_new_packcloak",1],["gui/hud_new_packenergy",2],["gui/hud_new_packrepair",3],["gui/hud_new_packsatchel",4],["gui/hud_new_packshield",5],["gui/hud_new_packinventory",6],["gui/hud_new_packmotionsens",7],["gui/hud_new_packradar",8],["gui/hud_new_packturretout",9],["gui/hud_new_packturretin",10],["gui/hud_new_packsensjam",11],["gui/hud_new_packturret",12],["gui/hud_satchel_unarmed",18]]);function r5(e){let t=e.toLowerCase();for(let[e,a]of r1)if(e===t)return a;return -1}e.s(["CameraMode_OrbitObject",0,3,"MAX_PITCH",0,rj,"backpackBitmapToIndex",()=>r5,"clamp",()=>rU,"detectColorCode",()=>rQ,"detectControlObjectType",()=>r3,"extractWavTag",()=>r2,"getNumberField",()=>rH,"isQuatLike",()=>rq,"isValidPosition",()=>rV,"isVec3Like",()=>r_,"parseColorSegments",()=>r0,"parseWeaponImageStates",()=>rY,"playerYawToQuaternion",()=>rz,"resolveShapeName",()=>r$,"resolveSpriteVisual",()=>rZ,"resolveTracerVisual",()=>rX,"stripTaggedStringMarkup",()=>rJ,"torqueQuatToThreeJS",()=>rL,"yawPitchToQuaternion",()=>rO],89119),e.i(70847);var r6=e.i(47566),r8=e.i(8328);class r4{registry;ghostTracker;entities=new Map;entityIdByGhostIndex=new Map;tickCount=0;camera=null;chatMessages=[];audioEvents=[];netStrings=new Map;targetNames=new Map;targetTeams=new Map;targetRenderFlags=new Map;pendingNameTags=new Map;sensorGroupColors=new Map;playerSensorGroup=0;lastStatus={health:1,energy:1};latestControl={ghostIndex:-1};controlPlayerGhostId;lastControlType="camera";isPiloting=!1;lastCameraMode;lastOrbitGhostIndex;lastOrbitDistance;latestFov=90;weaponsHud={slots:new Map,activeIndex:-1};backpackHud={packIndex:-1,active:!1,text:""};inventoryHud={slots:new Map,activeSlot:-1};teamScores=[];playerRoster=new Map;nextExplosionId=0;resolveGhostClassName(e,t){if("number"==typeof t){let e=this.registry.getGhostParser(t)?.name;if(e)return e}let a=this.entityIdByGhostIndex.get(e);if(a){let e=this.entities.get(a);if(e?.className)return e.className}let r=this.ghostTracker.getGhost(e);if(r?.className)return r.className}resolveEntityIdForGhostIndex(e){let t=this.entityIdByGhostIndex.get(e);if(t)return t;let a=this.ghostTracker.getGhost(e);if(a)return rT(a.className,e)}resetSharedState(){this.entities.clear(),this.entityIdByGhostIndex.clear(),this.tickCount=0,this.camera=null,this.chatMessages=[],this.audioEvents=[],this.netStrings.clear(),this.targetNames.clear(),this.targetTeams.clear(),this.targetRenderFlags.clear(),this.sensorGroupColors.clear(),this.playerSensorGroup=0,this.lastStatus={health:1,energy:1},this.latestControl={ghostIndex:-1},this.controlPlayerGhostId=void 0,this.lastControlType="camera",this.isPiloting=!1,this.lastCameraMode=void 0,this.lastOrbitGhostIndex=void 0,this.lastOrbitDistance=void 0,this.latestFov=90,this.weaponsHud={slots:new Map,activeIndex:-1},this.backpackHud={packIndex:-1,active:!1,text:""},this.inventoryHud={slots:new Map,activeSlot:-1},this.teamScores=[],this.playerRoster.clear(),this.nextExplosionId=0}resolveNetString(e){if(e.length>=2&&1===e.charCodeAt(0)){let t=parseInt(e.slice(1),10);if(Number.isFinite(t))return this.netStrings.get(t)??e}return e}formatRemoteArgs(e,t){let a=this.resolveNetString(e);for(let e=0;e<t.length;e++){let r=`%${e+1}`;a.includes(r)&&(a=a.replaceAll(r,rJ(this.resolveNetString(t[e]))))}return rJ(a=a.replace(/%\d+/g,""))}processControlObject(e){let t=e.controlObjectData,a=this.latestControl,r="number"==typeof e.controlObjectGhostIndex?e.controlObjectGhostIndex:a.ghostIndex,n=e.compressionPoint,i=rV(t?.position)?t?.position:rV(n)?n:a.position;if(this.latestControl={ghostIndex:r,data:t,position:i},r!==a.ghostIndex){let e=this.entityIdByGhostIndex.get(r),t=e?this.entities.get(e):void 0;t?.sensorGroup!=null&&t.sensorGroup>0&&(this.playerSensorGroup=t.sensorGroup)}if(t){let e=r3(t);if(e&&(this.lastControlType=e),"player"===this.lastControlType)this.isPiloting=!!(t.pilot||null!=t.controlObjectGhost);else if(this.isPiloting=!1,"number"==typeof t.cameraMode)if(this.lastCameraMode=t.cameraMode,3===t.cameraMode){"number"==typeof t.orbitObjectGhostIndex&&(this.lastOrbitGhostIndex=t.orbitObjectGhostIndex);let e=t.minOrbitDist,a=t.maxOrbitDist,r=t.curOrbitDist;"number"==typeof e&&"number"==typeof a&&Number.isFinite(e)&&Number.isFinite(a)?this.lastOrbitDistance=Math.max(0,a-e):"number"==typeof r&&Number.isFinite(r)&&(this.lastOrbitDistance=Math.max(0,r))}else this.lastOrbitGhostIndex=void 0,this.lastOrbitDistance=void 0}void 0!==e.cameraFov&&(this.latestFov=e.cameraFov)}processEvent(e,t){let a=e.parsedData;if(!a)return;let r=a.type;if("GhostAlwaysObjectEvent"===r){let e=a.ghostIndex,t=a.classId,r=a.objectData;null!=e&&null!=t&&this.processGhostUpdate({index:e,type:"create",classId:t,parsedData:r});return}if("NetStringEvent"===r||"NetStringEvent"===t){let e=a.id,t=a.value;if(null!=e&&"string"==typeof t){this.netStrings.set(e,t);let a=this.pendingNameTags.get(e);if(null!=a){this.pendingNameTags.delete(e);let r=rJ(t);for(let e of(this.targetNames.set(a,r),this.entities.values()))e.targetId===a&&(e.playerName=r)}}return}if("TargetInfoEvent"===r||"TargetInfoEvent"===t){let e=a.targetId,t=a.nameTag;if(null!=e&&null!=t){let a=this.netStrings.get(t);a?this.targetNames.set(e,rJ(a)):this.pendingNameTags.set(t,e)}let r=a.sensorGroup;null!=e&&null!=r&&this.targetTeams.set(e,r);let n=a.renderFlags;if(null!=e&&null!=n&&this.targetRenderFlags.set(e,n),null!=e){let t=this.targetNames.get(e),a=this.targetTeams.get(e),r=this.targetRenderFlags.get(e);for(let n of this.entities.values())n.targetId===e&&(t&&(n.playerName=t),null!=a&&(n.sensorGroup=a),null!=r&&(n.targetRenderFlags=r))}return}if("SetSensorGroupEvent"===r||"SetSensorGroupEvent"===t){let e=a.sensorGroup;null!=e&&(this.playerSensorGroup=e);return}if("SensorGroupColorEvent"===r||"SensorGroupColorEvent"===t){let e=a.sensorGroup,t=a.colors;if(t){let a=this.sensorGroupColors.get(e);for(let r of(a||(a=new Map,this.sensorGroupColors.set(e,a)),t))r.default?a.delete(r.index):a.set(r.index,{r:r.r??0,g:r.g??0,b:r.b??0})}return}if("RemoteCommandEvent"===r||"RemoteCommandEvent"===t){let e=this.resolveNetString(a.funcName),t=a.args,r=this.getTimeSec();if("ChatMessage"===e&&t.length>=4){let e=rQ(this.resolveNetString(t[3])),a=t[4]?rJ(this.resolveNetString(t[4])):"",n=this.formatRemoteArgs(t[3],t.slice(4));if(n){let i,o,s=n.indexOf(": "),{text:l,wavPath:d}=r2(s>=0?n.slice(s+2):n);if(d){let e=this.resolveNetString(t[1]);i=e?`voice/${e}/${d}.wav`:d;let a=this.resolveNetString(t[2]);if(a){let e=parseFloat(a);Number.isFinite(e)&&(o=Math.max(.5,Math.min(2,e)))}}let c=e??0;this.pushChatMessage({timeSec:r,sender:a,text:l,kind:"chat",colorCode:c,segments:[{text:a?`${a}: ${l}`:l,colorCode:c}],soundPath:i,soundPitch:o})}}else if("CannedChatMessage"===e&&t.length>=6){let e=rQ(this.resolveNetString(t[1])),a=rJ(this.resolveNetString(t[2])),n=rJ(this.resolveNetString(t[4])),i=this.formatRemoteArgs(t[1],t.slice(2));if(i){let o,s,{wavPath:l}=r2(i),d=r2(rJ(this.resolveNetString(t[3]))).text;if(l){let e=this.resolveNetString(t[5]);if(o=e?`voice/${e}/${l}.wav`:l,t[6]){let e=parseFloat(this.resolveNetString(t[6]));Number.isFinite(e)&&(s=Math.max(.5,Math.min(2,e)))}}let c=e??0,u=[];n&&u.push({text:`[${n}] `,colorCode:0}),u.push({text:a?`${a}: ${d}`:d,colorCode:c}),this.pushChatMessage({timeSec:r,sender:a,text:d,kind:"chat",colorCode:c,segments:u,soundPath:o,soundPitch:s})}}else if("ServerMessage"===e&&t.length>=2){this.handleServerMessage(t);let e=rQ(this.resolveNetString(t[1])),a=this.formatRemoteArgs(t[1],t.slice(2));if(a){let{text:t,wavPath:n}=r2(a),i=e??0;this.pushChatMessage({timeSec:r,sender:"",text:t,kind:"server",colorCode:i,segments:[{text:t,colorCode:i}],soundPath:n??void 0})}}else this.handleHudRemoteCommand(e,t);return}if("Sim3DAudioEvent"===r||"Sim2DAudioEvent"===r||"Sim3DAudioEvent"===t||"Sim2DAudioEvent"===t){let e=a.profileId;if("number"==typeof e){let n=this.getTimeSec(),i="Sim3DAudioEvent"===r||"Sim3DAudioEvent"===t?a.position:void 0;this.audioEvents.push({profileId:e,position:i,timeSec:n}),this.audioEvents.length>100&&this.audioEvents.splice(0,this.audioEvents.length-100)}}}processGhostUpdate(e){let t,a=e.index,r=this.entityIdByGhostIndex.get(a);if(r){let t=this.entities.get(r);t&&"Projectile"===t.type&&!t.hasExploded&&null!=t.explosionDataBlockId&&t.position&&("delete"===e.type||"create"===e.type)&&this.spawnExplosion(t,[...t.position])}if("delete"===e.type){r&&(this.removeSoundSlotEntities(r),this.entities.delete(r),this.entityIdByGhostIndex.delete(a));return}let n=this.resolveGhostClassName(a,e.classId);if(!n){if("create"===e.type)throw Error(`No ghost parser for classId ${e.classId} (ghost index ${a})`);return}let i=rT(n,a);r&&r!==i&&(this.removeSoundSlotEntities(r),this.entities.delete(r));let o=this.entities.get(i);if(o&&"create"===e.type?(this.removeSoundSlotEntities(i),o.spawnTick=this.tickCount,this.resetEntity(o),t=o):o?t=o:(t={id:i,ghostIndex:a,className:n,spawnTick:this.tickCount,type:rB(n),rotation:[0,0,0,1]},this.entities.set(i,t)),t.ghostIndex=a,t.className=n,t.type=rB(n),this.entityIdByGhostIndex.set(a,i),this.applyGhostData(t,e.parsedData),"create"===e.type&&e.parsedData){let r=(0,r6.ghostToSceneObject)(n,a,e.parsedData);r&&(t.sceneData=r)}}resetEntity(e){e.rotation=[0,0,0,1],e.hasExploded=void 0,e.explosionShape=void 0,e.explosionLifetimeTicks=void 0,e.faceViewer=void 0,e.simulatedVelocity=void 0,e.projectilePhysics=void 0,e.gravityMod=void 0,e.direction=void 0,e.velocity=void 0,e.position=void 0,e.dataBlock=void 0,e.dataBlockId=void 0,e.shapeHint=void 0,e.visual=void 0,e.targetId=void 0,e.targetRenderFlags=void 0,e.carryingFlag=void 0,e.sensorGroup=void 0,e.playerName=void 0,e.weaponShape=void 0,e.weaponImageState=void 0,e.weaponImageStates=void 0,e.weaponImageStatesDbId=void 0,e.itemPhysics=void 0,e.threads=void 0,e.headPitch=void 0,e.headYaw=void 0,e.health=void 0,e.energy=void 0,e.maxEnergy=void 0,e.damageState=void 0,e.actionAnim=void 0,e.actionAtEnd=void 0,e.explosionDataBlockId=void 0,e.maintainEmitterId=void 0}applyGhostData(e,t){if(!t)return;let a=t.dataBlockId;if(null!=a){e.dataBlockId=a;let t=this.getDataBlockData(a),r=r$(e.className,t);if(e.visual=rX(e.className,t)??rZ(e.className,t),"string"==typeof r&&(e.shapeHint=r,e.dataBlock=r),"Player"===e.type&&"number"==typeof t?.maxEnergy&&(e.maxEnergy=t.maxEnergy),"Projectile"===e.type&&(rC.has(e.className)?e.projectilePhysics="linear":rE.has(e.className)?(e.projectilePhysics="ballistic",e.gravityMod=rH(t,["gravityMod"])??1):rw.has(e.className)&&(e.projectilePhysics="seeker")),"Projectile"===e.type&&null==e.explosionDataBlockId){let t=this.resolveExplosionInfo(a);t&&(e.explosionShape=t.shape,e.faceViewer=t.faceViewer,e.explosionLifetimeTicks=t.lifetimeTicks,e.explosionDataBlockId=t.explosionDataBlockId)}if("Projectile"===e.type&&null==e.maintainEmitterId){let a=t?.baseEmitter;"number"==typeof a&&a>0&&(e.maintainEmitterId=a)}}if("Player"===e.type){let a=t.images;if(Array.isArray(a)&&a.length>0){let t=a.find(e=>0===e.index);if(t?.dataBlockId&&t.dataBlockId>0){let a=this.getDataBlockData(t.dataBlockId),r=r$("ShapeBaseImageData",a);if(r){let t=a?.mountPoint;(null==t||t<=0)&&!/pack_/i.test(r)&&(e.weaponShape=r)}let n=e.weaponImageState;e.weaponImageState={dataBlockId:t.dataBlockId,triggerDown:t.triggerDown??n?.triggerDown??!1,ammo:t.ammo??n?.ammo??!0,loaded:t.loaded??n?.loaded??!0,target:t.target??n?.target??!1,wet:t.wet??n?.wet??!1,fireCount:t.fireCount??n?.fireCount??0},a&&e.weaponImageStatesDbId!==t.dataBlockId&&(e.weaponImageStates=rY(a),e.weaponImageStatesDbId=t.dataBlockId)}else t&&!t.dataBlockId&&(e.weaponShape=void 0,e.weaponImageState=void 0,e.weaponImageStates=void 0);let r=a.find(e=>3===e.index);if(r){let t=!!r.dataBlockId&&r.dataBlockId>0;if(e.carryingFlag=t,null!=e.targetId&&e.targetId>=0){let a=this.targetRenderFlags.get(e.targetId)??0,r=t?2|a:-3&a;r!==a&&(this.targetRenderFlags.set(e.targetId,r),e.targetRenderFlags=r)}}}}let r=rV(t.position)?t.position:rV(t.initialPosition)?t.initialPosition:rV(t.explodePosition)?t.explodePosition:rV(t.endPoint)?t.endPoint:rV(t.transform?.position)?t.transform.position:void 0;r&&(e.position=[r.x,r.y,r.z],this.updateSoundSlotPositions(e));let n=r_(t.direction)?t.direction:void 0;if(n&&(e.direction=[n.x,n.y,n.z]),"Player"===e.type&&"number"==typeof t.rotationZ&&(e.rotation=rz(t.rotationZ)),"Player"===e.type&&("number"==typeof t.headX&&(e.headPitch=t.headX),"number"==typeof t.headZ&&(e.headYaw=t.headZ)),rq(t.angPosition)){let a=rL(t.angPosition);a&&(e.rotation=a)}else if(rq(t.transform?.rotation)){let a=rL(t.transform.rotation);a&&(e.rotation=a)}else if("Item"===e.type&&"number"==typeof t.rotation?.angle){let a=t.rotation;e.rotation=rz((a.zSign??1)*a.angle)}else if("Projectile"===e.type){let a=t.velocity??t.direction??(rV(t.initialPosition)&&rV(t.endPos)?{x:t.endPos.x-t.initialPosition.x,y:t.endPos.y-t.initialPosition.y,z:t.endPos.z-t.initialPosition.z}:void 0);r_(a)&&(0!==a.x||0!==a.y)&&(e.rotation=rz(Math.atan2(a.x,a.y)))}if(r_(t.velocity)&&(e.velocity=[t.velocity.x,t.velocity.y,t.velocity.z],e.direction||(e.direction=[t.velocity.x,t.velocity.y,t.velocity.z])),"Item"===e.type){let a=t.atRest;if(!1===a&&r_(t.velocity)){let a=null!=e.dataBlockId?this.getDataBlockData(e.dataBlockId):void 0;e.itemPhysics={velocity:[t.velocity.x,t.velocity.y,t.velocity.z],atRest:!1,elasticity:rH(a,["elasticity"])??.2,friction:rH(a,["friction"])??.6,gravityMod:rH(a,["gravityMod"])??1}}else!0===a&&(e.itemPhysics=void 0)}if(e.projectilePhysics){if("linear"===e.projectilePhysics){let a=rH(null!=e.dataBlockId?this.getDataBlockData(e.dataBlockId):void 0,["dryVelocity","muzzleVelocity","bulletVelocity"])??80,r=e.direction??[0,1,0],n=r[0]*a,i=r[1]*a,o=r[2]*a,s=t.excessVel,l=t.excessDir;"number"==typeof s&&s>0&&r_(l)&&(n+=l.x*s,i+=l.y*s,o+=l.z*s),e.simulatedVelocity=[n,i,o]}else r_(t.velocity)&&(e.simulatedVelocity=[t.velocity.x,t.velocity.y,t.velocity.z]);let a=t.currTick;if("number"==typeof a&&a>0&&e.simulatedVelocity&&e.position){let t=.032*a,r=e.simulatedVelocity;if(e.position[0]+=r[0]*t,e.position[1]+=r[1]*t,e.position[2]+=r[2]*t,"ballistic"===e.projectilePhysics){let a=-9.81*(e.gravityMod??1);e.position[2]+=.5*a*t*t,r[2]+=a*t}}}let i=rV(t.explodePosition)?t.explodePosition:rV(t.explodePoint)?t.explodePoint:void 0;if("Projectile"===e.type&&!e.hasExploded&&i&&null!=e.explosionDataBlockId&&this.spawnExplosion(e,[i.x,i.y,i.z]),"number"==typeof t.damageLevel&&(e.health=rU(1-t.damageLevel,0,1)),"number"==typeof t.damageState&&(e.damageState=t.damageState),"number"==typeof t.action&&(e.actionAnim=t.action,e.actionAtEnd=!!t.actionAtEnd),Array.isArray(t.threads)){let a=t.threads;if(e.threads){let t=[...e.threads];for(let e of a){let a=t.findIndex(t=>t.index===e.index);a>=0?t[a]=e:t.push(e)}e.threads=t}else e.threads=a}if("number"==typeof t.energy&&(e.energy=rU(t.energy,0,1)),"number"==typeof t.targetId){e.targetId=t.targetId;let a=this.targetNames.get(t.targetId);a&&(e.playerName=a);let r=this.targetTeams.get(t.targetId);null!=r&&(e.sensorGroup=r,e.ghostIndex===this.latestControl.ghostIndex&&"player"===this.lastControlType&&(this.playerSensorGroup=r));let n=this.targetRenderFlags.get(t.targetId);null!=n&&(e.targetRenderFlags=n)}let o=t.sounds;Array.isArray(o)&&this.syncSoundSlotEntities(e,o),"WayPoint"===e.className&&"string"==typeof t.name&&(e.label=t.name),"AudioEmitter"===e.className&&("string"==typeof t.filename&&(e.audioFileName=t.filename),"number"==typeof t.volume&&(e.audioVolume=t.volume),"boolean"==typeof t.is3D&&(e.audioIs3D=t.is3D),"boolean"==typeof t.isLooping&&(e.audioIsLooping=t.isLooping),"number"==typeof t.minDistance&&(e.audioMinDistance=t.minDistance),"number"==typeof t.maxDistance&&(e.audioMaxDistance=t.maxDistance),"number"==typeof t.minLoopGap&&(e.audioMinLoopGap=t.minLoopGap),"number"==typeof t.maxLoopGap&&(e.audioMaxLoopGap=t.maxLoopGap))}syncSoundSlotEntities(e,t){for(let a of t){let t=`${e.id}:sound:${a.index}`;if(a.playing&&"number"==typeof a.profileId){let r=this.getDataBlockData(a.profileId),n=r?.filename;if(!n)continue;let i=n.endsWith(".wav")?n:`${n}.wav`,o=r.description,s=null!=o?this.getDataBlockData(o):void 0,l=this.entities.get(t);l?l.position=e.position:this.entities.set(t,{id:t,ghostIndex:e.ghostIndex,className:"AudioEmitter",type:"AudioEmitter",spawnTick:this.tickCount,position:e.position,rotation:[0,0,0,1],audioFileName:i,audioVolume:s?.volume??1,audioIs3D:s?.is3D??!0,audioIsLooping:s?.isLooping??!1,audioMinDistance:s?.referenceDistance??20,audioMaxDistance:s?.maxDistance??100,audioMinLoopGap:s?.minLoopGap??0,audioMaxLoopGap:s?.maxLoopGap??0})}else this.entities.delete(t)}}updateSoundSlotPositions(e){for(let t=0;t<4;t++){let a=this.entities.get(`${e.id}:sound:${t}`);a&&(a.position=e.position)}}removeSoundSlotEntities(e){for(let t=0;t<4;t++)this.entities.delete(`${e}:sound:${t}`)}resolveExplosionInfo(e){let t=this.getDataBlockData(e);if(!t)return;let a=t.explosion;if(null==a)return;let r=this.getDataBlockData(a);if(!r)return;let n=r.dtsFileName||void 0,i=r.lifetimeMS??31;return{shape:n,faceViewer:!1!==r.faceViewer&&0!==r.faceViewer,lifetimeTicks:i,explosionDataBlockId:a}}spawnExplosion(e,t){e.hasExploded=!0;let a=e.explosionLifetimeTicks??31,r=`fx_${this.nextExplosionId++}`,n={id:r,ghostIndex:-1,className:"Explosion",spawnTick:this.tickCount,type:"Explosion",dataBlock:e.explosionShape,explosionDataBlockId:e.explosionDataBlockId,position:t,rotation:[0,0,0,1],isExplosion:!0,faceViewer:!1!==e.faceViewer,expiryTick:this.tickCount+a};if(this.entities.set(r,n),null!=e.explosionDataBlockId){let a=this.getDataBlockData(e.explosionDataBlockId),r=a?.subExplosions;if(Array.isArray(r))for(let e of r){if(null==e)continue;let a=this.getDataBlockData(e);if(!a)continue;let r=a.dtsFileName||void 0;if(!r)continue;let n=a.lifetimeMS??31,i=a.offset??0,o=Math.random()*Math.PI*2,s=[t[0]+Math.cos(o)*i,t[1]+Math.sin(o)*i,t[2]],l=`fx_${this.nextExplosionId++}`,d={id:l,ghostIndex:-1,className:"Explosion",spawnTick:this.tickCount,type:"Explosion",dataBlock:r,explosionDataBlockId:e,position:s,rotation:[0,0,0,1],isExplosion:!0,faceViewer:!1!==a.faceViewer&&0!==a.faceViewer,expiryTick:this.tickCount+n};this.entities.set(l,d)}}e.position=void 0,e.simulatedVelocity=void 0}advanceProjectiles(){for(let e of this.entities.values()){if(!e.simulatedVelocity||!e.position)continue;let t=e.simulatedVelocity,a=e.position;"ballistic"===e.projectilePhysics&&(t[2]+=-9.81*(e.gravityMod??1)*.032),a[0]+=.032*t[0],a[1]+=.032*t[1],a[2]+=.032*t[2],(0!==t[0]||0!==t[1])&&(e.rotation=rz(Math.atan2(t[0],t[1])))}}advanceItems(){for(let e of this.entities.values()){let t=e.itemPhysics;if(!t||t.atRest||!e.position)continue;let a=t.velocity,r=e.position;a[2]+=-20*t.gravityMod*.032,r[0]+=.032*a[0],r[1]+=.032*a[1],r[2]+=.032*a[2];let n=(0,r8.getTerrainHeightAt)(r[0],r[1]);if(null!=n&&r[2]<n){r[2]=n;let e=Math.abs(a[2]);a[2]=e*t.elasticity;let i=e*t.friction,o=Math.sqrt(a[0]*a[0]+a[1]*a[1]);if(o>0){let e=Math.max(0,1-i/o);a[0]*=e,a[1]*=e}.15>Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2])&&(a[0]=a[1]=a[2]=0,t.atRest=!0)}}}removeExpiredExplosions(){for(let[e,t]of this.entities)t.isExplosion&&null!=t.expiryTick&&this.tickCount>=t.expiryTick&&this.entities.delete(e)}updateCameraAndHud(){let e=this.latestControl,t=this.getTimeSec(),a=e.data,r=this.lastControlType;if(this.removeExpiredExplosions(),e.position){let{yaw:n,pitch:i}=this.getCameraYawPitch(a);if(this.camera={time:t,position:[e.position.x,e.position.y,e.position.z],rotation:rO(n,rU(i,-rj,rj)),fov:this.latestFov,mode:"observer",yaw:n,pitch:i},"camera"===r)if(("number"==typeof a?.cameraMode?a.cameraMode:this.lastCameraMode)===3){this.camera.mode="third-person","number"==typeof this.lastOrbitDistance&&(this.camera.orbitDistance=this.lastOrbitDistance);let e="number"==typeof a?.orbitObjectGhostIndex?a.orbitObjectGhostIndex:this.lastOrbitGhostIndex;"number"==typeof e&&e>=0&&(this.camera.orbitTargetId=this.resolveEntityIdForGhostIndex(e))}else this.camera.mode="observer";else this.camera.mode="first-person",e.ghostIndex>=0&&(this.controlPlayerGhostId=this.resolveEntityIdForGhostIndex(e.ghostIndex)),this.controlPlayerGhostId&&(this.camera.controlEntityId=this.controlPlayerGhostId);if("player"===r&&!this.isPiloting&&this.controlPlayerGhostId&&e.position){let t=this.entities.get(this.controlPlayerGhostId);t&&(t.position=[e.position.x,e.position.y,e.position.z],t.rotation=rz(n),t.headPitch=this.getControlPlayerHeadPitch(i))}}else this.camera&&(this.camera={...this.camera,time:t,fov:this.latestFov});let n={health:1,energy:1};if(this.camera?.mode==="first-person"){let e=this.controlPlayerGhostId,t=e?this.entities.get(e):void 0;n.health=t?.health??1;let r=a?.energyLevel;if("number"==typeof r){let e=t?.maxEnergy??60;e>0&&(n.energy=rU(r/e,0,1))}else n.energy=t?.energy??1}else if(this.camera?.mode==="third-person"&&this.camera.orbitTargetId){let e=this.entities.get(this.camera.orbitTargetId);n.health=e?.health??1,n.energy=e?.energy??1}this.lastStatus=n}getControlPlayerHeadPitch(e){return rU(e/rj,-1,1)}getAbsoluteRotation(e){return e?"number"==typeof e.rotationZ&&"number"==typeof e.headX?{yaw:e.rotationZ,pitch:e.headX}:"number"==typeof e.rotZ&&"number"==typeof e.rotX?{yaw:e.rotZ,pitch:e.rotX}:null:null}resolveIffColor(e){if(0===this.playerSensorGroup)return;let t=this.sensorGroupColors.get(this.playerSensorGroup);if(t){let a=t.get(e);if(a)return a}return e===this.playerSensorGroup?rR:0!==e?rN:void 0}pushChatMessage(e){this.chatMessages.push(e),this.chatMessages.length>200&&this.chatMessages.splice(0,this.chatMessages.length-200)}handleServerMessage(e){if(e.length<2)return;let t=this.resolveNetString(e[0]);if("MsgTeamScoreIs"===t&&e.length>=4){let t=parseInt(this.resolveNetString(e[2]),10),a=parseInt(this.resolveNetString(e[3]),10);if(!isNaN(t)&&!isNaN(a)){let e=this.teamScores.find(e=>e.teamId===t);e&&(e.score=a,this.onTeamScoresChanged())}}else if("MsgCTFAddTeam"===t&&e.length>=6){let t=parseInt(this.resolveNetString(e[2]),10),a=rJ(this.resolveNetString(e[3])),r=parseInt(this.resolveNetString(e[5]),10);if(!isNaN(t)){let e=t+1,n=this.teamScores.find(t=>t.teamId===e);n?(n.name=a,n.score=isNaN(r)?n.score:r):this.teamScores.push({teamId:e,name:a,score:isNaN(r)?0:r,playerCount:0}),this.onTeamScoresChanged()}}else if("MsgClientJoin"===t&&e.length>=4){let t=parseInt(this.resolveNetString(e[2]),10),a=rJ(this.resolveNetString(e[3]));if(!isNaN(t)){let e=this.playerRoster.get(t);this.playerRoster.set(t,{name:a,teamId:e?.teamId??0}),this.onRosterChanged()}}else if("MsgClientDrop"===t&&e.length>=3){let t=parseInt(this.resolveNetString(e[2]),10);isNaN(t)||(this.playerRoster.delete(t),this.onRosterChanged())}else if("MsgClientJoinTeam"===t&&e.length>=4){let t=parseInt(this.resolveNetString(e[2]),10),a=parseInt(this.resolveNetString(e[3]),10);if(!isNaN(t)&&!isNaN(a)){let e=this.playerRoster.get(t);e?e.teamId=a:this.playerRoster.set(t,{name:"",teamId:a}),this.onRosterChanged()}}}onTeamScoresChanged(){}onRosterChanged(){}handleHudRemoteCommand(e,t){if("setWeaponsHudItem"===e&&t.length>=3){let e=parseInt(t[0],10),a=parseInt(t[1],10),r="1"===t[2]||"true"===t[2];isNaN(e)||(r?this.weaponsHud.slots.set(e,isNaN(a)?-1:a):this.weaponsHud.slots.delete(e),this.onWeaponsHudChanged())}else if("setWeaponsHudAmmo"===e&&t.length>=2){let e=parseInt(t[0],10),a=parseInt(t[1],10);isNaN(e)||(this.weaponsHud.slots.set(e,isNaN(a)?-1:a),this.onWeaponsHudChanged())}else if("setWeaponsHudActive"===e&&t.length>=1){let e=parseInt(t[0],10);this.weaponsHud.activeIndex=isNaN(e)?-1:e,isNaN(e)||!(e>=0)||this.weaponsHud.slots.has(e)||this.weaponsHud.slots.set(e,-1),this.onWeaponsHudChanged()}else if("setWeaponsHudClearAll"===e)this.weaponsHud.slots.clear(),this.weaponsHud.activeIndex=-1,this.onWeaponsHudChanged();else if("setBackpackHudItem"===e&&t.length>=2){let e=parseInt(t[0],10);"1"!==t[1]&&"true"!==t[1]||isNaN(e)?this.backpackHud.packIndex=-1:this.backpackHud.packIndex=e,this.backpackHud.active=!1,this.backpackHud.text=""}else if("setSatchelArmed"===e)this.backpackHud.active=!0;else if("setCloakIconOn"===e||"setRepairPackIconOn"===e||"setShieldIconOn"===e||"setSenJamIconOn"===e)this.backpackHud.active=!0;else if("setCloakIconOff"===e||"setRepairPackIconOff"===e||"setShieldIconOff"===e||"setSenJamIconOff"===e)this.backpackHud.active=!1;else if("updatePackText"===e&&t.length>=1)this.backpackHud.text=t[0]??"";else if("setInventoryHudItem"===e&&t.length>=3){let e=parseInt(t[0],10),a=parseInt(t[1],10),r="1"===t[2]||"true"===t[2];isNaN(e)||(r&&!isNaN(a)?this.inventoryHud.slots.set(e,a):this.inventoryHud.slots.delete(e),this.onInventoryHudChanged())}else if("setInventoryHudAmount"===e&&t.length>=2){let e=parseInt(t[0],10),a=parseInt(t[1],10);isNaN(e)||isNaN(a)||(this.inventoryHud.slots.set(e,a),this.onInventoryHudChanged())}else"setInventoryHudClearAll"===e&&(this.inventoryHud.slots.clear(),this.inventoryHud.activeSlot=-1,this.onInventoryHudChanged())}onWeaponsHudChanged(){}onInventoryHudChanged(){}buildEntityList(e){let t=[];for(let a of this.entities.values()){if(e&&!e(a))continue;let r=null!=a.targetId&&a.targetId>=0?this.targetRenderFlags.get(a.targetId)??a.targetRenderFlags:a.targetRenderFlags;"Player"!==a.type||a.carryingFlag||(r=null!=r?-3&r:r),t.push({id:a.id,type:a.type,visual:a.visual,direction:a.direction,ghostIndex:a.ghostIndex,className:a.className,dataBlockId:a.dataBlockId,shapeHint:a.shapeHint,dataBlock:a.dataBlock,weaponShape:a.weaponShape,playerName:a.playerName,targetRenderFlags:r,iffColor:("Player"===a.type||((r??0)&2)!=0)&&null!=a.sensorGroup?this.resolveIffColor(a.sensorGroup):void 0,position:a.position&&(a.simulatedVelocity||a.itemPhysics&&!a.itemPhysics.atRest)?[...a.position]:a.position,rotation:a.rotation,velocity:a.velocity,health:a.health,energy:a.energy,actionAnim:a.actionAnim,actionAtEnd:a.actionAtEnd,damageState:a.damageState,faceViewer:a.faceViewer,threads:a.threads,explosionDataBlockId:a.explosionDataBlockId,maintainEmitterId:a.maintainEmitterId,weaponImageState:a.weaponImageState,weaponImageStates:a.weaponImageStates,headPitch:a.headPitch,headYaw:a.headYaw,label:a.label,audioFileName:a.audioFileName,audioVolume:a.audioVolume,audioIs3D:a.audioIs3D,audioIsLooping:a.audioIsLooping,audioMinDistance:a.audioMinDistance,audioMaxDistance:a.audioMaxDistance,audioMinLoopGap:a.audioMinLoopGap,audioMaxLoopGap:a.audioMaxLoopGap,sceneData:a.sceneData})}return t}buildHudState(){let e={slots:Array.from(this.weaponsHud.slots.entries()).map(([e,t])=>({index:e,ammo:t})),activeIndex:this.weaponsHud.activeIndex},t={slots:Array.from(this.inventoryHud.slots.entries()).map(([e,t])=>({slot:e,count:t})),activeSlot:this.inventoryHud.activeSlot},a=this.backpackHud.packIndex>=0?{...this.backpackHud}:null,r=this.teamScores.map(e=>({...e})),n=new Map;for(let{teamId:e}of this.playerRoster.values())e>0&&n.set(e,(n.get(e)??0)+1);for(let e of r)e.playerCount=n.get(e.teamId)??0;return{weaponsHud:e,inventoryHud:t,backpackHud:a,teamScores:r}}buildTimeFilteredEvents(e){return{chatMessages:this.chatMessages.filter(t=>t.timeSec>e-15),audioEvents:this.audioEvents.filter(t=>t.timeSec>e-.5&&t.timeSec<=e)}}}e.s(["StreamEngine",()=>r4],10244)},71051,e=>{"use strict";class t{ws=null;handlers;url;_connected=!1;wsPingInterval=null;smoothedWsPing=0;constructor(e,t){this.url=e,this.handlers=t}get connected(){return this._connected}connect(){this.ws=new WebSocket(this.url),this.ws.binaryType="arraybuffer",this.ws.onopen=()=>{console.log("[relay] WebSocket connected to",this.url),this._connected=!0,this.startWsPing(),this.handlers.onOpen?.()},this.ws.onmessage=e=>{if(e.data instanceof ArrayBuffer)this.handlers.onGamePacket?.(new Uint8Array(e.data));else try{let t=JSON.parse(e.data);this.handleMessage(t)}catch(e){console.error("Failed to parse relay message:",e)}},this.ws.onclose=()=>{console.log("[relay] WebSocket disconnected"),this._connected=!1,this.stopWsPing(),this.handlers.onClose?.()},this.ws.onerror=()=>{console.error("[relay] WebSocket error"),this.handlers.onError?.("WebSocket connection error")}}handleMessage(e){switch(e.type){case"serverList":this.handlers.onServerList?.(e.servers);break;case"status":this.handlers.onStatus?.(e.status,e.message,e.connectSequence,e.mapName);break;case"ping":this.handlers.onPing?.(e.ms);break;case"wsPong":{let t=Date.now()-e.ts;this.smoothedWsPing=0===this.smoothedWsPing?t:.5*this.smoothedWsPing+.5*t,this.handlers.onWsPing?.(Math.round(this.smoothedWsPing));break}case"error":this.handlers.onError?.(e.message)}}listServers(){this.send({type:"listServers"})}sendWsPing(){this.send({type:"wsPing",ts:Date.now()})}joinServer(e){console.log("[relay] Joining server:",e),this.send({type:"joinServer",address:e})}disconnectServer(){this.send({type:"disconnect"})}sendAuthEvent(e,t){this.send({type:"sendCommand",command:e,args:t})}sendCommand(e,t){this.send({type:"sendCommand",command:e,args:t})}sendCRCResponse(e,t,a){this.send({type:"sendCRCResponse",crcValue:e,field1:t,field2:a})}sendCRCCompute(e,t,a,r){this.send({type:"sendCRCCompute",seed:e,field2:t,includeTextures:r,datablocks:a})}sendGhostAck(e,t){this.send({type:"sendGhostAck",sequence:e,ghostCount:t})}sendMove(e){this.send({type:"sendMove",move:e})}close(){this.stopWsPing(),this.ws&&(this.ws.close(),this.ws=null),this._connected=!1}startWsPing(){this.smoothedWsPing=0,this.send({type:"wsPing",ts:Date.now()}),this.wsPingInterval=setInterval(()=>{this.send({type:"wsPing",ts:Date.now()})},7e3)}stopWsPing(){null!=this.wsPingInterval&&(clearInterval(this.wsPingInterval),this.wsPingInterval=null)}send(e){this.ws?.readyState===WebSocket.OPEN?this.ws.send(JSON.stringify(e)):console.warn("[relay] send dropped (ws not open):",e.type)}}e.s(["RelayClient",()=>t])},12781,e=>{"use strict";e.i(47167);var t=e.i(43476),a=e.i(932),r=e.i(71645),n=e.i(71051);e.i(50593);var i=e.i(45853),o=e.i(89119),s=e.i(10244);class l extends s.StreamEngine{packetParser;relay;currentTimeSec=0;connectSynced=!1;_snapshot=null;_snapshotTick=-1;_ready=!1;dataBlockClassNames=new Map;onReady;constructor(e){super(),this.relay=e;const{registry:t,ghostTracker:a,packetParser:r}=(0,i.createLiveParser)();this.packetParser=r,this.ghostTracker=a,this.registry=t}getDataBlockData(e){return this.packetParser.getDataBlockDataMap()?.get(e)}_shapeConstructorCache=null;getShapeConstructorSequences(e){this._shapeConstructorCache=new Map;let t=this.packetParser.getDataBlockDataMap();if(t){for(let[,e]of t){let t=e.shape,a=e.sequences;t&&a&&this._shapeConstructorCache.set(t.toLowerCase(),a)}return this._shapeConstructorCache.get(e.toLowerCase())}}getTimeSec(){return this.currentTimeSec}getCameraYawPitch(e){return this.getAbsoluteRotation(e)??{yaw:0,pitch:0}}getEffectShapes(){let e=new Set,t=this.packetParser.getDataBlockDataMap();if(!t)return[];for(let[,a]of t){let r=a.explosion;if(null==r)continue;let n=t.get(r);n?.dtsFileName&&e.add(n.dtsFileName)}return[...e]}reset(){this.resetSharedState(),this.ghostTracker.clear?.(),this.currentTimeSec=0,this._snapshot=null,this._snapshotTick=-1,this.dataBlockClassNames.clear(),this.observerMode="fly"}getSnapshot(){return this._snapshot&&this._snapshotTick===this.tickCount?this._snapshot:this.buildSnapshot()}stepToTime(e,t){return this.currentTimeSec=e,this.getSnapshot()}syncConnectSequence(e){if(this.connectSynced||e.length<1)return;this.connectSynced=!0;let t=e[0]>>1&1;this.packetParser.setConnectionProtocolState({lastSeqRecvdAtSend:Array(32).fill(0),lastSeqRecvd:0,highestAckedSeq:0,lastSendSeq:0x1fffffff,ackMask:0,connectSequence:t,lastRecvAckAck:0,connectionEstablished:!0})}feedPacket(e){this.syncConnectSequence(e),this.processPacket(e)}handleRelayCommands(e){if("RemoteCommandEvent"!==e.type)return;let t=e.funcName;if(!t)return;let a=this.resolveNetString(t);if(["t2csri_pokeClient","t2csri_getChallengeChunk","t2csri_decryptChallenge"].includes(a)){let t=(e.args??[]).map(e=>this.resolveNetString(e)).filter(e=>""!==e);console.log(`[live] auth event: ${a}`,t),this.relay.sendAuthEvent(a,t);return}let r=(e.args??[]).map(e=>this.resolveNetString(e));if("MissionStartPhase1"===a){let e=r[0]??"";console.log(`[live] mission phase 1, seq=${e}`),this.relay.sendCommand("MissionStartPhase1Done",[e])}else if("MissionStartPhase2"===a){let e=r[0]??"";console.log(`[live] mission phase 2 (datablocks), seq=${e}`),this.relay.sendCommand("MissionStartPhase2Done",[e])}else if("MissionStartPhase3"===a){let e=r[0]??"";console.log(`[live] mission phase 3 (ghosting), seq=${e}`),this.relay.sendCommand("setClientFav",[""]),this.relay.sendCommand("MissionStartPhase3Done",[e])}}handleCRCChallenge(e){if("CRCChallengeEvent"!==e.type)return;let t=e.crcValue,a=e.field1,r=e.field2,n=(1&a)!=0;console.log(`[live] CRC challenge: seed=0x${(t>>>0).toString(16)} f1=0x${(a>>>0).toString(16)} f2=0x${(r>>>0).toString(16)} includeTextures=${n}`);let i=this.packetParser.getDataBlockDataMap(),s=[];if(i)for(let[e,t]of i){let a=this.dataBlockClassNames.get(e);if(!a)continue;let r=(0,o.resolveShapeName)(a,t);s.push({objectId:e,className:a,shapeName:r??""})}console.log(`[live] CRC: sending ${s.length} datablocks for computation`),this.relay.sendCRCCompute(t,r,s,n)}handleGhostingMessage(e){if("GhostingMessageEvent"!==e.type)return;let t=e.message,a=e.sequence,r=e.ghostCount;console.log(`[live] GhostingMessageEvent: message=${t} sequence=${a} ghostCount=${r}`),0===t&&(console.log(`[live] Sending ghost ack (type 1) for sequence ${a}`),this.relay.sendGhostAck(a,r))}observerMode="fly";cycleObserveNext(){"fly"===this.observerMode?(console.log("[live] observer: fly → follow (jump trigger)"),this.sendTrigger(2),this.observerMode="follow"):(console.log("[live] observer: cycle next (fire trigger)"),this.sendTrigger(0))}toggleObserverMode(){"fly"===this.observerMode?(console.log("[live] observer: fly → follow (jump trigger)"),this.sendTrigger(2),this.observerMode="follow"):(console.log("[live] observer: follow → fly (jump trigger)"),this.sendTrigger(2),this.observerMode="fly")}sendTrigger(e){let t=[!1,!1,!1,!1,!1,!1];t[e]=!0,this.relay.sendMove({x:0,y:0,z:0,yaw:0,pitch:0,roll:0,trigger:t,freeLook:!1})}getPlayerList(){let e=[];for(let[t,a]of this.targetNames){let r=this.targetTeams.get(t)??0;e.push({targetId:t,name:a,sensorGroup:r})}return e}processPacket(e){try{let t=this.packetParser.protocolRejected,a=this.packetParser.protocolNoDispatch,r=this.packetParser.parsePacket(e),n=this.packetParser.protocolRejected>t,i=this.packetParser.protocolNoDispatch>a;(n||i)&&console.warn(`[live] packet #${this.tickCount} ${n?"REJECTED":"no-dispatch"}: ${e.length} bytes (total rejected=${this.packetParser.protocolRejected}, noDispatch=${this.packetParser.protocolNoDispatch})`);let s=this.tickCount<20,l=this.tickCount%100==0,d=s||l;for(let t of(d&&console.log(`[live] packet #${this.tickCount}: ${r.events.length} events, ${r.ghosts.length} ghosts, ${e.length} bytes`+(void 0!==r.gameState.controlObjectGhostIndex?`, control=${r.gameState.controlObjectGhostIndex}`:"")+(void 0!==r.gameState.cameraFov?`, fov=${r.gameState.cameraFov}`:"")),this.processControlObject(r.gameState),r.events))if(t.parsedData){this.handleRelayCommands(t.parsedData),this.handleCRCChallenge(t.parsedData),this.handleGhostingMessage(t.parsedData);let e=t.parsedData.type;if(s&&"NetStringEvent"!==e&&console.log(`[live] event: ${e}`,"RemoteCommandEvent"===e?{funcName:this.resolveNetString(t.parsedData.funcName??"")}:"SimDataBlockEvent"===e?{id:t.parsedData.objectId,className:t.parsedData.dataBlockClassName}:void 0),"SimDataBlockEvent"===e){let e=t.parsedData.objectId,a=t.parsedData.dataBlockClassName;if(null!=e&&a&&this.dataBlockClassNames.set(e,a),d){let r=t.parsedData.dataBlockData,n=(0,o.resolveShapeName)(a??"",r);console.log(`[live] datablock: id=${e} class=${a??"?"}`+(n?` shape=${n}`:""))}}let a=this.registry.getEventParser(t.classId)?.name;if(this.processEvent(t,a),s&&"NetStringEvent"===e){let e=t.parsedData.id,a=t.parsedData.value;null!=e&&"string"==typeof a&&console.log(`[live] netString #${e} = "${a.length>60?a.slice(0,60)+"…":a}"`)}if("TargetInfoEvent"===e){let e=t.parsedData.targetId,a=t.parsedData.nameTag;if(null!=e&&null!=a){let r=this.netStrings.get(a);if(r){let a=(0,o.stripTaggedStringMarkup)(r);console.log(`[live] target #${e}: "${a}" team=${t.parsedData.sensorGroup??"?"}`)}}}if("SetSensorGroupEvent"===e){let e=t.parsedData.sensorGroup;null!=e&&console.log(`[live] sensor group changed: → ${e}`)}if("SensorGroupColorEvent"===e){let e=t.parsedData.sensorGroup,a=t.parsedData.colors;a&&console.log(`[live] sensor group colors: group=${e}, ${a.length} entries`)}}for(let e of r.ghosts){if("create"===e.type){let t=e.parsedData?.position,a=t&&"number"==typeof t.x&&"number"==typeof t.y&&"number"==typeof t.z,r=this.resolveGhostClassName(e.index,e.classId);console.log(`[live] ghost create: #${e.index} ${r??"?"}`+(a?` at (${t.x.toFixed(1)}, ${t.y.toFixed(1)}, ${t.z.toFixed(1)})`:"")+` (${this.entities.size+1} entities total)`),this._ready||(this._ready=!0,this.onReady?.())}else if("delete"===e.type){let t=this.entityIdByGhostIndex.get(e.index),a=t?this.entities.get(t):void 0;(this.tickCount<50||this.tickCount%200==0)&&console.log(`[live] ghost delete: #${e.index} ${a?.className??"?"} (${this.entities.size-1} entities remaining)`)}this.processGhostUpdate(e)}if(this.tickCount++,this.advanceProjectiles(),this.advanceItems(),l&&this.tickCount>1){let e=this.packetParser.getDataBlockDataMap();console.log(`[live] status @ tick ${this.tickCount}: ${this.entities.size} entities, ${e?.size??0} datablocks, rejected=${this.packetParser.protocolRejected}, noDispatch=${this.packetParser.protocolNoDispatch}`)}let c=this.entities.size;if(1===this.tickCount||c>0&&c%25==0&&this.tickCount<100){let e=new Map;for(let t of this.entities.values())e.set(t.type,(e.get(t.type)??0)+1);let t=[...e.entries()].map(([e,t])=>`${e}=${t}`).join(" ");console.log(`[live] entity count: ${c} (${t})`)}if(this.updateCameraAndHud(),this.tickCount<=5&&this.camera){let[e,t,a]=this.camera.position;console.log(`[live] camera: mode=${this.camera.mode} pos=(${e.toFixed(1)}, ${t.toFixed(1)}, ${a.toFixed(1)}) fov=${this.camera.fov}`)}}catch(t){console.error("Failed to process live packet:",t,{tickCount:this.tickCount,entityCount:this.entities.size,dataLength:e.length,controlGhost:this.latestControl.ghostIndex,connectSynced:this.connectSynced})}}buildSnapshot(){let e=this.buildEntityList(),t=this.currentTimeSec,{chatMessages:a,audioEvents:r}=this.buildTimeFilteredEvents(t),{weaponsHud:n,inventoryHud:i,backpackHud:o,teamScores:s}=this.buildHudState();this.camera||(this.camera={time:t,position:[0,0,200],rotation:[0,0,0,1],fov:90,mode:"observer"});let l={timeSec:t,exhausted:!1,camera:this.camera,entities:e,controlPlayerGhostId:this.controlPlayerGhostId,playerSensorGroup:this.playerSensorGroup,status:this.lastStatus,chatMessages:a,audioEvents:r,weaponsHud:n,backpackHud:o,inventoryHud:i,teamScores:s};return this._snapshot=l,this._snapshotTick=this.tickCount,l}}let d=(0,r.createContext)(null);function c(){let e=(0,r.useContext)(d);if(!e)throw Error("useLiveConnection must be used within LiveConnectionProvider");return e}function u(){return(0,r.useContext)(d)}function h(e){let i,o,s,c,u,h,g,p,m,f,F,v,y,S=(0,a.c)(27),{children:k}=e,b=(0,r.useRef)(null),P=(0,r.useRef)(null);S[0]===Symbol.for("react.memo_cache_sentinel")?(i=[],S[0]=i):i=S[0];let x=(0,r.useRef)(i),I=(0,r.useRef)(!1),[D,C]=(0,r.useState)(!1),[E,w]=(0,r.useState)(null),[M,B]=(0,r.useState)(),[T,R]=(0,r.useState)();S[1]===Symbol.for("react.memo_cache_sentinel")?(o=[],S[1]=o):o=S[1];let[N,G]=(0,r.useState)(o),[A,U]=(0,r.useState)(!1),[j,O]=(0,r.useState)(null),[z,L]=(0,r.useState)(!1),[V,_]=(0,r.useState)(null),[q,$]=(0,r.useState)(null);S[2]===Symbol.for("react.memo_cache_sentinel")?(s=e=>{b.current&&(b.current.close(),b.current=null);let t=new n.RelayClient(void 0===e?"wss://t2-relay.fly.dev":e,{onOpen(){for(let e of(C(!0),x.current))e();x.current=[]},onStatus(e,t,a,r){console.log(`[relay] game status: ${e}${t?` — ${t}`:""}${r?` map=${r}`:""}`),w(e),B(t),r&&R(r)},onServerList(e){G(e),U(!1),I.current=!1},onGamePacket(e){P.current||console.warn("[relay] received game packet but no adapter is active"),P.current?.feedPacket(e)},onPing(e){_(e)},onWsPing(e){$(e)},onError(e){console.error("Relay error:",e),U(!1),I.current=!1},onClose(){b.current===t&&(b.current=null,C(!1),w(null),R(void 0),_(null),$(null),O(null),L(!1),P.current=null,x.current=[],I.current=!1)}});t.connect(),b.current=t},S[2]=s):s=S[2];let H=s;S[3]===Symbol.for("react.memo_cache_sentinel")?(c=()=>{b.current?.close(),b.current=null,P.current=null,x.current=[],C(!1),w(null),R(void 0),O(null),L(!1)},S[3]=c):c=S[3];let W=c;S[4]===Symbol.for("react.memo_cache_sentinel")?(u=()=>{if(I.current)return;I.current=!0;let e=()=>{b.current?.sendWsPing(),b.current?.listServers()};U(!0),b.current?.connected?e():(x.current.push(e),b.current||H())},S[4]=u):u=S[4];let X=u;S[5]!==N?(h=e=>{if(!b.current)return;let t=N.find(t=>t.address===e);t?.mapName&&R(t.mapName);let a=new l(b.current);a.onReady=()=>L(!0),P.current=a,L(!1),w(null),O(a),b.current.joinServer(e)},S[5]=N,S[6]=h):h=S[6];let Z=h;S[7]===Symbol.for("react.memo_cache_sentinel")?(g=()=>{b.current?.disconnectServer(),P.current?.reset(),P.current=null,O(null),L(!1),w(null),R(void 0),_(null)},S[7]=g):g=S[7];let Y=g;S[8]===Symbol.for("react.memo_cache_sentinel")?(p=e=>{b.current?.sendMove(e)},S[8]=p):p=S[8];let J=p;S[9]===Symbol.for("react.memo_cache_sentinel")?(m=(e,...t)=>{b.current?.sendCommand(e,t)},S[9]=m):m=S[9];let K=m;S[10]===Symbol.for("react.memo_cache_sentinel")?(f=()=>()=>{b.current?.close()},F=[],S[10]=f,S[11]=F):(f=S[10],F=S[11]),(0,r.useEffect)(f,F);let Q=null!=V&&null!=q?V+q:V??null;S[12]!==j||S[13]!==E||S[14]!==M||S[15]!==Z||S[16]!==z||S[17]!==T||S[18]!==Q||S[19]!==D||S[20]!==N||S[21]!==A||S[22]!==q?(v={relayConnected:D,gameStatus:E,gameStatusMessage:M,mapName:T,ping:Q,wsPing:q,servers:N,serversLoading:A,adapter:j,liveReady:z,connectRelay:H,disconnectRelay:W,listServers:X,joinServer:Z,disconnectServer:Y,sendMove:J,sendCommand:K},S[12]=j,S[13]=E,S[14]=M,S[15]=Z,S[16]=z,S[17]=T,S[18]=Q,S[19]=D,S[20]=N,S[21]=A,S[22]=q,S[23]=v):v=S[23];let ee=v;return S[24]!==k||S[25]!==ee?(y=(0,t.jsx)(d.Provider,{value:ee,children:k}),S[24]=k,S[25]=ee,S[26]=y):y=S[26],y}e.s(["LiveConnectionProvider",()=>h,"useLiveConnection",()=>c,"useLiveConnectionOptional",()=>u],12781)}]); |