PageSourceSearch

https://joinhottub.com/_next/static/chunks/87880.ef9dc0d76d8d09b1.js

js joinhottub.com collected 2026-10-09 22:40:20 UTC 31,178 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[87880],{31519:(e,t,n)=>{n.d(t,{CK:()=>a,VQ:()=>r,XH:()=>o});let a=["#E05A3A","#F1A23A","#4EA1B0","#B8526E","#6B9F6F","#8856A8","#D17A3E","#5A7BC8"];function r(e){let t=()=>a[Math.floor(Math.random()*a.length)],n=t();if(!e)return n;for(let a=0;a<8&&n===e;a++)n=t();return n}function o(e){let t=0;for(let n=0;n<e.length;n++)t=31*t+e.charCodeAt(n)>>>0;return a[t%a.length]}},34662:(e,t,n)=>{n.d(t,{fx:()=>r,ic:()=>o});let a=e=>e<0?0:e>1?1:Number.isFinite(e)?e:0;function r(e){let t=a(e);return{opacity:.85*t,glowScale:1+.7*t,headScale:1+.05*t}}function o(e,t,n){return e+(a(t)-e)*Math.min(1,12*Math.max(0,n))}},36029:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{callServer:function(){return a.callServer},createServerReference:function(){return o.createServerReference},findSourceMapURL:function(){return r.findSourceMapURL}});let a=n(81438),r=n(48474),o=n(74718)},41566:(e,t,n)=>{n.d(t,{CK:()=>r.CK,KV:()=>f,Pf:()=>u,Vr:()=>m,i$:()=>p,jC:()=>d,kb:()=>s,l9:()=>h,pr:()=>i,rr:()=>l});var a=n(90625),r=n(31519),o=n(34662);let l=["capsule","orb","cube"],i=["none","cap","crown","antenna"],s={capsule:"Classic",orb:"Bubble",cube:"Blocky"},d={none:"None",cap:"Cap",crown:"Crown",antenna:"Antenna"},c="hottub:vr-avatar";function u(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"you";return{color:(0,r.XH)(e),body:"capsule",hat:"none"}}function p(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"you",t=u(e);try{let e=window.localStorage.getItem(c);if(!e)return t;let n=JSON.parse(e);return{color:"string"==typeof n.color&&r.CK.includes(n.color)?n.color:t.color,body:l.includes(n.body)?n.body:"capsule",hat:i.includes(n.hat)?n.hat:"none"}}catch(e){return t}}function h(e){try{window.localStorage.setItem(c,JSON.stringify(e))}catch(e){}}function f(e,t){let n,r,l=new a.YJl,i=new a.Q1f(e.color),s=new a._4j({color:i,roughness:.5,metalness:.05}),d=new a._4j({color:i.clone().offsetHSL(0,-.06,.1),roughness:.55});"orb"===e.body?((n=new a.eaF(new a.Gu$(.3,24,20),s)).position.y=.3,r=.66):"cube"===e.body?((n=new a.eaF(new a.iNn(.42,.5,.42),s)).position.y=.3,r=.72):((n=new a.eaF(new a.qU7(.22,.32,8,16),s)).position.y=.34,r=.74),l.add(n);let c=new a.eaF(new a.Gu$(.17,20,16),d);if(c.position.y=r,l.add(c),"cap"===e.hat){let e=new a._4j({color:2761504,roughness:.7}),t=new a.eaF(new a.Gu$(.18,18,10,0,2*Math.PI,0,Math.PI/2),e);t.position.y=r+.05;let n=new a.eaF(new a.iNn(.26,.03,.16),e);n.position.set(0,r+.04,.17),l.add(t),l.add(n)}else if("crown"===e.hat){let e=new a._4j({color:0xf1a23a,roughness:.35,metalness:.45}),t=new a.eaF(new a.Ho_(.16,.18,.12,8,1,!0),e);t.position.y=r+.16,l.add(t)}else if("antenna"===e.hat){let e=new a._4j({color:2761504,roughness:.7}),t=new a._4j({color:0xf1a23a,roughness:.3,metalness:.4}),n=new a.eaF(new a.Ho_(.012,.012,.22,6),e);n.position.y=r+.28;let o=new a.eaF(new a.Gu$(.045,12,10),t);o.position.y=r+.41,l.add(n),l.add(o)}if(null==t?void 0:t.speaking){let e=c.scale.x,t=new a.V9B({color:i.clone().offsetHSL(0,-.1,.18),transparent:!0,opacity:0,blending:a.EZo,depthWrite:!1}),n=new a.eaF(new a.Gu$(.24,18,14),t);n.position.y=r,l.add(n);let s=0;l.userData.speakingRig={update(a,r){s=(0,o.ic)(s,a,r);let{opacity:l,glowScale:i,headScale:d}=(0,o.fx)(s);t.opacity=l,n.scale.setScalar(i),c.scale.setScalar(e*d)}}}return l.userData.isSelfAvatar=!0,l}function m(e){e.traverse(e=>{e.geometry&&e.geometry.dispose();let t=e.material;Array.isArray(t)?t.forEach(e=>
1e.dispose()):null==t||t.dispose()})}},63482:(e,t,n)=>{n.r(t),n.d(t,{SteamyArcadeRoom:()=>y});var a=n(4536),r=n(11092),o=n(959),l=n(36560),i=n(66834),s=n(90625),d=n(14404),c=n(79744),u=n(38726),p=n(35735),h=n(32595),f=n(28490),m=n(91339),g=n(41566);let w={drifting:"DRIFTING",orbiting:"ORBITING",soaking:"SOAKING"};function y(e){let{roomsHref:t="/labs/spatial-soak",soakId:n,currentUserId:y,gamesEnabled:I=!1,autoBots:T=!1}=e,B=(0,r.useRef)(null),[H,_]=(0,r.useState)(null),[L,G]=(0,r.useState)(!1),[P,W]=(0,r.useState)(!1),[O,z]=(0,r.useState)(!1),[N,V]=(0,r.useState)(!1),D=!!(n&&y),[Y,K]=(0,r.useState)(null),[U,$]=(0,r.useState)(!0),[J,Z]=(0,r.useState)(()=>(0,g.i$)(null!=y?y:"you")),q=(0,r.useRef)(!0),Q=(0,r.useRef)(J),X=(0,r.useRef)(null);(0,r.useEffect)(()=>{var e;q.current=U,Q.current=J,null==(e=X.current)||e.call(X),(0,g.l9)(J)},[U,J]);let ee=(0,r.useCallback)(async()=>{if(n)try{let e=await fetch("/api/soaks/".concat(n,"/enter"),{method:"POST",headers:{...(0,l.l)()}});e.ok&&K(await e.json())}catch(e){}},[n]),et=(0,r.useCallback)(async()=>{n&&(await fetch("/api/soaks/".concat(n,"/go-live"),{method:"POST",headers:{...(0,l.l)()}}),await ee())},[n,ee]);(0,r.useEffect)(()=>{if(!N||!n)return;ee();let e=setInterval(()=>{(null==Y?void 0:Y.checkedIn)||ee()},5e3);return()=>clearInterval(e)},[N,n,ee,null==Y?void 0:Y.checkedIn]);let en=(0,r.useRef)(null),ea=(0,r.useRef)(null),[er,eo]=(0,r.useState)(!0),el=(0,r.useRef)(null);(0,r.useEffect)(()=>{el.current||(el.current=(0,u.UK)("arcade")),el.current.start();let e=()=>{var e;return null==(e=el.current)?void 0:e.start()};return window.addEventListener("pointerdown",e,{once:!0}),window.addEventListener("keydown",e,{once:!0}),()=>{window.removeEventListener("pointerdown",e),window.removeEventListener("keydown",e)}},[]),(0,r.useEffect)(()=>()=>{(0,u.iJ)()||(0,u.ZM)()},[]);let ei=(0,o.useRouter)(),es=(0,r.useRef)(ei);function ed(){(0,u.m3)(!0),es.current.push("".concat(t,"?room=sp
1ace&from=arcade"))}es.current=ei;let ec=(0,r.useRef)(ed);ec.current=ed;let[eu,ep]=(0,r.useState)("idle"),[eh,ef]=(0,r.useState)(!1),em=(0,r.useRef)(null),eg=(0,r.useRef)("Guest-".concat(Math.random().toString(36).slice(2,5)));async function ew(){if(em.current)return;let e=new h.VoiceMesh({roomId:n?"soak-".concat(n):"steamy-arcade",displayName:eg.current,onState:e=>ep(e)});em.current=e,ef(!1),await e.start()}return(0,r.useEffect)(()=>()=>{var e;null==(e=em.current)||e.stop(),em.current=null},[]),(0,r.useEffect)(()=>{var e,t,n;let a=B.current;if(!a)return;let r=null!=(n=null==(e=(t=window).matchMedia)?void 0:e.call(t,"(prefers-reduced-motion: reduce)").matches)&&n,o=navigator.xr;(null==o?void 0:o.isSessionSupported)?o.isSessionSupported("immersive-vr").then(_).catch(()=>_(!1)):_(!1);let l=a.clientWidth||window.innerWidth,i=a.clientHeight||window.innerHeight,u=(0,p.uw)({host:a,width:l,height:i,onContextLost:()=>G(!0)});if(!u)return void G(!0);let h=d.Z.createButton(u);h.style.position="absolute",h.style.bottom="24px",h.style.left="50%",h.style.transform="translateX(-50%)",a.appendChild(h),ea.current=h;let f=[],m=[],y=e=>((e.geometry||e.material)&&f.push({geometry:e.geometry,material:e.material}),e),v=new s.Z58;v.background=new s.Q1f("#0a0813"),v.fog=new s.jUj("#0a0813",9,22);let S=new s.ubm(60,l/i,.05,100);S.position.set(0,1.62,2.35),S.lookAt(0,1.75,-.9),v.add(new s.dth(3814480,328714,.5));let j=new s.HiM(0xff3aa0,14,16,2);j.position.set(-4.5,3,-2),v.add(j);let k=new s.HiM(3789055,14,16,2);k.position.set(4.5,3,-2),v.add(k);let M=new s.nCl(0xfff0d8,22,9,Math.PI/6,.5,2);M.position.set(0,3.8,.6),M.target.position.set(0,1.2,-.8),v.add(M),v.add(M.target);let C=function(){let e=document.createElement("canvas");e.width=e.height=256;let t=e.getContext("2d");t.fillStyle="#0d0820",t.fillRect(0,0,256,256);let n=["#22124a","#3a1f6b","#0f5a6b","#7a1f5a"];for(let e=0;e<70;e++){t.fillStyle=n[e%n.length],t.save(),t.translate(256*Math.random(),256*Math.random()),t.rotate(Math.random()*Math.PI);let a=12+40*Math.random();t.fillRect(-a/2,-3,a,6),t.restore()}for(let e=0;e<120;e++)t.fillStyle=["#39d0ff","#ff3aa0","#ffcf73"][e%3],t.beginPath(),t.arc(256*Math.random(),256*Math.random(),1.5+2*Math.random(),0,2*Math.PI),t.fill();return new s.GOR(e)}();C.wrapS=C.wrapT=s.GJx,C.repeat.set(7,6),m.push(C);let E=y(new s.eaF(new s.bdM(14,12),new s._4j({map:C,roughness:.95})));E.rotation.x=-Math.PI/2,v.add(E);let R=new s._4j({color:1314847,roughness:.9});f.push({material:R});let A=new s._4j({color:657424,roughness:1});f.push({material:A});let F=(e,t,n,a,r,o)=>{let l=new s.eaF(new s.bdM(e,t),R);return f.push({geometry:l.geometry}),l.position.set(n,a,r),l.rotation.y=o,v.add(l),l};F(14,6.5,0,3.25,-6,0),F(14,6.5,0,3.25,6,Math.PI),F(12,6.5,-7,3.25,0,Math.PI/2),F(12,6.5,7,3.25,0,-Math.PI/2);let I=new s.eaF(new s.bdM(14,12),A);f.push({geometry:I.geometry}),I.position.set(0,6.5,0),I.rotation.x=Math.PI/2,v.add(I);let T=null,H=()=>{T&&(v.remove(T),(0,g.Vr)(T),T=null),q.current&&((T=(0,g.KV)(Q.current)).scale.setScalar(1.7),T.position.set(1.05,0,.55),T.lookAt(0,1.4,-.9),v.add(T))};X.current=H,H();{let e=function(){let e=document.createElement("canvas");e.width=1280,e.height=420;let t=e.getContext("2d");return t.clearRect(0,0,1280,420),t.textAlign="center",t.textBaseline="middle",t.shadowBlur=34,t.shadowColor="#ff3aa0",t.f
1illStyle="#ff79c4",t.font='bold 150px "Arial Black", Impact, system-ui',t.fillText("STEAMY’S ARCADE",640,130,1200),t.shadowBlur=6,t.fillStyle="#ffe3f3",t.globalAlpha=.4,t.fillText("STEAMY’S ARCADE",640,130,1200),t.globalAlpha=1,t.shadowBlur=26,t.shadowColor="#39d0ff",t.fillStyle="#9fe8ff",t.font='italic bold 92px Georgia, "Times New Roman", serif',t.fillText("& Gentleman’s Steakhouse",640,270,1200),t.shadowBlur=5,t.fillStyle="#e6f7ff",t.globalAlpha=.4,t.fillText("& Gentleman’s Steakhouse",640,270,1200),t.globalAlpha=1,t.shadowBlur=22,t.shadowColor="#ffcf73",t.fillStyle="#ffd98a",t.font="70px system-ui",t.fillText("\xb7   ✦   \xb7",640,348,1200),{texture:new s.GOR(e),aspect:1280/420}}();m.push(e.texture);let t=8/e.aspect,n=new s.eaF(new s.bdM(8,t),new s.V9B({map:e.texture,transparent:!0,toneMapped:!1}));f.push({geometry:n.geometry,material:n.material}),n.position.set(0,4.6,-5.94),v.add(n);let a=new s.HiM(0xff3aa0,6,9,2);a.position.set(0,4.5,-5.4),v.add(a)}(function(e,t,n,a,r,o){let l=new s.YJl;l.position.set(4.6,0,3.4),e.add(l);let i=function(e,t){let n=document.createElement("canvas");n.width=n.height=128;let a=n.getContext("2d");for(let n=0;n<8;n++)for(let r=0;r<8;r++)a.fillStyle=(r+n)%2==0?e:t,a.fillRect(16*r,16*n,16,16);return new s.GOR(n)}("#7a1020","#f4e9d8");a.push(i);let d=new s.eaF(new s.Ho_(.55,.55,.06,32),new s._4j({map:i,roughness:.9}));n.push({geometry:d.geometry,material:d.material}),d.position.set(0,.74,0),l.add(d);let c=new s.eaF(new s.Ho_(.05,.06,.74,12),new s._4j({color:546}));for(let e of(n.push({geometry:c.geometry,material:c.material}),c.position.set(0,.37,0),l.add(c),[-.85,.85])){let t=new s.eaF(new s.Ho_(.2,.2,.08,20),new s._4j({color:5902368,roughness:.7}));n.push({geometry:t.geometry,material:t.material}),t.position.set(e,.5,0),l.add(t);let a=new s.eaF(new s.Ho_(.04,.04,.5,10),new s._4j({color:546}));n.push({geometry:a.geometry,material:a.material}),a.position.set(e,.25,0),l.add(a)}let u=new s.eaF(new s.Gu$(.03,8,8),new s.V9B({color:0xffb060}));n.push({geometry:u.geometry,material:u.material}),u.position.set(0,.84,0),l.add(u);let p=new s.HiM(0xffb060,2,2.5,2);p.position.set(0,.9,0),l.add(p);let h=b("STEAKS",0xff6a4a,"rgba(0,0,0,0)","bold 80px system-ui");a.push(h);let f=new s.eaF(new s.bdM(1.6,.5),new s.V9B({map:h,transparent:!0,toneMapped:!1}));n.push({geometry:f.geometry,material:f.material}),f.position.set(0,2.1,-1.6),l.add(f);let m=new s.HiM(0xff6a4a,4,5,2);m.position.set(0,2,-1.2),l.add(m)})(v,0,f,m,14,12),x(v,y,f,m,-2.6,-1.4,.5,3789055,"STEAK\nINVADERS"),x(v,y,f,m,2.6,-1.4,-.5,0xff3aa0,"SIR\nLOIN");let L=(0,c.by)();en.current=L;let P=new s.nWS(512,384,{minFilter:s.k6q,magFilter:s.k6q}),W=new s.Z58;W.background=new s.Q1f("#05070f");let O=new s.ubm(55,512/384,.05,4e3);O.position.set(0,7,8),O.lookAt(0,0,-.5),W.add(new s.dth(8425664,328970,.5));let z=new s.HiM(0xffd9a0,2,0,0);W.add(z);{let e=new Float32Array(2100);for(let t=0;t<700;t++){let n=2*Math.random()-1,a=Math.random()*Math.PI*2,r=Math.sqrt(1-n*n);e[3*t]=1200*r*Math.cos(a),e[3*t+1]=1200*n,e[3*t+2]=1200*r*Math.sin(a)}let t=new s.LoY;t.setAttribute("position",new s.THS(e,3));let n=new s.ONl(t,new s.BH$({color:0xcdd6ff,size:1.6,sizeAttenuation:!1}));f.push({geometry:t,material:n.material}),W.add(n)}let N=function(e){let t=document.createElement("canvas");t.width=t.height=128;let n=t.getContext("2d"),a=new s.Q1f(0xffcf73),r="".concat(Math.round(255*a.r),",").concat(Math.round(255*a.g),",").concat(Math.round(255*a.b)),o=n.createRadialGradient(64,64,0,64,64,64);o.addColorStop(0,"rgba(".concat(r,",0.95)")),o.addColorStop(.4,"rgba(".concat(r,",0.45)")),o.addColorStop(1,"rgba(".concat(r,",0)")),n.fillStyle=o,n.fillRect(0,0,128,128);let l=new s.GOR(t);return new s.kxk(new s.RoJ({map:l,transparent:!0,depthWrite:!1,blending:s.EZo}))}(0xffcf73);m.push(N.material.map),W.add(N);let V=L.bodies.map(e=>{var t;let n=new s.Gu$(1,20,14),a=new s._4j({color:e.color,roughness:.9,emissive:null!=(t=e.emissive)?t:0,emissiveIntensity:.9*!!e.emissive}),r=new s.eaF(n,a);return f.push({geometry:n,material:a}),W.add(r),r}),D=new s.eaF(new s.qFE(.5,1.3,4),new s._4j({color:0x9fe8ff,emissive:3789055,emissiveIntensity:1.1,roughness:.4}));f.push({geometry:D.geometry,material:D.material}),D.rotation.x=-Math.PI/2,D.position.set(0,0,0),W.add(D);let Y=new s.eaF(new s.rKP(.96,1.04,48),new s.V9B({color:9426656,transparent:!0,opacity:.4,side:s.$EB,depthWrite:!1}));f.push({geometry:Y.geometry,material:Y.material}),Y.rotation.x=-Math.PI/2,W.add(Y);let K=new s.YJl;K.position.set(0,0,-.9),v.add(K);let U=new s._4j({color:1774640,roughness:.6,metalness:.1}),$=new s._4j({color:2760522,roughness:.5});f.push({material:U},{material:$});let J=(e,t,n,a,r,o,l)=>{let i=new s.eaF(new s.iNn(e,t,n),l);return f.push({geometry:i.geometry}),i.position.set(a,r,o),K.add(i),i};J(.9,2,.7,0,1,0,U),J(1,.16,.8,0,2.02,0,$),J(.96,.5,.6,0,.78,.18,$);{let e=b("HOTTUB SPACE",0xffcf73,"#1a1030",'bold 88px "Arial Black", system-ui');m.push(e);let t=new s.eaF(new s.bdM(.92,.26),new s.V9B({map:e,transparent:!0,toneMapped:!1}));f.push({geometry:t.geometry,material:t.material}),t.position.set(0,2.02,.41),K.add(t)}J(.78,.62,.06,0,1.5,.34,U);let Z=new s.eaF(new s.bdM(.62,.47),new s.V9B({map:P.texture,toneMapped:!1}));f.push({geometry:Z.geometry,material:Z.material}),Z.position.set(0,1.5,.38),K.add(Z);{let e=function(){let e=document.createElement("canvas");e.width=256,e.height=256;let t=e.getContext("2d");t.clearRect(0,0,256,256),t.fillStyle="rgba(0,0,0,0.55)";for(let e=0;e<256;e+=3)t.fillRect(0,e,256,1);let n=t.createRadialGradient(128,128,51.2,128,128,179.2);return n.addColorStop(0,"rgba(0,0,0,0)"),n.addColorStop(1,"rgba(0,0,0,0.6)"),t.fillStyle=n,t.fillRect(0,0,256,256),new s.GOR(e)}();m.push(e);let t=new s.eaF(new s.bdM(.62,.47),new s.V9B({map:e,transparent:!0,depthWrite:!1,opacity:.5}));f.push({geometry:t.geometry,material:t.material}),t.position.set(0,1.5,.385),K.add(t)}let ee=document.createElement("canvas");ee.width=512,ee.height=64;let et=ee.getContext("2d"),er=new s.GOR(ee);m.push(er);let eo=new s.eaF(new s.bdM(.7,.088),new s.V9B({map:er,transparent:!0,toneMapped:!1}));f.push({geometry:eo.geometry,material:eo.material}),eo.position.set(0,1.16,.36),eo.rotation.x=-.18,K.add(eo);let el=new s._4j({color:1051170,roughness:.7});f.push({material:el});let ei=new s.eaF(new s.iNn(.9,.05,.42),el);f.push({geometry:ei.geometry}),ei.position.set(0,1.02,.4),ei.rotation.x=-.32,K.add(ei);{let e=new s.eaF(new s.Ho_(.018,.018,.13,12),new s._4j({color:546}));f.push({geometry:e.geometry,material:e.material}),e.position.set(-.22,1.08,.36),e.rotation.x=-.32,K.add(e);let t=new s.eaF(new s.Gu$(.045,16,12),new s._4j({color:0xd03048,roughness:.4}));f.push({geometry:t.geometry,material:t.material}),t.position.set(-.22,1.15,.34),K.add(t)}[3789055,0xff3aa0,0xffcf73].forEach((e,t)=>{let n=new s.eaF(new s.Ho_(.035,.035,.03,16),new s._4j({color:e,emissive:e,emissiveIntensity:.35,roughness:.4}));f.push({geometry:n.geometry,material:n.material}
1),n.position.set(.05+.11*t,1.06,.38),n.rotation.x=-.32+Math.PI/2,K.add(n)});{let e=b("TAP TO PLAY",3789055,"rgba(0,0,0,0)","bold 64px system-ui");m.push(e);let t=new s.eaF(new s.bdM(.5,.1),new s.V9B({map:e,transparent:!0,toneMapped:!1}));f.push({geometry:t.geometry,material:t.material}),t.position.set(0,.86,.45),t.rotation.x=-.3,K.add(t)}let es=new s.tBo,ed=new s.I9Y,eu=e=>{let t=u.domElement.getBoundingClientRect();return ed.set((e.clientX-t.left)/t.width*2-1,-(2*((e.clientY-t.top)/t.height))+1),es.setFromCamera(ed,S),es.intersectObject(K,!0).length>0},ep=e=>{eu(e)&&ec.current()},eh=e=>{u.domElement.style.cursor=eu(e)?"pointer":"default"};u.domElement.addEventListener("click",ep),u.domElement.addEventListener("pointermove",eh);let ef={thrust:0,yaw:0},em=new Set,eg=()=>{let e=0,t=0;(em.has("w")||em.has("arrowup")||em.has(" "))&&(e+=1),(em.has("s")||em.has("arrowdown"))&&(e-=1),(em.has("d")||em.has("arrowright"))&&(t+=1),(em.has("a")||em.has("arrowleft"))&&(t-=1),ef.thrust=e,ef.yaw=t},ew=e=>{let t=e.key.toLowerCase();return(["w","a","s","d"," ","arrowup","arrowdown","arrowleft","arrowright","q","e","h"].includes(t)&&e.preventDefault(),"q"===t)?(0,c.Hc)(L,-1):"e"===t?(0,c.Hc)(L,1):"h"===t?(0,c.eM)(L):void(em.add(t),eg())},ey=e=>{em.delete(e.key.toLowerCase()),eg()};window.addEventListener("keydown",ew),window.addEventListener("keyup",ey);let ex=!0,eb=new s.zD7,ev=0,eS=1/30,ej=0;u.setAnimationLoop(()=>{let e=eb.getDelta(),t=eb.elapsedTime,n=(()=>{let e=u.xr.getSession();if(!e)return{thrust:0,yaw:0};let t=0,n=0,a=0,r=!1;for(let c of e.inputSources){var o,l,i,s,d;let e=c.gamepad;if(!e)continue;let u=null!=(i=null!=(l=e.axes[2])?l:e.axes[0])?i:0,p=null!=(d=null!=(s=e.axes[3])?s:e.axes[1])?d:0;"left"===c.handedness?a=p:(Math.abs(p)>.16&&(t+=-p),Math.abs(u)>.16&&(n+=u)),(null==(o=e.buttons[0])?void 0:o.pressed)&&(r=!0)}return r&&(t=1),Math.abs(a)>.6?ex&&((0,c.Hc)(L,a<0?1:-1),ex=!1):.25>Math.abs(a)&&(ex=!0),{thrust:Math.max(-1,Math.min(1,t)),yaw:Math.max(-1,Math.min(1,n))}})(),a={thrust:Math.max(-1,Math.min(1,ef.thrust+n.thrust)),yaw:Math.max(-1,Math.min(1,ef.yaw+n.yaw))};(0,c.rr)(L,e,a);let o=L.ship;if((ej+=e)>=eS){ej%=eS;let e=(0,c.mY)(o.scale);for(let t=0;t<L.bodies.length;t++){let n=L.bodies[t],{dx:a,dz:r}=(0,c.M)(L,t,600),o=V[t];if(o.position.set(a,0,r),o.scale.setScalar(Math.max(n.radius/e,.05)),0===t){N.position.set(a,0,r);let t=Math.max(n.radius/e*4.5,.6);N.scale.set(t,t,1),z.position.set(a,2,r)}}{let t=o.attractor,n=L.bodies[t],a=V[t];Y.position.set(a.position.x,.001,a.position.z),Y.scale.setScalar(1.3*Math.max(n.radius/e,.05)),Y.visible=o.landedOn<0}D.visible=o.landedOn<0,r||(D.position.y=.1+.05*Math.sin(3*t)),u.setRenderTarget(P),u.render(W,O),u.setRenderTarget(null)}r||(j.intensity=14+1.5*Math.sin(7.3*t),k.intensity=14+1.5*Math.sin(5.1*t+1)),(ev+=e)>.12&&(ev=0,function(e,t,n){let{width:a,height:r}=t;e.clearRect(0,0,a,r),e.font='bold 30px "Courier New", monospace',e.textBaseline="middle",e.fillStyle="#9fe8ff",e.shadowColor="#39d0ff",e.shadowBlur=8;let o="NEAREST ".concat(n.attractor.toUpperCase(),"   SCL ").concat(n.scale>=0?"+":"").concat(n.scale,"   SPD ").concat(n.speed.toFixed(1),"   ").concat(w[n.status]);e.fillText(o,12,r/2)}(et,ee,{attractor:L.bodies[o.attractor].name,status:o.status,scale:o.scale,speed:o.speed}),er.needsUpdate=!0),u.render(v,S)});let ek=()=>{let e=a.clientWidth||window.innerWidth,t=a.clientHeight||window.innerHeight;S.aspect=e/t,S.updateProjectionMatrix(),u.setSize(e,t)};return ek(),window.addEventListener("resize",ek),window.addEventListener("orientationchange",ek),()=>{for(let r of(window.removeEventListener("resize",ek),window.removeEventListener("orientationchange",ek),window.removeEventListener("keydown",ew),window.removeEventListener("keyup",ey),u.domElement.removeEventListener("click",ep),u.domElement.removeEventListener("pointermove",eh),en.current=null,X.current=null,T&&(v.remove(T),(0,g.Vr)(T),T=null),P.dispose(),h.remove(),(0,p.NP)(u),f)){var e,t,n,a;null==(t=r.geometry)||null==(e=t.dispose)||e.call(t),Array.isArray(r.material)?r.material.forEach(e=>e.dispose()):null==(a=r.material)||null==(n=a.dispose)||n.call(a)}for(let e of m)e.dispose()}},[]),(0,a.jsxs)("div",{ref:B,className:"xr-host",style:{touchAction:"none"},children:[L&&(0,a.jsxs)("div",{style:v,children:[(0,a.jsx)("div",{style:{fontWeight:800,color:"#ffd28a"},children:"WebGL unavailable"}),(0,a.jsxs)("p",{style:{fontSize:13,lineHeight:1.5,marginTop:6},children:["The browser couldn’t create a 3D context. On ",(0,a.jsx)("strong",{children:"Brave"}),", click the Shields (lion) icon → set Shields ",(0,a.jsx)("strong",{children:"Down for this site"}),", then reload. Otherwise ",(0,a.jsx)("strong",{children:"reload this tab"})," (too many WebGL views open) and confirm hardware acceleration is on. Works in Safari, Edge, Chrome, and the Quest browser."]}
1)]}),!1===H&&!L&&!P&&(0,a.jsxs)("div",{style:k,children:[(0,a.jsx)("button",{style:F,onClick:function(){W(!0),ea.current&&(ea.current.style.display="none")},"aria-label":"Dismiss",children:"\xd7"}),(0,a.jsxs)("span",{children:["Tap the cabinet (or ",(0,a.jsxs)("strong",{children:[(0,a.jsx)(i.In,{name:"play"})," Play"]}),") to fly Hottub Space yourself. In a headset, tap ",(0,a.jsx)("strong",{children:"Enter VR"})," to step into the arcade."]})]}),(0,a.jsxs)("div",{style:{position:"absolute",top:16,left:16,zIndex:6},children:[(0,a.jsx)("button",{onClick:()=>z(e=>!e),"aria-label":"Hottub menu","aria-expanded":O,style:M,children:(0,a.jsx)("img",{src:"/favicon.png",alt:"","aria-hidden":"true",style:{width:"100%",height:"100%",display:"block",objectFit:"cover"}})}),O&&(0,a.jsxs)("div",{style:C,children:[(0,a.jsx)("div",{style:{fontWeight:800,letterSpacing:"0.05em",color:"#ffd28a"},children:"STEAMY’S ARCADE"}),(0,a.jsx)("div",{style:{fontSize:11,opacity:.7,marginBottom:8},children:"& Gentleman’s Steakhouse"}),(0,a.jsxs)("button",{onClick:ed,style:{...S,display:"block",width:"100%",textAlign:"center",background:"linear-gradient(90deg,#39d0ff,#ff3aa0)",fontWeight:700},children:[(0,a.jsx)(i.In,{name:"play"})," Play Hottub Space"]}),D?(0,a.jsxs)("button",{onClick:()=>{V(!0),z(!1)},style:{...S,display:"block",width:"100%",textAlign:"center",marginTop:8,background:"linear-gradient(90deg,#f26d4a,#ffb84d)",fontWeight:700,color:"#1a1030"},children:[(0,a.jsx)(i.In,{name:"cards"})," Deal a hand of Bridge"]}):(0,a.jsxs)("div",{style:{marginTop:8,padding:"8px 10px",borderRadius:8,fontSize:11,lineHeight:1.5,background:"rgba(242,109,74,0.12)",border:"1px solid rgba(242,109,74,0.3)",color:"#ffd0bf"},children:[(0,a.jsxs)("strong",{style:{color:"#ffb84d"},children:[(0,a.jsx)(i.In,{name:"cards"})," Bridge"]})," — ",y?"":"sign in, then ","open this arcade from a Soak to play (add ",(0,a.jsx)("code",{children:"?soak=…"})," to the URL)."]}),(0,a.jsx)("div",{style:{marginTop:12,fontSize:11,textTransform:"uppercase",letterSpacing:"0.06em",opacity:.6},children:"Voice chat"}),"idle"===eu||"denied"===eu||"error"===eu?(0,a.jsxs)("button",{onClick:()=>void ew(),style:{...S,display:"block",width:"100%",marginTop:6},children:[(0,a.jsx)(i.In,{name:"mic"})," Start voice chat"]}):(0,a.jsxs)("div",{style:{display:"flex",gap:6,marginTop:6},children:[(0,a.jsxs)("button",{style:{...S,flex:1},onClick:function(){ef(e=>{var t;let n=!e;return null==(t=em.current)||t.setMuted(n),n})},children:[(0,a.jsx)(i.In,{name:eh?"volume-mute":"mic"})," ",eh?"Unmute":"Mute"]}),(0,a.jsx)("button",{style:{...S,flex:1},onClick:function(){var e;null==(e=em.current)||e.stop(),em.current=null,ep("idle")},children:"Leave"})]}),(0,a.jsxs)("div",{style:{fontSize:11,opacity:.7,marginTop:4},children:["connecting"===eu&&"Connecting…","live"===eu&&"Voice connected (peer-to-peer) — others in this room can hear you.","denied"===eu&&"Mic permission needed.","full"===eu&&"Room is full (max ".concat(f.ut,")."),"error"===eu&&"Voice error — try again.","idle"===eu&&"Hang out together — up to 8 in the room."]}),(0,a.jsxs)("div",{style:{display:"flex",gap:6,marginTop:12,flexWrap:"wrap"},children:[(0,a.jsx)("button",{style:S,onClick:()=>en.current&&(0,c.Hc)(en.current,-1),children:"Zoom −"}),(0,a.jsx)("button",{style:S,onClick:()=>en.current&&(0,c.Hc)(en.current,1),children:"Zoom +"}),(0,a.jsx)("button",{style:S,onClick:()=>en.current&&(0,c.eM)(en.current),children:"Home"}),(0,a.jsxs)("button",{style:S,onClick:function(){eo(e=>{let t=!e;return el.current||(el.current=(0,u.UK)("arcade")),t?el.current.start():el.current.stop(),t})},children:[(0,a.jsx)(i.In,{name:er?"volume":"volume-mute"})," Sound: ",er?"on":"off"]})]}),(0,a.jsxs)("div",{style:{marginTop:8,fontSize:11,opacity:.6,lineHeight:1.5},children:[(0,a.jsx)("kbd",{children:"W"}),"/",(0,a.jsx)("kbd",{children:"S"})," thrust \xb7 ",(0,a.jsx)("kbd",{children:"A"}),"/",(0,a.jsx)("kbd",{children:"D"})," turn \xb7 ",(0,a.jsx)("kbd",{children:"Q"}),"/",(0,a.jsx)("kbd",{children:"E"})," scale"]}),(0,a.jsx)("div",{style:{marginTop:12,fontSize:11,textTransform:"uppercase",letterSpacing:"0.06em",opacity:.6},children:"Your avatar"}),(0,a.jsxs)("button",{onClick:()=>$(e=>!e),"aria-pressed":U,style:{...S,display:"flex",alignItems:"center",gap:8,width:"100%",marginTop:6},children:[(0,a.jsx)("span",{"aria-hidden":"true",style:{width:13,height:13,borderRadius:"50%",background:J.color,opacity:U?1:.4,boxShadow:U?"0 0 6px ".concat(J.color):"none"}}
1),U?"Showing — tap to hide":"Hidden — tap to show"]}),(0,a.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,marginTop:8},children:g.CK.map(e=>(0,a.jsx)("button",{onClick:()=>Z(t=>({...t,color:e})),"aria-label":"Color ".concat(e),"aria-pressed":J.color===e,style:{width:22,height:22,borderRadius:"50%",cursor:"pointer",background:e,border:J.color===e?"2px solid #ffd28a":"2px solid transparent"}},e))}),(0,a.jsx)("div",{style:{display:"flex",gap:6,marginTop:8},children:g.rr.map(e=>(0,a.jsx)("button",{onClick:()=>Z(t=>({...t,body:e})),"aria-pressed":J.body===e,style:{...S,flex:1,padding:"6px 2px",background:J.body===e?"linear-gradient(90deg,#39d0ff,#ff3aa0)":S.background,fontWeight:J.body===e?700:400},children:g.kb[e]},e))}),(0,a.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6,marginTop:6},children:g.pr.map(e=>(0,a.jsx)("button",{onClick:()=>Z(t=>({...t,hat:e})),"aria-pressed":J.hat===e,style:{...S,padding:"6px 10px",background:J.hat===e?"linear-gradient(90deg,#f26d4a,#ffb84d)":S.background,color:J.hat===e?"#1a1030":void 0,fontWeight:J.hat===e?700:400},children:g.jC[e]},e))})]})]}),(0,a.jsx)("a",{href:t,style:j,children:"← Rooms"}),N&&D&&(0,a.jsx)("div",{style:E,role:"dialog","aria-label":"Card table",children:(0,a.jsxs)("div",{style:A,children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:10},children:[(0,a.jsx)("strong",{style:{color:"#ffd28a",letterSpacing:"0.04em"},children:"STEAMY’S CARD TABLE"}),(0,a.jsx)("button",{onClick:()=>V(!1),"aria-label":"Close card table",style:{...S,padding:"4px 12px"},children:"Close"})]}),I?y?null:(0,a.jsx)("div",{style:R,children:(0,a.jsx)("span",{children:"Sign in to take a seat at the table."})}):(0,a.jsx)("div",{style:R,children:(0,a.jsxs)("span",{children:["Card games are turned off on this server. Set ",(0,a.jsx)("code",{children:"FEATURE_SOAK_GAMES=true"})," in ",(0,a.jsx)("code",{children:".env.local"})," and restart."]})}),I&&Y&&"live"!==Y.soakStatus?(0,a.jsx)("div",{style:R,children:Y.canManage?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("span",{children:"The room isn’t live yet."}),(0,a.jsx)("button",{onClick:()=>void et(),style:{...S,background:"linear-gradient(90deg,#f26d4a,#ffb84d)",color:"#1a1030",fontWeight:700},children:"Go live"})]}):(0,a.jsx)("span",{children:"Waiting for the host to start the room…"})}):Y&&!Y.checkedIn?(0,a.jsx)("div",{style:R,children:(0,a.jsx)("span",{children:"Joining the table…"})}):null,(0,a.jsx)(m.SoakGameTable,{soakId:n,currentUserId:y,soakType:"online",autoBots:T,autoStart:"bridge"})]})})]})}function x(e,t,n,a,r,o,l,i,d){let c=new s.YJl;c.position.set(r,0,o),c.rotation.y=l,e.add(c);let u=new s._4j({color:1577008,roughness:.6});n.push({material:u});let p=new s.eaF(new s.iNn(.8,1.9,.6),u);n.push({geometry:p.geometry}),p.position.set(0,.95,0),c.add(p);let h=b(d,i,"#06060f",'bold 70px "Arial Black", system-ui');a.push(h);let f=new s.eaF(new s.bdM(.6,.45),new s.V9B({map:h,transparent:!0,toneMapped:!1}));n.push({geometry:f.geometry,material:f.material}),f.position.set(0,1.35,.31),c.add(f);let m=new s.HiM(i,3,3.5,2);m.position.set(0,1.4,.6),c.add(m)}function b(e,t,n,a){let r=document.createElement("canvas");r.width=512,r.height=256;let o=r.getContext("2d");n&&"rgba(0,0,0,0)"!==n?(o.fillStyle=n,o.fillRect(0,0,512,256)):o.clearRect(0,0,512,256);let l="number"==typeof t?"#"+t.toString(16).padStart(6,"0"):t;o.font=a,o.textAlign="center",o.textBaseline="middle",o.shadowColor=l,o.shadowBlur=28,o.fillStyle=l;let i=e.split("\n"),d=256/(i.length+.5);return i.forEach((e,t)=>o.fillText(e,256,d*(t+.8),464)),o.shadowBlur=6,o.fillStyle="#fff",o.globalAlpha=.35,i.forEach((e,t)=>o.fillText(e,256,d*(t+.8),464)),o.globalAlpha=1,new s.GOR(r)}let v={position:"absolute",top:16,left:16,zIndex:5,padding:"12px 14px",borderRadius:12,maxWidth:300,background:"rgba(10,8,19,0.78)",color:"#eaf2ff",backdropFilter:"blur(6px)",border:"1px solid rgba(255,120,196,0.3)",fontFamily:"system-ui, sans-serif"},S={padding:"6px 10px",borderRadius:8,fontSize:12,cursor:"pointer",background:"rgba(255,255,255,0.1)",color:"#eaf2ff",border:"1px solid rgba(255,255,255,0.2)"},j={position:"absolute",top:16,right:16,zIndex:5,padding:"8px 12px",borderRadius:8,fontSize:13,textDecoration:"none",background:"rgba(10,8,19,0.78)",color:"#eaf2ff",border:"1px solid rgba(255,255,255,0.12)"},k={position:"absolute",bottom:78,left:"50%",transform:"translateX(-50%)",zIndex:5,display:"flex",gap:10,alignItems:"flex-start",maxWidth:460,padding:"10px 14px",borderRadius:12,background:"rgba(10,8,19,0.82)",color:"#eaf2ff",border:"1px solid rgba(255,255,255,0.14)",fontFamily:"system-ui, sans-serif",fontSize:13,lineHeight:1.5},M={width:44,height:44,borderRadius:999,cursor:"pointer",padding:0,overflow:"hidden",background:"transparent",border:"2px s
1olid rgba(255,255,255,0.55)",boxShadow:"0 6px 18px rgba(242,109,74,0.35)"},C={marginTop:8,width:280,padding:"12px 14px",borderRadius:12,background:"rgba(10,8,19,0.85)",color:"#eaf2ff",backdropFilter:"blur(6px)",border:"1px solid rgba(255,120,196,0.3)",fontFamily:"system-ui, sans-serif"},E={position:"absolute",inset:0,zIndex:12,display:"flex",alignItems:"center",justifyContent:"center",padding:16,background:"rgba(6,5,12,0.62)",backdropFilter:"blur(3px)"},R={display:"flex",alignItems:"center",justifyContent:"space-between",gap:10,flexWrap:"wrap",marginBottom:10,padding:"8px 12px",borderRadius:10,fontSize:13,background:"rgba(255,184,77,0.12)",border:"1px solid rgba(255,184,77,0.3)",color:"#ffe2b0"},A={width:"min(560px, 96vw)",maxHeight:"88vh",overflowY:"auto",padding:"14px 16px",borderRadius:16,background:"rgba(14,12,24,0.96)",color:"#eaf2ff",border:"1px solid rgba(255,120,196,0.3)",boxShadow:"0 24px 64px rgba(0,0,0,0.5)",fontFamily:"system-ui, sans-serif"},F={flex:"0 0 auto",width:22,height:22,borderRadius:999,cursor:"pointer",display:"grid",placeItems:"center",padding:0,lineHeight:1,background:"rgba(255,255,255,0.12)",color:"#eaf2ff",border:"1px solid rgba(255,255,255,0.25)",fontSize:15}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.