@seatlayer/core 0.98.0 → 0.99.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{categoryInventory-4XH7dMDH.d.ts → categoryInventory-DdJdJ4Og.d.ts} +1 -1
- package/dist/{categoryInventory-C-bfH2av.d.cts → categoryInventory-DuOez0-4.d.cts} +1 -1
- package/dist/{chunk-M5VINTGE.js → chunk-23OTKCJU.js} +1 -1
- package/dist/{chunk-CUACREZL.js → chunk-CTIGUXXK.js} +1 -1
- package/dist/{chunk-P4C24CIZ.js → chunk-D723OZEY.js} +1 -1
- package/dist/chunk-FYJJSWEM.js +1 -0
- package/dist/chunk-GLGXP5I7.js +1 -0
- package/dist/{chunk-FLMKHAUT.js → chunk-HO4MFTVX.js} +1 -1
- package/dist/chunk-HYEZPOZU.js +1 -0
- package/dist/chunk-K22SISYC.js +1 -0
- package/dist/{chunk-YPESNMTC.js → chunk-KFVUBZMK.js} +1 -1
- package/dist/{chunk-OLGPAFXW.js → chunk-L34T3APU.js} +1 -1
- package/dist/{chunk-IW7QZIMF.js → chunk-N4J4CT6P.js} +1 -1
- package/dist/{chunk-2P72QUJR.js → chunk-UIMDB6GZ.js} +1 -1
- package/dist/chunk-UISTXRO5.js +1 -0
- package/dist/{chunk-ASIIXY5M.js → chunk-VWT44HBR.js} +1 -1
- package/dist/core/chart-ops/index.cjs +1 -1
- package/dist/core/chart-ops/index.d.cts +6 -4
- package/dist/core/chart-ops/index.d.ts +6 -4
- package/dist/core/chart-ops/index.js +1 -1
- package/dist/core/inventory/index.cjs +1 -1
- package/dist/core/inventory/index.d.cts +4 -4
- package/dist/core/inventory/index.d.ts +4 -4
- package/dist/core/inventory/index.js +1 -1
- package/dist/core/layout/index.cjs +1 -1
- package/dist/core/layout/index.d.cts +5 -5
- package/dist/core/layout/index.d.ts +5 -5
- package/dist/core/layout/index.js +1 -1
- package/dist/core/quality/index.d.cts +3 -3
- package/dist/core/quality/index.d.ts +3 -3
- package/dist/core/quality/index.js +1 -1
- package/dist/core/render-assets/index.d.cts +2 -2
- package/dist/core/render-assets/index.d.ts +2 -2
- package/dist/core/seatConfidence.d.cts +1 -1
- package/dist/core/seatConfidence.d.ts +1 -1
- package/dist/core/sections/index.cjs +1 -1
- package/dist/core/sections/index.d.cts +5 -5
- package/dist/core/sections/index.d.ts +5 -5
- package/dist/core/sections/index.js +1 -1
- package/dist/{eventConfigurations-BEyHDxBT.d.ts → eventConfigurations-BISNREZL.d.ts} +1 -1
- package/dist/{eventConfigurations-BE0rFmbQ.d.cts → eventConfigurations-DYn5XP3J.d.cts} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +13 -13
- package/dist/index.d.ts +13 -13
- package/dist/index.js +1 -1
- package/dist/{labeling-HWSKKrX8.d.ts → labeling-CzuSxAkr.d.ts} +1 -1
- package/dist/{labeling-SURRJh5u.d.cts → labeling-owTTG6e0.d.cts} +1 -1
- package/dist/{openPanorama-6FMXAJ6O.js → openPanorama-VD6PE3YZ.js} +2 -2
- package/dist/{renderedQuality-CZNfpB1H.d.ts → renderedQuality-BMSbVkwu.d.ts} +1 -1
- package/dist/{renderedQuality-QWHMvOej.d.cts → renderedQuality-Bl1Kq_XO.d.cts} +1 -1
- package/dist/{renderer-DEnthjgs.d.cts → renderer-Ccv8ZDZS.d.cts} +1 -1
- package/dist/{renderer-CuXYGgR3.d.ts → renderer-njHDbIqI.d.ts} +1 -1
- package/dist/{seatTypeIcons-BAyWebjw.d.cts → seatTypeIcons-QwEebl3k.d.cts} +1 -1
- package/dist/{seatTypeIcons-CqLiEH9C.d.ts → seatTypeIcons-dy3XQVWN.d.ts} +1 -1
- package/dist/{sections-DOk8zxm5.d.ts → sections-C8VTe6BN.d.ts} +1 -1
- package/dist/{sections-BlCiPWJJ.d.cts → sections-DSIfnBJY.d.cts} +1 -1
- package/dist/{segmentedRowModel-BbHdWqJy.d.cts → segmentedRowModel-CDvvJJ4-.d.cts} +1 -1
- package/dist/{segmentedRowModel-oVUtwW87.d.ts → segmentedRowModel-I8eYUQft.d.ts} +1 -1
- package/dist/{tableSizing-ExOrUwtX.d.ts → tableSizing-BLtQ-KV0.d.ts} +20 -13
- package/dist/{tableSizing-DaEXRHYs.d.cts → tableSizing-CB8g2Fs0.d.cts} +20 -13
- package/dist/{ticketRestrictions-BvG_INSV.d.cts → ticketRestrictions-BvlWLw10.d.cts} +2 -2
- package/dist/{ticketRestrictions-BHUMet7N.d.ts → ticketRestrictions-DUjN2bZn.d.ts} +2 -2
- package/dist/{types-BbqhOJ5L.d.ts → types-DWx32xXH.d.cts} +10 -1
- package/dist/{types-BbqhOJ5L.d.cts → types-DWx32xXH.d.ts} +10 -1
- package/dist/view3d/crossfade/panorama.cjs +1 -1
- package/dist/view3d/crossfade/panorama.d.cts +1 -1
- package/dist/view3d/crossfade/panorama.d.ts +1 -1
- package/dist/view3d/crossfade/panorama.js +1 -1
- package/dist/view3d/index.cjs +103 -47
- package/dist/view3d/index.d.cts +21 -4
- package/dist/view3d/index.d.ts +21 -4
- package/dist/view3d/index.js +101 -45
- package/dist/view3d/scene/scene.worker.cjs +1 -1
- package/dist/view3d/scene/scene.worker.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-2MXDWZQ4.js +0 -1
- package/dist/chunk-QEPYNCBJ.js +0 -1
- package/dist/chunk-SPM2LMKI.js +0 -1
- package/dist/chunk-VAI2VDQR.js +0 -1
- package/dist/chunk-Z43H6AWN.js +0 -1
package/dist/view3d/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var vu=Object.create;var Bn=Object.defineProperty;var Mu=Object.getOwnPropertyDescriptor;var Su=Object.getOwnPropertyNames;var wu=Object.getPrototypeOf,Pu=Object.prototype.hasOwnProperty;var rn=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(o){throw n=[o],o}};var ui=(e,t)=>{for(var n in t)Bn(e,n,{get:t[n],enumerable:!0})},mi=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Su(t))!Pu.call(e,r)&&r!==n&&Bn(e,r,{get:()=>t[r],enumerable:!(o=Mu(t,r))||o.enumerable});return e};var mt=(e,t,n)=>(n=e!=null?vu(wu(e)):{},mi(t||!e||!e.__esModule?Bn(n,"default",{value:e,enumerable:!0}):n,e)),Iu=e=>mi(Bn({},"__esModule",{value:!0}),e);function Jb(e,t){return!Number.isFinite(e)||!Number.isFinite(t)||e<=0||t<=0?0:Math.ceil(e*t*4*(4/3))}function ey(e){return(e!==void 0&&e<=2?32:e!==void 0&&e>=8?192:96)*1024*1024}function Ao(e){let t=typeof navigator>"u"?void 0:navigator;return{saveData:t?.connection?.saveData===!0,maxTextureSize:e,maxDecodedBytes:ey(t?.deviceMemory)}}function Co(e,t={}){let n=e.previewUrl?.trim();if(!n||n===e.url)return{initialUrl:e.url,initialWidth:e.sourceWidth,initialHeight:e.sourceHeight,reason:"full-only"};let o={initialUrl:n,initialWidth:e.previewWidth,initialHeight:e.previewHeight};if(t.saveData)return{...o,reason:"save-data"};let r=[...e.variants??[],...e.sourceWidth!==void 0&&e.sourceHeight!==void 0?[{url:e.url,width:e.sourceWidth,height:e.sourceHeight}]:[]].filter(c=>c.url.trim()&&c.url!==n&&Number.isFinite(c.width)&&c.width>0&&Number.isFinite(c.height)&&c.height>0).sort((c,u)=>c.width*c.height-u.width*u.height);if(!r.length)return{...o,upgradeUrl:e.url,reason:"progressive"};let i=r.filter(c=>t.maxTextureSize===void 0||Math.max(c.width,c.height)<=t.maxTextureSize);if(!i.length)return{...o,reason:"texture-limit"};let a=i.filter(c=>t.maxDecodedBytes===void 0||Jb(c.width,c.height)<=t.maxDecodedBytes);if(!a.length)return{...o,reason:"memory-limit"};let s=a[a.length-1];return{...o,upgradeUrl:s.url,reason:"progressive"}}function Dl(){return new DOMException("Panorama image load aborted","AbortError")}function Tn(e,t){return new Promise((n,o)=>{if(t?.aborted){o(Dl());return}let r=new Image;r.crossOrigin="anonymous";let i=!1,a=()=>{r.onload=null,r.onerror=null,t?.removeEventListener("abort",c)},s=u=>{i||(i=!0,a(),u?o(u):n(r))},c=()=>{r.src="",s(Dl())};r.onload=()=>{(typeof r.decode=="function"?r.decode():Promise.resolve()).then(()=>s(),()=>s())},r.onerror=()=>s(new Error("panorama_image_failed")),t?.addEventListener("abort",c,{once:!0}),r.src=e})}function Eo(e){let t=globalThis;if(t.requestIdleCallback){let o=t.requestIdleCallback(e,{timeout:1200});return()=>t.cancelIdleCallback?.(o)}let n=globalThis.setTimeout(e,32);return()=>globalThis.clearTimeout(n)}var qr=rn(()=>{"use strict"});function Bl(e){let t=e.mediaKind==="demo-render",n=e.generated||e.mediaKind==="model"?"Live 3D \xB7 chart-derived seat-eye":t?e.coverage==="exact-seat"?"AI-generated exact-seat demo":e.coverage==="row-representative"?"AI-generated representative row demo":e.coverage==="section-representative"?"AI-generated representative section demo":e.coverage==="floor-representative"?"AI-generated representative floor demo":"AI-generated illustrative venue demo":e.coverage==="exact-seat"?"Exact seat photo":e.coverage==="row-representative"?"Representative row view":e.coverage==="section-representative"?"Representative section view":e.coverage==="floor-representative"?"Representative floor view":e.coverage==="venue-representative"?"Representative venue view":"Venue photo",o=e.capturedAt&&/^\d{4}/.test(e.capturedAt)?e.capturedAt.slice(0,4):"";return[n,o?`${t?"created":"captured"} ${o}`:"",e.sourceLabel??""].filter(Boolean).join(" \xB7 ")}function $r(e){return Math.max(ty,Math.min(ny,e))}function oy(e,t,n){let o=(.5+e/360)*n;return t/2-o}function ry(e,t=To){return e*(180/t)}function Ol(e,t,n){return(e-t)/2+_o(n,t)}function _o(e,t){let n=et/180*t;return Math.max(-n,Math.min(n,e))}function iy(){if(typeof window>"u")return!1;try{if(typeof window.matchMedia=="function"&&window.matchMedia("(pointer: coarse)").matches)return!0}catch{}return"ontouchstart"in window}function Zr(e){return e||(iy()?"Drag to look \xB7 pinch to zoom \xB7 tap \u2715 to close":"Drag to look \xB7 pinch or scroll to zoom \xB7 Esc to close")}function Nl(e,t,n={}){let o=n.fadeMs??400,r=t.initialBearingDeg??0,i=Co(t,Ao()),a=new AbortController,s=()=>a.abort();n.signal?.addEventListener("abort",s,{once:!0});let c=document.createElement("div"),u=document.activeElement instanceof HTMLElement?document.activeElement:null;c.setAttribute("role","dialog"),c.setAttribute("aria-modal","true"),c.setAttribute("aria-label",n.seatLabel?`View from ${n.seatLabel}`:"View from seat"),c.tabIndex=-1,Object.assign(c.style,{position:"absolute",inset:"0",zIndex:"10",opacity:"0",transition:`opacity ${o}ms ease`,background:"#05070c",overflow:"hidden",touchAction:"none"});let l=document.createElement("div");Object.assign(l.style,{position:"absolute",inset:"0",backgroundImage:`url("${i.initialUrl}")`,backgroundRepeat:"repeat-x",cursor:"grab"}),c.appendChild(l);let m=document.createElement("button");if(m.type="button",m.setAttribute("aria-label","Close"),m.textContent="\u2715",Object.assign(m.style,{position:"absolute",top:"12px",right:"12px",zIndex:"2",width:"44px",height:"44px",borderRadius:"999px",cursor:"pointer",border:"1px solid rgba(255,255,255,0.25)",background:"rgba(8,12,18,0.6)",color:"#e6edf3",fontSize:"15px",lineHeight:"1"}),c.appendChild(m),n.disclosure){let N=document.createElement("div");N.textContent=`${n.disclosurePrefix??"360\xB0 panorama"} \xB7 ${n.disclosure}`,Object.assign(N.style,{position:"absolute",top:"calc(12px + var(--sl-3d-top-inset, 0px))",left:"12px",zIndex:"2",maxWidth:"calc(100% - 88px)",padding:"8px 11px",borderRadius:"999px",overflow:"hidden",color:"#dce6f8",background:"rgba(8,12,18,0.68)",font:"600 11px/1.2 ui-sans-serif, system-ui, sans-serif",textOverflow:"ellipsis",whiteSpace:"nowrap",pointerEvents:"none",backdropFilter:"blur(6px)"}),c.appendChild(N)}let h=document.createElement("div");h.textContent=Zr(n.lookAroundHint),Object.assign(h.style,{position:"absolute",bottom:"12px",left:"0",right:"0",textAlign:"center",color:"rgba(230,237,243,0.7)",font:"12px ui-sans-serif, system-ui, sans-serif",pointerEvents:"none"}),c.appendChild(h),e.appendChild(c),m.focus({preventScroll:!0});let d=0,f=0,p=0,b=0,y=To,g=()=>{let N=c.clientHeight||1,z=c.clientWidth||1,K=R.naturalWidth||z*2,J=R.naturalHeight||N,Y=d>0?(z/2-p)/d:0,W=f>0?b/f:0;f=ry(N,y),d=f*(K/J),l.style.backgroundSize=`${d}px ${f}px`,M?p=z/2-Y*d:(p=oy(r,z,d),b=_o((t.initialPitchDeg??0)/180*f,f),M=!0),b=_o(W*f,f),l.style.backgroundPosition=`${p}px ${Ol(N,f,b)}px`},M=!1,v=()=>{let N=c.clientHeight||1;b=_o(b,f),l.style.backgroundPosition=`${p}px ${Ol(N,f,b)}px`},R=new Image;R.onload=g,R.src=i.initialUrl;let P=()=>{};i.upgradeUrl&&(P=Eo(()=>{(t.resolveUrl?t.resolveUrl(i.upgradeUrl):Promise.resolve(i.upgradeUrl)).then(z=>!z||a.signal.aborted?null:Tn(z,a.signal).then(K=>({full:K,url:z}))).then(z=>{z&&(k||a.signal.aborted||(R=z.full,l.style.backgroundImage=`url("${z.url}")`,g()))}).catch(()=>{})})),requestAnimationFrame(g);let x=!1,S=0,w=0,I=0,L=new Map,O=()=>{let[N,z]=[...L.values()];return N&&z?Math.hypot(N.x-z.x,N.y-z.y):0},D=N=>{let z=$r(N);z!==y&&(y=z,g())},A=N=>{L.set(N.pointerId,{x:N.clientX,y:N.clientY}),x=L.size===1,S=N.clientX,w=N.clientY,L.size===2&&(I=O()),l.style.cursor="grabbing";try{l.setPointerCapture?.(N.pointerId)}catch{}},E=N=>{if(L.has(N.pointerId)){if(L.set(N.pointerId,{x:N.clientX,y:N.clientY}),L.size>=2){let z=O();I>0&&z>0&&D(y*(I/z)),I=z,x=!1;return}x&&(p+=N.clientX-S,b+=N.clientY-w,S=N.clientX,w=N.clientY,v())}},T=N=>{L.delete(N.pointerId),I=L.size===2?O():0;let z=L.values().next().value;x=L.size===1,z?(S=z.x,w=z.y):l.style.cursor="grab";try{l.releasePointerCapture?.(N.pointerId)}catch{}},V=N=>{N.preventDefault(),D(y+N.deltaY*.04)};l.addEventListener("pointerdown",A),l.addEventListener("pointermove",E),l.addEventListener("pointerup",T),l.addEventListener("pointercancel",T),l.addEventListener("wheel",V,{passive:!1});let _=!1,k=!1,H=0,B=()=>{l.removeEventListener("pointerdown",A),l.removeEventListener("pointermove",E),l.removeEventListener("pointerup",T),l.removeEventListener("pointercancel",T),l.removeEventListener("wheel",V),window.removeEventListener("keydown",j)},F=()=>{P(),a.abort(),n.signal?.removeEventListener("abort",s),H&&(window.clearTimeout(H),H=0),B(),c.parentNode&&c.parentNode.removeChild(c),u?.isConnected&&u.focus({preventScroll:!0})},G=()=>{if(_)return;_=!0,c.style.opacity="0";let N=()=>{H=0,!k&&(F(),n.onClose?.())};H=window.setTimeout(N,o)},j=N=>{if(N.key==="Tab"){N.preventDefault(),m.focus({preventScroll:!0});return}if(N.key==="Escape"){N.stopPropagation(),G();return}if(N.key==="ArrowLeft"||N.key==="ArrowRight")p+=N.key==="ArrowLeft"?-32:32;else if(N.key==="ArrowUp"||N.key==="ArrowDown")b+=(N.key==="ArrowUp"?4:-4)*(f/180);else if(N.key==="+"||N.key==="="){D(y-5),N.preventDefault();return}else if(N.key==="-"){D(y+5),N.preventDefault();return}else return;N.preventDefault(),v()};return window.addEventListener("keydown",j),m.addEventListener("click",G),requestAnimationFrame(()=>{c.style.opacity="1"}),{close:G,dispose(){_=!0,k=!0,F()}}}var To,ty,ny,et,ko=rn(()=>{"use strict";qr();To=70,ty=35,ny=90;et=35});function ly(e=ay,t=sy,n=cy){let o=e+1,r=t+1,i=o*r,a=new Float32Array(i*3),s=new Float32Array(i*2);for(let l=0;l<r;l++){let m=l/t,h=m*Math.PI,d=Math.sin(h),f=Math.cos(h);for(let p=0;p<o;p++){let b=p/e,y=(b-.5)*Math.PI*2,g=l*o+p;a[g*3]=n*d*Math.sin(y),a[g*3+1]=n*f,a[g*3+2]=-n*d*Math.cos(y),s[g*2]=b,s[g*2+1]=m}}let c=new Uint16Array(e*t*6),u=0;for(let l=0;l<t;l++)for(let m=0;m<e;m++){let h=l*o+m,d=h+o;c[u++]=h,c[u++]=d,c[u++]=h+1,c[u++]=h+1,c[u++]=d,c[u++]=d+1}return{position:a,uv:s,index:c}}function Vl(e,t){let n=e*Math.PI/180,o=t*Math.PI/180,r=Math.cos(o);return[r*Math.sin(n),Math.sin(o),-r*Math.cos(n)]}function Gl(e,t){let{position:n,uv:o,index:r}=ly(),i=new St.Geometry(e,{position:{size:3,data:n},uv:{size:2,data:o},index:{data:r}}),a=new St.Texture(e,{image:t,wrapS:e.CLAMP_TO_EDGE,wrapT:e.CLAMP_TO_EDGE,generateMipmaps:!0,flipY:!1}),s=new St.Program(e,{vertex:uy,fragment:my,uniforms:{uPano:{value:a},uOpacity:{value:0}},transparent:!0,depthTest:!1,depthWrite:!1}),c=new St.Mesh(e,{geometry:i,program:s});return{mesh:c,setOpacity(u){s.uniforms.uOpacity.value=Math.max(0,Math.min(1,u))},setImage(u){a.image=u,a.needsUpdate=!0},dispose(){c.setParent(null),i.remove(),a.texture&&e.deleteTexture(a.texture),s.remove()}}}var St,ay,sy,cy,uy,my,Hl=rn(()=>{"use strict";St=require("ogl"),ay=64,sy=32,cy=500;uy=`#version 300 es
|
|
1
|
+
"use strict";var Wu=Object.create;var zn=Object.defineProperty;var Yu=Object.getOwnPropertyDescriptor;var Ku=Object.getOwnPropertyNames;var qu=Object.getPrototypeOf,$u=Object.prototype.hasOwnProperty;var cn=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(o){throw n=[o],o}};var wi=(e,t)=>{for(var n in t)zn(e,n,{get:t[n],enumerable:!0})},Pi=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ku(t))!$u.call(e,r)&&r!==n&&zn(e,r,{get:()=>t[r],enumerable:!(o=Yu(t,r))||o.enumerable});return e};var it=(e,t,n)=>(n=e!=null?Wu(qu(e)):{},Pi(t||!e||!e.__esModule?zn(n,"default",{value:e,enumerable:!0}):n,e)),Zu=e=>Pi(zn({},"__esModule",{value:!0}),e);function qy(e,t){return!Number.isFinite(e)||!Number.isFinite(t)||e<=0||t<=0?0:Math.ceil(e*t*4*(4/3))}function $y(e){return(e!==void 0&&e<=2?32:e!==void 0&&e>=8?192:96)*1024*1024}function To(e){let t=typeof navigator>"u"?void 0:navigator;return{saveData:t?.connection?.saveData===!0,maxTextureSize:e,maxDecodedBytes:$y(t?.deviceMemory)}}function ko(e,t={}){let n=e.previewUrl?.trim();if(!n||n===e.url)return{initialUrl:e.url,initialWidth:e.sourceWidth,initialHeight:e.sourceHeight,reason:"full-only"};let o={initialUrl:n,initialWidth:e.previewWidth,initialHeight:e.previewHeight};if(t.saveData)return{...o,reason:"save-data"};let r=[...e.variants??[],...e.sourceWidth!==void 0&&e.sourceHeight!==void 0?[{url:e.url,width:e.sourceWidth,height:e.sourceHeight}]:[]].filter(c=>c.url.trim()&&c.url!==n&&Number.isFinite(c.width)&&c.width>0&&Number.isFinite(c.height)&&c.height>0).sort((c,l)=>c.width*c.height-l.width*l.height);if(!r.length)return{...o,upgradeUrl:e.url,reason:"progressive"};let i=r.filter(c=>t.maxTextureSize===void 0||Math.max(c.width,c.height)<=t.maxTextureSize);if(!i.length)return{...o,reason:"texture-limit"};let a=i.filter(c=>t.maxDecodedBytes===void 0||qy(c.width,c.height)<=t.maxDecodedBytes);if(!a.length)return{...o,reason:"memory-limit"};let s=a[a.length-1];return{...o,upgradeUrl:s.url,reason:"progressive"}}function au(){return new DOMException("Panorama image load aborted","AbortError")}function Dn(e,t){return new Promise((n,o)=>{if(t?.aborted){o(au());return}let r=new Image;r.crossOrigin="anonymous";let i=!1,a=()=>{r.onload=null,r.onerror=null,t?.removeEventListener("abort",c)},s=l=>{i||(i=!0,a(),l?o(l):n(r))},c=()=>{r.src="",s(au())};r.onload=()=>{(typeof r.decode=="function"?r.decode():Promise.resolve()).then(()=>s(),()=>s())},r.onerror=()=>s(new Error("panorama_image_failed")),t?.addEventListener("abort",c,{once:!0}),r.src=e})}function Lo(e){let t=globalThis;if(t.requestIdleCallback){let o=t.requestIdleCallback(e,{timeout:1200});return()=>t.cancelIdleCallback?.(o)}let n=globalThis.setTimeout(e,32);return()=>globalThis.clearTimeout(n)}var ai=cn(()=>{"use strict"});function cu(e){if(e.generated||e.mediaKind==="model")return"built from the chart";let t=e.mediaKind==="demo-render",n=t?e.coverage==="exact-seat"?"AI-generated exact-seat demo":e.coverage==="row-representative"?"AI-generated representative row demo":e.coverage==="section-representative"?"AI-generated representative section demo":e.coverage==="floor-representative"?"AI-generated representative floor demo":"AI-generated illustrative venue demo":e.coverage==="exact-seat"?"Exact seat photo":e.coverage==="row-representative"?"Representative row view":e.coverage==="section-representative"?"Representative section view":e.coverage==="floor-representative"?"Representative floor view":e.coverage==="venue-representative"?"Representative venue view":"Venue photo",o=e.capturedAt&&/^\d{4}/.test(e.capturedAt)?e.capturedAt.slice(0,4):"";return[n,o?`${t?"created":"captured"} ${o}`:"",e.sourceLabel??""].filter(Boolean).join(" \xB7 ")}function si(e){return Math.max(Zy,Math.min(Qy,e))}function Jy(e,t,n){let o=(.5+e/360)*n;return t/2-o}function e0(e,t=Oo){return e*(180/t)}function su(e,t,n){return(e-t)/2+Fo(n,t)}function Fo(e,t){let n=rt/180*t;return Math.max(-n,Math.min(n,e))}function t0(){if(typeof window>"u")return!1;try{if(typeof window.matchMedia=="function"&&window.matchMedia("(pointer: coarse)").matches)return!0}catch{}return"ontouchstart"in window}function ci(e){return e||(t0()?"Drag to look \xB7 pinch to zoom \xB7 tap \u2715 to close":"Drag to look \xB7 pinch or scroll to zoom \xB7 Esc to close")}function lu(e,t,n={}){let o=n.fadeMs??400,r=t.initialBearingDeg??0,i=ko(t,To()),a=new AbortController,s=()=>a.abort();n.signal?.addEventListener("abort",s,{once:!0});let c=document.createElement("div"),l=document.activeElement instanceof HTMLElement?document.activeElement:null;c.setAttribute("role","dialog"),c.setAttribute("aria-modal","true"),c.setAttribute("aria-label",n.seatLabel?`View from ${n.seatLabel}`:"View from seat"),c.tabIndex=-1,Object.assign(c.style,{position:"absolute",inset:"0",zIndex:"10",opacity:"0",transition:`opacity ${o}ms ease`,background:"#05070c",overflow:"hidden",touchAction:"none"});let u=document.createElement("div");Object.assign(u.style,{position:"absolute",inset:"0",backgroundImage:`url("${i.initialUrl}")`,backgroundRepeat:"repeat-x",cursor:"grab"}),c.appendChild(u);let m=document.createElement("button");if(m.type="button",m.setAttribute("aria-label","Close"),m.textContent="\u2715",Object.assign(m.style,{position:"absolute",top:"12px",right:"12px",zIndex:"2",width:"44px",height:"44px",borderRadius:"999px",cursor:"pointer",border:"1px solid rgba(255,255,255,0.25)",background:"rgba(8,12,18,0.6)",color:"#e6edf3",fontSize:"15px",lineHeight:"1"}),c.appendChild(m),n.disclosure){let V=document.createElement("div");V.textContent=`${n.disclosurePrefix??"360\xB0 panorama"} \xB7 ${n.disclosure}`,Object.assign(V.style,{position:"absolute",top:"calc(12px + var(--sl-3d-top-inset, 0px))",left:"12px",zIndex:"2",maxWidth:"calc(100% - 88px)",padding:"8px 11px",borderRadius:"999px",overflow:"hidden",color:"#dce6f8",background:"rgba(8,12,18,0.68)",font:"600 11px/1.2 ui-sans-serif, system-ui, sans-serif",textOverflow:"ellipsis",whiteSpace:"nowrap",pointerEvents:"none",backdropFilter:"blur(6px)"}),c.appendChild(V)}let h=document.createElement("div");h.textContent=ci(n.lookAroundHint),Object.assign(h.style,{position:"absolute",bottom:"12px",left:"0",right:"0",textAlign:"center",color:"rgba(230,237,243,0.7)",font:"12px ui-sans-serif, system-ui, sans-serif",pointerEvents:"none"}),c.appendChild(h),e.appendChild(c),m.focus({preventScroll:!0});let d=0,f=0,p=0,b=0,y=Oo,g=()=>{let V=c.clientHeight||1,z=c.clientWidth||1,q=I.naturalWidth||z*2,$=I.naturalHeight||V,re=d>0?(z/2-p)/d:0,Q=f>0?b/f:0;f=e0(V,y),d=f*(q/$),u.style.backgroundSize=`${d}px ${f}px`,M?p=z/2-re*d:(p=Jy(r,z,d),b=Fo((t.initialPitchDeg??0)/180*f,f),M=!0),b=Fo(Q*f,f),u.style.backgroundPosition=`${p}px ${su(V,f,b)}px`},M=!1,P=()=>{let V=c.clientHeight||1;b=Fo(b,f),u.style.backgroundPosition=`${p}px ${su(V,f,b)}px`},I=new Image;I.onload=g,I.src=i.initialUrl;let S=()=>{};i.upgradeUrl&&(S=Lo(()=>{(t.resolveUrl?t.resolveUrl(i.upgradeUrl):Promise.resolve(i.upgradeUrl)).then(z=>!z||a.signal.aborted?null:Dn(z,a.signal).then(q=>({full:q,url:z}))).then(z=>{z&&(F||a.signal.aborted||(I=z.full,u.style.backgroundImage=`url("${z.url}")`,g()))}).catch(()=>{})})),requestAnimationFrame(g);let x=!1,v=0,w=0,R=0,T=new Map,O=()=>{let[V,z]=[...T.values()];return V&&z?Math.hypot(V.x-z.x,V.y-z.y):0},C=V=>{let z=si(V);z!==y&&(y=z,g())},A=V=>{T.set(V.pointerId,{x:V.clientX,y:V.clientY}),x=T.size===1,v=V.clientX,w=V.clientY,T.size===2&&(R=O()),u.style.cursor="grabbing";try{u.setPointerCapture?.(V.pointerId)}catch{}},_=V=>{if(T.has(V.pointerId)){if(T.set(V.pointerId,{x:V.clientX,y:V.clientY}),T.size>=2){let z=O();R>0&&z>0&&C(y*(R/z)),R=z,x=!1;return}x&&(p+=V.clientX-v,b+=V.clientY-w,v=V.clientX,w=V.clientY,P())}},L=V=>{T.delete(V.pointerId),R=T.size===2?O():0;let z=T.values().next().value;x=T.size===1,z?(v=z.x,w=z.y):u.style.cursor="grab";try{u.releasePointerCapture?.(V.pointerId)}catch{}},N=V=>{V.preventDefault(),C(y+V.deltaY*.04)};u.addEventListener("pointerdown",A),u.addEventListener("pointermove",_),u.addEventListener("pointerup",L),u.addEventListener("pointercancel",L),u.addEventListener("wheel",N,{passive:!1});let k=!1,F=!1,H=0,B=()=>{u.removeEventListener("pointerdown",A),u.removeEventListener("pointermove",_),u.removeEventListener("pointerup",L),u.removeEventListener("pointercancel",L),u.removeEventListener("wheel",N),window.removeEventListener("keydown",j)},D=()=>{S(),a.abort(),n.signal?.removeEventListener("abort",s),H&&(window.clearTimeout(H),H=0),B(),c.parentNode&&c.parentNode.removeChild(c),l?.isConnected&&l.focus({preventScroll:!0})},G=()=>{if(k)return;k=!0,c.style.opacity="0";let V=()=>{H=0,!F&&(D(),n.onClose?.())};H=window.setTimeout(V,o)},j=V=>{if(V.key==="Tab"){V.preventDefault(),m.focus({preventScroll:!0});return}if(V.key==="Escape"){V.stopPropagation(),G();return}if(V.key==="ArrowLeft"||V.key==="ArrowRight")p+=V.key==="ArrowLeft"?-32:32;else if(V.key==="ArrowUp"||V.key==="ArrowDown")b+=(V.key==="ArrowUp"?4:-4)*(f/180);else if(V.key==="+"||V.key==="="){C(y-5),V.preventDefault();return}else if(V.key==="-"){C(y+5),V.preventDefault();return}else return;V.preventDefault(),P()};return window.addEventListener("keydown",j),m.addEventListener("click",G),requestAnimationFrame(()=>{c.style.opacity="1"}),{close:G,dispose(){k=!0,F=!0,D()}}}var Oo,Zy,Qy,rt,Do=cn(()=>{"use strict";ai();Oo=70,Zy=35,Qy=90;rt=35});function i0(e=n0,t=o0,n=r0){let o=e+1,r=t+1,i=o*r,a=new Float32Array(i*3),s=new Float32Array(i*2);for(let u=0;u<r;u++){let m=u/t,h=m*Math.PI,d=Math.sin(h),f=Math.cos(h);for(let p=0;p<o;p++){let b=p/e,y=(b-.5)*Math.PI*2,g=u*o+p;a[g*3]=n*d*Math.sin(y),a[g*3+1]=n*f,a[g*3+2]=-n*d*Math.cos(y),s[g*2]=b,s[g*2+1]=m}}let c=new Uint16Array(e*t*6),l=0;for(let u=0;u<t;u++)for(let m=0;m<e;m++){let h=u*o+m,d=h+o;c[l++]=h,c[l++]=d,c[l++]=h+1,c[l++]=h+1,c[l++]=d,c[l++]=d+1}return{position:a,uv:s,index:c}}function uu(e,t){let n=e*Math.PI/180,o=t*Math.PI/180,r=Math.cos(o);return[r*Math.sin(n),Math.sin(o),-r*Math.cos(n)]}function mu(e,t){let{position:n,uv:o,index:r}=i0(),i=new wt.Geometry(e,{position:{size:3,data:n},uv:{size:2,data:o},index:{data:r}}),a=new wt.Texture(e,{image:t,wrapS:e.CLAMP_TO_EDGE,wrapT:e.CLAMP_TO_EDGE,generateMipmaps:!0,flipY:!1}),s=new wt.Program(e,{vertex:a0,fragment:s0,uniforms:{uPano:{value:a},uOpacity:{value:0}},transparent:!0,depthTest:!1,depthWrite:!1}),c=new wt.Mesh(e,{geometry:i,program:s});return{mesh:c,setOpacity(l){s.uniforms.uOpacity.value=Math.max(0,Math.min(1,l))},setImage(l){a.image=l,a.needsUpdate=!0},dispose(){c.setParent(null),i.remove(),a.texture&&e.deleteTexture(a.texture),s.remove()}}}var wt,n0,o0,r0,a0,s0,fu=cn(()=>{"use strict";wt=require("ogl"),n0=64,o0=32,r0=500;a0=`#version 300 es
|
|
2
2
|
precision highp float;
|
|
3
3
|
in vec3 position;
|
|
4
4
|
in vec2 uv;
|
|
@@ -8,7 +8,7 @@ out vec2 vUv;
|
|
|
8
8
|
void main() {
|
|
9
9
|
vUv = uv;
|
|
10
10
|
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
11
|
-
}`,
|
|
11
|
+
}`,s0=`#version 300 es
|
|
12
12
|
precision highp float;
|
|
13
13
|
in vec2 vUv;
|
|
14
14
|
uniform sampler2D uPano;
|
|
@@ -17,7 +17,7 @@ out vec4 fragColor;
|
|
|
17
17
|
void main() {
|
|
18
18
|
vec3 rgb = texture(uPano, vUv).rgb;
|
|
19
19
|
fragColor = vec4(rgb, uOpacity);
|
|
20
|
-
}`});async function Ul(e,t,n,o={}){let r=o.fadeMs??400,i=t?.initialBearingDeg??0,a=Math.max(-et,Math.min(et,t?.initialPitchDeg??0)),s=To,c=!1,u=new AbortController,l=()=>u.abort();o.signal?.addEventListener("abort",l,{once:!0});let m=()=>{},h=[n.camera.position.x,n.camera.position.y,n.camera.position.z];if(!t&&n.cameraOriginWorld&&n.camera.position.set(n.cameraOriginWorld[0],n.cameraOriginWorld[1],n.cameraOriginWorld[2]),!t&&n.focalWorld){let B=n.camera.position,F=n.focalWorld[0]-B.x,G=n.focalWorld[1]-B.y,j=n.focalWorld[2]-B.z,N=Math.hypot(F,j);N>.001&&(i=Math.atan2(F,-j)*180/Math.PI,a=Math.max(-et,Math.min(et,Math.atan2(G,N)*180/Math.PI)))}let d=null;if(t){let B=n.gl.getParameter(n.gl.MAX_TEXTURE_SIZE),F=Co(t,Ao(B)),G;try{let j=t.resolveUrl?await t.resolveUrl(F.initialUrl):F.initialUrl;if(!j)throw new Error("panorama_asset_unavailable");G=await Tn(j,u.signal)}catch{return o.signal?.removeEventListener("abort",l),null}try{d=Gl(n.gl,G)}catch{return u.abort(),o.signal?.removeEventListener("abort",l),null}d.mesh.renderOrder=999,d.mesh.setParent(n.scene),F.upgradeUrl&&(m=Eo(()=>{(t.resolveUrl?t.resolveUrl(F.upgradeUrl):Promise.resolve(F.upgradeUrl)).then(N=>!N||u.signal.aborted?null:Tn(N,u.signal)).then(N=>{N&&(c||u.signal.aborted||(d?.setImage(N),n.requestRender()))}).catch(()=>{})}))}let f=n.camera.fov;n.camera.perspective({fov:s,aspect:n.camera.aspect});let p=n.camera.quaternion.slice(),b=()=>{let B=n.camera.position;d?.mesh.position.set(B.x,B.y,B.z);let[F,G,j]=Vl(i,a);n.camera.lookAt([B.x+F,B.y+G,B.z+j]),n.requestRender()};b();let y=document.createElement("div"),g=document.activeElement instanceof HTMLElement?document.activeElement:null;y.setAttribute("role","dialog"),y.setAttribute("aria-modal","true"),y.setAttribute("aria-label",o.seatLabel?`View from ${o.seatLabel}`:"View from seat"),y.tabIndex=-1,Object.assign(y.style,{position:"absolute",inset:"0",zIndex:"10",cursor:"grab",touchAction:"none"});let M=document.createElement("button");if(M.type="button",M.setAttribute("aria-label","Close"),M.textContent="\u2715",Object.assign(M.style,{position:"absolute",top:"12px",right:"12px",zIndex:"2",width:"44px",height:"44px",borderRadius:"999px",cursor:"pointer",border:"1px solid rgba(255,255,255,0.25)",background:"rgba(8,12,18,0.6)",color:"#e6edf3",fontSize:"15px",lineHeight:"1"}),y.appendChild(M),o.disclosure){let B=document.createElement("div");B.textContent=`${o.disclosurePrefix??"360\xB0 panorama"} \xB7 ${o.disclosure}`,Object.assign(B.style,{position:"absolute",top:"calc(12px + var(--sl-3d-top-inset, 0px))",left:"12px",zIndex:"2",maxWidth:"calc(100% - 88px)",padding:"8px 11px",borderRadius:"999px",overflow:"hidden",color:"#dce6f8",background:"rgba(8,12,18,0.68)",font:"600 11px/1.2 ui-sans-serif, system-ui, sans-serif",textOverflow:"ellipsis",whiteSpace:"nowrap",pointerEvents:"none",backdropFilter:"blur(6px)"}),y.appendChild(B)}let v=document.createElement("div");v.textContent=Zr(o.lookAroundHint),Object.assign(v.style,{position:"absolute",bottom:"12px",left:"0",right:"0",textAlign:"center",color:"rgba(230,237,243,0.7)",font:"12px ui-sans-serif, system-ui, sans-serif",pointerEvents:"none"}),y.appendChild(v),e.appendChild(y),M.focus({preventScroll:!0});let R=!1,P=0,x=0,S=0,w=new Map,I=()=>{let[B,F]=[...w.values()];return B&&F?Math.hypot(B.x-F.x,B.y-F.y):0},L=B=>{let F=$r(B);F!==s&&(s=F,n.camera.perspective({fov:s,aspect:n.camera.aspect}),b())},O=B=>{B.target!==M&&(w.set(B.pointerId,{x:B.clientX,y:B.clientY}),R=w.size===1,P=B.clientX,x=B.clientY,w.size===2&&(S=I()),y.setPointerCapture?.(B.pointerId),y.style.cursor="grabbing")},D=B=>{if(w.has(B.pointerId)){if(w.set(B.pointerId,{x:B.clientX,y:B.clientY}),w.size>=2){let F=I();S>0&&F>0&&L(s*(S/F)),S=F,R=!1;return}R&&(i+=(B.clientX-P)*zl,a=Math.max(-et,Math.min(et,a+(B.clientY-x)*zl)),P=B.clientX,x=B.clientY,b())}},A=B=>{w.delete(B.pointerId),S=w.size===2?I():0;let F=w.values().next().value;R=w.size===1,F?(P=F.x,x=F.y):y.style.cursor="grab";try{y.releasePointerCapture?.(B.pointerId)}catch{}},E=B=>{B.preventDefault(),L(s+B.deltaY*.04)};y.addEventListener("pointerdown",O),y.addEventListener("pointermove",D),y.addEventListener("pointerup",A),y.addEventListener("pointercancel",A),y.addEventListener("wheel",E,{passive:!1});let T=B=>{if(!c){if(B.key==="Tab"){B.preventDefault(),M.focus({preventScroll:!0});return}if(B.key==="Escape"){B.stopPropagation(),H.close();return}if(B.key==="ArrowLeft"||B.key==="ArrowRight")i+=B.key==="ArrowLeft"?-4:4;else if(B.key==="ArrowUp"||B.key==="ArrowDown")a=Math.max(-et,Math.min(et,a+(B.key==="ArrowUp"?4:-4)));else if(B.key==="+"||B.key==="="){L(s-5),B.preventDefault();return}else if(B.key==="-"){L(s+5),B.preventDefault();return}else return;B.preventDefault(),b()}};window.addEventListener("keydown",T);let V=0,_=(B,F)=>{if(!d){F?.();return}let G=B===1?0:1,j=performance.now(),N=()=>{if(c)return;let z=r<=0?1:Math.min(1,(performance.now()-j)/r);d?.setOpacity(G+(B-G)*z),n.requestRender(),z<1?V=requestAnimationFrame(N):F?.()};V=requestAnimationFrame(N)};_(1);let k=()=>{c||(c=!0,m(),u.abort(),o.signal?.removeEventListener("abort",l),cancelAnimationFrame(V),y.removeEventListener("pointerdown",O),y.removeEventListener("pointermove",D),y.removeEventListener("pointerup",A),y.removeEventListener("pointercancel",A),y.removeEventListener("wheel",E),window.removeEventListener("keydown",T),y.remove(),g?.isConnected&&g.focus({preventScroll:!0}),d?.dispose(),n.camera.position.set(h[0],h[1],h[2]),n.camera.perspective({fov:f,aspect:n.camera.aspect}),n.camera.quaternion.set(p[0],p[1],p[2],p[3]),n.requestRender())},H={close(){if(c)return;let B=()=>{k(),o.onClose?.()};cancelAnimationFrame(V),_(0,B)},dispose:k};return M.addEventListener("click",()=>H.close()),H}var zl,jl=rn(()=>{"use strict";Hl();ko();ko();qr();zl=.15});var Xl={};ui(Xl,{createOpenPanorama:()=>fy});function fy(e){let{container:t,model:n,opts:o,analytics:r,orbit:i,loop:a,seatsById:s,ensureSeatView:c,resolvedSeatViewPose:u,gpu:l,gl:m,isContextLost:h,isDisposed:d,flightGen:f,setPanorama:p,getLoadAbort:b,setLoadAbort:y,setPanoramaSphereVisible:g,setFrozen:M,raisePanoramaLayer:v,restorePanoramaLayer:R,getOverviewChip:P,labelOverlay:x,reducedMotion:S,removeArriveChip:w,showArriveChip:I}=e;return async(L,O,D)=>{b()?.abort();let A=new AbortController;y(A);let E=n.seats.idToIndex.get(L);if(E===void 0){i.syncFromCamera();return}let T=s.get(L)?.label??L,V=u(L,E),_=c(L);if(!_){A.abort(),b()===A&&y(null),i.syncFromCamera();return}M(!0),a.stop();let k;try{k=await _}catch{if(b()===A&&y(null),r.panoramaFailed(L,"source"),!d()&&D===f()){M(!1),i.resumeAfterFlight(V.focal),a.requestRender();let K=I(L,D,!0);requestAnimationFrame(()=>K?.querySelector("[data-panorama-trigger]")?.focus())}return}if(d()||D!==f()){A.abort(),b()===A&&y(null);return}w();let H=P(),B=()=>{A.abort(),b()===A&&y(null),p(null),g(!1),R(),H.style.display="",x.setVisible(!o.arriveAtSeatEye),M(!1),r.panoramaClosed(),i.resumeAfterFlight(V.focal),a.requestRender();let K=I(L,f());requestAnimationFrame(()=>K?.querySelector("[data-panorama-trigger]")?.focus())},F=k.generated===!0,G=Bl(k);v(),g(!F),H.style.display="none";let j=S()?0:O,N=l(),z=N&&!h()?await Ul(t,F?null:k,{gl:m,scene:N.main,camera:i.camera,requestRender:()=>a.requestRender(),cameraOriginWorld:F?V.eye:void 0,focalWorld:V.focal},{fadeMs:j,seatLabel:T,disclosure:G,disclosurePrefix:F?"Live seat-eye view":"360\xB0 panorama",lookAroundHint:o.lookAroundHint,onClose:B,signal:A.signal}):null;if(d()||D!==f()){A.abort(),g(!1),b()===A&&y(null),z?.dispose(),H.style.display="",R();return}if(z)i.syncFromCamera(),x.setVisible(!1),M(!1),a.requestRender(),p(z);else if(F){R(),H.style.display="",M(!1),i.resumeAfterFlight(V.focal),a.requestRender(),p(null),g(!1),r.panoramaFailed(L,"mount");let K=I(L,f(),!0);requestAnimationFrame(()=>K?.querySelector("[data-panorama-trigger]")?.focus()),b()===A&&y(null);return}else g(!1),r.panoramaFallback(L),p(Nl(t,k,{fadeMs:j,seatLabel:T,disclosure:G,onClose:B,signal:A.signal,lookAroundHint:o.lookAroundHint}));r.panoramaOpened()}}var Wl=rn(()=>{"use strict";ko();jl()});var Ay={};ui(Ay,{VENUE3D_QUALITY_REPORT_VERSION:()=>Vc,autoVenue3d:()=>bo,buildSceneModel:()=>$t,estimateVenue3D:()=>kn,inspectVenue3DQualityEvidence:()=>vo,mountVenue3D:()=>Ry,prepareVenue3D:()=>su,prepareVenue3DFromChart:()=>cu});module.exports=Iu(Ay);function fi(e,t,n){let o=Math.floor(t.length/3),r=n.center[0],i=n.center[2];if(o>0){let c=Math.max(1,Math.floor(o/4e3)),u=0,l=0,m=0;for(let h=0;h<o;h+=c)u+=t[h*3],l+=t[h*3+2],m++;r=u/m,i=l/m}let a=e[0]-r,s=e[2]-i;return Math.hypot(a,s)>n.radius*.12?Math.atan2(a,s):void 0}var xe={pedestal:0,pad:1,back:2,arm:3,footrest:4,leg:5,body:10,head:11},Ru=.44,Au=.15,di=.3,Cu=.24;function hi(e){return e===void 0||!Number.isFinite(e)||e<=0?Cu:Math.min(di,Math.max(Au,e*Ru))}var sn=.21,Eu=.05,jo=.45,ft=jo+Eu,cn=.92,an=.66,Xo=1.205,pi=-.23,bi=.38,_u=[{part:xe.pedestal,min:[-.3,0,-.3],max:[.3,.36,.3]},{part:xe.pad,min:[-1,.36,-.95],max:[1,jo,1]},{part:xe.back,min:[-1,ft,-1],max:[1,cn,-.72]},{part:xe.arm,min:[-1,.44,-.82],max:[-.78,.65,.78]},{part:xe.arm,min:[.78,.44,-.82],max:[1,.65,.78]},{part:xe.footrest,min:[-.9,.18,.78],max:[.9,.31,1.34]},{part:xe.leg,min:[-.82,0,-.7],max:[-.62,.37,-.48]},{part:xe.leg,min:[.62,0,-.7],max:[.82,.37,-.48]},{part:xe.leg,min:[-.82,0,.48],max:[-.62,.37,.7]},{part:xe.leg,min:[.62,0,.48],max:[.82,.37,.7]}],Tu=[{part:xe.body,min:[-.52,.39,-.08],max:[-.08,.55,.82]},{part:xe.body,min:[.08,.39,-.08],max:[.52,.55,.82]},{part:xe.body,min:[-.47,.05,.58],max:[-.13,.43,.82]},{part:xe.body,min:[.13,.05,.58],max:[.47,.43,.82]},{part:xe.head,min:[-.16,1.04,-.33],max:[.16,1.1,-.13]}],ku=[{n:[1,0,0],c:[[1,0,0],[1,1,0],[1,1,1],[1,0,1]]},{n:[-1,0,0],c:[[0,0,1],[0,1,1],[0,1,0],[0,0,0]]},{n:[0,1,0],c:[[0,1,0],[0,1,1],[1,1,1],[1,1,0]]},{n:[0,-1,0],c:[[0,0,1],[0,0,0],[1,0,0],[1,0,1]]},{n:[0,0,1],c:[[0,0,1],[1,0,1],[1,1,1],[0,1,1]]},{n:[0,0,-1],c:[[1,0,0],[0,0,0],[0,1,0],[1,1,0]]}];function yi(){let e=[],t=[],n=[],o=[],r=(T,V,_)=>{let k=n.length,[H,B,F]=T,G=[B[0]-H[0],B[1]-H[1],B[2]-H[2]],j=[F[0]-H[0],F[1]-H[1],F[2]-H[2]],N=G[1]*j[2]-G[2]*j[1],z=G[2]*j[0]-G[0]*j[2],K=G[0]*j[1]-G[1]*j[0],J=Math.hypot(N,z,K);J>1e-9?(N/=J,z/=J,K/=J):[N,z,K]=V,N*V[0]+z*V[1]+K*V[2]<0&&(N=-N,z=-z,K=-K);for(let Y of T)e.push(...Y),t.push(N,z,K),n.push(_);o.push(k,k+1,k+2,k,k+2,k+3)},i=T=>{for(let V of ku){let _=V.c.map(k=>k.map((H,B)=>H?T.max[B]:T.min[B]));r(_,V.n,T.part)}},a=(T,V)=>{let[_,k,H]=V?[0,1,2]:[0,2,1],B=T.min[_],F=T.max[_],G=T.min[k],j=T.max[k],N=(F-B)*.1,z=(j-G)*.1,K=V?[[B+N,G],[F-N,G],[F,G+z],[F*.94,j-(j-G)*.23],[F*an,j],[B*an,j],[B*.94,j-(j-G)*.23],[B,G+z]]:[[B+N,G],[F-N,G],[F,G+z],[F,j-z],[F-N,j],[B+N,j],[B,j-z],[B,G+z]],J=(W,Q,te)=>{let $=[0,0,0];return $[_]=W,$[k]=Q,$[H]=te,$},Y=[T.min[H],T.max[H]].map(W=>K.map(([Q,te])=>J(Q,te,W)));for(let W=0;W<K.length;W++){let Q=(W+1)%K.length,te=[0,0,0];te[_]=(K[W][0]+K[Q][0])/2-(B+F)/2,te[k]=(K[W][1]+K[Q][1])/2-(G+j)/2,r([Y[0][W],Y[0][Q],Y[1][Q],Y[1][W]],te,T.part)}for(let W=0;W<2;W++){let Q=[0,0,0];Q[H]=W?1:-1;let te=Y[W];for(let $=1;$<te.length-1;$++){let ne=n.length;for(let ee of[te[0],te[$],te[$+1]])e.push(...ee),t.push(...Q),n.push(T.part);o.push(ne,ne+1,ne+2)}}};for(let T of _u)T.part===xe.pad||T.part===xe.back?a(T,T.part===xe.back):i(T);for(let T of Tu)i(T);let s=jo,c=1.08,u=.47,l=.69,m=-.55,h=.08,d=-.48,f=.01,p=[-u,s,m],b=[u,s,m],y=[-u,s,h],g=[u,s,h],M=[-l,c,d],v=[l,c,d],R=[-l,c,f],P=[l,c,f];r([b,v,P,g],[1,0,0],xe.body),r([y,R,M,p],[-1,0,0],xe.body),r([R,P,v,M],[0,1,0],xe.body),r([p,b,g,y],[0,-1,0],xe.body),r([g,P,R,y],[0,0,1],xe.body),r([p,M,v,b],[0,0,-1],xe.body);let x=10,S=8,w=[0,Xo,pi],I=[.42,.115,bi],L=n.length;for(let T=0;T<=S;T++){let V=Math.PI*T/S,_=Math.cos(V),k=Math.sin(V);for(let H=0;H<=x;H++){let B=Math.PI*2*H/x,F=k*Math.cos(B),G=k*Math.sin(B);e.push(w[0]+I[0]*F,w[1]+I[1]*_,w[2]+I[2]*G);let j=F/I[0],N=_/I[1],z=G/I[2],K=Math.hypot(j,N,z)||1;j/=K,N/=K,z/=K,t.push(j,N,z),n.push(xe.head)}}for(let T=0;T<S;T++)for(let V=0;V<x;V++){let _=L+T*(x+1)+V,k=_+x+1;o.push(_,k,_+1,_+1,k,k+1)}let O=new Float32Array(e),D=new Float32Array(t),A=new Float32Array(n),E=new Uint16Array(o);return{position:O,normal:D,part:A,index:E,vertexCount:n.length,indexCount:o.length}}function gi(e,t,n,o){let r=new Float32Array(t),i=u=>e[u*3],a=u=>e[u*3+2],s=0,c=(u,l)=>{let m=l-u;for(let h=u;h<l;h++){let[d,f]=o(h),p=d-i(h),b=f-a(h);if(m>=2){let y=Math.max(u,h-1),g=Math.min(l-1,h+1),M=i(g)-i(y),v=a(g)-a(y),R=Math.hypot(M,v);if(R>1e-6){let P=-v/R,x=M/R;P*p+x*b<0&&(P=-P,x=-x),p=P,b=x}}r[h]=p===0&&b===0?0:Math.atan2(p,b)}};for(let u=1;u<=t;u++)(u===t||n(u)!==n(s))&&(c(s,u),s=u);return r}var Wo=78,xi=18;function vi(){let e=[],t=[],n=[],o=[],r=[],i=[{n:[1,0,0],c:[[1,0,0],[1,1,0],[1,1,1],[1,0,1]]},{n:[-1,0,0],c:[[0,0,1],[0,1,1],[0,1,0],[0,0,0]]},{n:[0,1,0],c:[[0,1,0],[0,1,1],[1,1,1],[1,1,0]]},{n:[0,-1,0],c:[[0,0,1],[0,0,0],[1,0,0],[1,0,1]]},{n:[0,0,1],c:[[0,0,1],[1,0,1],[1,1,1],[0,1,1]]},{n:[0,0,-1],c:[[1,0,0],[0,0,0],[0,1,0],[1,1,0]]}];for(let s of[{part:1,min:[-1,.36,-.95],max:[1,.45,1]},{part:2,min:[-1,ft,-1],max:[1,cn,-.72]}])for(let c of i){let u=e.length/3,l=c.n[1]+(s.part===2?Math.abs(c.n[0])*(1-an)/(cn-ft):0),m=Math.hypot(c.n[0],l,c.n[2]),h=[c.n[0]/m,l/m,c.n[2]/m];for(let[d,f]of c.c.entries()){let p=f.map((b,y)=>s.min[y]+b*(s.max[y]-s.min[y]));s.part===2&&(p[0]*=1-f[1]*(1-an)),e.push(...p),t.push(...h),n.push(s.part),o.push(...[[-1,-1],[1,-1],[1,1],[-1,1]][d])}r.push(u,u+1,u+2,u,u+2,u+3)}let a=e.length/3;for(let[s,c]of[[-1,-1],[1,-1],[1,1],[-1,1]])e.push(s,c,0),t.push(0,1,0),n.push(0),o.push(s,c);return r.push(a,a+1,a+2,a,a+2,a+3),r.push(...r.slice(12,18),...r.slice(60,66),...r.slice(72,78)),{position:new Float32Array(e),normal:new Float32Array(t),surface:new Float32Array(n),uv:new Float32Array(o),index:new Uint16Array(r)}}var Ri=require("ogl");var Lu=/^#?([\da-f]{3}|[\da-f]{6})$/i;function Mi(e){let t=e.replace("#","");return{r:parseInt(t.slice(0,2),16),g:parseInt(t.slice(2,4),16),b:parseInt(t.slice(4,6),16)}}function Fu(e){let t=Lu.exec((e??"").trim());if(!t)return null;let n=t[1].length===3?t[1].split("").map(r=>r+r).join(""):t[1],o=parseInt(n,16);return[o>>16&255,o>>8&255,o&255]}function de(e){let t=Fu(e);return t?[t[0]/255,t[1]/255,t[2]/255]:null}function Yo(e){let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4}function Du(e){return .2126*Yo(e[0])+.7152*Yo(e[1])+.0722*Yo(e[2])}function Si(e){return Du([e[0]*255,e[1]*255,e[2]*255])}function Ou(e){return .2126*e[0]+.7152*e[1]+.0722*e[2]}function he(e,t,n){return[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n,e[2]+(t[2]-e[2])*n]}function We(e,t){let n=Ou(e);return he(e,[n,n,n],t)}function wi({r:e,g:t,b:n}){let o=e/255,r=t/255,i=n/255,a=Math.max(o,r,i),s=Math.min(o,r,i),c=(a+s)/2;if(a===s)return{h:0,s:0,l:c};let u=a-s,l=c>.5?u/(2-a-s):u/(a+s),m;return a===o?m=((r-i)/u+(r<i?6:0))/6:a===r?m=((i-o)/u+2)/6:m=((o-r)/u+4)/6,{h:m,s:l,l:c}}var Re=["available","held","sold","selected","dimmed"];function ln(e){let t=Re.indexOf(e);return t<0?0:t}var Pi={available:[.24,.82,.52],held:[.34,.39,.45],sold:[.34,.39,.45],selected:[.24,.74,1],dimmed:[.28,.32,.37]};function Ii(e){let t=.2126*e[0]+.7152*e[1]+.0722*e[2],n=.78,o=.86;return[(t+(e[0]-t)*n)*o,(t+(e[1]-t)*n)*o,(t+(e[2]-t)*n)*o]}var Ko={ground:[.07,.085,.11],tierTop:[.24,.28,.34],tierWall:[.17,.2,.25],stageTop:[.94,.7,.38],stageWall:[.48,.33,.18],decorTop:[.22,.25,.29],decorWall:[.15,.17,.2],gaTop:[.24,.28,.33],gaWall:[.16,.19,.23],boothTop:[.3,.33,.38],boothWall:[.2,.23,.27],tableTop:[.38,.34,.29],tableWall:[.24,.21,.18]},At={top:[.05,.06,.08],bottom:[.1,.12,.15]};function ae(e,t){return[Math.min(1,e[0]*t),Math.min(1,e[1]*t),Math.min(1,e[2]*t)]}function Bu(){let e=typeof window<"u"&&window.devicePixelRatio||1,t=navigator.deviceMemory,n=typeof t=="number"&&t<=4?1.5:2;return Math.min(e,n)}var Nn=class{constructor(t,n){this.clearRgb=[0,0,0];this.container=t,this.canvas=document.createElement("canvas"),this.canvas.style.display="block",this.canvas.style.width="100%",this.canvas.style.height="100%",this.canvas.style.touchAction="none",this.canvas.tabIndex=0,this.canvas.setAttribute("role","application"),this.canvas.setAttribute("aria-label","Interactive 3D venue. Drag or use arrow keys to look around; pinch, scroll, plus or minus to zoom."),this.renderer=new Ri.Renderer({canvas:this.canvas,dpr:Bu(),alpha:!1,antialias:!1,depth:!0,stencil:!1,powerPreference:"high-performance",webgl:2}),this.gl=this.renderer.gl,this.clearRgb=[At.top[0],At.top[1],At.top[2]],this.gl.clearColor(this.clearRgb[0],this.clearRgb[1],this.clearRgb[2],1),t.appendChild(this.canvas),this.lostHandler=o=>{o.preventDefault(),n.onContextLost()},this.restoredHandler=()=>n.onContextRestored(),this.canvas.addEventListener("webglcontextlost",this.lostHandler,!1),this.canvas.addEventListener("webglcontextrestored",this.restoredHandler,!1),this.resize()}setClearColor(t){this.clearRgb=[t[0],t[1],t[2]],this.gl.clearColor(t[0],t[1],t[2],1)}get clearColor(){return this.clearRgb}resize(){let t=Math.max(1,this.container.clientWidth||this.canvas.clientWidth||1),n=Math.max(1,this.container.clientHeight||this.canvas.clientHeight||1);return this.renderer.setSize(t,n),{width:t,height:n}}get pixelHeight(){return this.renderer.height*this.renderer.dpr}get aspect(){return this.renderer.width/Math.max(1,this.renderer.height)}dispose(){this.canvas.removeEventListener("webglcontextlost",this.lostHandler,!1),this.canvas.removeEventListener("webglcontextrestored",this.restoredHandler,!1);let t=this.gl.getExtension("WEBGL_lose_context");t&&t.loseContext(),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas)}simulateContextLossCycle(){let t=this.gl.getExtension("WEBGL_lose_context");t&&(t.loseContext(),setTimeout(()=>{t.restoreContext&&t.restoreContext()},300))}};var Ot=require("ogl"),Pe=Math.PI/180,qo=15*Pe,$o=80*Pe,Dt=.12,Ai=35,Zo=1.25,Ci=.006,Nu=4,Bt=.82,un=1/Bt,Vu=.12,Gu=2;function Hu(e,t){return{azimuth:e*Ci,polar:-t*Ci}}function zu(e,t,n){if(!n)return 1;let o=t[0]-e[0],r=t[2]-e[2];return(n[0]-t[0])*o+(n[2]-t[2])*r<0?-1:1}function Ei(e,t,n){let o=Math.max(Gu,Math.max(1,t)*Vu),r=n*Nu;return{minDist:e?Math.min(e.minDist,o):o,maxDist:e?Math.max(e.maxDist,r):r}}var Uu=1.5;function ju(e,t,n){let o=Math.max(1,n)*Uu;if(!e)return{anchor:[t[0],t[1],t[2]],limit:o};let[r,i,a]=e.anchor,s=t[1]-i,c=Math.max(Math.abs(t[0]-r),Math.abs(t[2]-a),s>=0?s:-s*2);return{anchor:e.anchor,limit:Math.max(e.limit,c+o)}}function _i(e,t,n,o,r,i,a,s){let c=Math.sin(n),u=[c*Math.sin(t),Math.cos(n),c*Math.cos(t)],l=[e[0]+o*u[0],e[1]+o*u[1],e[2]+o*u[2]],m=[-u[0],-u[1],-u[2]],h=[-m[2],0,m[0]],d=Math.hypot(h[0],h[2])||1;h=[h[0]/d,0,h[2]/d];let f=[h[1]*m[2]-h[2]*m[1],h[2]*m[0]-h[0]*m[2],h[0]*m[1]-h[1]*m[0]],p=Math.tan(r*Pe/2),b=p*(i>0?i:1),y=[0,1,2].map(v=>m[v]+a*b*h[v]+s*p*f[v]);if(y[1]>=-1e-6)return null;let g=(e[1]-l[1])/y[1],M=Math.hypot(y[0],y[1],y[2]);return!(g>0)||g*M>o*Xu?null:[l[0]+y[0]*g,e[1],l[2]+y[2]*g]}var Ti=3,Xu=4,Vn=class{constructor(t,n,o,r){this.fovY=Ai;this.target=new Ot.Vec3;this.azimuth=-30*Pe;this.polar=55*Pe;this.distance=10;this.azT=-30*Pe;this.polT=55*Pe;this.distT=10;this.minDist=1;this.maxDist=100;this.envelope=null;this.gestureFired=!1;this.interactionEnabled=!0;this.dragging=!1;this.panning=!1;this.lastX=0;this.lastY=0;this.activePointers=new Map;this.pinchDist=0;this.pinchCx=0;this.pinchCy=0;this.targetT=new Ot.Vec3;this.panAnchor=new Ot.Vec3;this.panLimit=0;this.panBox=null;this.grabSign=1;this.zoomPointResolver=null;this.primaryDragMode="orbit";this.camera=new Ot.Camera(t,{fov:Ai,near:.1,far:5e3,aspect:1}),this.canvas=n,this.requestRender=o,this.onGesture=r,this.onPointerDown=i=>{if(this.interactionEnabled){try{this.canvas.setPointerCapture?.(i.pointerId)}catch{}if(this.activePointers.set(i.pointerId,{x:i.clientX,y:i.clientY}),this.activePointers.size===1){let a=i.button===2||i.button===1,s=i.button===0&&(i.shiftKey?this.primaryDragMode==="orbit":this.primaryDragMode==="pan");this.panning=a||s,this.dragging=!this.panning,this.dragging&&(this.grabSign=this.grabSignAt(i.clientX,i.clientY)),this.lastX=i.clientX,this.lastY=i.clientY}else if(this.activePointers.size===2){this.dragging=!1,this.panning=!1,this.pinchDist=this.currentPinchDistance();let a=this.pinchCentroid();this.pinchCx=a.x,this.pinchCy=a.y}}},this.onPointerMove=i=>{if(!this.interactionEnabled||!this.activePointers.has(i.pointerId))return;if(this.activePointers.set(i.pointerId,{x:i.clientX,y:i.clientY}),this.activePointers.size>=2){let u=this.currentPinchDistance(),l=this.pinchCentroid();this.pinchDist>0&&(this.dollyAt(Math.exp((this.pinchDist-u)*.005),l.x,l.y),this.fireGesture()),this.pinchDist=u,this.panBy(l.x-this.pinchCx,l.y-this.pinchCy),this.pinchCx=l.x,this.pinchCy=l.y;return}let a=i.clientX-this.lastX,s=i.clientY-this.lastY;if(this.panning){this.lastX=i.clientX,this.lastY=i.clientY,(a!==0||s!==0)&&(this.panBy(a,s),this.fireGesture());return}if(!this.dragging)return;this.lastX=i.clientX,this.lastY=i.clientY,(a!==0||s!==0)&&this.fireGesture();let c=Hu(a,s);this.azT+=c.azimuth*this.grabSign,this.polT=Math.max(qo,Math.min($o,this.polT+c.polar)),this.requestRender()},this.onPointerUp=i=>{this.activePointers.delete(i.pointerId);try{this.canvas.releasePointerCapture?.(i.pointerId)}catch{}this.activePointers.size<2&&(this.pinchDist=0),this.activePointers.size===0&&(this.dragging=!1,this.panning=!1)},this.onContextMenu=i=>{i.preventDefault()},this.onWheel=i=>{if(i.preventDefault(),!this.interactionEnabled)return;let a=i.deltaMode===1?16:i.deltaMode===2?100:1,s=Math.max(-2,Math.min(2,i.deltaY*a/100));this.dollyAt(Math.exp(s*.22),i.clientX,i.clientY),this.fireGesture()},this.onKeyDown=i=>{if(!this.interactionEnabled)return;let a=7*Pe;if(i.shiftKey&&(i.key==="ArrowLeft"||i.key==="ArrowRight"||i.key==="ArrowUp"||i.key==="ArrowDown"))this.panBy(i.key==="ArrowLeft"?-32:i.key==="ArrowRight"?32:0,i.key==="ArrowUp"?-32:i.key==="ArrowDown"?32:0);else if(i.key==="ArrowLeft"||i.key==="ArrowRight")this.azT+=i.key==="ArrowLeft"?-a:a;else if(i.key==="ArrowUp"||i.key==="ArrowDown")this.polT=Math.max(qo,Math.min($o,this.polT+(i.key==="ArrowUp"?-a:a)));else if(i.key==="+"||i.key==="=")this.dollyBy(Bt);else if(i.key==="-"||i.key==="_")this.dollyBy(un);else return;i.preventDefault(),this.fireGesture(),this.requestRender()},n.addEventListener("pointerdown",this.onPointerDown),n.addEventListener("pointermove",this.onPointerMove),n.addEventListener("pointerup",this.onPointerUp),n.addEventListener("pointercancel",this.onPointerUp),n.addEventListener("wheel",this.onWheel,{passive:!1}),n.addEventListener("keydown",this.onKeyDown),n.addEventListener("contextmenu",this.onContextMenu)}pinchCentroid(){let t=[...this.activePointers.values()];if(!t.length)return{x:0,y:0};let n=0,o=0;for(let r of t)n+=r.x,o+=r.y;return{x:n/t.length,y:o/t.length}}panBy(t,n){let o=this.canvas.clientHeight||1,r=2*this.distance*Math.tan(this.fovY*Pe/2)/o,i=Math.sin(this.azimuth),a=Math.cos(this.azimuth),s=a,c=-i,u=Math.cos(this.polar),l=Math.sin(this.polar),m=-i*u,h=-a*u;this.targetT.x+=(-t*s+n*m)*r,this.targetT.z+=(-t*c+n*h)*r,this.targetT.y+=n*l*r,this.clampPan(),this.requestRender()}widenPanBox(t){this.panBox=ju(this.panBox,t.center,t.radius),this.panAnchor.set(this.panBox.anchor[0],this.panBox.anchor[1],this.panBox.anchor[2]),this.panLimit=this.panBox.limit}clampPan(){if(this.panLimit<=0)return;let t=this.panLimit,n=this.panAnchor.x,o=this.panAnchor.y,r=this.panAnchor.z;this.targetT.x=Math.max(n-t,Math.min(n+t,this.targetT.x)),this.targetT.z=Math.max(r-t,Math.min(r+t,this.targetT.z)),this.targetT.y=Math.max(o-t*.5,Math.min(o+t,this.targetT.y))}fireGesture(){this.gestureFired||(this.gestureFired=!0,this.onGesture?.())}currentPinchDistance(){let t=[...this.activePointers.values()];return t.length<2?0:Math.hypot(t[0].x-t[1].x,t[0].y-t[1].y)}dollyBy(t){this.distT=Math.max(this.minDist,Math.min(this.maxDist,this.distT*t)),this.requestRender()}dollyAt(t,n,o){let r=this.distT,i=this.canvas.getBoundingClientRect?.(),a=this.zoomPointResolver?.(n,o)??null;if(a){this.distT=Math.max(Ti,Math.min(this.maxDist,this.distT*t)),this.minDist=Math.min(this.minDist,Math.max(Ti,this.distT)),this.requestRender(),this.scaleTargetAbout(a,this.distT/r);return}let s=i&&i.width>0&&i.height>0?_i([this.targetT.x,this.targetT.y,this.targetT.z],this.azT,this.polT,this.distT,this.fovY,this.camera.aspect||i.width/i.height,(n-i.left)/i.width*2-1,1-(o-i.top)/i.height*2):null;this.dollyBy(t),s&&this.scaleTargetAbout(s,this.distT/r)}scaleTargetAbout(t,n){!Number.isFinite(n)||n===1||(this.targetT.x=t[0]+(this.targetT.x-t[0])*n,this.targetT.y=t[1]+(this.targetT.y-t[1])*n,this.targetT.z=t[2]+(this.targetT.z-t[2])*n,this.clampPan())}grabSignAt(t,n){let o=this.canvas.getBoundingClientRect?.(),r=this.zoomPointResolver?.(t,n)??(o&&o.width>0&&o.height>0?_i([this.target.x,this.target.y,this.target.z],this.azimuth,this.polar,this.distance,this.fovY,this.camera.aspect||o.width/o.height,(t-o.left)/o.width*2-1,1-(n-o.top)/o.height*2):null),i=this.camera.position;return zu([i.x,i.y,i.z],[this.target.x,this.target.y,this.target.z],r)}setZoomPointResolver(t){this.zoomPointResolver=t}zoomBy(t){this.interactionEnabled&&(this.dollyBy(t),this.fireGesture())}dollyLimitState(){return{atMin:this.distT<=this.minDist+1e-6,atMax:this.distT>=this.maxDist-1e-6}}setPrimaryDragMode(t){this.primaryDragMode=t}setInteractionEnabled(t){this.interactionEnabled=t,!t&&(this.activePointers.clear(),this.dragging=!1,this.panning=!1,this.pinchDist=0)}frame(t,n=!1,o,r=!1,i){this.camera.perspective({fov:this.fovY,aspect:this.camera.aspect}),this.target.set(t.center[0],t.center[1],t.center[2]),this.targetT.copy(this.target),this.widenPanBox(t);let a=Math.max(1,t.radius),s=this.fovY*Pe/2,c=r?Math.max(.82,this.camera.aspect||1):this.camera.aspect||1,u=Math.atan(Math.tan(s)*c);this.azT=o??-30*Pe,this.polT=Math.max(15,Math.min(80,i?.polarDeg??55))*Pe;let l=this.fitDistance(t,s,u,this.azT,this.polT);this.distT=l*Math.max(1.05,Math.min(2,i?.margin??Zo)),this.envelope=Ei(this.envelope,a,l),this.minDist=this.envelope.minDist,this.maxDist=this.envelope.maxDist,n?(this.azimuth=this.azT,this.polar=12*Pe,this.distance=this.distT*1.7):(this.azimuth=this.azT,this.polar=this.polT,this.distance=this.distT),this.applyPosition()}setAspect(t){if(!(t>0)||!Number.isFinite(t))return;let n=this.camera.aspect;if(this.interactionEnabled&&n>0){let o=Math.min(n,1)/Math.min(t,1);this.distance*=o,this.distT*=o,this.maxDist=Math.max(this.maxDist,this.distance,this.distT),this.applyPosition()}this.camera.perspective({aspect:t})}glideTo(t,n){this.syncFromCamera(),this.camera.perspective({fov:this.fovY,aspect:this.camera.aspect}),this.widenPanBox(t),this.targetT.set(t.center[0],t.center[1],t.center[2]);let o=this.fovY*Pe/2,r=Math.atan(Math.tan(o)*(this.camera.aspect||1));this.azT=this.azimuth,this.polT=Math.max(15,Math.min(80,n?.polarDeg??55))*Pe;let i=this.fitDistance(t,o,r,this.azT,this.polT);this.distT=i*Math.max(1.05,Math.min(2,n?.margin??Zo)),this.envelope=Ei(this.envelope,Math.max(1,t.radius),i),this.minDist=this.envelope.minDist,this.maxDist=this.envelope.maxDist,this.requestRender()}frameSoft(t,n,o=!1,r){this.target.set(t.center[0],t.center[1],t.center[2]),this.targetT.copy(this.target),this.widenPanBox(t),this.syncFromCamera(),this.camera.perspective({fov:this.fovY,aspect:this.camera.aspect});let i=this.fovY*Pe/2,a=o?Math.max(.82,this.camera.aspect||1):this.camera.aspect||1,s=Math.atan(Math.tan(i)*a);this.azT=n??this.azimuth,this.polT=Math.max(15,Math.min(80,r?.polarDeg??55))*Pe;let c=this.fitDistance(t,i,s,this.azT,this.polT);this.distT=c*Math.max(1.05,Math.min(2,r?.margin??Zo))}fitDistance(t,n,o,r,i){let a=Math.max(1,t.radius),s=Math.max(a/Math.tan(n),a/Math.tan(o)),c=t.box;if(!c)return s;let u=Math.sin(i),l=-u*Math.sin(r),m=-Math.cos(i),h=-u*Math.cos(r);if(Math.abs(m)>.999)return s;let d=-h,f=l,p=Math.hypot(d,f);d/=p,f/=p;let b=-f*m,y=f*l-d*h,g=d*m,M=Math.tan(o),v=Math.tan(n),R=1;for(let P=0;P<8;P++){let x=(P&1?c.max[0]:c.min[0])-t.center[0],S=(P&2?c.max[1]:c.min[1])-t.center[1],w=(P&4?c.max[2]:c.min[2])-t.center[2],I=x*l+S*m+w*h,L=Math.abs(x*d+w*f),O=Math.abs(x*b+S*y+w*g);R=Math.max(R,L/M-I,O/v-I)}return Math.min(s,Math.max(R,a*.35))}updateClipping(t){let n=this.camera.position.x-t.center[0],o=this.camera.position.y-t.center[1],r=this.camera.position.z-t.center[2],i=Math.hypot(this.camera.position.x-this.target.x,this.camera.position.y-this.target.y,this.camera.position.z-this.target.z),a=this.interactionEnabled&&Math.abs(i-this.distance)<=this.distance*.01,{near:s,far:c}=Ku(Math.hypot(n,o,r),t.radius,a?this.distance:null);this.camera.perspective({near:s,far:c,aspect:this.camera.aspect})}update(){let t=this.azT-this.azimuth,n=this.polT-this.polar,o=this.distT-this.distance,r=this.targetT.x-this.target.x,i=this.targetT.y-this.target.y,a=this.targetT.z-this.target.z,s=Math.max(1e-4,this.distance*1e-4),c=Math.abs(t)>1e-4||Math.abs(n)>1e-4||Math.abs(o)>1e-4||Math.abs(r)>s||Math.abs(i)>s||Math.abs(a)>s;return this.azimuth+=t*Dt,this.polar+=n*Dt,this.distance+=o*Dt,this.target.x+=r*Dt,this.target.y+=i*Dt,this.target.z+=a*Dt,c&&this.applyPosition(),c}get currentAzimuth(){return this.azimuth}get currentDistance(){return this.distance}syncFromCamera(){let t=this.camera.position.x-this.target.x,n=this.camera.position.y-this.target.y,o=this.camera.position.z-this.target.z,r=Math.hypot(t,n,o)||1,i=Math.max(qo,Math.min($o,Math.acos(Math.max(-1,Math.min(1,n/r)))));this.distance=this.distT=r,this.polar=this.polT=i,this.azimuth=this.azT=Math.atan2(t,o)}setTarget(t){this.target.set(t[0],t[1],t[2]),this.targetT.copy(this.target)}resumeAfterFlight(t){this.camera.perspective({fov:this.fovY,aspect:this.camera.aspect}),t&&this.target.set(t[0],t[1],t[2]),this.targetT.copy(this.target),this.syncFromCamera()}applyPosition(){let t=Math.sin(this.polar),n=this.target.x+this.distance*t*Math.sin(this.azimuth),o=this.target.y+this.distance*Math.cos(this.polar),r=this.target.z+this.distance*t*Math.cos(this.azimuth);this.camera.position.set(n,o,r),this.camera.lookAt(this.target)}dispose(){this.canvas.removeEventListener("pointerdown",this.onPointerDown),this.canvas.removeEventListener("pointermove",this.onPointerMove),this.canvas.removeEventListener("pointerup",this.onPointerUp),this.canvas.removeEventListener("pointercancel",this.onPointerUp),this.canvas.removeEventListener("wheel",this.onWheel),this.canvas.removeEventListener("keydown",this.onKeyDown),this.canvas.removeEventListener("contextmenu",this.onContextMenu),this.activePointers.clear()}},Wu=.1,Yu=.25;function Ku(e,t,n){let o=Math.max(1,t)*1.18,r=n==null?Yu:Math.max(.05,n*Wu),i=Math.max(r,e-o),a=Math.max(i+10,e+o);return{near:i,far:a}}var Gn=class{constructor(t){this.rafId=0;this.running=!1;this.lastTime=0;this.fpsEma=0;this.rendered=0;this.tick=t=>{let n=this.lastTime?(t-this.lastTime)/1e3:.016666666666666666;if(this.lastTime=t,n>0){let r=1/n;this.fpsEma=this.fpsEma?this.fpsEma*.9+r*.1:r}this.rendered++,this.frame(n)?this.rafId=requestAnimationFrame(this.tick):(this.running=!1,this.rafId=0)};this.frame=t}requestRender(){this.running||(this.running=!0,this.lastTime=0,this.rafId=requestAnimationFrame(this.tick))}stats(){return{fps:this.running?Math.round(this.fpsEma):0,rendered:this.rendered,idle:!this.running}}stop(){this.rafId&&cancelAnimationFrame(this.rafId),this.rafId=0,this.running=!1}};function ki(e,t,n){return Math.max(t,Math.min(n,e))}var Nt=2.5,qu=1.15,mn=12,Vt=22,Li=6,Fi=9.5,Di=.9,Oi=2.2,Qo=30,Jo=4,Hn=8192;var zy=Vt+Jo;function Bi(e,t){let n=t*1.4,o=t*3.2;if(e<=n)return{scale:1,fade:0,minPixels:Nt};let r=Math.min(1,(e-n)/Math.max(.001,o-n));return{scale:1-r*.4,fade:r*.55,minPixels:Nt+r*(qu-Nt)}}function Ni(e,t,n){return!(e>0)||!(t>0)||!(n>0)?!1:t*n/e>=64}var $u=12;function Vi(e,t,n,o,r){if(!(e>0)||!(t>0)||!(n>0)||!(o>0)||!(r>0))return!1;let i=Math.tan(o/2*Math.PI/180);if(!(i>0))return!1;let a=t/(n*i)*(r/2);return Math.PI*a*a/e>=$u}var Zu=[{key:"wheelchair",label:"Wheelchair space",short:"Wheelchair",icon:"\u267F"},{key:"companion",label:"Companion seat",short:"Companion",icon:"\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}"},{key:"semi-ambulatory",label:"Semi-ambulatory (limited mobility)",short:"Limited mobility",icon:"\u{1F9AF}"},{key:"designated-aisle",label:"Designated aisle / transfer seat",short:"Aisle transfer",icon:"AS"},{key:"step-free",label:"Step-free accessible seat",short:"Step-free",icon:"SF"},{key:"hearing",label:"Assistive listening",short:"Hearing",icon:"\u{1F9BB}"},{key:"cart",label:"CART live-caption view",short:"CART captions",icon:"CC"},{key:"sign-language",label:"Sign-language view",short:"Sign language",icon:"\u{1F91F}"},{key:"low-vision",label:"Blind / low-vision viewing",short:"Low vision",icon:"LV"},{key:"sensory-friendly",label:"Quiet / sensory-friendly seating",short:"Sensory-friendly",icon:"QS"},{key:"plus-size",label:"Plus-size seat",short:"Plus-size",icon:"\u{1F4BA}"},{key:"lift-armrest",label:"Lift-up armrest",short:"Lift armrest",icon:"\u2195\uFE0F"}],jy=new Map(Zu.map(e=>[e.key,e]));var Qu={wheelchair:"#3b82f6",companion:"#8b5cf6","semi-ambulatory":"#0ea5e9","designated-aisle":"#0284c7","step-free":"#16a34a",hearing:"#14b8a6",cart:"#7c3aed","sign-language":"#f59e0b","low-vision":"#d97706","sensory-friendly":"#6366f1","plus-size":"#ec4899","lift-armrest":"#22c55e"};function Gi(e){let t=e?.[0];return t&&Qu[t]||"#3b82f6"}var Ju=[{key:"obstructedView",label:"Obstructed view",short:"Obstructed",icon:"\u26D4"},{key:"restrictedView",label:"Restricted view",short:"Restricted",icon:"\u{1F441}"},{key:"premium",label:"Premium seat",short:"Premium",icon:"\u2605"}],Xy=new Map(Ju.map(e=>[e.key,e]));var em=["reference-focal","bar","entrance","exit","restroom","screen","sound","concession","coat","wall","rail","suite","obstruction"],Wy=new Set(em);var zi=[{key:"circle",label:"Standard seat",shortLabel:"Standard",useCase:"General assigned seating",group:"general",path:null,bounds:null,mark:null},{key:"theatre",label:"Theatre chair",shortLabel:"Theatre",useCase:"Auditoriums, arenas and stadium stands",group:"fixed",path:"M4.5 3.5 Q4.5 1.5 6.5 1.5 L17.5 1.5 Q19.5 1.5 19.5 3.5 L19.5 13 L4.5 13 Z M3.5 12 L20.5 12 Q22.5 12 22.5 14 L22.5 21 Q22.5 22.5 21 22.5 Q19.5 22.5 19.5 21 L19.5 17.5 L4.5 17.5 L4.5 21 Q4.5 22.5 3 22.5 Q1.5 22.5 1.5 21 L1.5 14 Q1.5 12 3.5 12 Z",bounds:{x:1.5,y:1.5,width:21,height:21},mark:{x:12,y:10,radius:6}},{key:"dining",label:"Dining chair",shortLabel:"Dining",useCase:"Banquets, restaurants and table seating",group:"flexible",path:"M7 1 Q6 1 6 2.5 L6.75 10.5 L5 10.5 Q4 10.5 4 12 L4 14 Q4 15 5.25 15 L6 15 L4 23 L7 23 L9.5 15 L14.5 15 L17 23 L20 23 L18 15 L18.75 15 Q20 15 20 14 L20 12 Q20 10.5 19 10.5 L17.25 10.5 L18 2.5 Q18 1 17 1 Z",bounds:{x:4,y:1,width:16,height:22},mark:{x:12,y:10,radius:4.5}},{key:"folding",label:"Folding chair",shortLabel:"Folding",useCase:"Concert floors, ceremonies and conferences",group:"flexible",path:"M6 2 Q5 2 5 3 L6 8 L18 8 L19 3 Q19 2 18 2 Z M5 9 L19 9 Q20 9 20 10.5 L19 13 L5 13 L4 10.5 Q4 9 5 9 Z M6 12 L9 12 L12 17 L15 12 L18 12 L14 19 L17 23 L14 23 L12 21 L10 23 L7 23 L10 19 Z",bounds:{x:4,y:2,width:16,height:21},mark:{x:12,y:5,radius:3}},{key:"armchair",label:"Premium armchair",shortLabel:"Armchair",useCase:"Boxes, lounges and club seating",group:"premium",path:"M3.5 4 Q3.5 1.5 6 1.5 L18 1.5 Q20.5 1.5 20.5 4 L20.5 13 L3.5 13 Z M1.5 12.5 Q1.5 10 3.25 10 Q5 10 5 12.5 L5 13.5 L19 13.5 L19 12.5 Q19 10 20.75 10 Q22.5 10 22.5 12.5 L22.5 19.5 Q22.5 22 20 22 L4 22 Q1.5 22 1.5 19.5 Z",bounds:{x:1.5,y:1.5,width:21,height:20.5},mark:{x:12,y:7.5,radius:5.5}},{key:"recliner",label:"Recliner",shortLabel:"Recliner",useCase:"Luxury cinemas and premium clubs",group:"premium",path:"M7 2 Q7 1 8.5 1 L15.5 1 Q17 1 17 2 L19 13 L5 13 Z M4 9 Q2 9 2 11.5 L2 16 Q2 18 4 18 L6 18 L6 15 L18 15 L18 18 L20 18 Q22 18 22 16 L22 11.5 Q22 9 20 9 Q18 9 18 11 L18 13 L6 13 L6 11 Q6 9 4 9 Z M7 17 L17 17 Q18 17 18.5 18.5 L19.5 22.5 L4.5 22.5 L5.5 18.5 Q6 17 7 17 Z",bounds:{x:2,y:1,width:20,height:21.5},mark:{x:12,y:8,radius:5}},{key:"stool",label:"Stool",shortLabel:"Stool",useCase:"Bars, high-tops and seating rails",group:"flexible",path:"M6 2.5 L18 2.5 Q22 2.5 22 6.5 L22 12 Q22 16 18 16 L6 16 Q2 16 2 12 L2 6.5 Q2 2.5 6 2.5 Z M6 15.5 L9.5 15.5 L7.5 22.5 L3 22.5 Z M14.5 15.5 L18 15.5 L20.5 22.5 L16 22.5 Z",bounds:{x:2,y:2.5,width:20,height:20},mark:{x:12,y:9.25,radius:6.5}},{key:"bench",label:"Bench place",shortLabel:"Bench",useCase:"Pews, bleachers and terraces",group:"fixed",path:"M2.5 0.5 L21.5 0.5 Q23 0.5 23 2 L23 5 Q23 6.5 21.5 6.5 L2.5 6.5 Q1 6.5 1 5 L1 2 Q1 0.5 2.5 0.5 Z M2 7.5 L22 7.5 Q23.5 7.5 23.5 9 L23.5 15.5 Q23.5 17 22 17 L18 17 L18 21.5 Q18 22.5 16.75 22.5 Q15.5 22.5 15.5 21.5 L15.5 17 L8.5 17 L8.5 21.5 Q8.5 22.5 7.25 22.5 Q6 22.5 6 21.5 L6 17 L2 17 Q0.5 17 0.5 15.5 L0.5 9 Q0.5 7.5 2 7.5 Z",bounds:{x:.5,y:.5,width:23,height:22},mark:{x:12,y:12.25,radius:4.75}}],Ui=zi.map(e=>e.key),tm=new Map(zi.map(e=>[e.key,e]));function Hi(e){return typeof e=="string"&&tm.has(e)}function ji(e,t){return Hi(e)?e:Hi(t?.seatGlyph)?t.seatGlyph:"circle"}var me=.02291666666666667,Ve=1/me,nm=58,om=nm*me;var rm=3,Xi=0,er=120,im=0,am=45,sm=7,Ye=1.2;function tr(e,t,n,o){return Number.isFinite(e)?Math.max(t,Math.min(n,e)):o}function cm(e){return!Number.isFinite(e)||!Number.isInteger(e)||e<0?0:e<=sm?e:rm}function dt(e,t={}){let n=tr(t.floorBaseHeightM,Xi,er,0),o=Math.min(er,n+cm(e.elevation)*om),r=e.height===void 0?o:tr(e.height,Xi,er,o),i=tr(e.rake,im,am,0);return{height:r,rake:i}}var Yi=mt(require("earcut"),1),or=mt(require("polygon-clipping"),1);var Qy=Math.PI/180;function nr(e){let t=0,n=0;for(let r of e)t+=r.x,n+=r.y;let o=e.length||1;return{x:t/o,y:n/o}}function fn(e){return e.length?nr(e):null}function Fe(e){let t=0;for(let n=0,o=e.length;n<o;n+=1){let r=e[n],i=e[(n+1)%o];t+=r.x*i.y-i.x*r.y}return t/2}function De(e,t,n){let o=!1;for(let r=0,i=e.length-1;r<e.length;i=r++){let a=e[r],s=e[i];a.y>n!=s.y>n&&t<(s.x-a.x)*(n-a.y)/(s.y-a.y)+a.x&&(o=!o)}return o}var C=me,lm=.002;function um(e,t,n){let o=Math.hypot(t[0]-e[0],t[1]-e[1],t[2]-e[2]),r=Math.hypot(n[0]-t[0],n[1]-t[1],n[2]-t[2]),i=Math.hypot(e[0]-n[0],e[1]-n[1],e[2]-n[2]),a=Math.max(o,r,i);if(a<1e-9)return!0;let s=(o+r+i)/2;return 2*Math.sqrt(Math.max(0,s*(s-o)*(s-r)*(s-i)))/a<lm}var Ct=class{constructor(t=16384){this.len=0;this.buf=new Float32Array(t)}push3(t,n,o){this.len+3>this.buf.length&&this.grow(this.len+3),this.buf[this.len++]=t,this.buf[this.len++]=n,this.buf[this.len++]=o}push1(t){this.len+1>this.buf.length&&this.grow(this.len+1),this.buf[this.len++]=t}grow(t){let n=this.buf.length*2;for(;n<t;)n*=2;let o=new Float32Array(n);o.set(this.buf.subarray(0,this.len)),this.buf=o}get length(){return this.len}toArray(){return this.buf.slice(0,this.len)}},jn=class{constructor(){this.pos=new Ct;this.nor=new Ct;this.col=new Ct;this.flr=new Ct;this.mat=new Ct;this.currentFloor=0;this.currentMaterial=0}setFloor(t){this.currentFloor=t}setMaterial(t){this.currentMaterial=t}tri(t,n,o,r,i,a=i,s=i){um(t,n,o)||(this.pos.push3(t[0],t[1],t[2]),this.pos.push3(n[0],n[1],n[2]),this.pos.push3(o[0],o[1],o[2]),this.nor.push3(r[0],r[1],r[2]),this.nor.push3(r[0],r[1],r[2]),this.nor.push3(r[0],r[1],r[2]),this.col.push3(i[0],i[1],i[2]),this.col.push3(a[0],a[1],a[2]),this.col.push3(s[0],s[1],s[2]),this.flr.push1(this.currentFloor),this.flr.push1(this.currentFloor),this.flr.push1(this.currentFloor),this.mat.push1(this.currentMaterial),this.mat.push1(this.currentMaterial),this.mat.push1(this.currentMaterial))}triN(t,n,o,r,i,a,s,c=s,u=s){[...t,...n,...o].every(Number.isFinite)&&(this.pos.push3(t[0],t[1],t[2]),this.pos.push3(n[0],n[1],n[2]),this.pos.push3(o[0],o[1],o[2]),this.nor.push3(r[0],r[1],r[2]),this.nor.push3(i[0],i[1],i[2]),this.nor.push3(a[0],a[1],a[2]),this.col.push3(s[0],s[1],s[2]),this.col.push3(c[0],c[1],c[2]),this.col.push3(u[0],u[1],u[2]),this.flr.push1(this.currentFloor),this.flr.push1(this.currentFloor),this.flr.push1(this.currentFloor),this.mat.push1(this.currentMaterial),this.mat.push1(this.currentMaterial),this.mat.push1(this.currentMaterial))}get vertexCount(){return this.pos.length/3}build(){return{position:this.pos.toArray(),normal:this.nor.toArray(),color:this.col.toArray(),floor:this.flr.toArray(),material:this.mat.toArray(),count:this.pos.length/3}}};function mm(e,t,n){let o=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2],a=n[0]-e[0],s=n[1]-e[1],c=n[2]-e[2],u=r*c-i*s,l=i*a-o*c,m=o*s-r*a,h=Math.hypot(u,l,m)||1;return u/=h,l/=h,m/=h,[u,l,m]}function fm(e,t){let n=[...e],o=[];for(let a of e)o.push(a.x,a.y);let r=[];if(t){for(let a of t)if(!(a.length<3)){r.push(n.length);for(let s of a)n.push(s),o.push(s.x,s.y)}}let i=(0,Yi.default)(o,r.length?r:void 0,2);return{pts:n,tris:i}}function Ke(e){return Fe(e)<0?[...e].reverse():e}var dm=3;function hm(e,t,n,o){let r=o(e),i=o(t),a=o(n),s=(d,f,p,b)=>Math.abs(o({x:(d.x+f.x)/2,y:(d.y+f.y)/2})-(p+b)/2),c=(e.x+t.x+n.x)/3,u=(e.y+t.y+n.y)/3,l=(r+i+a)/3,m=Math.max(s(e,t,r,i),s(t,n,i,a),s(n,e,a,r),Math.abs(o({x:c,y:u})-l)),h=(d,f,p)=>{let b=Math.abs(o({x:(d+c)/2,y:(f+u)/2})-(p+l)/2);b>m&&(m=b)};return h((e.x+t.x)/2,(e.y+t.y)/2,(r+i)/2),h((t.x+n.x)/2,(t.y+n.y)/2,(i+a)/2),h((n.x+e.x)/2,(n.y+e.y)/2,(a+r)/2),m}function dn(e,t,n,o,r){if(r<=0)return hm(e,t,n,o);let i={x:(e.x+t.x)/2,y:(e.y+t.y)/2},a={x:(t.x+n.x)/2,y:(t.y+n.y)/2},s={x:(n.x+e.x)/2,y:(n.y+e.y)/2};return Math.max(dn(e,i,s,o,r-1),dn(i,t,a,o,r-1),dn(s,a,n,o,r-1),dn(i,a,s,o,r-1))}function hn(e,t,n,o,r,i,a,s){if(a>0){let h={x:(t.x+n.x)/2,y:(t.y+n.y)/2},d={x:(n.x+o.x)/2,y:(n.y+o.y)/2},f={x:(o.x+t.x)/2,y:(o.y+t.y)/2};hn(e,t,h,f,r,i,a-1,s),hn(e,h,n,d,r,i,a-1,s),hn(e,f,d,o,r,i,a-1,s),hn(e,h,d,f,r,i,a-1,s);return}let c=[t.x*C,r(t),t.y*C],u=[n.x*C,r(n),n.y*C],l=[o.x*C,r(o),o.y*C];if(s){e.triN(c,u,l,s(t),s(n),s(o),i);return}let m=mm(c,u,l);m[1]<0&&(m=[-m[0],-m[1],-m[2]]),e.tri(c,u,l,m,i)}var pm=8;function Wi(e,t,n){if(!Number.isFinite(n))return e;let o=[],r=(i,a,s,c,u)=>{if(u>0){let l={x:(i.x+a.x)/2,y:(i.y+a.y)/2},m=t(l);if(Math.abs(m-(s+c)/2)>n){r(i,l,s,m,u-1),r(l,a,m,c,u-1);return}}o.push(i)};for(let i=0;i<e.length;i++){let a=e[i],s=e[(i+1)%e.length];r(a,s,t(a),t(s),pm)}return o}function zn(e,t){if(e.length<3)return e;let n=[];for(let r of e){let i=n[n.length-1];i&&Math.hypot(r.x-i.x,r.y-i.y)<t||n.push(r)}for(;n.length>2&&Math.hypot(n[0].x-n[n.length-1].x,n[0].y-n[n.length-1].y)<t;)n.pop();if(n.length<3)return e;let o=[];for(let r=0;r<n.length;r++){let i=o.length?o[o.length-1]:n[(r-1+n.length)%n.length],a=n[r],s=n[(r+1)%n.length],c=s.x-i.x,u=s.y-i.y,l=Math.hypot(c,u);l>t&&Math.abs((a.x-i.x)*u-(a.y-i.y)*c)/l<t||o.push(a)}return o.length>=3?o:n}var Un=.001*Ve*.1;function se(e,t,n,o,r,i,a,s,c=1/0,u){if(!t||t.length<3||(c===void 0&&(c=1/0),Math.abs(Fe(t))<1e-4))return;let l=zn(Wi(zn(Ke(t),Un),o,c),Un),m=n?.map(P=>zn(Wi(zn(Ke(P),Un),o,c),Un)).filter(P=>P.length>=3&&Math.abs(Fe(P))>=1e-4),{pts:h,tris:d}=fm(l,m),f=[i[0]*s.top,i[1]*s.top,i[2]*s.top],p=[i[0]*s.bottomCap,i[1]*s.bottomCap,i[2]*s.bottomCap],b=[a[0]*s.top,a[1]*s.top,a[2]*s.top],y=[a[0]*s.wallBottom,a[1]*s.wallBottom,a[2]*s.wallBottom],g=0;if(Number.isFinite(c))for(;g<dm;g++){let P=0;for(let x=0;x<d.length;x+=3){let S=dn(h[d[x]],h[d[x+1]],h[d[x+2]],o,g);S>P&&(P=S)}if(P<=c)break}for(let P=0;P<d.length;P+=3){let x=h[d[P]],S=h[d[P+1]],w=h[d[P+2]];hn(e,x,S,w,o,f,g,u);let I=[x.x*C,r,x.y*C],L=[S.x*C,r,S.y*C],O=[w.x*C,r,w.y*C];e.tri(I,O,L,[0,-1,0],p)}let M=P=>{if(g<=0)return P;let x=1<<g,S=[];for(let w=0;w<P.length;w++){let I=P[w],L=P[(w+1)%P.length];for(let O=0;O<x;O++){let D=O/x;S.push({x:I.x+(L.x-I.x)*D,y:I.y+(L.y-I.y)*D})}}return S},v=nr(l),R=[{ring:M(l),flip:!1}];if(m)for(let P of m)P.length>=3&&R.push({ring:M(P),flip:!0});for(let{ring:P,flip:x}of R)for(let S=0;S<P.length;S++){let w=P[S],I=P[(S+1)%P.length],L=(I.x-w.x)*C,D=(I.y-w.y)*C,A=-L,E=Math.hypot(D,A)||1;D/=E,A/=E;let T=(w.x+I.x)/2-v.x,V=(w.y+I.y)/2-v.y,_=D*T+A*V;x&&(_=-_),_<0&&(D=-D,A=-A);let k=[D,0,A],H=[w.x*C,o(w),w.y*C],B=[I.x*C,o(I),I.y*C],F=[w.x*C,r,w.y*C],G=[I.x*C,r,I.y*C];e.tri(H,B,G,k,b,b,y),e.tri(H,G,F,k,b,y,y)}}function Ki(e){let t=0;for(let c of e)t+=c.count;let n=new Float32Array(t*3),o=new Float32Array(t*3),r=new Float32Array(t*3),i=new Float32Array(t),a=new Float32Array(t),s=0;for(let c of e)n.set(c.position,s*3),o.set(c.normal,s*3),r.set(c.color,s*3),i.set(c.floor,s),a.set(c.material,s),s+=c.count;return{position:n,normal:o,color:r,floor:i,material:a,count:t}}function je(e,t,n=2.5){if(t<=0||e.length<3)return e;let o=Ke(e),r=o.length,i=[];for(let s=0;s<r;s++){let c=o[s],u=o[(s+1)%r],l=u.x-c.x,m=u.y-c.y,h=Math.hypot(l,m)||1;i.push({x:m/h,y:-l/h})}let a=[];for(let s=0;s<r;s++){let c=o[s],u=i[(s-1+r)%r],l=i[s],m=u.x+l.x,h=u.y+l.y,d=Math.hypot(m,h),f=()=>{a.push([c.x+u.x*t,c.y+u.y*t]),a.push([c.x+l.x*t,c.y+l.y*t])};if(d<1e-9){f();continue}m/=d,h/=d;let p=m*u.x+h*u.y,b=1/Math.max(p,1e-6);if(!Number.isFinite(b)||b>n){f();continue}a.push([c.x+m*t*b,c.y+h*t*b])}if(a.length<3)return e;try{let s=or.default.union([[...a,a[0]]]),c=null,u=-1/0;for(let m of s){let h=Math.abs(Fe(m[0].map(([d,f])=>({x:d,y:f}))));h>u&&(u=h,c=m[0])}if(!c)return e;let l=c.map(([m,h])=>({x:m,y:h}));if(l.length>1){let m=l[0],h=l[l.length-1];Math.abs(m.x-h.x)<1e-9&&Math.abs(m.y-h.y)<1e-9&&l.pop()}return l.length>=3?l:e}catch{return e}}function Et(e,t,n=2.5){if(e.length<3)return[];if(t<=0)return e;let o=Ke(e),r=o.length,i=[];for(let c=0;c<r;c++){let u=o[c],l=o[(c+1)%r],m=Math.hypot(l.x-u.x,l.y-u.y)||1;i.push({x:-(l.y-u.y)/m,y:(l.x-u.x)/m})}let a=[],s=[];for(let c=0;c<r;c++){let u=o[c],l=i[(c-1+r)%r],m=i[c],h=l.x+m.x,d=l.y+m.y,f=Math.hypot(h,d),p=f<1e-9?1/0:1/Math.max(h/f*l.x+d/f*l.y,1e-6);if(!Number.isFinite(p)||p>n){a.push({x:u.x+l.x*t,y:u.y+l.y*t},{x:u.x+m.x*t,y:u.y+m.y*t}),s.push(c,c);continue}h/=f,d/=f,a.push({x:u.x+h*t*p,y:u.y+d*t*p}),s.push(c)}for(let c=0;c<a.length;c++){let u=(c+1)%a.length,l=s[c],m=s[u];if(m!==(l+1)%r)continue;let h=o[l],d=o[m];if((a[u].x-a[c].x)*(d.x-h.x)+(a[u].y-a[c].y)*(d.y-h.y)<=0)return[]}try{let c=or.default.intersection([[...a.map(f=>[f.x,f.y]),[a[0].x,a[0].y]]],[[...o.map(f=>[f.x,f.y]),[o[0].x,o[0].y]]]),u=null,l=0;for(let f of c){let p=Math.abs(Fe(f[0].map(([b,y])=>({x:b,y}))));p>l&&(l=p,u=f[0])}if(!u)return[];let m=u.map(([f,p])=>({x:f,y:p})),h=m[0],d=m[m.length-1];return m.length>1&&Math.abs(h.x-d.x)<1e-9&&Math.abs(h.y-d.y)<1e-9&&m.pop(),m.length>=3?Ke(m):[]}catch{return[]}}function Xn(e,t,n,o,r=28){let i=[];for(let a=0;a<r;a++){let s=a/r*Math.PI*2;i.push({x:e+n*Math.cos(s),y:t+o*Math.sin(s)})}return i}function pn(e,t,n,o){return[{x:e,y:t},{x:e+n,y:t},{x:e+n,y:t+o},{x:e,y:t+o}]}var nt=.22;function qi(e,t){let n=Re[e];if(n!=="sold"&&n!=="held")return-1;let o=(t+1)*2654435761;return o^=o>>>15,o=Math.imul(o,2246822519),o^=o>>>13,(o>>>0)%1e5/1e5}var bm=.42;function ym(e){let t=e.length,n=new Float64Array(t);if(t<2)return n.fill(1/0),n;let o=1/0,r=1/0,i=-1/0,a=-1/0;for(let f of e)f.x<o&&(o=f.x),f.y<r&&(r=f.y),f.x>i&&(i=f.x),f.y>a&&(a=f.y);let s=Math.max(i-o,1e-6),c=Math.max(a-r,1e-6),u=Math.max(Math.sqrt(s*c/t),1e-6),l=Math.max(1,Math.ceil(s/u)+1),m=Math.max(1,Math.ceil(c/u)+1),h=new Map,d=(f,p)=>{let b=Math.min(l-1,Math.max(0,Math.floor((f-o)/u)));return Math.min(m-1,Math.max(0,Math.floor((p-r)/u)))*l+b};for(let f=0;f<t;f++){let p=d(e[f].x,e[f].y),b=h.get(p);b?b.push(f):h.set(p,[f])}for(let f=0;f<t;f++){let p=e[f],b=Math.min(l-1,Math.max(0,Math.floor((p.x-o)/u))),y=Math.min(m-1,Math.max(0,Math.floor((p.y-r)/u))),g=1/0;for(let M=1;M<=4;M++){for(let v=y-M;v<=y+M;v++)if(!(v<0||v>=m))for(let R=b-M;R<=b+M;R++){if(R<0||R>=l||M>1&&Math.abs(v-y)<M&&Math.abs(R-b)<M)continue;let P=h.get(v*l+R);if(P)for(let x of P){if(x===f)continue;let S=Math.hypot(e[x].x-p.x,e[x].y-p.y);S<g&&(g=S)}}if(Number.isFinite(g)&&g<=M*u)break}n[f]=g}return n}function gm(e){let t=e.eyeHeightM;return Number.isFinite(t)?Math.max(0,t-Ye):0}function $i(e,t,n,o,r,i){let a=e.length,s=new Float32Array(a*3),c=new Float32Array(a),u=new Float32Array(a*3),l=new Float32Array(a),m=new Float32Array(a),h=new Float32Array(a),d=new Float32Array(a),f=new Float32Array(a*3),p=new Map,b=ym(e);for(let y=0;y<a;y++){let g=e[y],v=(n?.seatPitchU(y)??b[y])*C;l[y]=Number.isFinite(v)?Math.max(.06,Math.min(nt,v*bm)):nt,m[y]=hi(Number.isFinite(v)?v:void 0);let R=ji(g.glyph,{seatGlyph:i?.get(g.categoryKey)});h[y]=Ui.indexOf(R),d[y]=g.wheelchairSpaceType==="no-seat"?0:1,s[y*3]=g.x*C,s[y*3+1]=n?n.seatDeckY(y):gm(g),s[y*3+2]=g.y*C,c[y]=ln(t?t(g):"available");let P=de(r?.get(g.categoryKey)??"#6e7bff")??[.43,.48,1];if(u[y*3]=P[0],u[y*3+1]=P[1],u[y*3+2]=P[2],g.accessibility?.length){let x=de(Gi(g.accessibility));x&&(f[y*3]=x[0],f[y*3+1]=x[1],f[y*3+2]=x[2])}p.set(g.id,y)}return{count:a,iPosition:s,iState:c,iCategory:u,iMaxRadius:l,iRing:f,idToIndex:p,iChairWidth:m,iGlyph:h,iPhysicalSeat:d,iFloor:o??new Float32Array(a),iSection:new Float32Array(a).fill(-1),iYaw:new Float32Array(a)}}var xm=64;function rr(e,t){let n=[];for(let a of t){let s=e.idToIndex.get(a.seatId);if(s===void 0)continue;let c=ln(a.state);e.iState[s]!==c&&(e.iState[s]=c,n.push(s))}if(!n.length)return[];n.sort((a,s)=>a-s);let o=[],r=n[0],i=n[0];for(let a=1;a<n.length;a++){let s=n[a];if(s!==i){if(s<=i+xm){i=s;continue}o.push({start:r,length:i-r+1}),r=s,i=s}}return o.push({start:r,length:i-r+1}),o}var bn=3,_t=.38,yn=.24;function vm(e){if(e.length<3)return null;let t=e[0],n=e[Math.floor(e.length/2)],o=e[e.length-1],r=(n.x-t.x)*C,i=(n.y-t.y)*C,a=(o.x-t.x)*C,s=(o.y-t.y)*C,c=2*(r*s-i*a);if(Math.abs(c)<1e-7)return null;let u=r*r+i*i,l=a*a+s*s,m=(u*s-l*i)/c+t.x*C,h=(r*l-a*u)/c+t.y*C,d=Math.hypot(t.x*C-m,t.y*C-h);return d<1||d>200||!Number.isFinite(d)||e.some(f=>Math.abs(Math.hypot(f.x*C-m,f.y*C-h)-d)>.03)?null:{x:m,z:h,radius:d}}function Zi(e){let t=[],n=new Map,o=(c,u)=>`${Math.floor(c/bn)},${Math.floor(u/bn)}`;for(let c of e)for(let u of c.rows){for(let m of u.pts){let h=m.x*C,d=m.y*C,f=o(h,d),p=n.get(f)??[];p.push({x:h,z:d,y:u.y,floor:c.floorIndex}),n.set(f,p)}if(u.patch||u.pts.length<2)continue;let l=vm(u.pts);for(let m of[0,u.pts.length-1]){let h=u.pts[m],d=u.pts[m===0?1:m-1],f=h.x-d.x,p=h.y-d.y,b=Math.hypot(f,p);b<1e-6||t.push({sectionId:c.sectionId,floorIndex:c.floorIndex,curve:l,row:u,point:h,x:h.x*C,z:h.y*C,dx:f/b,dz:p/b})}}let r=new Map;t.forEach((c,u)=>{let l=o(c.x,c.z),m=r.get(l)??[];m.push(u),r.set(l,m)});let i=(c,u)=>{let l=Math.floor(c/bn),m=Math.floor(u/bn);return[-1,0,1].flatMap(h=>[-1,0,1].map(d=>`${l+h},${m+d}`))},a=new Map;t.forEach((c,u)=>{let l=-1,m=1/0,h=!1;for(let d of i(c.x,c.z))for(let f of r.get(d)??[]){let p=t[f];if(c.sectionId===p.sectionId&&c.row.blockId===p.row.blockId||c.floorIndex!==p.floorIndex||Math.abs(c.row.y-p.row.y)>.05)continue;let b=p.x-c.x,y=p.z-c.z,g=Math.hypot(b,y);if(g<_t*2+.45||g>bn)continue;let M=c.curve&&p.curve&&Math.hypot(c.curve.x-p.curve.x,c.curve.z-p.curve.z)<=.05&&Math.abs(c.curve.radius-p.curve.radius)<=.05,v=Math.min((b*c.dx+y*c.dz)/g,(-b*p.dx-y*p.dz)/g);(M?v<.8:v<.98)||!M&&(Math.abs(b*c.dz-y*c.dx)>.15||Math.abs(b*p.dz-y*p.dx)>.15)||(g<m-.02?(l=f,m=g,h=!1):Math.abs(g-m)<=.02&&(h=!0))}l>=0&&!h&&a.set(u,l)});let s=[];for(let[c,u]of a){if(c>=u||a.get(u)!==c)continue;let l=t[c],m=t[u],h=Math.hypot(m.x-l.x,m.z-l.z),d=(m.x-l.x)/h,f=(m.z-l.z)/h,p=!1;for(let y of i((l.x+m.x)/2,(l.z+m.z)/2))for(let g of n.get(y)??[]){if(g.floor!==l.floorIndex||Math.abs(g.y-l.row.y)>.75)continue;let M=(g.x-l.x)*d+(g.z-l.z)*f,v=Math.abs((g.x-l.x)*f-(g.z-l.z)*d);M>.01&&M<h-.01&&v<yn+_t&&(p=!0)}if(p)continue;let b=(y,g)=>({x:(l.x+d*y-f*g)/C,y:(l.z+f*y+d*g)/C});s.push({sections:[l.sectionId,m.sectionId],blocks:[l.row.blockId,m.row.blockId],floorIndex:l.floorIndex,ends:[l.point,m.point],clearWidthM:h-2*_t,heightM:(l.row.y+m.row.y)/2,outline:[b(_t,-yn),b(h-_t,-yn),b(h-_t,yn),b(_t,yn)]})}return s}var Mm=.15,Sm=1.6;function Qi(e){return ki(e??1,Mm,Sm)}var wm=.15,Pm=.9,Im=1.76;function Rm(){return{background:{top:[...At.top],bottom:[...At.bottom]},structure:Ko,seatStates:{...Pi},seatScale:1,materials:{seat:null,shell:null,roughness:.78}}}function Am(e){return!!e&&e[0]*.2126+e[1]*.7152+e[2]*.0722>.55?{deck:"#a8ada9",fascia:"#69777c",shell:"#8d9ca0",roughness:.87}:{deck:"#69747b",fascia:"#3e4d58",shell:"#526572",roughness:.87}}function Ji(e){let t=Rm();e??={};let n=de(e.background);if(n){t.background={top:ae(n,Pm),bottom:ae(n,Im)};let s={};for(let[u,l]of Object.entries(Ko))s[u]=he(l,n,wm);n[0]*.2126+n[1]*.7152+n[2]*.0722>.55&&(s.ground=ae(n,.86)),t.structure=s}let o=de(e.selectionColor)??de(e.accent);o&&(t.seatStates={...t.seatStates,selected:o});let r=e.seatScale;typeof r=="number"&&Number.isFinite(r)&&(t.seatScale=Qi(r));let i=Object.fromEntries(Object.entries(e.venue3d??{}).filter(([,s])=>s!=null)),a={...Am(n),...i};if(a){let s=de(a.deck),c=de(a.fascia);s&&(t.structure={...t.structure,tierTop:s,gaTop:s}),c&&(t.structure={...t.structure,tierWall:c,gaWall:c}),t.materials.seat=de(a.seat),t.materials.shell=de(a.shell),typeof a.roughness=="number"&&Number.isFinite(a.roughness)&&(t.materials.roughness=Math.min(1,Math.max(0,a.roughness)))}return t}function ea(e,t){let n=[];for(let o of t)n.push(...e.seatStates[o]);return n}function ta(e,t){let n=1-t,o=n*n*n,r=3*n*n*t,i=3*n*t*t,a=t*t*t;return{x:o*e.start.x+r*e.control1.x+i*e.control2.x+a*e.end.x,y:o*e.start.y+r*e.control1.y+i*e.control2.y+a*e.end.y}}function na(e,t,n=192){if(!Number.isInteger(t)||t<1)throw new Error("Path point count must be a positive integer");if(t===1)return[ta(e,.5)];let o=Array.from({length:n+1},(c,u)=>ta(e,u/n)),r=new Float64Array(o.length);for(let c=1;c<o.length;c+=1){let u=o[c].x-o[c-1].x,l=o[c].y-o[c-1].y;r[c]=r[c-1]+Math.hypot(u,l)}let i=r[r.length-1];if(i<=1e-9)return Array.from({length:t},()=>({...e.start}));let a=[],s=1;for(let c=0;c<t;c+=1){let u=i*c/(t-1);for(;s<r.length-1&&r[s]<u;)s+=1;let l=r[s-1],m=r[s],h=m===l?0:(u-l)/(m-l);a.push({x:o[s-1].x+(o[s].x-o[s-1].x)*h,y:o[s-1].y+(o[s].y-o[s-1].y)*h})}return a}function oa(e){let t=new Map,n=new Map;for(let o of e){if(o.type!=="row"||!o.segmentedRow)continue;let r=n.get(o.segmentedRow.groupId)??[];r.push(o),n.set(o.segmentedRow.groupId,r)}for(let[o,r]of n){let i=r.slice().sort((h,d)=>h.segmentedRow.componentIndex-d.segmentedRow.componentIndex),a=i[0]?.segmentedRow?.componentCount??0,s=i[0]?.segmentedRow;if(!s||!(a>=2&&i.length===a&&s?.boundaryBefore==="start"&&i.every((h,d)=>h.segmentedRow?.kind==="segmented-row-v1"&&h.segmentedRow.groupId===o&&h.segmentedRow.componentCount===a&&h.segmentedRow.componentIndex===d&&h.segmentedRow.repeatLabelOnComponents===s.repeatLabelOnComponents&&(d===0?h.segmentedRow.boundaryBefore==="start":h.segmentedRow.boundaryBefore!=="start")&&h.segmentedRow.displayLabel===s.displayLabel)))continue;let u=i.reduce((h,d)=>h+d.seatCount,0),l=0,m=0;for(let h of i)h.segmentedRow.boundaryBefore==="break"&&(l+=1),t.set(h.id,{groupId:o,adjacencyOffset:l,displayOffset:m,displayLabel:s.displayLabel,totalSeats:u,canonical:i[0],viewFromSeatUrl:s.viewFromSeatUrl,viewFromSeatMeta:s.viewFromSeatMeta,confidenceEvidence:s.confidenceEvidence}),l+=h.seatCount,m+=h.seatCount}return t}var Cm="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var Em="abcdefghijklmnopqrstuvwxyz";function _m(e,t){let n=t.length,o=e+1,r="";for(;o>0;){o-=1;let i=o%n;r=t[i]+r,o=Math.floor(o/n)}return r}function ir(e,t=!1){let n=t?Em:Cm;return _m(Math.max(0,Math.floor(e)-1),n)}var Tm=[[1e3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50,"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]];function ra(e){if(!Number.isFinite(e)||e<=0)return String(e);let t=Math.floor(e),n="";for(let[o,r]of Tm)for(;t>=o;)n+=r,t-=o;return n}function km(e){let t=new Array(e);return Array.from({length:e},(n,o)=>o).sort((n,o)=>Math.abs(2*n-(e-1))-Math.abs(2*o-(e-1))||n-o).forEach((n,o)=>t[n]=o),t}function Wn(e,t){let n=e.seatLabelStart??1,o=e.seatNumbering?.direction??"ltr",r=e.seatNumbering?.step??1,i=e.seatNumbering?.scheme??"decimal",a=e.seatNumbering?.prefix??"",s=e.seatNumbering?.endAt,c=e.seatCount;if(i==="updown"||i==="updown-descending"){let d=Math.ceil(c/2),f=i==="updown"?t<d?n+2*t:n-1+2*(c-t):t<d?n+2*(d-1-t):n+1+2*(t-d);return`${a}${f}`}let u=i==="odd"||i==="even"?2:r,l=s!=null&&Number.isFinite(s)?s-(c-1)*u:n,m=o==="center"?km(c)[t]:o==="rtl"?c-1-t:t,h;switch(i){case"odd":{let d=l%2===1?l:l+1;h=String(d+m*2);break}case"even":{let d=l%2===0?l:l+1;h=String(d+m*2);break}case"roman":h=ra(l+m*r);break;case"letters-upper":h=ir(l+m*r,!1);break;case"letters-lower":h=ir(l+m*r,!0);break;default:h=String(l+m*r);break}return`${a}${h}`}function Lm(e){return{...e.canonical,seatCount:e.totalSeats,label:e.displayLabel,displayLabel:e.displayLabel}}function ia(e,t,n){return n?.label??`${e.seatLabelBase??e.label}-${Wn(e,t)}`}function ar(e,t,n,o){if(o?.displayLabel)return o.displayLabel;if(e.seatDisplayLabelMode==="number")return Wn(e,t);if(!n)return`${e.displayLabel||e.label}-${Wn(e,t)}`;let r=Lm(n),i=n.displayOffset+t;return`${n.displayLabel}-${Wn(r,i)}`}function aa(e){let t=e.length;return t<=3?[...e]:[e[Math.floor(t*.25)],e[Math.floor(t*.5)],e[Math.floor(t*.75)]]}function Gt(e,t,n){if(!e.length)return 1/0;if(e.length===1)return Math.hypot(t-e[0].x,n-e[0].y);let o=1/0;for(let r=0;r+1<e.length;r++){let i=e[r],a=e[r+1],s=a.x-i.x,c=a.y-i.y,u=s*s+c*c,l=u>1e-12?((t-i.x)*s+(n-i.y)*c)/u:0;l<0?l=0:l>1&&(l=1);let m=t-(i.x+l*s),h=n-(i.y+l*c);if(Math.abs(m)>=o||Math.abs(h)>=o)continue;let d=Math.hypot(m,h);d<o&&(o=d)}return o}function Fm(e){let t=0,n=0;for(let i of e)t+=i.x,n+=i.y;let o=e.length||1;t/=o,n/=o;let r=0;for(let i of e){let a=Math.hypot(i.x-t,i.y-n);a>r&&(r=a)}return{cx:t,cy:n,r}}function sa(e,t){return Math.hypot(e.cx-t.cx,e.cy-t.cy)-e.r-t.r}function sr(e,t){let n=1/0;for(let o of aa(e)){let r=Gt(t,o.x,o.y);r<n&&(n=r)}for(let o of aa(t)){let r=Gt(e,o.x,o.y);r<n&&(n=r)}return n}function Dm(e,t){if(e.length<3)return{pts:e,seatIndices:t};let n=0,o=0;for(let l of e)n+=l.x,o+=l.y;n/=e.length,o/=e.length;let r=-1,i=e[0];for(let l of e){let m=Math.hypot(l.x-n,l.y-o);m>r&&(r=m,i=l)}let a=i.x-n,s=i.y-o,c=Math.hypot(a,s);c>1e-9?(a/=c,s/=c):(a=1,s=0);let u=e.map((l,m)=>({p:l,i:m,t:(l.x-n)*a+(l.y-o)*s})).sort((l,m)=>l.t-m.t);return{pts:u.map(l=>l.p),seatIndices:u.map(l=>t[l.i])}}function cr(e){let t=e.length;if(t<3)return null;let n=0,o=0;for(let g of e)n+=g.x,o+=g.y;n/=t,o/=t;let r=0,i=0,a=0,s=0,c=0,u=0,l=0;for(let g of e){let M=g.x-n,v=g.y-o;r+=M*M,a+=v*v,i+=M*v,s+=M*M*M,c+=v*v*v,u+=M*v*v,l+=v*M*M}let m=r*a-i*i;if(Math.abs(m)<1e-9)return null;let h=(s+u)/2,d=(c+l)/2,f=(h*a-d*i)/m,p=(d*r-h*i)/m,b=f+n,y=p+o;return!Number.isFinite(b)||!Number.isFinite(y)?null:{cx:b,cy:y}}var Om=.15;function Bm(e){if(e.length<2)return null;let t=e.map(g=>{let M=0,v=0;for(let R of g.pts)M+=R.x,v+=R.y;return{x:M/g.pts.length,y:v/g.pts.length}}),n=0,o=0;for(let g of t)n+=g.x,o+=g.y;n/=t.length,o/=t.length;let r=0,i=0,a=0;for(let g of t){let M=g.x-n,v=g.y-o;r+=M*M,i+=M*v,a+=v*v}let s=r+a,c=r*a-i*i,u=s/2+Math.sqrt(Math.max(0,s*s/4-c)),l,m;Math.abs(i)>1e-12?(l=u-a,m=i):r>=a?(l=1,m=0):(l=0,m=1);let h=Math.hypot(l,m);if(!(h>1e-12))return null;l/=h,m/=h;let d=1/0,f=-1/0,p=[];for(let g of e){let M=1/0,v=-1/0;for(let R of g.pts){let P=R.x*l+R.y*m;P<M&&(M=P),P>v&&(v=P),P<d&&(d=P),P>f&&(f=P)}p.push(v-M)}let b=f-d;return b>1e-9?(p.sort((g,M)=>g-M),p[Math.min(p.length-1,Math.floor(p.length*.9))]/b<=Nm?{x:l,y:m}:null):null}var Nm=.35;function Yn(e,t,n,o){let r=new Map;for(let P of n){let x=t[P],S=x.rowId||`__seat-${P}`,w=r.get(S);w||(w={pts:[],idx:[]},r.set(S,w)),w.pts.push({x:x.x,y:x.y}),w.idx.push(P)}if(!r.size)return{sectionId:e,rows:[],blockCount:0};let i=[];for(let[P,x]of r){let S=Dm(x.pts,x.idx),w=0;for(let I of S.pts)w+=Math.hypot(I.x-o.x,I.y-o.y);i.push({id:P,pts:S.pts,seatIndices:S.seatIndices,blockId:-1,ordinal:0,blockDepth:0,focalDistance:w/S.pts.length})}let a=i.map(P=>Fm(P.pts)),s=i.length<=256?i.length*(i.length-1)/2:0,c=s?new Float64Array(s):null;c?.fill(Number.NaN);let u=c?new Map(i.map((P,x)=>[P,x])):null,l=(P,x)=>(P>x&&([P,x]=[x,P]),P*(2*i.length-P-1)/2+(x-P-1)),m=(P,x)=>{if(!c)return sr(i[P].pts,i[x].pts);let S=l(P,x),w=c[S];if(!Number.isNaN(w))return w;let I=sr(i[P].pts,i[x].pts);return c[S]=I,I},h=(P,x)=>u?m(u.get(P),u.get(x)):sr(P.pts,x.pts),d=[];for(let P=0;P<i.length;P++){let x=1/0;for(let S=0;S<i.length;S++){if(P===S||sa(a[P],a[S])>=x)continue;let w=m(P,S);w<x&&(x=w)}Number.isFinite(x)&&d.push(x)}d.sort((P,x)=>P-x);let f=d.length?d[Math.floor(d.length/2)]:1,p=Math.max(f*1.8,1e-6),b=i.map(()=>[]);for(let P=0;P<i.length;P++)for(let x=P+1;x<i.length;x++)sa(a[P],a[x])>p||m(P,x)<=p&&(b[P].push(x),b[x].push(P));let y=0;for(let P=0;P<i.length;P++){if(i[P].blockId!==-1)continue;let x=y++,S=[P];for(i[P].blockId=x;S.length;){let w=S.pop();for(let I of b[w])i[I].blockId===-1&&(i[I].blockId=x,S.push(I))}}let g=new Map;for(let P of i){let x=g.get(P.blockId)??[];x.push(P),g.set(P.blockId,x)}let M=[];for(let P of i){if(P.pts.length<4)continue;let x=cr(P.pts);x&&(!Number.isFinite(x.cx)||!Number.isFinite(x.cy)||M.push({x:x.cx,y:x.cy}))}let v=M.length>=2?(()=>{let P=M.map(w=>w.x).sort((w,I)=>w-I),x=M.map(w=>w.y).sort((w,I)=>w-I),S=Math.floor(M.length/2);return{cx:P[S],cy:x[S]}})():null;if(v){let P=O=>Math.hypot(O.x-v.cx,O.y-v.cy),x=1/0,S=-1/0,w=[];for(let O of i){let D=1/0,A=-1/0;for(let E of O.pts){let T=P(E);T<D&&(D=T),T>A&&(A=T)}w.push(A-D),D<x&&(x=D),A>S&&(S=A)}let I=S-x;w.sort((O,D)=>O-D);let L=w[Math.min(w.length-1,Math.floor(w.length*.9))];if(I>1e-9&&L/I<=Om){let O=i.map(F=>{let G=0;for(let j of F.pts)G+=P(j);return{row:F,radius:G/F.pts.length}}),D=0,A=0;for(let F of O)D+=F.radius,A+=F.row.focalDistance;D/=O.length,A/=O.length;let E=0;for(let F of O)E+=(F.radius-D)*(F.row.focalDistance-A);if(E<0)for(let F of O)F.radius=-F.radius;let V=1/0;for(let F of O)F.radius<V&&(V=F.radius);O.sort((F,G)=>F.radius-G.radius);let _=-1,k=-1/0,H=I/Math.max(1,O.length)*.5,B=[];for(let F of O)F.radius-k>H&&(_++,k=F.radius),F.row.ordinal=_,F.row.blockDepth=F.radius-V,B.push(F.row);return{sectionId:e,rows:B,blockCount:y}}}let R=[];for(let[,P]of g){let x=Bm(P);if(x){let S=I=>{let L=0;for(let O of I.pts)L+=O.x*x.x+O.y*x.y;return L/I.pts.length};P.sort((I,L)=>S(I)-S(L)),P.length>=2&&P[0].focalDistance>P[P.length-1].focalDistance&&P.reverse();let w=0;for(let I=0;I<P.length;I++)I>0&&(w+=h(P[I-1],P[I])),P[I].ordinal=I,P[I].blockDepth=w,R.push(P[I])}else{let S=1/0;for(let w of P)w.focalDistance<S&&(S=w.focalDistance);P.sort((w,I)=>w.focalDistance-I.focalDistance);for(let w=0;w<P.length;w++)P[w].ordinal=w,P[w].blockDepth=Math.max(0,P[w].focalDistance-S),R.push(P[w])}}return{sectionId:e,rows:R,blockCount:y}}var Vm=/^\d{4}-\d{2}-\d{2}$/;function Gm(e){let t=Date.parse(e);return Number.isFinite(t)?Vm.test(e)?t+864e5:t:null}function Hm(e,t=Date.now()){if(e.validUntil===void 0){if(e.status!=="approved")return!0;let o=e.assessedAt?Date.parse(e.assessedAt):Number.NaN;return Number.isFinite(o)&&(t instanceof Date?t.getTime():t)<=o+366*864e5}let n=Gm(e.validUntil);return n===null?!1:(t instanceof Date?t.getTime():t)<n}function zm(e,t,n){return!(e.eventConfigurationId&&e.eventConfigurationId!==t||e.eventConfigurationVersion!==void 0&&e.eventConfigurationVersion!==n)}function Um(e){return e.status!=="draft"&&e.status!=="retracted"}function jm(e,t){return e.status===void 0?t===void 0:e.status!=="approved"?!0:typeof t=="string"&&typeof e.basisSha256=="string"&&e.basisSha256===t}function ca(e,t={}){return!!e&&Um(e)&&zm(e,t.activeConfigurationId,t.activeConfigurationVersion)&&jm(e,t.activeBasisSha256)&&Hm(e,t.now)}var Xm=new Set(["pitch-football","rink-hockey","track-athletics","oval-cricket","pitch-rugby","diamond-baseball","court-basketball","court-tennis","ring-boxing"]),Wm=new Set(["pitch-football","track-athletics","oval-cricket","pitch-rugby","diamond-baseball"]);function Tt(e){return!!e&&Xm.has(e)}function ma(e){return!!e&&Wm.has(e)}var Kn=1.1,Ym={"pitch-football":{width:105,height:68},"rink-hockey":{width:60,height:30},"track-athletics":{width:176.9,height:92.5},"oval-cricket":{width:150,height:140},"pitch-rugby":{width:120,height:70},"diamond-baseball":{width:140,height:140},"court-basketball":{width:32,height:19},"court-tennis":{width:36.57,height:18.29},"ring-boxing":{width:7.8,height:7.8}},Km={"pitch-football":"#2f7d4f","rink-hockey":"#e8f1f8","track-athletics":"#a4472f","oval-cricket":"#3d8a53","pitch-rugby":"#2f7d4f","diamond-baseball":"#2f7d4f","court-basketball":"#c8894f","court-tennis":"#3f7a5a","ring-boxing":"#2a4d8f"};var qm=Math.PI*2;function $m(e,t,n,o,r,i){return{x:r+e*n-t*o,y:i+e*o+t*n}}function la(e,t){let n=Math.max(0,e-t),o=[],r=20;for(let i=0;i<=r;i++){let a=-Math.PI/2+i/r*Math.PI;o.push({x:n+t*Math.cos(a),y:t*Math.sin(a)})}for(let i=0;i<=r;i++){let a=Math.PI/2+i/r*Math.PI;o.push({x:-n+t*Math.cos(a),y:t*Math.sin(a)})}return o}var ua=(()=>{let t={x:0,y:52},n=25,o={x:70,y:t.y-70},r=(o.x*o.x+o.y*o.y-4900)/(2*(o.y+70)),i=r+70,a=[],s=Math.atan2(o.y-r,o.x),c=Math.atan2(o.y-r,-o.x);for(let u=0;u<=24;u++){let l=s+(c-s)*u/24;a.push({x:i*Math.cos(l),y:r+i*Math.sin(l)})}return{half:70,home:t,backstop:n,fence:a}})();var qn="#f1f5f9";function gn(e){return Tt(e)}function ht(e,t,n,o,r=32){let i=[];for(let a=0;a<r;a++){let s=a/r*qm;i.push({x:e+n*Math.cos(s),y:t+o*Math.sin(s)})}return i}function ot(e,t,n,o){return[{x:e-n,y:t-o},{x:e+n,y:t-o},{x:e+n,y:t+o},{x:e-n,y:t+o}]}function Zm(e){let{kind:t,cx:n,cy:o,width:r,height:i}=e,a=(e.rotation??0)*Math.PI/180,s=Math.cos(a),c=Math.sin(a),u=r/2,l=i/2,m=[],h=Ym[t],d=p=>h?p/h.width*r:0,f=p=>h?p/h.height*i:0;switch(t){case"pitch-football":{m.push({points:[{x:0,y:-l},{x:0,y:l}],closed:!1}),m.push({points:ht(0,0,d(9.15),f(9.15)),closed:!0});for(let p of[-1,1])m.push({points:ot(p*(u-d(16.5)/2),0,d(16.5)/2,f(40.32)/2),closed:!0}),m.push({points:ot(p*(u-d(5.5)/2),0,d(5.5)/2,f(18.32)/2),closed:!0});break}case"rink-hockey":{m.push({points:[{x:0,y:-l},{x:0,y:l}],closed:!1,ink:"#d63b3b"});for(let p of[-1,1]){m.push({points:[{x:p*d(7.5),y:-l},{x:p*d(7.5),y:l}],closed:!1,ink:"#2f6ecb"}),m.push({points:[{x:p*(u-d(4)),y:-f(11)},{x:p*(u-d(4)),y:f(11)}],closed:!1,ink:"#d63b3b"});for(let b of[-1,1])m.push({points:ht(p*d(20.5),b*f(7),d(4.5),f(4.5)),closed:!0,ink:"#2f6ecb"})}m.push({points:ht(0,0,d(4.5),f(4.5)),closed:!0,ink:"#2f6ecb"});break}case"track-athletics":{let b=l-f(1.22)*8;b>0&&m.push({points:la(u-d(1.22)*8,b),closed:!0,fill:"#2f7d4f"});for(let y=1;y<8;y++){let g=f(1.22)*y,M=l-g;if(M<=0)break;m.push({points:la(u-d(1.22)*y,M),closed:!0})}break}case"oval-cricket":{m.push({points:ht(0,0,d(27.4),f(27.4+20.12/2),40),closed:!0}),m.push({points:ot(0,0,d(3.05)/2,f(20.12)/2),closed:!0,ink:"#d8cfae"});break}case"pitch-rugby":{let p=b=>({points:[{x:d(b),y:-l},{x:d(b),y:l}],closed:!1});m.push(p(0));for(let b of[-1,1]){m.push(p(b*50),p(b*28));for(let y=-35;y<35;y+=4)m.push({points:[{x:d(b*10),y:f(y)},{x:d(b*10),y:f(Math.min(35,y+2))}],closed:!1})}break}case"diamond-baseball":{let p=(T,V)=>({x:d(T),y:f(V)}),{home:b}=ua,y=27.43,g=y/Math.SQRT2,M={x:b.x+g,y:b.y-g},v={x:b.x,y:b.y-2*g},R={x:b.x-g,y:b.y-g},P={x:b.x,y:b.y-18.44},x="#b98a59",S=Km["diamond-baseball"],w=38.94,I=[p(b.x,b.y)],L=Math.atan2(b.y-w/Math.SQRT2-P.y,w/Math.SQRT2),O=Math.PI-L;for(let T=0;T<=16;T++){let V=L-(L+Math.PI*2-O)%(Math.PI*2)*(T/16);I.push(p(P.x+29*Math.cos(V),P.y+29*Math.sin(V)))}m.push({points:I,closed:!0,fill:x,ink:x});let D={x:b.x,y:b.y-g},A=[{x:b.x,y:b.y},M,v,R].map(T=>p(D.x+(T.x-D.x)*.84,D.y+(T.y-D.y)*.84));m.push({points:A,closed:!0,fill:S,ink:S}),m.push({points:ht(d(P.x),f(P.y),d(2.74),f(2.74),20),closed:!0,fill:x,ink:x}),m.push({points:ht(d(b.x),f(b.y),d(3.96),f(3.96),20),closed:!0,fill:x,ink:x});let E=ua.fence;m.push({points:[p(b.x,b.y),p(E[0].x,E[0].y)],closed:!1}),m.push({points:[p(b.x,b.y),p(E[E.length-1].x,E[E.length-1].y)],closed:!1});for(let T of[M,v,R])m.push({points:ot(d(T.x),f(T.y),d(.3),f(.3)),closed:!0,fill:qn});break}case"court-basketball":{m.push({points:ot(0,0,d(14),f(7.5)),closed:!0}),m.push({points:[{x:0,y:-f(7.5)},{x:0,y:f(7.5)}],closed:!1}),m.push({points:ht(0,0,d(1.8),f(1.8),24),closed:!0});for(let p of[-1,1]){let b=p*14,y=p*(14-5.8),g=p*(14-1.575);m.push({points:ot(d((b+y)/2),0,d(2.9),f(2.45)),closed:!0,fill:"#2f5d8a"}),m.push({points:ht(d(y),0,d(1.8),f(1.8),24),closed:!0});let M=Math.sqrt(6.75*6.75-6.6*6.6),v=[{x:d(b),y:-f(6.6)}],R=Math.atan2(-6.6,-p*M),P=2*Math.atan2(6.6,M);for(let x=0;x<=16;x++){let S=R-p*P*(x/16);v.push({x:d(g+6.75*Math.cos(S)),y:f(6.75*Math.sin(S))})}v.push({x:d(b),y:f(6.6)}),m.push({points:v,closed:!1})}break}case"court-tennis":{m.push({points:ot(0,0,d(11.885),f(5.485)),closed:!0,fill:"#2b5f99"});for(let p of[-1,1])m.push({points:[{x:-d(11.885),y:p*f(4.115)},{x:d(11.885),y:p*f(4.115)}],closed:!1}),m.push({points:[{x:p*d(6.4),y:-f(4.115)},{x:p*d(6.4),y:f(4.115)}],closed:!1});m.push({points:[{x:-d(6.4),y:0},{x:d(6.4),y:0}],closed:!1}),m.push({points:[{x:0,y:-f(6.4)},{x:0,y:f(6.4)}],closed:!1,ink:"#d1d5db"});break}case"ring-boxing":{m.push({points:ot(0,0,d(3.05),f(3.05)),closed:!0});let y=[[-1,-1,"#c53030"],[1,1,"#2b6cb0"],[1,-1,"#e2e8f0"],[-1,1,"#e2e8f0"]];for(let[g,M,v]of y)m.push({points:ot(g*d(3.05),M*f(3.05),d(.3),f(.3)),closed:!0,fill:v,ink:v});break}default:return[]}return m.map(p=>({...p,points:p.points.map(b=>$m(b.x,b.y,s,c,n,o))}))}function fa(e){if(e.role!=="stage"||!gn(e.stageKind))return[];let t=null;if(e.x!=null&&e.y!=null&&e.width!=null&&e.height!=null&&e.width>0&&e.height>0&&[e.x,e.y,e.width,e.height].every(Number.isFinite))t={cx:e.x+e.width/2,cy:e.y+e.height/2,width:e.width,height:e.height};else if(e.points&&e.points.length>=3&&e.points.every(n=>Number.isFinite(n.x)&&Number.isFinite(n.y))){let n=e.points.map(l=>l.x),o=e.points.map(l=>l.y),r=Math.min(...n),i=Math.max(...n),a=Math.min(...o),s=Math.max(...o),c=Math.max(1,i-r),u=Math.max(1,s-a);t={cx:r+c/2,cy:a+u/2,width:c,height:u}}return t?Zm({kind:e.stageKind,...t}):[]}var Qm=/^data:image\/(?:png|jpe?g|webp|gif|avif);base64,[a-z0-9+/]+={0,2}$/i,Jm=/[\s"'<>`\\]/;function ef(e){if(typeof e!="string"||!e||e.length>2e6||e!==e.trim())return!1;if(e.startsWith("data:"))return Qm.test(e);if(Jm.test(e))return!1;try{let t=new URL(e);return t.protocol==="https:"&&!t.username&&!t.password}catch{return!1}}function da(e){let t=e.trim();return ef(t)?t:null}var lr="seatlayer.event-configuration/1";var Ht=100,tf=120,nf=2e5,of=1e4,rf=/^[a-f0-9]{64}$/,af=new Set(["stage","screen","barrier","camera_platform","sound_desk","rigging_truss"]);function xn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function kt(e,t){return typeof e=="string"&&e.length>=1&&e.length<=t&&e.normalize("NFKC").trim()===e}function sf(e){return typeof e=="number"&&Number.isInteger(e)&&e>0}function ha(e){return!Array.isArray(e)||e.length>nf||!e.every(t=>kt(t,Ht))?null:[...new Set(e)].sort()}function cf(e){return!xn(e)||!kt(e.chartId,Ht)||!kt(e.version,Ht)||e.sha256!==void 0&&(typeof e.sha256!="string"||!rf.test(e.sha256))?null:{chartId:e.chartId,version:e.version,...typeof e.sha256=="string"?{sha256:e.sha256}:{}}}function ur(e,t,n){return typeof e=="number"&&Number.isFinite(e)&&e>=t&&e<=n}function lf(e){return xn(e)?e.mode==="none"||e.mode==="opaque"?e.opacity===void 0?{mode:e.mode}:null:e.mode==="partial"&&ur(e.opacity,.01,.99)?{mode:"partial",opacity:e.opacity}:null:null}function uf(e,t){if(e===void 0)return;if(!Array.isArray(e)||e.length>of)return null;let n=new Set(t),o=new Set,r=new Set,i=0,a=[];for(let s of e){if(!xn(s)||!kt(s.id,Ht)||!kt(s.objectId,Ht)||!n.has(s.objectId)||!af.has(String(s.kind))||!ur(s.heightM,.05,50)||s.baseElevationM!==void 0&&!ur(s.baseElevationM,-10,100))return null;let c=lf(s.occlusion);if(!c||o.has(s.id)||r.has(s.objectId))return null;let u=s.contentImageUrl===void 0?void 0:typeof s.contentImageUrl=="string"?da(s.contentImageUrl):null;if(s.contentImageUrl!==void 0&&(!u||s.kind!=="screen"||++i>1))return null;o.add(s.id),r.add(s.objectId),a.push({id:s.id,objectId:s.objectId,kind:s.kind,heightM:s.heightM,...s.baseElevationM!==void 0?{baseElevationM:s.baseElevationM}:{},occlusion:c,...u?{contentImageUrl:u}:{}})}return a.sort((s,c)=>s.id.localeCompare(c.id))}function mf(e){let t=[];if(!xn(e))return{issues:[{code:"invalid_export",path:"configuration",message:"Configuration must be an object"}]};e.schema!==lr&&t.push({code:"unsupported_schema",path:"configuration.schema",message:`Configuration schema must be ${lr}`}),kt(e.id,Ht)||t.push({code:"invalid_id",path:"configuration.id",message:"Configuration id must contain 1 to 100 normalized characters"}),kt(e.label,tf)||t.push({code:"invalid_label",path:"configuration.label",message:"Configuration label must contain 1 to 120 normalized characters"}),sf(e.version)||t.push({code:"invalid_version",path:"configuration.version",message:"Configuration version must be a positive integer"});let n=cf(e.baseVenue);n||t.push({code:"invalid_base_venue",path:"configuration.baseVenue",message:"Base venue must identify one normalized chart id and exact version"});let o=xn(e.overlay)?e.overlay:null,r=ha(o?.objectIds),i=ha(o?.productionKillSeatIds),a=r?uf(o?.productionElements,r):null;return(!o||!r||!i)&&t.push({code:"invalid_overlay",path:"configuration.overlay",message:"Overlay ids must be bounded arrays of normalized stable ids"}),a===null&&t.push({code:"invalid_production_element",path:"configuration.overlay.productionElements",message:"Production elements must be unique, bounded semantics over referenced base-venue objects"}),t.length||!n||!r||!i||a===null?{issues:t}:{issues:t,value:{schema:lr,id:e.id,label:e.label,version:e.version,baseVenue:n,overlay:{objectIds:r,productionKillSeatIds:i,...a!==void 0?{productionElements:a}:{}}}}}function pa(e){let t=mf(e);return t.value?{ok:!0,value:t.value}:{ok:!1,issues:t.issues}}function ff(e){if((e.kind==="polygon"||e.kind==="polyline"||e.kind==="line")&&e.points&&e.points.length>=2)return e.points;if(e.x==null||e.y==null||e.width==null||e.height==null)return null;let t=e.x,n=e.y,o=e.width,r=e.height;return[{x:t,y:n},{x:t+o,y:n},{x:t+o,y:n+r},{x:t,y:n+r}]}function df(e,t,n){let o=n*Math.PI/180,r=Math.cos(o),i=Math.sin(o),a=e.x-t.x,s=e.y-t.y;return{x:t.x+a*r-s*i,y:t.y+a*i+s*r}}function ba(e){let t=ff(e);if(!t||t.length<2)return null;let n=e.rotation??0,o=Math.abs(n)<1e-6?t:t.map(c=>df(c,{x:t.reduce((u,l)=>u+l.x,0)/t.length,y:t.reduce((u,l)=>u+l.y,0)/t.length},n)),r=1/0,i=1/0,a=-1/0,s=-1/0;for(let c of o)r=Math.min(r,c.x),i=Math.min(i,c.y),a=Math.max(a,c.x),s=Math.max(s,c.y);return!Number.isFinite(r)||a-r<1e-6||s-i<1e-6?null:{minX:r,minY:i,maxX:a,maxY:s}}var hf=5,pf=3,bf=.92,yf=1.9,gf=2,xf=.6,vf=1,Mf=.06;function Sf(e){return e.heightM!==void 0?e.heightM:e.stageKind==="ring-boxing"?Kn:gn(e.stageKind)?Mf:vf}function ya(e){let t=1/0,n=1/0,o=-1/0,r=-1/0,i=-1/0;for(let a of va(e)){let s=a.baseHeightM??0;for(let c of a.objects){if(c.type!=="shape"||c.role!=="stage")continue;let u=ba(c);u&&(t=Math.min(t,u.minX),n=Math.min(n,u.minY),o=Math.max(o,u.maxX),r=Math.max(r,u.maxY),i=Math.max(i,s+Sf(c)))}}return!Number.isFinite(t)||!Number.isFinite(i)?null:{minX:t,minY:n,maxX:o,maxY:r,deckTopM:i}}function wf(e,t,n,o){let r=1/0,i=1/0,a=-1/0,s=-1/0;for(let d of e)Number.isFinite(d.eyeHeightM)&&(r=Math.min(r,d.x),a=Math.max(a,d.x),i=Math.min(i,d.y),s=Math.max(s,d.y));if(!Number.isFinite(r))return null;let c=r*t,u=i*t,l=Math.max(1,Math.ceil((a-r)*t/n)+1),m=Math.max(1,Math.ceil((s-i)*t/n)+1),h=new Float64Array(l*m).fill(-1/0);for(let d of e){if(!Number.isFinite(d.eyeHeightM))continue;let f=d.eyeHeightM-Ye,p=Math.min(l-1,Math.max(0,Math.floor((d.x*t-c)/n))),y=Math.min(m-1,Math.max(0,Math.floor((d.y*t-u)/n)))*l+p,g=f+o;g>h[y]&&(h[y]=g)}return{cellM:n,minX:c,minY:u,cols:l,rows:m,top:h}}function Pf(e,t,n){let o=Math.floor((t-e.minX)/e.cellM),r=Math.floor((n-e.minY)/e.cellM);return o<0||r<0||o>=e.cols||r>=e.rows?-1/0:e.top[r*e.cols+o]}function ga(e,t,n={}){let o=new Map;if(!t||!e.length)return o;let r=n.metresPerChartUnit??me,i=n.cellM??xf,a=n.chairBackM??bf,s=n.selfRowSkipM??gf,c=n.clearThreshold??.9,u=n.partialThreshold??.25,l=Math.max(1,n.columns??hf),m=Math.max(1,n.rows??pf),h=wf(e,r,i,a);if(!h)return o;let d=(t.maxX-t.minX)*r,f=(t.maxY-t.minY)*r,p=d>=f,b=(t.minX+t.maxX)/2*r,y=(t.minY+t.maxY)/2*r,g=[];for(let v=0;v<l;v++){let R=(v+.5)/l-.5,P=p?b+R*d:b,x=p?y:y+R*f;for(let S=0;S<m;S++){let w=t.deckTopM+(m===1?0:S/(m-1)*yf);g.push({x:P,y:x,z:w})}}let M=i/2;for(let v of e){if(!Number.isFinite(v.eyeHeightM))continue;let R=v.x*r,P=v.y*r,x=v.eyeHeightM,S=0,w=1/0;for(let L of g){let O=L.x-R,D=L.y-P,A=Math.hypot(O,D);if(!(A>s)){S++;continue}let E=O/A,T=D/A,V=0;for(let _=s;_<A;_+=M){let k=Pf(h,R+E*_,P+T*_);if(!(!Number.isFinite(k)||k>=x)&&k>x+(L.z-x)*_/A){V=_;break}}V?w=Math.min(w,V):S++}let I=S/g.length;I>=c||o.set(v.id,{seatId:v.id,mark:I<u?"obstructedView":"restrictedView",visibleFraction:I,totalRays:g.length,atDistanceM:Number.isFinite(w)?w:0})}return o}function xa(e,t){if(!t.size)return 0;let n=0;for(let o of e){let r=t.get(o.id);if(!r)continue;let i=o.commercial;i?.restrictedView!==void 0||i?.obstructedView!==void 0||(o.commercial={...i,[r.mark]:!0},n++)}return n}function mr(e){return e?e.accessibility?.length?e.wheelchairSpaceType&&!e.accessibility.includes("wheelchair")?["wheelchair",...e.accessibility]:e.accessibility:e.wheelchairSpaceType?["wheelchair"]:e.accessible?["wheelchair"]:[]:[]}var Zn=Math.PI/180;var vn=16;function fr(e,t,n,o){let r=n*Zn,i=Math.cos(r),a=Math.sin(r);return{x:o.x+e*i-t*a,y:o.y+e*a+t*i}}function Ia(e){let{seatCount:t,seatSpacing:n,curve:o,rotation:r,origin:i}=e,a=[];if(e.path)return na(e.path,t);if(t<=1)return t===1&&a.push({x:i.x,y:i.y}),a;if(o===0){for(let u=0;u<t;u++)a.push(fr(u*n,0,r,i));return a}let s=o/(t-1)*Zn,c=n/(2*Math.sin(Math.abs(s)/2));for(let u=0;u<t;u++){let l=u*s,m=c*Math.sin(l),h=-c+c*Math.cos(l);a.push(fr(m,h,r,i))}return a}function Ra(e){let t=new Map;if(e.overrides)for(let n of e.overrides)t.set(n.index,n);return t}function If(e,t){let n=Ra(e);return Ia(e).map((o,r)=>{let i=n.get(r),a=mr(i),s=ia(e,r,i),c={...e.commercial,...i?.commercial};return{index:r,x:o.x+(i?.dx??0),y:o.y+(i?.dy??0),label:s,displayLabel:ar(e,r,t,i),categoryKey:i?.categoryKey??e.categoryKey,skipped:!!i?.skip,accessible:a.length>0,accessibility:a,wheelchairSpaceType:i?.wheelchairSpaceType,commercial:Object.values(c).some(u=>u!==void 0&&u!==!1&&u!=="")?c:void 0,glyph:i?.glyph,viewUrl:i?.viewFromSeatUrl??e.viewFromSeatUrl,viewMeta:i?.viewFromSeatUrl?i.viewFromSeatMeta:e.viewFromSeatMeta,labelStyle:i?.labelStyle??e.seatLabelStyle}})}function Rf(e){let t=[];for(let n of If(e))n.skipped||t.push({id:`${e.id}:${n.index}`,label:n.label,displayLabel:n.displayLabel===n.label?void 0:n.displayLabel,x:n.x,y:n.y,rowId:e.id,categoryKey:n.categoryKey,accessible:n.accessible||void 0,accessibility:n.accessibility.length?n.accessibility:void 0,wheelchairSpaceType:n.wheelchairSpaceType,commercial:n.commercial,glyph:n.glyph,viewUrl:n.viewUrl,viewMeta:n.viewMeta,labelStyle:n.labelStyle});return t}function Af(e){if(e.seatCountsBySide)return{...e.seatCountsBySide};let t=e.sides&&e.sides.length?e.sides:["top","bottom"],n=["top","bottom","left","right"].filter(i=>t.includes(i)),o={top:0,bottom:0,left:0,right:0};if(!n.length)return o;let r=Math.max(0,Math.round(e.seatCount));for(let i=0;i<r;i++)o[n[i%n.length]]+=1;return o}function Cf(e){let t=[],n=Math.max(0,Math.round(e.seatCount));if(n===0)return t;let o=new Map((e.overrides??[]).map(l=>[l.index,l])),r=(l,m,h,d)=>{let f=o.get(l),p=mr(f),b=f?.label??`${e.label}-${l+1}`,y=e.displayLabel??e.label;return{index:l,label:b,displayLabel:f?.displayLabel??`${y}-${l+1}`,x:m+(f?.dx??0),y:h+(f?.dy??0),categoryKey:f?.categoryKey??e.categoryKey,skipped:!!f?.skip,accessible:p.length>0,accessibility:p,wheelchairSpaceType:f?.wheelchairSpaceType,commercial:f?.commercial,glyph:f?.glyph,viewUrl:f?.viewFromSeatUrl,viewMeta:f?.viewFromSeatUrl?f.viewFromSeatMeta:void 0,labelStyle:f?.labelStyle,...d?{side:d}:{}}};if(e.shape==="round"){let l=(e.radius??40)+vn,m=e.rotation*Zn,h=Math.max(0,Math.min(360,e.seatArc??360));if(h>=360||n===1){for(let b=0;b<n;b++){let y=m+b/n*2*Math.PI;t.push(r(b,e.center.x+l*Math.cos(y),e.center.y+l*Math.sin(y)))}return t}let d=h*Zn,f=(2*Math.PI-d)/2,p=m+f;for(let b=0;b<n;b++){let y=p+b/(n-1)*d;t.push(r(b,e.center.x+l*Math.cos(y),e.center.y+l*Math.sin(y)))}return t}let i=e.width??80,a=e.height??50,s=Af(e),c=["top","bottom","left","right"],u=0;for(let l of c){let m=s[l];for(let h=0;h<m;h++){let d,f;l==="top"?(d=-i/2+(h+.5)*i/m,f=-a/2-vn):l==="bottom"?(d=-i/2+(h+.5)*i/m,f=a/2+vn):l==="left"?(d=-i/2-vn,f=-a/2+(h+.5)*a/m):(d=i/2+vn,f=-a/2+(h+.5)*a/m);let p=fr(d,f,e.rotation,e.center);t.push(r(u++,p.x,p.y,l))}}return t}function Ef(e){return Cf(e).filter(t=>!t.skipped).map(t=>({id:`${e.id}:${t.index}`,label:t.label,...t.displayLabel!==t.label?{displayLabel:t.displayLabel}:{},x:t.x,y:t.y,rowId:e.id,categoryKey:t.categoryKey,...t.accessible?{accessible:!0}:{},...t.accessibility.length?{accessibility:t.accessibility}:{},...t.wheelchairSpaceType?{wheelchairSpaceType:t.wheelchairSpaceType}:{},...t.commercial?{commercial:t.commercial}:{},...t.glyph?{glyph:t.glyph}:{},...t.viewUrl?{viewUrl:t.viewUrl}:{},...t.viewUrl&&t.viewMeta?{viewMeta:t.viewMeta}:{},...t.labelStyle?{labelStyle:t.labelStyle}:{}}))}function _f(e){return[{id:`${e.id}:0`,label:e.label,...e.displayLabel&&e.displayLabel!==e.label?{displayLabel:e.displayLabel}:{},x:e.center.x,y:e.center.y,rowId:e.id,categoryKey:e.categoryKey,kind:"booth"}]}function Ma(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o].x,a=t[o].y,s=t[r].x,c=t[r].y;a>e.y!=c>e.y&&e.x<(s-i)*(e.y-a)/(c-a)+i&&(n=!n)}return n}function Tf(e,t){return t.some((n,o)=>{let r=t[(o+1)%t.length],i=(e.y-n.y)*(r.x-n.x)-(e.x-n.x)*(r.y-n.y);if(Math.abs(i)>1e-7)return!1;let a=(e.x-n.x)*(r.x-n.x)+(e.y-n.y)*(r.y-n.y),s=(r.x-n.x)**2+(r.y-n.y)**2;return a>=-1e-7&&a<=s+1e-7})}function dr(e){return Array.isArray(e)?e.filter(t=>Array.isArray(t)&&t.length>=3):[]}function Te(e,t,n){return Ma(e,t)&&!dr(n).some(o=>Ma(e,o)||Tf(e,o))}function $n(e){if(!e.length)return{x:0,y:0};let t=0,n=0;for(let o of e)t+=o.x,n+=o.y;return{x:t/e.length,y:n/e.length}}function Aa(e){switch(e.type){case"row":{let t=Ia(e),n=Ra(e),o=0,r=0,i=0;for(let a=0;a<t.length;a++){let s=n.get(a);s?.skip||(o+=t[a].x+(s?.dx??0),r+=t[a].y+(s?.dy??0),i++)}return i?{x:o/i,y:r/i}:{x:e.origin.x,y:e.origin.y}}case"table":case"booth":return{x:e.center.x,y:e.center.y};case"gaArea":return $n(e.points);case"section":return $n(e.outline);case"text":return{x:e.position.x,y:e.position.y};case"shape":return e.points&&e.points.length?$n(e.points):e.x!=null&&e.y!=null&&e.width!=null&&e.height!=null?{x:e.x+e.width/2,y:e.y+e.height/2}:{x:e.x??0,y:e.y??0};case"decorImage":return{x:e.x+e.width/2,y:e.y+e.height/2}}}function Sa(e,t){return e.length===t.length&&e.every((n,o)=>n.x===t[o].x&&n.y===t[o].y)}function kf(e,t){if(e.type!=="gaArea"||!Sa(e.points,t.outline))return!1;let n=dr(e.holes),o=dr(t.holes);return n.length===o.length&&n.every((r,i)=>Sa(r,o[i]))}function Lf(e,t,n=e.filter(r=>r.type==="section"),o=Aa(t)){let r="referenceInventorySource"in t?t.referenceInventorySource?.logicalSectionId:void 0;return(r?n.find(a=>(a.logicalSectionId??a.id)===r&&(kf(t,a)||Te(o,a.outline,a.holes))):void 0)??n.find(a=>Te(o,a.outline,a.holes))}function va(e){return e.floors&&e.floors.length?e.floors:[{id:"floor-0",name:"Main",objects:e.objects,focalPoint:e.focalPoint,referenceImage:e.referenceImage,backgroundImage:e.backgroundImage}]}function wa(e,t,n,o,r,i,a,s,c){let u=[],l=e.filter(p=>p.type==="section"),m=oa(e),h=p=>!p?.eventConfigurationId||p.eventConfigurationId===o&&(p.eventConfigurationVersion===void 0||p.eventConfigurationVersion===c),d=p=>ca(p,{activeConfigurationId:o,activeConfigurationVersion:c,activeBasisSha256:r,now:s}),f=(p,b)=>d(p)?{...p,coverage:b}:void 0;for(let p of e){let b=[];if(p.type==="row"?b=Rf(p):p.type==="table"?b=Ef(p):p.type==="booth"&&(b=_f(p)),!b.length)continue;for(let R of b)R.viewUrl&&!h(R.viewMeta)&&(R.viewUrl=void 0,R.viewMeta=void 0);if(p.type==="row"){let R=m.get(p.id);if(R){let P=new Map((p.overrides??[]).map(x=>[x.index,x]));for(let x of b){let S=Number(x.id.slice(x.id.lastIndexOf(":")+1));if(!Number.isInteger(S))continue;x.logicalRowId=R.groupId,x.logicalSeatIndex=R.adjacencyOffset+S,P.get(S)?.displayLabel||(x.displayLabel=ar(p,S,R)),!x.viewUrl&&R.viewFromSeatUrl&&h(R.viewFromSeatMeta)&&(x.viewUrl=R.viewFromSeatUrl,x.viewMeta=R.viewFromSeatMeta);let w=P.get(S)?.confidenceEvidence;x.confidenceEvidence=f(w,"exact-seat")??f(p.confidenceEvidence,"row-representative")??f(R.confidenceEvidence,"row-representative")}}}let y=Lf(e,p,l,p.type==="row"?$n(b):Aa(p)),g=y?.viewFromSeatUrl,v=(y?.zone?t?.find(R=>R.id===y.zone):void 0)?.focalPoint??n;for(let R of b){if(!R.confidenceEvidence){let P=Number(R.id.slice(R.id.lastIndexOf(":")+1)),x=(p.type==="row"||p.type==="table")&&Number.isInteger(P)?p.overrides?.find(S=>S.index===P)?.confidenceEvidence:void 0;R.confidenceEvidence=f(x,"exact-seat")??(p.type==="row"?f(p.confidenceEvidence,"row-representative"):void 0)}R.confidenceEvidence??=f(y?.confidenceEvidence,"section-representative")??(a?f(a.evidence,a.coverage):void 0),!R.viewUrl&&g&&h(y?.viewFromSeatMeta)&&(R.viewUrl=g,R.viewMeta=y?.viewFromSeatMeta),!R.viewUrl&&i&&h(i.meta)&&(R.viewUrl=i.url,R.viewMeta=i.meta),y&&(R.sectionId=y.logicalSectionId??y.id),y?.zone&&(R.zoneId=y.zone),v&&(R.focalPoint={...v})}u.push(...b)}return u}function zt(e,t={}){if(e.floors?.length){let o=[];for(let r of e.floors){let i=r.focalPoint??e.focalPoint,a=r.viewFromSeatUrl?{url:r.viewFromSeatUrl,meta:r.viewFromSeatMeta}:e.viewFromSeatUrl?{url:e.viewFromSeatUrl,meta:e.viewFromSeatMeta}:void 0,s=r.confidenceEvidence?{evidence:r.confidenceEvidence,coverage:"floor-representative"}:e.confidenceEvidence?{evidence:e.confidenceEvidence,coverage:"venue-representative"}:void 0,c=wa(r.objects,e.zones,i,e.eventConfigurationId,e.confidenceBasisSha256,a,s,t.now,t.eventConfigurationVersion??e.eventConfigurationVersion);t.resolveEyeHeights!==!1&&Pa(r.objects,r.focalPoint??e.focalPoint,r.baseHeightM??0,c);for(let u of c)u.floorId=r.id;for(let u of c)o.push(u)}return o}let n=wa(e.objects,e.zones,e.focalPoint,e.eventConfigurationId,e.confidenceBasisSha256,e.viewFromSeatUrl?{url:e.viewFromSeatUrl,meta:e.viewFromSeatMeta}:void 0,e.confidenceEvidence?{evidence:e.confidenceEvidence,coverage:"venue-representative"}:void 0,t.now,t.eventConfigurationVersion??e.eventConfigurationVersion);return t.resolveEyeHeights!==!1&&Pa(e.objects,e.focalPoint,t.floorBaseHeightM??0,n),Ff(e,n,t)}function Ff(e,t,n){return!n.deriveRestrictedView||e.derivedRestrictedView===!1||n.resolveEyeHeights===!1||xa(t,ga(t,ya(e))),t}function Pa(e,t,n,o){let r=e.filter(m=>m.type==="section"),i=n>0||r.some(m=>m.height!==void 0||m.rake!==void 0||(m.elevation??0)>0);if(!r.length||!i||!t){for(let m of o)m.eyeHeightM=n+Ye;return}let a=new Array(o.length),s=new Map;for(let m of r)s.has(m.id)||s.set(m.id,m);let c=new Map,u=new Map;for(let m=0;m<o.length;m++){let h=o[m],f=(h.sectionId?s.get(h.sectionId)??r.find(b=>b.logicalSectionId===h.sectionId&&Te({x:h.x,y:h.y},b.outline,b.holes)):void 0)??r.find(b=>Te({x:h.x,y:h.y},b.outline,b.holes))??null;if(a[m]=f,!f)continue;c.has(f.id)||c.set(f.id,dt(f,{floorBaseHeightM:n}));let p=u.get(f.id);p?p.push(m):u.set(f.id,[m])}let l=new Array(o.length).fill(void 0);for(let[m,h]of u){let d=c.get(m);if(!d)continue;let f=d.rake>0?Math.tan(d.rake*Math.PI/180):0,p=Yn(m,o,h,t);for(let b of p.rows){let y=b.blockDepth*me*f,g=d.height+y;for(let M of b.seatIndices)l[M]=g}}for(let m=0;m<o.length;m++){let h=o[m],d=a[m];if(!d){h.eyeHeightM=n+Ye;continue}let f=c.get(d.id);h.eyeHeightM=(l[m]??f.height)+Ye}}function Df(e){return{kind:"radial",rowCount:0,rows:[],nearestRow:()=>-1,depthAt:(t,n)=>Math.hypot(t-e.x,n-e.y),gradientAt:(t,n)=>{let o=t-e.x,r=n-e.y,i=Math.hypot(o,r);return i<1e-9?[0,0]:[o/i,r/i]}}}function Of(e,t){if(!e.length)return null;let n=0,o=0,r=0;for(let d of e)n+=d.x,o+=d.y,r+=Math.hypot(d.x-t.x,d.y-t.y);let i=e.length;n/=i,o/=i,r/=i;let a=e[0],s=-1;for(let d of e){let f=Math.hypot(d.x-n,d.y-o);f>s&&(s=f,a=d)}let c=a.x-n,u=a.y-o,l=Math.hypot(c,u);l>1e-9?(c/=l,u/=l):(c=1,u=0);let m=[...e].sort((d,f)=>(d.x-n)*c+(d.y-o)*u-((f.x-n)*c+(f.y-o)*u)),h=0;for(let d of m){let f=Math.hypot(d.x-n,d.y-o);f>h&&(h=f)}return{pts:m,cx:n,cy:o,radius:h,depth:r}}function Ca(e,t,n){let o=e.pts;if(o.length===1)return Math.hypot(t-o[0].x,n-o[0].y);let r=1/0;for(let i=0;i+1<o.length;i++){let a=o[i],s=o[i+1],c=s.x-a.x,u=s.y-a.y,l=c*c+u*u,m=l>1e-12?((t-a.x)*c+(n-a.y)*u)/l:0;m<0?m=0:m>1&&(m=1);let h=Math.hypot(t-(a.x+m*c),n-(a.y+m*u));h<r&&(r=h)}return r}var Qn=8;function Bf(e,t,n){let o=new Array(Qn).fill(1/0),r=new Array(Qn).fill(-1);for(let l=0;l<e.length;l++){let m=e[l],h=Math.hypot(t-m.cx,n-m.cy)-m.radius;for(let d=0;d<Qn;d++)if(h<o[d]){for(let f=Qn-1;f>d;f--)o[f]=o[f-1],r[f]=r[f-1];o[d]=h,r[d]=l;break}}let i=new Array(3).fill(1/0),a=new Array(3).fill(-1);for(let l of r){if(l<0)continue;let m=Ca(e[l],t,n);for(let h=0;h<3;h++)if(m<i[h]){for(let d=2;d>h;d--)i[d]=i[d-1],a[d]=a[d-1];i[h]=m,a[h]=l;break}}if(a[0]<0)return 0;if(i[0]<1e-6)return e[a[0]].depth;let s=i[0]*2.2,c=0,u=0;for(let l=0;l<3;l++){let m=a[l];if(m<0||i[l]>s)continue;let h=1/(i[l]*i[l]);c+=h*e[m].depth,u+=h}return u>0?c/u:e[a[0]].depth}function Nf(e){let t=(o,r)=>Bf(e,o,r),n=(o,r)=>{let i=1/0,a=-1;for(let s=0;s<e.length;s++){let c=e[s];if(Math.hypot(o-c.cx,r-c.cy)-c.radius>=i)continue;let u=Ca(c,o,r);u<i&&(i=u,a=s)}return a};return{kind:"rows",rowCount:e.length,rows:e,nearestRow:n,depthAt:t,gradientAt:(o,r)=>{let i=(t(o+.5,r)-t(o-.5,r))/1,a=(t(o,r+.5)-t(o,r-.5))/(2*.5),s=Math.hypot(i,a);return s<1e-9?[0,0]:[i/s,a/s]}}}function Ea(e,t){let n=[];for(let o of e){let r=Of(o.points,t);r&&n.push(r)}return n.length<2?Df(t):(n.sort((o,r)=>o.depth-r.depth),Nf(n))}var br=mt(require("polygon-clipping"),1);var La=mt(require("earcut"),1);var Vf=.58,_a=.01,Ge=nt*1.5*Ve,Gf=.5,Hf=.6;function zf(e,t){let n=e.length,o=[];for(let a=0;a<n;a++){let s=e[Math.max(0,a-1)],c=e[Math.min(n-1,a+1)],u=c.x-s.x,l=c.y-s.y,m=Math.hypot(u,l);if(m<1e-9){o.push([0,0]);continue}u/=m,l/=m,o.push([-l,u])}let r=0;for(let a=0;a<n;a++)r+=(e[a].x-t.x)*o[a][0]+(e[a].y-t.y)*o[a][1];return r<0?o.map(([a,s])=>[-a,-s]):o}function Uf(e,t){if(e.length<2||t<=0)return[...e];let n=[...e],o=(a,s)=>{let c=s.x-a.x,u=s.y-a.y,l=Math.hypot(c,u)||1;return{x:c/l,y:u/l}},r=o(n[1],n[0]),i=o(n[n.length-2],n[n.length-1]);return n.unshift({x:n[0].x+r.x*t,y:n[0].y+r.y*t}),n.push({x:n[n.length-1].x+i.x*t,y:n[n.length-1].y+i.y*t}),n}var Ta=Math.PI/12;function jf(e){if(e.length<3)return[...e];let t=[...e].sort((i,a)=>i.x-a.x||i.y-a.y),n=(i,a,s)=>(a.x-i.x)*(s.y-i.y)-(a.y-i.y)*(s.x-i.x),o=i=>{let a=[];for(let s of i){for(;a.length>=2&&n(a[a.length-2],a[a.length-1],s)<=0;)a.pop();a.push(s)}return a.pop(),a},r=[...o(t),...o([...t].reverse())];return r.length>=3?r:[...e]}function Fa(e,t){if(!e.length||!(t>0))return[];let n=jf(e),o=(s,c,u,l)=>{let m=u-c;for(;m<0;)m+=Math.PI*2;for(;m>Math.PI*2;)m-=Math.PI*2;let h=Math.max(1,Math.ceil(m/Ta)),d=t/Math.cos(m/h/2);for(let f=0;f<=h;f++){let p=c+m*f/h;l.push({x:s.x+Math.cos(p)*d,y:s.y+Math.sin(p)*d})}};if(n.length<3){let s=0,c=0;for(let d of n)s+=d.x,c+=d.y;s/=n.length||1,c/=n.length||1;let u=0;for(let d of n)u=Math.max(u,Math.hypot(d.x-s,d.y-c));let l=[],m=Math.max(3,Math.ceil(Math.PI*2/Ta)),h=(u+t)/Math.cos(Math.PI/m);for(let d=0;d<m;d++){let f=d/m*Math.PI*2;l.push({x:s+Math.cos(f)*h,y:c+Math.sin(f)*h})}return l}let r=n.length,i=[];for(let s=0;s<r;s++){let c=n[s],u=n[(s+1)%r];i.push(Math.atan2(-(u.x-c.x),u.y-c.y))}let a=[];for(let s=0;s<r;s++)o(n[s],i[(s+r-1)%r],i[s],a);return Va(a)}function Xf(e,t,n){if(e.length===1)return Math.hypot(t-e[0].x,n-e[0].y);let o=1/0;for(let r=0;r+1<e.length;r++){let i=e[r],a=e[r+1],s=a.x-i.x,c=a.y-i.y,u=s*s+c*c,l=u>1e-12?((t-i.x)*s+(n-i.y)*c)/u:0;l<0?l=0:l>1&&(l=1);let m=Math.hypot(t-(i.x+l*s),n-(i.y+l*c));m<o&&(o=m)}return o}function Jn(e){let t=e.map(r=>{let i=0,a=0;for(let u of r.pts)i+=u.x,a+=u.y;let s=r.pts.length||1;i/=s,a/=s;let c=0;for(let u of r.pts){let l=Math.hypot(u.x-i,u.y-a);l>c&&(c=l)}return{cx:i,cy:a,rad:c}}),n=r=>{let i=r.length;return i<=2?[...r]:[r[Math.floor(i*.25)],r[Math.floor(i*.5)],r[Math.floor(i*.75)]]},o=[];for(let r=0;r<e.length;r++){let i=n(e[r].pts),a=[],s=1/0,c=null;for(let l of i){let m=1/0;for(let h=0;h<e.length;h++){if(h===r||Math.abs(e[h].y-e[r].y)<.001)continue;let d=t[h],f=Math.hypot(l.x-d.cx,l.y-d.cy)-d.rad;if(f>=m&&f>=s)continue;let p=Xf(e[h].pts,l.x,l.y);p<m&&(m=p),e[h].depth<e[r].depth&&p<s&&(s=p,c=e[h].y)}Number.isFinite(m)&&m>0&&a.push(m)}a.sort((l,m)=>l-m);let u=a.length?a[Math.floor(a.length/2)]:1;o.push({pitch:u,belowY:c})}return o}function Da(e,t,n,o){let r=e[t],i=r.pts.length>=2?[...r.pts]:r.pts.length===1?(()=>{let l=r.pts[0],m=l.x-o.x,h=l.y-o.y,d=Math.hypot(m,h)||1;m/=d,h/=d;let f=Math.max(n[t].pitch,.001)*.5;return[{x:l.x+h*f,y:l.y-m*f},{x:l.x-h*f,y:l.y+m*f}]})():[];if(i.length<2)return null;let a=0,s=0;for(let l=1;l<i.length;l++){let m=Math.hypot(i[l].x-i[l-1].x,i[l].y-i[l-1].y);m>1e-6&&(a+=m,s++)}let c=s>0?a/s:0,u=Uf(i,Math.max(c*Hf,Ge));return{pts:u,nrm:zf(u,o),front:Math.max(n[t].pitch*Vf,Ge),back:Math.max(n[t].pitch*Gf,Ge)}}var Ut=1.5,Oa=.3;function hr(e,t){if(e.length<3)return e;let n=e[0],o=e[e.length-1],r=o.x-n.x,i=o.y-n.y,a=Math.hypot(r,i),s=-1,c=-1;for(let m=1;m<e.length-1;m++){let h=e[m],d=a>1e-12?Math.abs((h.x-n.x)*i-(h.y-n.y)*r)/a:Math.hypot(h.x-n.x,h.y-n.y);d>s&&(s=d,c=m)}if(s<=t||c<0)return[n,o];let u=hr(e.slice(0,c+1),t),l=hr(e.slice(c),t);return[...u.slice(0,-1),...l]}function Ba(e,t){if(e.length<4)return e;let n=hr([...e,e[0]],t);return n.pop(),n.length>=3?n:e}function Wf(e){let t=e.map((o,r)=>{let i=e[(r+1)%e.length];return{a:o,b:i,i:r,minX:Math.min(o.x,i.x),maxX:Math.max(o.x,i.x),minY:Math.min(o.y,i.y),maxY:Math.max(o.y,i.y)}}).sort((o,r)=>o.minX-r.minX),n=(o,r,i)=>(r.x-o.x)*(i.y-o.y)-(r.y-o.y)*(i.x-o.x);for(let o=0;o<t.length;o++){let r=t[o];for(let i=o+1;i<t.length&&t[i].minX<=r.maxX;i++){let a=t[i];if(!(Math.abs(r.i-a.i)===1||Math.abs(r.i-a.i)===e.length-1||r.maxY<a.minY||a.maxY<r.minY)&&n(r.a,r.b,a.a)*n(r.a,r.b,a.b)<=0&&n(a.a,a.b,r.a)*n(a.a,a.b,r.b)<=0)return!0}}return!1}function Na(e,t,n){if(e.length<2)return[];let o=n??Jn(e),r=new Map;for(let a=0;a<e.length;a++){let s=r.get(e[a].blockId);s?s.push(a):r.set(e[a].blockId,[a])}let i=[];for(let[,a]of r){let s=[];for(let g of a){let M=e[g].patch;M&&M.length>=3?i.push({outline:[...M],holes:[],topY:e[g].y}):s.push(g)}if(!s.length)continue;s.sort((g,M)=>e[g].depth-e[M].depth);let u=s.map(g=>Da(e,g,o,t)).filter(g=>g!==null);if(!u.length)continue;let l=(g,M)=>({x:g.pts[M].x-g.nrm[M][0]*(g.front+Ut),y:g.pts[M].y-g.nrm[M][1]*(g.front+Ut)}),m=(g,M)=>({x:g.pts[M].x+g.nrm[M][0]*(g.back+Ut),y:g.pts[M].y+g.nrm[M][1]*(g.back+Ut)}),h=u[0],d=u[u.length-1],f=[];for(let g=0;g<h.pts.length;g++)f.push(l(h,g));for(let g of u)f.push(m(g,g.pts.length-1));for(let g=d.pts.length-1;g>=0;g--)f.push(m(d,g));for(let g=u.length-1;g>=0;g--)f.push(l(u[g],0));let p=Va(f),b=1/0;for(let g of s)e[g].y<b&&(b=e[g].y);if(!Number.isFinite(b))continue;if(p.length>=3&&Math.abs(Fe(p))>1e-6&&u.every(g=>{let M=g.pts[Math.floor(g.pts.length/2)];return De(p,M.x,M.y)})&&!Wf(p)){i.push({outline:Ba(p,Oa),holes:[],topY:b});continue}for(let g of Yf(u))i.push({outline:g,holes:[],topY:b})}return i}function Yf(e){let t=[];for(let n of e){let o=[],r=[],i=n.front+Ut,a=n.back+Ut;for(let c=0;c<n.pts.length;c++){let u=n.pts[c],l=n.nrm[c];o.push([u.x-l[0]*i,u.y-l[1]*i]),r.push([u.x+l[0]*a,u.y+l[1]*a])}let s=[...o,...r.reverse()];s.length<3||(s.push(s[0]),t.push([s]))}if(!t.length)return[];try{let n=br.default.union(t[0],...t.slice(1)),o=[];for(let r of n){if(!r.length||r[0].length<4)continue;let i=r[0].map(([c,u])=>({x:c,y:u})),a=i[0],s=i[i.length-1];i.length>1&&Math.abs(a.x-s.x)<1e-9&&Math.abs(a.y-s.y)<1e-9&&i.pop(),i.length>=3&&o.push(Ba(i,Oa))}return o}catch{return[]}}function Va(e){let t=[];for(let n of e){let o=t[t.length-1];o&&Math.hypot(n.x-o.x,n.y-o.y)<1e-9||t.push(n)}for(;t.length>2&&Math.hypot(t[0].x-t[t.length-1].x,t[0].y-t[t.length-1].y)<1e-9;)t.pop();return t}var pr=class{constructor(t){this.minX=1/0;this.minY=1/0;this.maxX=-1/0;this.maxY=-1/0;this.rings=t;for(let n of t)for(let o of n)o.x<this.minX&&(this.minX=o.x),o.y<this.minY&&(this.minY=o.y),o.x>this.maxX&&(this.maxX=o.x),o.y>this.maxY&&(this.maxY=o.y)}containsAll(t){for(let n of t)if(n.x<this.minX||n.x>this.maxX||n.y<this.minY||n.y>this.maxY)return!1;for(let n of this.rings){let o=!0;for(let r of t)if(!De(n,r.x,r.y)){o=!1;break}if(o)return!0}return!1}};function ka(e,t,n,o,r,i){if(o.length<3)return;if(n.containsAll(o)){let u=[0,1,0],l=o[0];for(let m=1;m+1<o.length;m++){let h=o[m],d=o[m+1];e.tri([l.x*C,r,l.y*C],[h.x*C,r,h.y*C],[d.x*C,r,d.y*C],u,i)}return}let a=o.map(u=>[u.x,u.y]);a.push(a[0]);let s;try{s=br.default.intersection([a],t)}catch{return}let c=[0,1,0];for(let u of s){if(!u.length||u[0].length<4)continue;let l=u[0],m=[],h=[];for(let f=0;f<l.length-1;f++)m.push(l[f][0],l[f][1]),h.push([l[f][0],l[f][1]]);if(h.length<3)continue;let d=(0,La.default)(m,void 0,2);for(let f=0;f<d.length;f+=3){let p=h[d[f]],b=h[d[f+1]],y=h[d[f+2]];e.tri([p[0]*C,r,p[1]*C],[b[0]*C,r,b[1]*C],[y[0]*C,r,y[1]*C],c,i)}}}function Ga(e,t,n,o,r,i,a){if(t.length<2)return;let s=a??Jn(t),c=[0,1,0],u=i&&i.length>=3?[[...i.map(d=>[d.x,d.y]),[i[0].x,i[0].y]]]:null,l=i&&i.length>=3?new pr([[...i]]):null,m=d=>{e.setMaterial(2),d(),e.setMaterial(0)},h=d=>{e.setMaterial(3),d(),e.setMaterial(0)};for(let d=0;d<t.length;d++){let f=t[d];if(f.patch&&f.patch.length>=3){let R=[...f.patch],P=s[d].belowY??o;if(h(()=>{if(u&&l)ka(e,u,l,R,f.y,r.tread);else{let x=R[0];for(let S=1;S+1<R.length;S++){let w=R[S],I=R[S+1];e.tri([x.x*C,f.y,x.y*C],[w.x*C,f.y,w.y*C],[I.x*C,f.y,I.y*C],c,r.tread)}}}),f.y>P+_a){let x=0,S=0;for(let w of R)x+=w.x,S+=w.y;x/=R.length,S/=R.length,m(()=>{for(let w=0;w<R.length;w++){let I=R[w],L=R[(w+1)%R.length],O=L.x-I.x,D=L.y-I.y,A=Math.hypot(O,D);if(A<1e-6)continue;let E=D/A,T=-O/A;(I.x-x)*E+(I.y-S)*T<0&&(E=-E,T=-T);let V=[E,0,T],_=[I.x*C,f.y,I.y*C],k=[L.x*C,f.y,L.y*C],H=[I.x*C,P,I.y*C],B=[L.x*C,P,L.y*C];e.tri(_,k,B,V,r.riser),e.tri(_,B,H,V,r.riser)}})}continue}let p=Da(t,d,s,n);if(!p)continue;let{pts:b,nrm:y,front:g,back:M}=p,v=s[d].belowY??o;for(let R=0;R+1<b.length;R++){let P=b[R],x=b[R+1],S=y[R],w=y[R+1];if(Math.hypot(x.x-P.x,x.y-P.y)<1e-6||S[0]===0&&S[1]===0||w[0]===0&&w[1]===0)continue;let I=[(P.x-S[0]*g)*C,f.y,(P.y-S[1]*g)*C],L=[(x.x-w[0]*g)*C,f.y,(x.y-w[1]*g)*C],O=[(P.x+S[0]*M)*C,f.y,(P.y+S[1]*M)*C],D=[(x.x+w[0]*M)*C,f.y,(x.y+w[1]*M)*C];if(h(()=>{u&&l?ka(e,u,l,[{x:P.x-S[0]*g,y:P.y-S[1]*g},{x:x.x-w[0]*g,y:x.y-w[1]*g},{x:x.x+w[0]*M,y:x.y+w[1]*M},{x:P.x+S[0]*M,y:P.y+S[1]*M}],f.y,r.tread):(e.tri(I,L,D,c,r.tread),e.tri(I,D,O,c,r.tread))}),f.y>v+_a){let A=[I[0],v,I[2]],E=[L[0],v,L[2]],T=[-S[0],0,-S[1]];m(()=>{e.tri(I,L,E,T,r.riser),e.tri(I,E,A,T,r.riser)})}}}}function Ha(e){let t=1/0,n=1/0,o=-1/0,r=-1/0,i=!1;for(let a of e)!Number.isFinite(a.x)||!Number.isFinite(a.y)||(i=!0,a.x<t&&(t=a.x),a.y<n&&(n=a.y),a.x>o&&(o=a.x),a.y>r&&(r=a.y));return i?{minX:t,minY:n,maxX:o,maxY:r}:null}function jt(e,t){return e.minX<=t.maxX&&t.minX<=e.maxX&&e.minY<=t.maxY&&t.minY<=e.maxY}var yr=mt(require("polygon-clipping"),1);function Kf(e,t){let n=e.eventConfigurationIds;return!n?.length||!!t&&n.includes(t)}function za(e,t){return e.filter(n=>n.type!=="shape"||Kf(n,t))}function Ua(e,t){let n=e.focalPoint??{x:0,y:0};return e.floors?.length?e.floors.map((o,r)=>({objects:za(o.objects,t),focal:{x:(o.focalPoint??n).x,y:(o.focalPoint??n).y},baseHeightM:o.baseHeightM??0,index:r})):[{objects:za(e.objects,t),focal:n,baseHeightM:0,index:0}]}var qf={minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};function rt(e){return Ha(e)??qf}function ja(e,t){let n=je(e.outline,Ge),o=rt(n),r=t.filter(a=>a!==e&&a.outline&&a.outline.length>=3&&jt(o,rt(a.outline)));if(!r.length)return[n];let i=a=>{let s=a.map(c=>[c.x,c.y]);return s.push(s[0]),s};try{let a=yr.default.difference([i(n)],...r.map(c=>[i(c.outline)])),s=[];for(let c of a){if(!c.length)continue;let u=c[0].map(([l,m])=>({x:l,y:m}));if(u.length>1){let l=u[0],m=u[u.length-1];Math.abs(l.x-m.x)<1e-9&&Math.abs(l.y-m.y)<1e-9&&u.pop()}u.length>=3&&s.push(u)}return s.length?s:[n]}catch{return[n]}}function Xa(e,t){if(!t.length)return e;let n=i=>{let a=i.map(s=>[s.x,s.y]);return a.push(a[0]),a},o=t.map(i=>[n(i)]),r=[];for(let i of e){let a;try{a=yr.default.intersection([n(i.outline)],o.flat())}catch{r.push(i);continue}for(let s of a){if(!s.length)continue;let c=s[0].map(([u,l])=>({x:u,y:l}));if(c.length>1){let u=c[0],l=c[c.length-1];Math.abs(u.x-l.x)<1e-9&&Math.abs(u.y-l.y)<1e-9&&c.pop()}c.length>=3&&r.push({outline:c,holes:[],topY:i.topY})}}return r.length?r:e}var pt=.06,$f=.05,Ya=.05,Wa=.15,gr=25;function Ka(e,t,n){let o=new Map,r=new Array(t.length).fill(null),i=new Float64Array(t.length),a=new Array(t.length).fill(void 0),s=new Array(t.length).fill(void 0),c=new Map,u=[],l=new Set;for(let h=0;h<e.length;h+=1){let d=e[h];for(let f of d.objects){if(f.type==="table"&&l.add(f.id),f.type!=="section"||!f.outline||f.outline.length<3)continue;let p=je(f.outline,Ge);c.set(f.id,{section:f,unit:d,frontU:1/0,hasSeats:!1,rows:new Map,seatIndices:[]}),u.push({id:f.id,floorIndex:h,box:rt(p),section:f,unit:d,outline:p})}}let m=new Map;for(let h of u){let d=m.get(h.floorIndex);d?d.push(h):m.set(h.floorIndex,[h])}for(let h=0;h<t.length;h++){let d=t[h],f=n?m.get(n[h])??[]:u,p=d.sectionId?f.find(y=>y.id===d.sectionId)??f.find(y=>y.section.logicalSectionId===d.sectionId&&Te({x:d.x,y:d.y},y.outline,y.section.holes)):void 0,b=p?[p]:f;for(let y of b){if(n&&y.floorIndex!==n[h]||!p&&(d.x<y.box.minX||d.x>y.box.maxX||d.y<y.box.minY||d.y>y.box.maxY||!Te({x:d.x,y:d.y},y.outline,y.section.holes)))continue;r[h]=y.id;let g=c.get(y.id);g.hasSeats=!0;let M=d.focalPoint??y.unit.focal,v=Math.hypot(d.x-M.x,d.y-M.y);v<g.frontU&&(g.frontU=v),g.seatIndices.push(h);let R=d.rowId||`__seat-${h}`,P=g.rows.get(R);P?P.push({x:d.x,y:d.y}):g.rows.set(R,[{x:d.x,y:d.y}]);break}}for(let[h,d]of c){let f=dt(d.section,{floorBaseHeightM:d.unit.baseHeightM}),p=d.unit.baseHeightM,b=f.rake>0?Math.tan(f.rake*Math.PI/180):0,y=f.rake<=.01&&f.height<=p+.001,g=d.section.surfaceKind,M=g==="flat"?!0:g==="rakedRows"&&f.rake>.01?!1:y,v=d.hasSeats?Yn(h,t,d.seatIndices,d.unit.focal):{sectionId:h,rows:[],blockCount:0},P=v.rows.length<2?Ea([...d.rows.values()].map(_=>({points:_})),d.unit.focal):null,x=1/0;if(P){if(d.hasSeats)for(let _ of d.rows.values())for(let k of _){let H=P.depthAt(k.x,k.y);H<x&&(x=H)}if(!d.hasSeats||!Number.isFinite(x)){x=1/0;for(let _ of d.section.outline){let k=P.depthAt(_.x,_.y);k<x&&(x=k)}}}let S=p+$f,w=Math.max(S,f.height),I=_=>{let k=Math.max(0,_-x)*me,H=Math.min(k*b,gr);return Math.max(S,f.height+H)},L=_=>{let k=Math.max(0,_)*me,H=Math.min(k*b,gr);return Math.max(S,f.height+H)},O=M?[]:v.rows.map(_=>({pts:_.pts,y:L(_.blockDepth),depth:_.blockDepth,blockId:_.blockId,...l.has(_.id)?{patch:Fa(_.pts,Ge)}:{}})),D=O.length?O[0].y:w,A=O.map(_=>{let k=_.patch&&_.patch.length>=3?_.patch:_.pts,H=0,B=0;for(let j of k)H+=j.x,B+=j.y;let F=k.length||1;H/=F,B/=F;let G=0;for(let j of k){let N=Math.hypot(j.x-H,j.y-B);N>G&&(G=N)}return{cx:H,cy:B,rad:G}}),E=M?()=>w:O.length>=2?(_,k)=>{let H=1/0,B=D;for(let F=0;F<O.length;F++){let G=A[F];if(Math.hypot(_-G.cx,k-G.cy)-G.rad>=H)continue;let j=O[F].patch,N=j&&j.length>=3?De(j,_,k)?0:Gt(j,_,k):Gt(O[F].pts,_,k);N<H&&(H=N,B=O[F].y)}return B}:(_,k)=>P?I(P.depthAt(_,k)):w,T=[0,1,0],V=O.length>=2||M?()=>T:(_,k)=>{if(!P)return T;let H=P.depthAt(_,k);if(H<=x)return T;let B=(H-x)*me;if(B*b>=gr||f.height+B*b<=S)return T;let[F,G]=P.gradientAt(_,k);if(F===0&&G===0)return T;let j=1/Math.hypot(b,1);return[-F*b*j,j,-G*b*j]};if(!M)for(let _ of v.rows){let k=L(_.blockDepth);for(let H of _.seatIndices)a[H]=k}for(let _ of v.rows){let k=[];for(let j=1;j<_.pts.length;j++){let N=Math.hypot(_.pts[j].x-_.pts[j-1].x,_.pts[j].y-_.pts[j-1].y);N>1e-6&&k.push(N)}k.sort((j,N)=>j-N);let H=k.length?k[Math.floor(k.length/2)]:1/0,B=1/0,F=_.pts[Math.floor(_.pts.length/2)];if(F)for(let j of v.rows){if(j===_||j.blockId!==_.blockId)continue;let N=Gt(j.pts,F.x,F.y);N>1e-6&&N<B&&(B=N)}let G=Math.min(H,Math.max(B,H*.5));if(Number.isFinite(G)&&G>0)for(let j of _.seatIndices)s[j]=G}o.set(h,{sectionId:h,deckAt:E,normalAt:V,flat:M,bottomY:p,rowLevels:O,landingY:D})}for(let h=0;h<t.length;h++){let d=r[h],f=t[h];if(d){let y=a[h];i[h]=(y??o.get(d).deckAt(f.x,f.y))+Wa;continue}let p=f.eyeHeightM,b=Number.isFinite(p)?Math.max(0,p-Ye):0;i[h]=f.kind==="booth"?b+pt+Wa:b}return{bySection:o,seatOwner:r,seatDeckY:h=>i[h],seatPitchU:h=>s[h]}}var oe={top:1,wallBottom:.58,bottomCap:.4};function bt(e,t){if(!e)return t;let n=ae(We(e,.4),.62);return he(t,n,.22)}function qa(e,t){return e?he(t,ae(We(e,.08),.9),.82):t}function $a(e,t){let n=new Map;for(let i of e.categories??[])n.set(i.key,i.color);let o=new Map;for(let i of t){if(!i.sectionId)continue;let a=o.get(i.sectionId);a||(a=new Map,o.set(i.sectionId,a)),a.set(i.categoryKey,(a.get(i.categoryKey)??0)+1)}let r=new Map;for(let[i,a]of o){let s=0,c=0,u=0,l=0;for(let[m,h]of a){let d=de(n.get(m));d&&(s+=d[0]*h,c+=d[1]*h,u+=d[2]*h,l+=h)}l>0&&r.set(i,[s/l,c/l,u/l])}return r}function Za(e,t){return de(e.color)??t.get(e.logicalSectionId??e.id)??null}var Qa=mt(require("polygon-clipping"),1);function Zf(e,t){return e===void 0||t===void 0?!0:Math.abs(e-t)<.001}var eo=class{constructor(){this.rings=[];this.boxes=[];this.levels=[]}subtract(t,n){let o=t.map(c=>[c.x,c.y]);if(o.length<3)return[];o.push(o[0]);let r=rt(t),i=this.rings.filter((c,u)=>jt(r,this.boxes[u])&&Zf(n,this.levels[u])),a=[[o]];if(i.length)try{a=Qa.default.difference([o],...i).map(u=>u.map(l=>l.map(([m,h])=>[m,h])))}catch{a=[[o]]}this.rings.push([o]),this.boxes.push(r),this.levels.push(n);let s=[];for(let c of a){if(!c.length)continue;let u=c[0].map(([l,m])=>({x:l,y:m}));if(u.length>1){let l=u[0],m=u[u.length-1];Math.abs(l.x-m.x)<1e-9&&Math.abs(l.y-m.y)<1e-9&&u.pop()}u.length>=3&&s.push(u)}return s}};function to(e,t){if(!t)return e;let n=1/0,o=-1/0,r=1/0,i=-1/0;for(let m of e)n=Math.min(n,m.x),o=Math.max(o,m.x),r=Math.min(r,m.y),i=Math.max(i,m.y);let a=(n+o)/2,s=(r+i)/2,c=t*Math.PI/180,u=Math.cos(c),l=Math.sin(c);return e.map(m=>{let h=m.x-a,d=m.y-s;return{x:a+h*u-d*l,y:s+h*l+d*u}})}function be(e){let t=null;if(e.kind==="polygon"&&e.points&&e.points.length>=3&&(t=e.points),e.kind==="rect"&&e.width&&e.height&&(t=pn(e.x??0,e.y??0,e.width,e.height)),e.kind==="ellipse"&&e.width&&e.height){let n=(e.x??0)+e.width/2,o=(e.y??0)+e.height/2;t=Xn(n,o,e.width/2,e.height/2)}return t?to(t,e.rotation):null}function Xe(e){let t=e.role??"",n={stage:{kind:"stage",heightM:1},entrance:{kind:"portal",heightM:2.7},exit:{kind:"portal",heightM:2.7},screen:{kind:"solid",heightM:6},wall:{kind:"solid",heightM:2.8},rail:{kind:"solid",heightM:1.1},suite:{kind:"suite",heightM:3},obstruction:{kind:"solid",heightM:4.5},sound:{kind:"solid",heightM:1.45},restroom:{kind:"solid",heightM:2.4},bar:{kind:"solid",heightM:1.1},concession:{kind:"solid",heightM:1.1},coat:{kind:"solid",heightM:1.1},goal:{kind:"portal",heightM:1.8}},o=t==="stage"&&gn(e.stageKind)?{kind:"stage",heightM:e.stageKind==="ring-boxing"?Kn:.06}:n[t]??{kind:"plate",heightM:.25};return{...o,heightM:e.heightM??o.heightM}}var Qf=.08,Jf=30,ed=.015;function td(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o],a=t[r];i.y>e.y!=a.y>e.y&&e.x<(a.x-i.x)*(e.y-i.y)/(a.y-i.y)+i.x&&(n=!n)}return n}function Ja(e,t){let n=be(e)??(e.points?.length?to(e.points,e.rotation):null),o=Xe(e),i=!e.role&&o.kind==="plate"&&e.heightM===void 0&&!!n&&Math.abs(Fe(n))*me**2>=Jf?ed:o.heightM;if(!n)return{topOffsetM:i,supportOffsetM:0};if(o.kind!=="plate"&&o.kind!=="stage")return{topOffsetM:i,supportOffsetM:0};let a=1/0,s=1/0,c=-1/0,u=-1/0;for(let d of n)a=Math.min(a,d.x),s=Math.min(s,d.y),c=Math.max(c,d.x),u=Math.max(u,d.y);let l=i,m=0,h=1e-6*Math.max(1,c-a,u-s);for(let d of t)c>d.minX&&a<d.maxX&&u>d.minY&&s<d.maxY&&l<=d.topOffsetM+1e-6&&(l=d.topOffsetM+Qf),a>=d.minX-h&&c<=d.maxX+h&&s>=d.minY-h&&u<=d.maxY+h&&(!d.poly||n.every(b=>td(b,d.poly)||nd(b,d.poly,h)))&&(m=Math.max(m,d.topOffsetM));return e.fill&&e.fill!=="none"&&e.fill!=="transparent"&&t.push({minX:a,minY:s,maxX:c,maxY:u,topOffsetM:l,poly:n}),{topOffsetM:l,supportOffsetM:Math.min(m,l)}}function nd(e,t,n){for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[r],a=t[o],s=a.x-i.x,c=a.y-i.y,u=s*s+c*c,l=u?Math.max(0,Math.min(1,((e.x-i.x)*s+(e.y-i.y)*c)/u)):0;if(Math.hypot(e.x-(i.x+l*s),e.y-(i.y+l*c))<=n)return!0}return!1}function yt(e,t,n){return{x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}}function Oe(e){if(e.length!==4)return e;let t=Math.hypot(e[1].x-e[0].x,e[1].y-e[0].y),n=Math.hypot(e[2].x-e[1].x,e[2].y-e[1].y);return t>=n?e:[e[1],e[2],e[3],e[0]]}function Ae(e,t,n){return[yt(e[0],e[1],t),yt(e[0],e[1],n),yt(e[3],e[2],n),yt(e[3],e[2],t)]}function Mn(e,t,n){return[yt(e[0],e[3],t),yt(e[1],e[2],t),yt(e[1],e[2],n),yt(e[0],e[3],n)]}function fe(e,t,n,o,r,i){se(e,t,void 0,()=>n,o,r,i,oe)}function Xt(e,t,n){if(e.length!==4||n<=t)return null;let o=Oe(e),r=Math.hypot(o[1].x-o[0].x,o[1].y-o[0].y)*C,i=Math.hypot(o[3].x-o[0].x,o[3].y-o[0].y)*C;if(r<1e-6||i<1e-6)return null;let a=Math.min(.22/r,.16),s=Math.min(.28,(n-t)*.13),c=Math.min(.065/i,.2);return{quad:o,side:a,face:c,opening:Ae(o,a,1-a),openingTop:n-s}}function xr(e,t,n){if(e.length!==4||n-t<=.2)return null;let o=Oe(e),r=Math.hypot(o[1].x-o[0].x,o[1].y-o[0].y)*C;if(r<=1e-6)return null;let i=Math.min(.14,(n-t)*.08,r*.08),a=i/r,s=Ae(o,a,1-a);return{quad:o,side:a,trim:i,inner:s,panel:Mn(s,.15,.85),bottom:t+i,top:n-i}}function es(e,t,n,o){let r=xr(e,t,n);if(!r)return;let{panel:i}=r,a=(g,M)=>({x:(g.x+M.x)/2,y:(g.y+M.y)/2}),s=a(i[0],i[1]),c=a(i[3],i[2]),u=Math.hypot(s.x-o.x,s.y-o.y)<=Math.hypot(c.x-o.x,c.y-o.y),[l,m]=u?[i[0],i[1]]:[i[3],i[2]],h=u?{x:s.x-c.x,y:s.y-c.y}:{x:c.x-s.x,y:c.y-s.y},d=Math.hypot(h.x,h.y);if(d<1e-6)return;-(m.y-l.y)*h.x+(m.x-l.x)*h.y<0&&([l,m]=[m,l]);let f=Math.min(.006,d*C*.05),p=h.x/d*f,b=h.y/d*f,y=(g,M)=>[g.x*C+p,M,g.y*C+b];return[y(l,r.bottom),y(m,r.bottom),y(l,r.top),y(m,r.top)]}var ts=mt(require("polygon-clipping"),1);function it(e,t,n,o,r,i,a,s={}){let c=rt(t),u=s.ao??oe,l=r.flatMap(p=>{if(p.role!=="entrance"&&p.role!=="exit")return[];let b=be(p);if(!b||b.length!==4||!jt(c,rt(b)))return[];let y=s.portalBase??n,g=Xt(b,y,y+Xe(p).heightM);if(!g)return[];let M=Math.min(o,g.openingTop);return M<=n?[]:[{poly:g.opening,height:M}]});if(!l.length)return!1;let m=p=>p.map(b=>[b.x,b.y]),h=[m(t),...(s.holes??[]).map(m)],d=[n,...new Set(l.map(p=>p.height)),o].sort((p,b)=>p-b),f=[];try{for(let p=1;p<d.length;p++){let b=d[p-1],y=d[p];if(y-b<1e-6)continue;let g=l.filter(v=>v.height>b+1e-6).map(v=>[m(v.poly)]),M=g.length?ts.default.difference(h,...g):[h];f.push({low:b,high:y,polys:M})}}catch{return!1}for(let p of f)for(let b of p.polys){let[y,...g]=b.map(v=>v.map(([R,P])=>({x:R,y:P}))),M=v=>u.wallBottom+(u.top-u.wallBottom)*(v-n)/(o-n);se(e,y,g,()=>p.high,p.low,i,a,{...u,top:M(p.high),wallBottom:M(p.low)})}return!0}function ns(e,t,n,o,r,i,a){let s=o-n;if(s<=0)return;let c=s<1.5?[[n,o,1]]:[[n,n+Math.min(.9,s*.18),.82],[n+Math.min(.9,s*.18),o-.1,1],[o-.1,o,1.1]],u=l=>oe.wallBottom+(oe.top-oe.wallBottom)*(l-n)/s;for(let[l,m,h]of c){let d={...oe,top:u(m),wallBottom:u(l)},f=ae(i,h),p=ae(a,h);it(e,t,l,m,r,f,p,{portalBase:n,ao:d})||se(e,t,void 0,()=>m,l,f,p,d)}}function Sn(e,t,n){let o=de(t.stroke?.color),r=t.stroke?.width??0;if(!o||!Number.isFinite(r)||r<=0)return;let i=t.kind==="line"||t.kind==="polyline",a=i?to(t.points??[],t.rotation):be(t);if(!a||a.length<2)return;let s=i?a.length-1:a.length,c=r*.5;for(let u=0;u<s;u++){let l=a[u],m=a[(u+1)%a.length],h=Math.hypot(m.x-l.x,m.y-l.y);if(h<1e-6)continue;let d=-(m.y-l.y)/h*c,f=(m.x-l.x)/h*c,p=[(l.x+d)*C,n,(l.y+f)*C],b=[(m.x+d)*C,n,(m.y+f)*C],y=[(m.x-d)*C,n,(m.y-f)*C],g=[(l.x-d)*C,n,(l.y-f)*C];e.tri(p,b,y,[0,1,0],o),e.tri(p,y,g,[0,1,0],o)}}function os(e){return e==="bar"||e==="concession"||e==="coat"||e==="restroom"}var Wt=(e,t,n)=>({x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n});function no(e,t,n,o){let[r,i,a,s]=t?e:[e[3],e[2],e[1],e[0]];return[Wt(r,s,n),Wt(i,a,n),Wt(i,a,o),Wt(r,s,o)]}function rs(e,t,n,o,r,i,a,s,c=!1){if(n.length!==4||r-o<.4)return!1;let u=S=>c?Math.min(S,r):S,l=Oe(n),m=Math.hypot(l[3].x-l[0].x,l[3].y-l[0].y)*C;if(m<.4)return!1;let h=Wt(l[0],l[1],.5),d=Wt(l[3],l[2],.5),f=Math.hypot(h.x-s.x,h.y-s.y)<=Math.hypot(d.x-s.x,d.y-s.y),p=he(a,[.92,.9,.86],.35),b=ae(i,.72),y=r-o;if(t==="restroom"){let S=Math.min(.18,y*.08);return fe(e,l,r-S,o,a,i),fe(e,l,r,r-S,p,p),!0}let g=o+Math.min(1.1,y),M=t==="coat"?1:Math.min(.5,.75/m),v=no(l,f,0,M);if(fe(e,v,g-.05,o,b,i),fe(e,v,g,g-.05,p,p),t==="coat"||m<1.2)return!0;if(t==="bar"){let S=no(l,f,Math.max(M+.2,1-.45/m),1),w=u(o+Math.max(Math.min(2.2,y*2),g-o+.6));return fe(e,S,w,o,a,b),!0}let R=no(l,f,Math.max(M+.25,.55),1),P=u(o+Math.max(2.6,g-o+1.4));if(P-.14<=g)return!0;fe(e,R,P-.14,o,a,i),fe(e,l,P,P-.14,p,b);let x=Math.min(.08,.1/Math.max(.1,Math.hypot(l[1].x-l[0].x,l[1].y-l[0].y)*C));for(let[S,w]of[[0,x],[1-x,1]])fe(e,no(Ae(l,S,w),f,0,Math.min(.08,.1/m)),P-.14,g,b,b);return!0}var od=[.12,.38,.16],rd=[.72,.62,.45],id=[.88,.93,.96],is=[.95,.95,.94],ad=[.66,.29,.22],vr={length:20.12,width:3.05},sd=.14,cd=9.76,at=[.93,.94,.95],oo=[.1,.11,.13],ld=[.45,.85,1.25],ud=1.45,as=.012,ss=.004,md=1.07,fd=.15;function Kt(e,t,n,o,r,i){e.setMaterial(i),se(e,t,n?[n.slice().reverse()]:void 0,()=>o,o-.004,r,r,oe)}var cs=(e,t)=>Et(e,t/C);function ls(e,t,n){let o=t.x-e.x,r=t.y-e.y,i=Math.hypot(o,r);if(i<1e-9)return null;let a=-r/i*n,s=o/i*n;return[{x:e.x+a,y:e.y+s},{x:t.x+a,y:t.y+s},{x:t.x-a,y:t.y-s},{x:e.x-a,y:e.y-s}]}function dd(e,t,n,o){let r=t.map(i=>[i.x*C,n,i.y*C]);e.tri(r[0],r[1],r[2],[0,1,0],o),e.tri(r[0],r[2],r[3],[0,1,0],o)}function ro(e,t,n,o,r,i){let a=n/C,s=[{x:t.x-a,y:t.y-a},{x:t.x+a,y:t.y-a},{x:t.x+a,y:t.y+a},{x:t.x-a,y:t.y+a}];se(e,s,void 0,()=>r,o,i,ae(i,.85),oe)}function Yt(e,t,n,o,r,i,a){let s=ls(t,n,o/C);s&&se(e,s,void 0,()=>i,r,a,ae(a,.85),oe)}function io(e){let t=Oe(e),n={x:(t[0].x+t[2].x)/2,y:(t[0].y+t[2].y)/2},o=Math.hypot(t[1].x-t[0].x,t[1].y-t[0].y)||1,r=Math.hypot(t[3].x-t[0].x,t[3].y-t[0].y)||1,i={x:(t[1].x-t[0].x)/o,y:(t[1].y-t[0].y)/o},a={x:(t[3].x-t[0].x)/r,y:(t[3].y-t[0].y)/r};return{at:(c,u)=>({x:n.x+(i.x*c+a.x*u)/C,y:n.y+(i.y*c+a.y*u)/C}),lengthM:o*C,widthM:r*C}}function us(e,t,n){let o=fa(t);if(!o.length)return;let r=1/0,i=-1/0,a=1/0,s=-1/0;for(let M of t.points??[])r=Math.min(r,M.x),i=Math.max(i,M.x),a=Math.min(a,M.y),s=Math.max(s,M.y);let c=(t.rotation??0)*Math.PI/180,u=Math.cos(c),l=Math.sin(c),m=(r+i)/2,h=(a+s)/2,d=M=>c?{x:m+(M.x-m)*u-(M.y-h)*l,y:h+(M.x-m)*l+(M.y-h)*u}:M,f=Math.min(i-r,s-a)*C,p=Math.max(.04,Math.min(.3,f*.004))/C,b=0;e.setMaterial(0);for(let M of o){if(!M.fill)continue;let v=M.points.map(d);Kt(e,v,null,n+as+b*ss,de(M.fill)??at,0),b++}let y=o.filter(M=>!(M.fill&&M.ink===M.fill)),g=[...new Set(y.map(M=>M.ink??qn))];for(let M of g){let v=n+as+b++*ss,R=de(M)??at;for(let P of y){if((P.ink??qn)!==M)continue;let x=P.points.map(d),S=P.closed?x.length:x.length-1;for(let w=0;w<S;w++){let I=ls(x[w],x[(w+1)%x.length],p);I&&dd(e,I,v,R)}}}}function ms(e,t,n,o,r){if(t.length<3)return!1;let i=o+.006,a=r??od;if(n==="oval-cricket"){let s=t.reduce((R,P)=>R+P.x,0)/t.length,c=t.reduce((R,P)=>R+P.y,0)/t.length,u=R=>t.map(P=>({x:s+(P.x-s)*R,y:c+(P.y-c)*R})),l=8;for(let R=0;R<l;R++){let P=u(1-R/l),x=R===l-1?null:u(1-(R+1)/l);Kt(e,P,x,i,ae(a,R%2?1.04:.96),4)}let m=t[0];for(let R of t)Math.hypot(R.x-s,R.y-c)>Math.hypot(m.x-s,m.y-c)&&(m=R);let h=Math.hypot(m.x-s,m.y-c)||1,d=(m.x-s)/h,f=(m.y-c)/h,p=-f,b=d,y=Math.min(1,2*h*C*sd/vr.length),g=vr.length*y/2/C,M=vr.width*y/2/C,v=[[-g,-M],[g,-M],[g,M],[-g,M]].map(([R,P])=>({x:s+d*R+p*P,y:c+f*R+b*P}));return Kt(e,v,null,i+.004,rd,0),e.setMaterial(0),!0}if(n==="rink-hockey"){let s=cs(t,fd);return Kt(e,s,null,i,id,0),e.setMaterial(0),se(e,t,[s.slice().reverse()],()=>o+md,o,is,ae(is,.9),oe),!0}if(n==="ring-boxing"&&t.length===4){let{at:s}=io(t),c=[s(-3.05,-3.05),s(3.05,-3.05),s(3.05,3.05),s(-3.05,3.05)],u=[[.77,.19,.19],at,[.17,.42,.69],at];e.setMaterial(0),c.forEach((l,m)=>ro(e,l,.07,o,o+ud,u[m]));for(let l of ld)for(let m=0;m<4;m++)Yt(e,c[m],c[(m+1)%4],.025,o+l-.025,o+l+.025,at);return!0}if(n==="court-tennis"&&t.length===4){let{at:s}=io(t);e.setMaterial(0),Yt(e,s(0,-6.4),s(0,6.4),.015,o,o+.95,oo),Yt(e,s(0,-6.4),s(0,6.4),.03,o+.95,o+1,at);for(let c of[-1,1])ro(e,s(0,c*6.4),.05,o,o+1.07,oo);return!0}if(n==="court-basketball"&&t.length===4){let{at:s,lengthM:c}=io(t),u=Math.min(14,c/2-.5);e.setMaterial(0);for(let l of[-1,1]){let m=s(l*(u+1.2),0),h=s(l*(u-1.2),0);ro(e,m,.12,o,o+3.4,oo),Yt(e,m,h,.06,o+3.25,o+3.4,oo),Yt(e,s(l*(u-1.2),-.9),s(l*(u-1.2),.9),.03,o+2.9,o+3.95,at)}return!0}if(n==="pitch-rugby"&&t.length===4){let{at:s,lengthM:c}=io(t),u=c*(50/120);e.setMaterial(0);for(let l of[-1,1]){for(let m of[-2.8,2.8])ro(e,s(l*u,m),.07,o,o+12,at);Yt(e,s(l*u,-2.8),s(l*u,2.8),.06,o+2.94,o+3.06,at)}return!0}if(n==="track-athletics"){let s=cs(t,cd);return s.length<3?!1:(Kt(e,t,s,i,ad,0),Kt(e,s,null,i,a,4),e.setMaterial(0),!0)}return!1}var hd=.012,co=2.4,pd=1,bd=.75,yd=.15;function qe(e){if(e.points&&e.points.length>=3)return e.points;let{center:t,width:n,height:o,rotation:r}=e;if(!n||!o)return null;let i=(r??0)*Math.PI/180,a=Math.cos(i),s=Math.sin(i),c=n/2,u=o/2;return[[-c,-u],[c,-u],[c,u],[-c,u]].map(([l,m])=>({x:t.x+l*a-m*s,y:t.y+l*s+m*a}))}function ys(e,t,n,o,r,i,a=!1){let s=qe(t);if(s){if(a){let c=bt(o,r.boothTop),u=Ke([...s]);se(e,je(u,gd/C),[u.slice().reverse()],()=>n+.03,n,c,ae(c,.8),oe);return}if(!(!t.points&&i&&vd(e,s,n,o,i))){if(!t.points&&i&&s.length===4){xd(e,s,n,o,i);return}se(e,s,void 0,()=>n+co,n,bt(o,r.boothTop),r.boothWall,oe)}}}var Mr=1.1,fs=[.9,.9,.88],gd=.1,ao=[.87,.87,.85],ds=.08;function gs(e,t){let n=c=>({x:(e[c].x+e[(c+1)%4].x)/2,y:(e[c].y+e[(c+1)%4].y)/2}),o=0,r=1/0;for(let c=0;c<4;c++){let u=n(c),l=Math.hypot(u.x-t.x,u.y-t.y);l<r&&(r=l,o=c)}let i=[0,1,2,3].map(c=>e[(o+c)%4]),a=(c,u,l)=>({x:c.x+(u.x-c.x)*l,y:c.y+(u.y-c.y)*l});return{q:i,part:(c,u,l,m)=>{let h=a(i[0],i[1],c),d=a(i[0],i[1],u),f=a(i[3],i[2],c),p=a(i[3],i[2],u);return[a(h,f,l),a(d,p,l),a(d,p,m),a(h,f,m)]},depthM:Math.hypot(i[3].x-i[0].x,i[3].y-i[0].y)*C,widthM:Math.hypot(i[1].x-i[0].x,i[1].y-i[0].y)*C}}function xd(e,t,n,o,r){let{q:i,part:a}=gs(t,r),s=o??[.35,.42,.55],c=he(s,[.78,.78,.77],.62),u=he(s,[.95,.95,.94],.45);fe(e,i,n+pt,n,c,ae(c,.8)),fe(e,a(.05,.95,.72,.98),n+Mr-.05,n+pt,u,ae(u,.8)),fe(e,a(.03,.97,.7,1),n+Mr,n+Mr-.05,fs,ae(fs,.9))}function vd(e,t,n,o,r){if(t.length!==4)return!1;let{q:i,part:a,depthM:s,widthM:c}=gs(t,r);if(s<1||c<1)return!1;let u=o??[.35,.42,.55],l=he(u,[.78,.78,.77],.62),m=n+co,h=ds/c,d=ds/s;fe(e,i,n+pt,n,l,ae(l,.8)),fe(e,a(0,1,1-d,1),m,n+pt,ao,ae(ao,.9));for(let[b,y]of[[0,h],[1-h,1]])fe(e,a(b,y,0,1-d),m,n+pt,ao,ae(ao,.9));fe(e,a(h,1-h,0,Math.min(.5,.06/s)),m,m-.3,u,ae(u,.85));let f=Math.min(.4,.6/c),p=Math.min(.12,.3/s);return fe(e,a(.5-f,.5+f,.72-p,.72+p),n+pd,n+pt,he(u,[.95,.95,.94],.7),ae(u,.75)),!0}function lo(e){if(e.shape==="round"){let l=e.radius;return l?Xn(e.center.x,e.center.y,l,l,24):null}let{width:t,height:n,rotation:o,center:r}=e;if(!t||!n)return null;let i=(o??0)*Math.PI/180,a=Math.cos(i),s=Math.sin(i),c=t/2,u=n/2;return[[-c,-u],[c,-u],[c,u],[-c,u]].map(([l,m])=>({x:r.x+l*a-m*s,y:r.y+l*s+m*a}))}function xs(e,t,n,o,r,i=!0){let a=lo(t);if(!a)return;let s=a.reduce((h,d)=>h+d.x,0)/a.length,c=a.reduce((h,d)=>h+d.y,0)/a.length,u=h=>a.map(d=>({x:s+(d.x-s)*h,y:c+(d.y-c)*h})),l=i&&o?bt(o,r.tableTop):Md,m=n+bd;se(e,a,void 0,()=>m,n+Sd,l,ae(l,.86),oe),se(e,u(.12),void 0,()=>m+.12,m,hs,ae(hs,.8),oe)}var Md=[.93,.92,.89],hs=[.78,.66,.42],Sd=.25;function vs(e,t,n,o,r,i,a,s,c=[]){let u=be(t);if(!t.role&&(!t.fill||t.fill==="none"||t.fill==="transparent")||!u){Sn(e,t,n+o+hd);return}let m=s?s.kind==="stage":t.role==="stage",h=s?s.kind==="screen":t.role==="screen",d=s?{kind:m?"stage":"solid",heightM:s.topY-s.baseY}:Xe(t),f=s?.baseY??n,p=s?.topY??n+o;if(m&&a){let S=1/0,w=-1/0,I=1/0,L=-1/0;for(let O of u)O.x<S&&(S=O.x),O.x>w&&(w=O.x),O.y<I&&(I=O.y),O.y>L&&(L=O.y);a.push({cx:(S+w)/2*C,cz:(I+L)/2*C,y:p,halfX:Math.max((w-S)/2*C,.5),halfZ:Math.max((L-I)/2*C,.5)})}let b=de(t.fill),y=t.role==="wall"||t.role==="entrance"||t.role==="exit",g=y?b?ae(We(b,.12),.95):r.tierTop:m&&b?he(r.stageTop,ae(We(b,.18),.9),.9):!t.role&&b?b:bt(b,m?r.stageTop:r.decorTop),M=h?b:null,v=y?b?ae(We(b,.12),.85):r.tierWall:m?b?he(r.stageWall,ae(b,.58),.82):r.stageWall:h?M?he(ae(M,1.42),[.24,.46,.82],.08):[.24,.46,.82]:bt(de(t.fill),r.decorWall);if(t.role==="wall"&&!s){ns(e,u,f,p,c,g,v),Sn(e,t,p+.012);return}if(h&&u.length===4&&p-f>.2){let S=xr(u,f,p);if(!S)return;let{quad:w,side:I,trim:L,inner:O,panel:D}=S,A=[.12,.15,.18];for(let[E,T]of[[0,I],[1-I,1]])fe(e,Ae(w,E,T),p,f,A,A);fe(e,O,f+L,f,A,A),fe(e,O,p,p-L,A,A),fe(e,D,p-L,f+L,v,v),Sn(e,t,p+.012);return}let R=b?ae(We(b,.15),.82):v,P=b?ae(We(b,.1),1.02):g;if(os(t.role)&&!s&&rs(e,t.role,u,f,p,R,P,i,t.heightM!==void 0))return;if((t.role==="sound"||s?.kind==="sound_desk")&&u.length===4&&p-f>.3){let S=Oe(u),w=Math.hypot(S[1].x-S[0].x,S[1].y-S[0].y)*C,I=Math.min(.12,.09/Math.max(w,.001)),L=[.18,.21,.24],O=p-Math.min(.12,(p-f)*.15);for(let[D,A]of[[0,I],[1-I,1]])fe(e,Ae(S,D,A),O,f,L,L);fe(e,S,p,O,g,L);return}if(t.role==="rail"&&u.length===4&&p>f){let S=Oe(u),w=Math.hypot(S[1].x-S[0].x,S[1].y-S[0].y)*C,I=Math.max(1,Math.min(128,Math.ceil(w/1.4))),L=Math.min(.08,.055/Math.max(.055,w)),O=[.58,.64,.66];for(let D=0;D<=I;D++){let A=D/I,E=Math.min(1-L,Math.max(0,A-L/2));fe(e,Ae(S,E,E+L),p,f,O,ae(O,.8))}for(let D of[.52,1]){let A=f+(p-f)*D;fe(e,S,A,Math.max(f,A-.055),O,ae(O,.8))}return}if(t.role==="goal"&&u.length===4){let S=Oe(u),w=Math.hypot(S[1].x-S[0].x,S[1].y-S[0].y)*C,I=Math.min(.12,.1/Math.max(.1,w)),L=[.9,.94,.94];for(let[O,D]of[[0,I],[1-I,1]])fe(e,Ae(S,O,D),Math.max(f,p-.1),f,L,L);fe(e,S,p,Math.max(f,p-.1),L,L);return}if(d.kind==="portal"&&u.length===4){let S=Xt(u,f,p);if(!S)return;let{quad:w,side:I,face:L,openingTop:O}=S;for(let[D,A,E]of[[0,L,1],[L,1-L,.67],[1-L,1,1]]){let T=Mn(w,D,A),V=ae(g,E),_=ae(v,E);for(let[k,H]of[[0,I],[1-I,1]])fe(e,Ae(T,k,H),O,f,V,_);fe(e,T,p,O,V,_)}return}if(d.kind==="suite"&&u.length===4){let S=u.map((L,O)=>{let D=u[(O+1)%4],A=(L.x+D.x)/2,E=(L.y+D.y)/2;return Math.hypot(A-i.x,E-i.y)}),w=S.indexOf(Math.min(...S)),I=[0,1,2,3].map(L=>u[(w+L)%4]);fe(e,Ae(I,0,.08),p,f,g,v),fe(e,Ae(I,.92,1),p,f,g,v),fe(e,Mn(I,.88,1),p,f,g,v),fe(e,I,p,Math.max(f,p-.18),g,v);return}if(m&&!t.stageKind?.startsWith("pitch-")&&p-f>.12){let S=p-Math.min(.06,(p-f)*.15);fe(e,u,S,f,g,v),fe(e,u,p,S,g,he(g,v,.2))}else fe(e,u,p,f,g,v);if((t.stageKind==="pitch-football"||t.stageKind==="pitch-rugby")&&u.length===4){e.setMaterial(4);let S=Oe(u);for(let w=0;w<12;w++){let I=Ae(S,w/12,(w+1)/12),L=ae(b??[.12,.38,.16],w%2?1.035:.965),O=I.map(D=>[D.x*C,p+.006,D.y*C]);e.tri(O[0],O[1],O[2],[0,1,0],L),e.tri(O[0],O[2],O[3],[0,1,0],L)}}t.stageKind&&t.stageKind!=="pitch-football"&&ms(e,u,t.stageKind,p,b),m&&Tt(t.stageKind)&&us(e,t,p),e.setMaterial(h?1:0),Sn(e,t,p+.012)}function uo(e){let{x:t,y:n,width:o,height:r}=e;if(!o||!r)return null;let i=t+o/2,a=n+r/2,s=(e.rotation??0)*Math.PI/180,c=Math.cos(s),u=Math.sin(s),l=o/2,m=r/2;return[[-l,-m],[l,-m],[l,m],[-l,m]].map(([h,d])=>({x:i+h*c-d*u,y:a+h*u+d*c}))}function wd(e){if(!e||!e.startsWith("data:image/svg+xml"))return null;let t=e.slice(e.indexOf(",")+1);if(/;base64/i.test(e.slice(0,e.indexOf(","))))try{t=atob(t)}catch{return null}else try{t=decodeURIComponent(t)}catch{}let n=t.match(/<(?:rect|path)\b[^>]*\bfill="([^"]+)"/i);if(!n)return null;let o=n[1].trim();if(o==="none"||o==="transparent")return null;let r=o.match(/^url\(#([^)]+)\)$/);if(!r)return de(o);let i=t.match(new RegExp(`<(?:linear|radial)Gradient\\b[^>]*\\bid="${r[1]}"[^>]*>([\\s\\S]*?)</(?:linear|radial)Gradient>`,"i"));if(!i)return null;let a=[];for(let s of i[1].matchAll(/stop-color="([^"]+)"/gi)){let c=de(s[1].trim());c&&a.push(c)}return a.length?a.reduce((s,c,u)=>he(s,c,1/(u+1)),a[0]):null}function Ms(e,t,n,o){if(t.layer==="foreground")return;let r=uo(t);if(!r)return;let i=n+yd,a=bt(wd(t.href),o.decorTop),s=Math.max(0,Math.min(1,t.opacity??1));s<1&&(a=he(o.ground,a,s)),se(e,r,void 0,()=>i,n,a,he(a,o.decorWall,.5),oe)}function Ss(e,t,n,o,r){if(!t.points||t.points.length<3)return;let i=bt(o,r.gaTop);se(e,t.points,t.holes,()=>n+ps,n,i,r.gaWall,oe),Rd(e,t.points,n+ps)}var ps=.15,so=[.72,.74,.76],Sr=1.1,bs=.12,wr=.05,Pd=.06,Id=2.4;function Rd(e,t,n){let o=Ke([...t]),r=Et(o,bs/C),i=Et(o,(bs+wr)/C);if(r.length<3||i.length<3)return;for(let s of[n+Sr,n+Sr*.5])se(e,r,[i.slice().reverse()],()=>s,s-wr,so,ae(so,.85),oe);let a=Pd/2/C;for(let s=0;s<r.length;s++){let c=r[s],u=r[(s+1)%r.length],l=Math.hypot(u.x-c.x,u.y-c.y)*C,m=Math.max(1,Math.round(l/Id));for(let h=0;h<m;h++){let d=h/m,f=c.x+(u.x-c.x)*d,p=c.y+(u.y-c.y)*d,b=[{x:f-a,y:p-a},{x:f+a,y:p-a},{x:f+a,y:p+a},{x:f-a,y:p+a}];se(e,b,void 0,()=>n+Sr-wr,n,so,ae(so,.8),oe)}}}var Pr=.6,ws=3,Ad=.25;function Cd(e,t){if(De(t,e.x,e.y))return 0;let n=1/0;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[r],a=t[o],s=a.x-i.x,c=a.y-i.y,u=s*s+c*c||1,l=Math.max(0,Math.min(1,((e.x-i.x)*s+(e.y-i.y)*c)/u));n=Math.min(n,Math.hypot(e.x-(i.x+l*s),e.y-(i.y+l*c)))}return n}function Ps(e,t){let n=e.map(a=>({booth:a,ring:qe(a)})).filter(a=>!!a.ring&&a.ring.length===4&&!a.booth.points),o=n.map(({ring:a})=>({minX:Math.min(...a.map(s=>s.x)),maxX:Math.max(...a.map(s=>s.x)),minY:Math.min(...a.map(s=>s.y)),maxY:Math.max(...a.map(s=>s.y))})),r=(ws+Pr)/C,i=new Map;return n.forEach(({booth:a,ring:s},c)=>{let u={x:s.reduce((d,f)=>d+f.x,0)/4,y:s.reduce((d,f)=>d+f.y,0)/4},l=[0,1,2,3].map(d=>{let f=s[d],p=s[(d+1)%4],b={x:(f.x+p.x)/2,y:(f.y+p.y)/2},y=b.x-u.x,g=b.y-u.y,M=Math.hypot(y,g)||1,v={x:b.x+y/M*Pr/C,y:b.y+g/M*Pr/C},R=ws/C;return o.forEach((P,x)=>{x===c||v.x<P.minX-r||v.x>P.maxX+r||v.y<P.minY-r||v.y>P.maxY+r||(R=Math.min(R,Cd(v,n[x].ring)))}),{open:R*C,toward:{x:b.x+y/M*10/C,y:b.y+g/M*10/C},focal:Math.hypot(b.x-t.x,b.y-t.y)}}),m=Math.max(...l.map(d=>d.open)),h=l.filter(d=>d.open>=m-Ad).sort((d,f)=>d.focal-f.focal)[0];i.set(a.id,h.toward)}),i}var Is=mt(require("polygon-clipping"),1);var Ed=.45,_d=1500,Td=200;function Rs(e,t){if(e.role!=="stage"||Tt(e.stageKind))return e;let n=be(e);if(!n||n.length<3||Math.abs(Fe(n))*C*C>_d)return e;let o=t.filter(a=>De(n,a.x,a.y));if(!o.length||o.length>Td)return e;let r=Ed/C,i=o.map(a=>[[[a.x-r,a.y-r],[a.x+r,a.y-r],[a.x+r,a.y+r],[a.x-r,a.y+r],[a.x-r,a.y-r]]]);try{let a=Is.default.difference([[...n.map(u=>[u.x,u.y]),[n[0].x,n[0].y]]],...i),s=null,c=0;for(let u of a){let l=u[0].slice(0,-1).map(([h,d])=>({x:h,y:d})),m=Math.abs(Fe(l));m>c&&(c=m,s=l)}return!s||s.length<3?e:{...e,kind:"polygon",points:s,rotation:0}}catch{return e}}var kd=Math.PI/180,pe=96,Ld=6,Fd=60,Dd=150,As=.2,Od=.35;function Bd(e,t){let n=Math.atan2(t.x-e.x,t.y-e.y)/kd;return n<0?n+360:n}function mo(e){if(!e.length)return NaN;let t=[...e].sort((n,o)=>n-o);return t[Math.floor(t.length/2)]}function fo(e,t,n=2){let o=e.length,r=new Float64Array(o);for(let i=0;i<o;i++){let a=0,s=0;for(let c=-n;c<=n;c++){let u=i+c;if(t)u=(u%o+o)%o;else if(u<0||u>=o)continue;a+=e[u],s++}r[i]=a/s}return r}function Cs(e,t){let n=e.filter(h=>h.rows.length>=1);if(n.length<1)return null;let o=[],r=0,i=0,a=0;for(let h of n)for(let d of h.rows){for(let f of d.pts)r+=f.x,i+=f.y,a++;if(d.pts.length>=4){let f=cr(d.pts);f&&Number.isFinite(f.cx)&&Number.isFinite(f.cy)&&o.push({x:f.cx,y:f.cy})}}if(!a)return null;let s={x:r/a,y:i/a},c=s;if(o.length>=8){let h=mo(o.map(y=>y.x)),d=mo(o.map(y=>y.y)),f=0;for(let y of n)for(let g of y.rows)for(let M of g.pts){let v=Math.hypot(M.x-s.x,M.y-s.y);v>f&&(f=v)}let p=0,b=f*.2;for(let y of n)for(let g of y.rows)for(let M of g.pts)Math.hypot(M.x-h,M.y-d)<b&&p++;Math.hypot(h-s.x,d-s.y)<=f&&p/a<.01&&(c={x:h,y:d})}let u=[];for(let h of n){let d={sectionId:h.sectionId,rMin:1/0,rMax:-1/0,samples:[]};for(let f of h.rows)for(let p of f.pts){let b=Math.hypot(p.x-c.x,p.y-c.y),y=Math.min(pe-1,Math.floor(Bd(c,p)/(360/pe)));d.samples.push({r:b,bin:y,levelM:f.levelM}),b<d.rMin&&(d.rMin=b),b>d.rMax&&(d.rMax=b)}d.samples.length&&u.push(d)}if(!u.length)return null;u.sort((h,d)=>h.rMin+h.rMax-(d.rMin+d.rMax));let l=[];for(let h of u){let d=!1;for(let f of l){let p=Math.min(h.rMax,f.rMax)-Math.max(h.rMin,f.rMin),b=Math.min(h.rMax-h.rMin,f.rMax-f.rMin);if(b>1e-9&&p>=Od*b){f.members.push(h),f.rMin=Math.min(f.rMin,h.rMin),f.rMax=Math.max(f.rMax,h.rMax),d=!0;break}}d||l.push({members:[h],rMin:h.rMin,rMax:h.rMax})}let m=[];for(let h of l){let d=new Array(pe).fill(null);for(let D of h.members)for(let A of D.samples){let E=d[A.bin];E||(E={samples:[]},d[A.bin]=E),E.samples.push({r:A.r,levelM:A.levelM})}let f=d.map(D=>!!D);if(!f.filter(Boolean).length)continue;let b=[],y=[];for(let D of d){if(!D)continue;let A=1/0,E=-1/0;for(let T of D.samples)T.r<A&&(A=T.r),T.r>E&&(E=T.r);b.push(A),y.push(E)}let g=mo(b),M=mo(y);if(!(g>=As*M)||!(M>0))continue;let v=[...b].sort((D,A)=>D-A);if(!(v[Math.floor(v.length*.1)]>=As*M))continue;let P=d.map(D=>{if(!D)return null;let A=[...D.samples].sort((F,G)=>F.r-G.r),E=A[0].r,T=A[A.length-1].r,V=A[0].levelM,_=-1/0;for(let F of A)F.levelM>_&&(_=F.levelM);let k=[];for(let F of A){let G={r:F.r,l:F.levelM};for(;k.length&&Math.abs(k[k.length-1].r-G.r)<1e-9;){if(k[k.length-1].l<=G.l){G.skip=!0;break}k.pop()}if(!G.skip){for(;k.length>=2;){let j=k[k.length-2],N=k[k.length-1];if((N.r-j.r)*(G.l-j.l)-(N.l-j.l)*(G.r-j.r)<=0)k.pop();else break}k.push(G)}}let H=k.map(F=>F.r),B=k.map(F=>F.l);return{inner:E,outer:T,front:V,top:_,profile:{rs:H,ls:B}}}),x=f.slice();for(let D=0;D<pe;D++){if(x[D])continue;let A=-1,E=-1,T=0;for(let z=1;z<=pe;z++){let K=(D-z+pe*2)%pe;if(x[K]){A=K;break}}for(let z=1;z<=pe;z++){let K=(D+z)%pe;if(x[K]){E=K,T=z;break}}if(A<0||E<0)continue;let V=0;for(let z=1;z<=pe;z++){let K=(D-z+pe*2)%pe;if(f[K]){V=z;break}}if(V-1+T>Ld)continue;let k=P[A],H=P[E],B=V/(V+T),F=k.inner+(H.inner-k.inner)*B,G=k.outer+(H.outer-k.outer)*B,j=k.front+(H.front-k.front)*B,N=k.top+(H.top-k.top)*B;P[D]={inner:F,outer:G,front:j,top:N,profile:{rs:[F,G],ls:[j,N]}}}for(let D=0;D<pe;D++)P[D]&&(x[D]=!0);let S=360/pe,w=[],I=x.filter(Boolean).length,L=[];if(I===pe)L.push({start:0,len:pe});else{let D=0;for(;x[D];)D=(D+1)%pe;let A=-1;for(let E=0;E<=pe;E++){let T=(D+E)%pe,V=E<pe&&x[T];if(V&&A<0)A=T;else if(!V&&A>=0){let _=(T-A+pe)%pe||pe;L.push({start:A,len:_}),A=-1}}}for(let D of L){if(D.len*S<Fd&&D.len<pe)continue;let A=D.len===pe,E=new Float64Array(D.len),T=new Float64Array(D.len),V=new Float64Array(D.len),_=new Float64Array(D.len),k=[];for(let z=0;z<D.len;z++){let K=P[(D.start+z)%pe];E[z]=K.inner,T[z]=K.outer,V[z]=K.front,_[z]=K.top,k.push(K.profile??{rs:[K.inner,K.outer],ls:[K.front,K.top]})}let H=fo(E,A),B=fo(T,A),F=fo(V,A),G=fo(_,A);for(let z=0;z<D.len;z++)H[z]>E[z]&&(H[z]=E[z]),B[z]<T[z]&&(B[z]=T[z]),H[z]>B[z]-1e-6&&(H[z]=Math.max(0,B[z]-1e-6)),G[z]<F[z]&&(G[z]=F[z]);let j={startBin:D.start,binCount:D.len,closed:A,innerR:H,outerR:B,frontLevelM:F,topLevelM:G,profiles:k},N=(z,K,J)=>{let Y=k[z],W=Y.rs,Q=Y.ls;if(K<=W[0]){Q[0]>J&&(Q[0]=J);return}if(K>=W[W.length-1]){Q[Q.length-1]>J&&(Q[Q.length-1]=J);return}for(let te=0;te+1<W.length;te++)if(K<=W[te+1]){Q[te]>J&&(Q[te]=J),Q[te+1]>J&&(Q[te+1]=J);return}};for(let z=0;z<D.len;z++){let K=d[(D.start+z)%pe];if(K)for(let J of K.samples){N(z,J.r,J.levelM);let Y=A?(z-1+D.len)%D.len:z-1,W=A?(z+1)%D.len:z+1;Y>=0&&N(Y,J.r,J.levelM),W<D.len&&N(W,J.r,J.levelM)}}w.push(j)}w.reduce((D,A)=>D+A.binCount*S,0)<Dd||m.push({arcs:w,sectionIds:h.members.map(D=>D.sectionId),innerRMedian:g,outerRMedian:M})}if(!m.length)return null;if(m.sort((h,d)=>h.innerRMedian-d.innerRMedian),t){let h=m[m.length-1].outerRMedian;if(Math.hypot(t.x-c.x,t.y-c.y)>.9*h)return null}return{centre:c,binCount:pe,binStepDeg:360/pe,rings:m}}function Es(e,t,n,o){let r=e.binStepDeg,i=n/r-.5-t.startBin;i=(i%e.binCount+e.binCount)%e.binCount,i>t.binCount-1&&(t.closed?i=i-t.binCount<t.binCount-i?0:t.binCount-1:i=i-(t.binCount-1)<e.binCount-i?t.binCount-1:0);let a=Math.floor(i),s=t.closed?(a+1)%t.binCount:Math.min(t.binCount-1,a+1),c=i-a,u=l=>{let m=t.profiles[l],h=m.rs,d=m.ls;if(o<=h[0])return d[0];if(o>=h[h.length-1])return d[d.length-1];for(let f=0;f+1<h.length;f++)if(o<=h[f+1]){let p=h[f+1]-h[f],b=p>1e-9?(o-h[f])/p:0;return d[f]+(d[f+1]-d[f])*b}return d[d.length-1]};return u(a)*(1-c)+u(s)*c}function Ir(e,t,n,o,r,i,a,s,c,u=[],l=r){if(t.length!==n.length||t.length<2||i-r<1.5)return;let m=(p,b,y)=>{it(e,p,b,y,u,a,s,{portalBase:l,ao:c})||se(e,p,void 0,()=>y,b,a,s,c)},h=(p,b,y)=>({x:p.x+(b.x-p.x)*y,y:p.y+(b.y-p.y)*y}),d=o?t.length:t.length-1,f=0;for(let p=0;p<d;p++){let b=(p+1)%t.length,y=Math.hypot(n[b].x-n[p].x,n[b].y-n[p].y)*me;if(y<1e-5)continue;let g=(P,x)=>[h(t[p],t[b],P),h(t[p],t[b],x),h(n[p],n[b],x),h(n[p],n[b],P)];m(g(0,1),r,r+.95),m(g(0,1),i-.22,i);let M=Math.ceil((f-.32)/6)*6,v=!1,R=!1;for(let P=M;P<f+y;P+=6){let x=Math.max(0,(P-f)/y),S=Math.min(1,(P+.32-f)/y);S<=x||(m(g(x,S),r+.95,i-.22),v||=x<1e-6,R||=S>1-1e-6)}if(!o&&(p===0&&!v||p===d-1&&!R)){let P=Math.min(1,.32/y);m(g(p===0?0:1-P,p===0?P:1),r+.95,i-.22)}f+=y}}var wn=.65;function _s(e,t){let n=1/0;for(let o of t)for(let r=0;r<o.length;r++){let i=o[r],a=o[(r+1)%o.length],s=a.x-i.x,c=a.y-i.y,u=Math.max(0,Math.min(1,((e.x-i.x)*s+(e.y-i.y)*c)/(s*s+c*c||1)));n=Math.min(n,Math.hypot(e.x-i.x-u*s,e.y-i.y-u*c))}return n}var Ts=.01;function ks(e,t,n,o,r,i,a,s=[],c=!0){if(o-r<=1e-5)return;let u=o-r>=3,l=u?o-wn:r;e.setMaterial(5);let m=u?[]:s.filter(v=>{if(v.role!=="entrance"&&v.role!=="exit")return!1;let R=be(v);if(!R)return!1;let P=Xt(R,r,r+Xe(v).heightM);return P!==null&&P.openingTop<=o-.12});if((!m.length||!it(e,t,l,o,m,i,a,{holes:n,portalBase:r}))&&se(e,t,n,()=>o,l,i,a,oe,void 0,()=>[0,1,0]),!u){e.setMaterial(0);return}let h=6/C,d=.22/C,f=s.flatMap(v=>{if(v.role!=="entrance"&&v.role!=="exit")return[];let R=be(v);return R?.length?[{minX:Math.min(...R.map(P=>P.x)),maxX:Math.max(...R.map(P=>P.x)),minY:Math.min(...R.map(P=>P.y)),maxY:Math.max(...R.map(P=>P.y))}]:[]}),p=Math.min(...t.map(v=>v.x)),b=Math.max(...t.map(v=>v.x)),y=Math.min(...t.map(v=>v.y)),g=Math.max(...t.map(v=>v.y));for(let v=p+h/2;v<b;v+=h)for(let R=y+h/2;R<g;R+=h){if(f.some(x=>v+d>=x.minX&&v-d<=x.maxX&&R+d>=x.minY&&R-d<=x.maxY))continue;let P=[{x:v-d,y:R-d},{x:v+d,y:R-d},{x:v+d,y:R+d},{x:v-d,y:R+d}];!Te({x:v,y:R},t,n)||_s({x:v,y:R},[t,...n??[]])<d*Math.SQRT2+(c?Rr/C:0)||se(e,P,void 0,()=>l,r,i,a,oe)}let M=Et(t,Rr/C);if(c&&M.length>=3){let v=s.filter(x=>{if(x.role!=="entrance"&&x.role!=="exit")return!1;let S=be(x);return!!S&&S.some(w=>!Te(w,t,void 0)||_s(w,[t])<=Rr/C)}),R=[M.slice().reverse()],P=r-Ts;(!v.length||!it(e,t,P,l,v,i,a,{holes:R,portalBase:r+Ts}))&&se(e,t,R,()=>l,P,i,a,oe)}e.setMaterial(0)}var Rr=.25;var Nd=.02,Vd=.25,Gd=1.2,Hd=.6,zd=.45,Ud=2.3,jd=Math.PI/180,Ls=.005;function $e(e,t,n){let o=n*jd;return{x:e.x+t*Math.sin(o),y:e.y+t*Math.cos(o)}}function Xd(e,t){let n=t.rings[t.rings.length-1];if(!n)return!1;let o=n.outerRMedian*.85;for(let r of e){if(r.role!=="wall")continue;let i=r.points&&r.points.length>=2?r.points:r.x!==void 0&&r.y!==void 0&&r.width!==void 0&&r.height!==void 0?[{x:r.x,y:r.y},{x:r.x+r.width,y:r.y},{x:r.x+r.width,y:r.y+r.height},{x:r.x,y:r.y+r.height}]:[];if(i.length<2)continue;let a=0;for(let s of i)Math.hypot(s.x-t.centre.x,s.y-t.centre.y)>=o&&a++;if(a>=i.length/2)return!0}return!1}var Wd=24,Yd=.01;function Kd(e,t,n,o,r,i,a,s,c){let u=n.binCount,l=Wd,m=me,h=i+.02,d=i-Yd,f=[];for(let A=0;A<u;A++){let E=(n.startBin+A+.5)*t.binStepDeg,T=new Float64Array(l+1);for(let V=0;V<=l;V++){let _=o[A]+(r[A]-o[A])*V/l;T[V]=Math.max(h,Es(t,n,E,_)-Vd)}f.push(T)}if(c){let A=0;for(let E=0;E+1<u;E++)for(let T=0;T<l;T++){let V=$e(t.centre,o[E]+(r[E]-o[E])*T/l,(n.startBin+E+.5)*t.binStepDeg),_=$e(t.centre,o[E+1]+(r[E+1]-o[E+1])*(T+1)/l,(n.startBin+E+1.5)*t.binStepDeg);A=Math.max(A,Math.hypot(_.x-V.x,_.y-V.y))}for(let E=0;E<u;E++){let T=(n.startBin+E+.5)*t.binStepDeg;for(let V=0;V<=l;V++){let _=$e(t.centre,o[E]+(r[E]-o[E])*V/l,T),k=c(_.x,_.y,A*1.01);k!==null&&(f[E][V]=Math.min(f[E][V],Math.max(d+Ls,k-Ls)))}}}let p=[a.bandTop[0]*s.top,a.bandTop[1]*s.top,a.bandTop[2]*s.top],b=[a.bandTop[0]*s.bottomCap,a.bandTop[1]*s.bottomCap,a.bandTop[2]*s.bottomCap],y=[a.bandWall[0]*s.top,a.bandWall[1]*s.top,a.bandWall[2]*s.top],g=[a.bandWall[0]*s.wallBottom,a.bandWall[1]*s.wallBottom,a.bandWall[2]*s.wallBottom],M=(A,E)=>{let T=(n.startBin+A+.5)*t.binStepDeg,V=o[A]+(r[A]-o[A])*E/l,_=$e(t.centre,V,T);return[_.x*m,f[A][E],_.y*m]};{let A=Math.tan(12*Math.PI/180);for(let E=0;E<6;E++){let T=!1;for(let _=0;_<u;_++)for(let k=l-1;k>=0;k--)f[_][k]>f[_][k+1]&&(f[_][k]=f[_][k+1],T=!0);let V=n.closed?u:u-1;for(let _=0;_<V;_++){let k=(_+1)%u;for(let H=0;H<=l;H++){let B=f[k][H]-f[_][H];if(Math.abs(B)>1)continue;let F=o[_]+(r[_]-o[_])*H/l,G=o[k]+(r[k]-o[k])*H/l,j=$e(t.centre,F,(n.startBin+_+.5)*t.binStepDeg),N=$e(t.centre,G,(n.startBin+k+.5)*t.binStepDeg),z=A*Math.hypot(N.x-j.x,N.y-j.y)*m;B>z?(f[k][H]=f[_][H]+z,T=!0):-B>z&&(f[_][H]=f[k][H]+z,T=!0)}}if(!T)break}}let v=1,R=(A,E)=>{for(let T=0;T<=l;T+=4)if(Math.abs(f[A][T]-f[E][T])>v)return!0;return Math.abs(f[A][l]-f[E][l])>v},P=Math.tan(38*Math.PI/180),x=A=>(r[A]-o[A])/l*m,S=(A,E)=>f[A][E+1]-f[A][E]>P*Math.max(1e-6,x(A)),w=(A,E)=>{let T=n.closed?(A-1+u)%u:Math.max(0,A-1),V=n.closed?(A+1)%u:Math.min(u-1,A+1);Math.abs(f[T][E]-f[A][E])>v&&(T=A),Math.abs(f[V][E]-f[A][E])>v&&(V=A);let _=Math.max(0,E-1),k=Math.min(l,E+1);_<E&&S(A,_)&&(_=E),k>E&&S(A,E)&&(k=E);let H=M(T,E),B=M(V,E),F=M(A,_),G=M(A,k),j=B[0]-H[0],N=B[1]-H[1],z=B[2]-H[2],K=G[0]-F[0],J=G[1]-F[1],Y=G[2]-F[2],W=N*Y-z*J,Q=z*K-j*Y,te=j*J-N*K,$=Math.hypot(W,Q,te);return $>1e-12?(W/=$,Q/=$,te/=$,Q<0&&(W=-W,Q=-Q,te=-te),[W,Q,te]):[0,1,0]},I=(A,E,T=!1)=>{let V=T&&Math.min(A[1],E[1])-i>=3,_=[A[0],V?A[1]-wn:d,A[2]],k=[E[0],V?E[1]-wn:d,E[2]],H=E[0]-A[0],B=E[2]-A[2],F=Math.hypot(H,B);if(!(F>1e-12))return;let G=[B/F,0,-H/F];e.tri(A,E,k,G,y,y,g),e.tri(A,k,_,G,y,g,g)},L=.05*Ve,O=A=>r[A]-o[A]<L,D=n.closed?u:u-1;for(let A=0;A<D;A++){let E=(A+1)%u;if(O(A)||O(E))continue;if(R(A,E)){let B=(n.startBin+A+1)*t.binStepDeg,F=(J,Y)=>{let W=(o[A]+o[E])/2,Q=(r[A]+r[E])/2,te=W+(Q-W)*Y/l,$=$e(t.centre,te,B);return[$.x*m,f[J][Y],$.y*m]};for(let J=0;J<l;J++){let Y=M(A,J),W=M(A,J+1),Q=F(A,J),te=F(A,J+1),$=w(A,J),ne=w(A,J+1);e.triN(Y,Q,te,$,$,ne,p),e.triN(Y,te,W,$,ne,ne,p);let ee=M(E,J),q=M(E,J+1),le=F(E,J),re=F(E,J+1),Le=w(E,J),Ce=w(E,J+1);e.triN(le,ee,q,Le,Le,Ce,p),e.triN(le,q,re,Le,Ce,Ce,p);let we=F(A,J),ve=F(A,J+1),tt=F(E,J+1),st=F(E,J),wt=ve[0]-we[0],ct=ve[2]-we[2],Ft=Math.hypot(wt,ct);if(Ft>1e-12){let lt=[ct/Ft,0,-wt/Ft];e.tri(we,ve,tt,lt,y),e.tri(we,tt,st,lt,y)}}let G=M(A,0),j=M(E,0),N=M(E,l),z=M(A,l),K=J=>[J[0],d,J[2]];Math.min(G[1],j[1])-i<3&&(e.tri(K(G),K(N),K(j),[0,-1,0],b),e.tri(K(G),K(z),K(N),[0,-1,0],b)),I(G,j,!0),I(z,N,!0);continue}for(let B=0;B<l;B++){let F=w(A,B),G=w(E,B),j=w(E,B+1),N=w(A,B+1);if(S(A,B)||S(E,B)){let W=(ve,tt)=>{let st=(n.startBin+ve+.5)*t.binStepDeg,wt=o[ve]+(r[ve]-o[ve])*(B+.5)/l,ct=$e(t.centre,wt,st);return[ct.x*m,tt,ct.y*m]},Q=M(A,B),te=M(E,B),$=W(A,f[A][B]),ne=W(E,f[E][B]);e.triN(Q,te,ne,F,G,G,p),e.triN(Q,ne,$,F,G,F,p);let ee=M(E,B+1),q=M(A,B+1),le=W(A,f[A][B+1]),re=W(E,f[E][B+1]);e.triN(le,re,ee,N,j,j,p),e.triN(le,ee,q,N,j,N,p);let Le=ne[0]-$[0],Ce=ne[2]-$[2],we=Math.hypot(Le,Ce);if(we>1e-12){let ve=[-Ce/we,0,Le/we];e.tri($,ne,re,ve,y),e.tri($,re,le,ve,y)}continue}let z=M(A,B),K=M(E,B),J=M(E,B+1),Y=M(A,B+1);e.triN(z,K,J,F,G,j,p),e.triN(z,J,Y,F,j,N,p)}let T=M(A,0),V=M(E,0),_=M(E,l),k=M(A,l),H=B=>[B[0],d,B[2]];Math.min(T[1],V[1])-i<3&&(e.tri(H(T),H(_),H(V),[0,-1,0],b),e.tri(H(T),H(k),H(_),[0,-1,0],b)),I(T,V,!0),I(k,_,!0)}if(!n.closed)for(let A of[0,u-1])for(let E=0;E<l;E++)I(M(A,E),M(A,E+1))}function Fs(e,t,n){let{bottomY:o,colors:r,ao:i}=n,a=new Float64Array(t.binCount).fill(-1/0);for(let l of t.rings)for(let m of l.arcs){let h=new Float64Array(m.binCount),d=new Float64Array(m.binCount);for(let p=0;p<m.binCount;p++){let b=(m.startBin+p)%t.binCount,y=Math.max(0,m.innerR[p]-Ge);h[p]=Math.max(y,a[b]+.001),d[p]=Math.max(h[p]+.001,m.outerR[p]+Ge)}let f=0;for(let p=0;p<m.binCount;p++){let b=m.topLevelM[p]-o;b>f&&(f=b)}f>=Gd&&Kd(e,t,m,h,d,o,r,i,n.standTopNear);for(let p=0;p<m.binCount;p++){let b=(m.startBin+p)%t.binCount;d[p]>a[b]&&(a[b]=d[p])}}if(n.deriveShell===!1||Xd(n.shapes,t))return;let s=t.rings[t.rings.length-1],c=Hd*Ve,u=zd*Ve;for(let l of s.arcs){let m=[],h=[];for(let w=0;w<l.binCount;w++){let I=(l.startBin+w+.5)*t.binStepDeg,L=l.outerR[w]+Ge+c;m.push($e(t.centre,L,I)),h.push($e(t.centre,L+u,I))}let d=-1/0;for(let w=0;w<l.binCount;w++)l.topLevelM[w]>d&&(d=l.topLevelM[w]);let f=d+Ud,p=l.closed?h:[...h,...m.slice().reverse()],b=l.closed?[m.slice().reverse()]:void 0,y=he(r.shellWall,[.66,.71,.72],.62),g=(w,I,L,O,D)=>{let A=Math.abs(O-d)<1e-6?O-Nd:O;it(e,w,L,A,n.shapes,r.shellTop,D,{holes:I,portalBase:o,ao:i})||se(e,w,I,()=>A,L,r.shellTop,D,i)},M=Math.max(1,Math.ceil((d-o)/4.5)),v=(d-o)/M,R=new Set,P=n.tierFrontLevels??t.rings.map(w=>{let I=w.arcs.flatMap(L=>Array.from(L.frontLevelM)).filter(Number.isFinite).sort((L,O)=>L-O);return I[Math.floor(I.length/2)]});for(let w of P)Number.isFinite(w)&&w-o>=3&&w<d&&R.add(Math.max(0,Math.min(M-1,Math.floor((w-o)/v))));let x=Math.min(...P.filter(w=>Number.isFinite(w)&&w-o>=3&&w<d));for(let w=0;w<M;w++)o+(w+1)*v<=x-wn&&Number.isFinite(x)&&R.add(w);for(let w=0;w<M;w++){let I=o+(d-o)*w/M,L=o+(d-o)*(w+1)/M;R.has(w)&&L-I>=3.2?(g(p,b,I,I+.45,y),Ir(e,m,h,l.closed,I+.45,L-.16,r.shellTop,y,i,n.shapes,o)):g(p,b,I,L-.16,y),g(p,b,L-.16,L,ae(y,.62))}Ir(e,m,h,l.closed,d,f,r.shellTop,y,i,n.shapes,o);let S=8;for(let w=1;w<h.length;w++){if(S+=Math.hypot(h[w].x-h[w-1].x,h[w].y-h[w-1].y)*me,S<8)continue;S=0;let I=h[w],L=h[w-1],O=I.x-L.x,D=I.y-L.y,A=Math.max(1,Math.hypot(O,D)),E=O/A*.16*Ve,T=D/A*.16*Ve,V=Math.max(1,Math.hypot(I.x-t.centre.x,I.y-t.centre.y)),_=(I.x-t.centre.x)/V*.24*Ve,k=(I.y-t.centre.y)/V*.24*Ve,H=[{x:I.x-E,y:I.y-T},{x:I.x+E,y:I.y+T},{x:I.x+E+_,y:I.y+T+k},{x:I.x-E+_,y:I.y-T+k}];g(H,void 0,o,d,ae(y,1.12))}}}function Ds(e,t,n,o){let r=new Map;for(let s of t){let c=r.get(s.blockId);(!c||s.depth<c.depth)&&r.set(s.blockId,s)}let i=[.68,.72,.72],a=[.48,.55,.57];for(let s of r.values()){if(s.y-o<2.5||s.pts.length<2)continue;let c=s.pts.map(l=>{let m=l.x-n.x,h=l.y-n.y,d=Math.max(1,Math.hypot(m,h));return{x:l.x-m/d*.65/C,y:l.y-h/d*.65/C}}),u=2;for(let l=1;l<c.length;l++){let m=c[l-1],h=c[l],d=h.x-m.x,f=h.y-m.y,p=Math.hypot(d,f);if(p<1e-5||p*C>2)continue;let b=y=>{let g=-f/p*y/C/2,M=d/p*y/C/2;return[{x:m.x+g,y:m.y+M},{x:h.x+g,y:h.y+M},{x:h.x-g,y:h.y-M},{x:m.x-g,y:m.y-M}]};se(e,b(.22),void 0,()=>s.y-.06,s.y-.56,i,i,oe);for(let y of[.5,.95])se(e,b(.045),void 0,()=>s.y+y,s.y+y-.045,a,a,oe);if(u+=p*C,u>=1.8||l===c.length-1){u=0;let y=.028/C,g=[{x:m.x-y,y:m.y-y},{x:m.x+y,y:m.y-y},{x:m.x+y,y:m.y+y},{x:m.x-y,y:m.y+y}];se(e,g,void 0,()=>s.y+.95-.045,s.y-.06,a,a,oe)}}}}function Os(e,t,n,o,r){let i=[.67,.71,.68];for(let a=0;a<t.length;a++){let s=t[a];if(!(s.pts.length<2))for(let c of[0,s.pts.length-1]){let u=s.pts[c],l=s.pts[c===0?1:c-1],m=u.x-l.x,h=u.y-l.y,d=Math.hypot(m,h);if(d<1e-5)continue;m/=d,h/=d;let f=1/0;for(let S=0;S<n.length;S++){let w=n[S],I=n[(S+1)%n.length],L=I.x-w.x,O=I.y-w.y,D=m*O-h*L;if(Math.abs(D)<1e-8)continue;let A=w.x-u.x,E=w.y-u.y,T=(A*O-E*L)/D,V=(A*h-E*m)/D;T>0&&V>=0&&V<=1&&(f=Math.min(f,T))}let p=.3/C,b=f-.04/C;if(!Number.isFinite(f)||f*C>2||b-p<.12/C)continue;let y=.27/C,g=[{x:u.x+m*p-h*y,y:u.y+h*p+m*y},{x:u.x+m*b-h*y,y:u.y+h*b+m*y},{x:u.x+m*b+h*y,y:u.y+h*b-m*y},{x:u.x+m*p+h*y,y:u.y+h*p-m*y}];if(!g.every(S=>De(n,S.x,S.y)))continue;let M=r?.[a]?.belowY,v=M==null?0:s.y-M,R=!!o&&v>.03&&v<=.65;if(R&&o){let S=(w,I)=>Math.hypot((w.x+I.x)/2-o.x,(w.y+I.y)/2-o.y);S(g[0],g[1])>S(g[3],g[2])&&(g=[g[3],g[2],g[1],g[0]])}let P=R?Math.ceil((v-1e-8)/.2):1,x=(S,w,I)=>({x:S.x+(w.x-S.x)*I,y:S.y+(w.y-S.y)*I});for(let S=0;S<P;S++){let w=S/P,I=(S+1)/P,L=[x(g[0],g[3],w),x(g[1],g[2],w),x(g[1],g[2],I),x(g[0],g[3],I)],O=s.y+.008-(R?v*(1-I):0);if(se(e,L,void 0,()=>O,O-(R?v/P+.1:.16),i,[.43,.47,.46],oe),!R)continue;let D=Math.hypot(L[3].x-L[0].x,L[3].y-L[0].y)*C,A=Math.min(.04/D,.25),E=x(L[0],L[3],A),T=x(L[1],L[2],A),V=k=>[k.x*C,O+.004,k.y*C],_=[.66,.59,.39];e.tri(V(L[0]),V(L[1]),V(T),[0,1,0],_),e.tri(V(L[0]),V(T),V(E),[0,1,0],_)}}}}function Bs(e,t,n,o,r,i,a,s,c=!1){if(!t.outline||t.outline.length<3)return;let u=n.baseHeightM,l=n.objects.filter(g=>g.type==="shape"&&(g.role==="entrance"||g.role==="exit")),m=qa(o,s.tierTop);if(!r)return;let h=g=>r.deckAt(g.x,g.y),d=ja(t,a),f=d[0]??t.outline;if(r.rowLevels.length>=2){let g=Jn(r.rowLevels),M=Xa(Na(r.rowLevels,n.focal,g),d);for(let R of M){let P=Math.max(u,R.topY-Ns);for(let x of i.subtract(R.outline,P))ks(e,x,R.holes,P,u,s.tierTop,s.tierWall,l,!c)}M.length||se(e,f,t.holes,()=>r.landingY,u,m,s.tierWall,oe);let v={tread:[m[0]*oe.top,m[1]*oe.top,m[2]*oe.top],riser:[m[0]*.72,m[1]*.72,m[2]*.72]};for(let R of d.length?d:[f])Ga(e,r.rowLevels,n.focal,r.landingY,v,R,g);Ds(e,r.rowLevels,n.focal,u),Os(e,r.rowLevels,t.outline,n.focal,g);return}let p=r.flat?1/0:Ya,b=g=>r.normalAt(g.x,g.y),y=r.flat?r.landingY:void 0;for(let g of i.subtract(f,y))se(e,g,t.holes,h,u,m,s.tierWall,oe,p,b)}function qd(e,t,n){let o=new Set;for(let a of e.objects)a.type==="section"&&o.add(a.id);let r=new Map;for(let a=0;a<t.length;a++){let s=n.seatOwner[a];if(!s||!o.has(s))continue;let c=n.bySection.get(s);if(c&&c.rowLevels.length>=2)continue;let u=t[a];if(u.kind==="booth")continue;let l=r.get(s);l||(l=new Map,r.set(s,l));let m=u.rowId||`__seat-${a}`,h=l.get(m);h||(h={pts:[],levelM:0,n:0},l.set(m,h)),h.pts.push({x:u.x,y:u.y}),h.levelM+=n.seatDeckY(a),h.n++}let i=[];for(let a of e.objects){if(a.type!=="section")continue;let s=n.bySection.get(a.id);if(s&&s.rowLevels.length>=2){let u=s.rowLevels.filter(l=>!l.patch).map(l=>({pts:l.pts,levelM:l.y}));u.length>=2&&i.push({sectionId:a.id,rows:u});continue}let c=r.get(a.id);c&&i.push({sectionId:a.id,rows:[...c.values()].map(u=>({pts:u.pts,levelM:u.levelM/u.n}))})}return i}function $d(e,t){let n=1/0;for(let o=0;o<t.length;o++){let r=t[o],i=t[(o+1)%t.length],a=i.x-r.x,s=i.y-r.y,c=Math.max(0,Math.min(1,((e.x-r.x)*a+(e.y-r.y)*s)/(a*a+s*s||1)));n=Math.min(n,Math.hypot(e.x-r.x-c*a,e.y-r.y-c*s))}return n}var Ns=.02;function Zd(e,t){let n=e.objects.filter(o=>o.type==="section"&&!!o.outline&&o.outline.length>=3).flatMap(o=>{let r=t.bySection.get(o.id);if(!r)return[];let i=1/0,a=-1/0,s=1/0,c=-1/0;for(let l of o.outline)l.x<i&&(i=l.x),l.x>a&&(a=l.x),l.y<s&&(s=l.y),l.y>c&&(c=l.y);let u=r.landingY;for(let l of r.rowLevels)u=Math.min(u,l.y-Ns);return[{outline:o.outline,holes:o.holes,surface:r,floorTop:u,minX:i,maxX:a,minY:s,maxY:c}]});return(o,r,i)=>{let a=null;for(let s of n){if(o<s.minX-i||o>s.maxX+i||r<s.minY-i||r>s.maxY+i)continue;let c={x:o,y:r};if(!Te(c,s.outline,s.holes)&&$d(c,s.outline)>i)continue;let u=Math.min(s.surface.deckAt(o,r),s.floorTop);(a===null||u<a)&&(a=u)}return a}}var Qd=3,Jd=.4;function Vs(e,t,n,o,r,i,a=!0){let s=qd(t,n,o);if(s.length<Qd)return;let c=Cs(s,t.focal);if(!c)return;let u=Math.max(0,...c.rings.map(l=>l.arcs.reduce((m,h)=>m+h.binCount,0)))/c.binCount;e.setMaterial(5),Fs(e,c,{bottomY:t.baseHeightM,tierFrontLevels:s.map(l=>Math.min(...l.rows.map(m=>m.levelM))),colors:{bandTop:ae(r.tierTop,.8),bandWall:r.tierWall,shellTop:i??ae(r.tierWall,1.15),shellWall:i??r.tierWall},ao:oe,shapes:t.objects.filter(l=>l.type==="shape"),deriveShell:a&&u>=Jd,standTopNear:Zd(t,o)}),e.setMaterial(0)}function Pn(e){if(e.length<3)return e.map(i=>({...i}));let t=[...e].sort((i,a)=>i.x-a.x||i.y-a.y),n=(i,a,s)=>(a.x-i.x)*(s.y-i.y)-(a.y-i.y)*(s.x-i.x),o=i=>{let a=[];for(let s of i){for(;a.length>=2&&n(a[a.length-2],a[a.length-1],s)<=0;)a.pop();a.push(s)}return a.pop(),a},r=[...o(t),...o([...t].reverse())];return r.length>=3?r.map(i=>({...i})):t.map(i=>({...i}))}var eh=.8,th=.6,nh=2;function ho(e,t){if(!t.length)return null;let n=[],o=0;for(let a of e.objects){if(a.type!=="shape"||a.role!=="wall")continue;let s=be(a)??[],c=Gs(s)/2;!(c>0)||oh(s)/c*C>nh||(n.push(...s),o+=c)}if(n.length<3)return null;let r=Pn(n);if(r.length<3||o<Gs(r)*th)return null;let i=0;for(let a of t)rh(a,r)&&(i+=1);return i>=t.length*eh?r:null}function oh(e){let t=0;for(let n=0;n<e.length;n++){let o=e[n],r=e[(n+1)%e.length];t+=o.x*r.y-r.x*o.y}return Math.abs(t)/2}function Gs(e){let t=0;for(let n=0;n<e.length;n++){let o=e[n],r=e[(n+1)%e.length];t+=Math.hypot(r.x-o.x,r.y-o.y)}return t}function rh(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o],a=t[r];i.y>e.y!=a.y>e.y&&e.x<(a.x-i.x)*(e.y-i.y)/(a.y-i.y)+i.x&&(n=!n)}return n}var Hs=4;var ih=[[/\b(wc|toilets?|restrooms?|washrooms?|lavatory|loo)\b/i,"restroom"],[/\b(bar|drinks|pub|cocktails?)\b/i,"bar"],[/\b(food|concessions?|snacks?|kiosk|caf[eé]|kitchen|catering)\b/i,"concession"],[/\b(coat ?check|cloak ?room|cloakroom|coats)\b/i,"coat"],[/\b(screen|led wall|projection|video wall)\b/i,"screen"],[/\b(sound|foh|mixing desk|control booth)\b/i,"sound"],[/\b(entrance|entry|way in|gate)\b/i,"entrance"],[/\b(exit|way out)\b/i,"exit"],[/\b(pillar|column|obstruction)\b/i,"obstruction"],[/\b(walls?|outline|boundary|perimeter)\b/i,"wall"]],ah=1.2,sh=12;function zs(e){if(e.heightM!==void 0)return!1;let t=be(e);if(!t||t.length<3)return!1;let n=0;for(let r=0;r<t.length;r++){let i=t[r],a=t[(r+1)%t.length];n+=Math.hypot(a.x-i.x,a.y-i.y)}return n*me<sh*2?!1:2*po(t)/n*me<=ah}function Ar(e){if(!e)return null;for(let[t,n]of ih)if(t.test(e))return n;return null}var Xs="auto-rows-";function Ws(e){return e.id.startsWith(Xs)&&!e.label}var ch=1.15,lh=.09,Ys=6,uh=34,mh=.35,fh=6,dh=.35,hh=.75,ph=12,bh=2.5,yh=40,gh=[18,24],xh=[12,16],Us=14,vh=.8,Mh=.6,Sh=5,wh=.3,Ks=.4,Ph=2,Ih=400,Rh=2.6,Ah=1.6,Ch=6e3,Eh=.6,_h="#c3c7cd",js=300,Th=240;function kh(e,t,n,o){if(!e.fill||!/^#[0-9a-f]{6}$/i.test(e.fill))return null;let r=Er([...t]),i=new Set;for(let l of o)i.add(Math.floor(Math.atan2(l.y-r.y,l.x-r.x)*180/Math.PI/10));if(i.size*10<Th)return null;let{h:a,s,l:c}=wi(Mi(e.fill));return a<70/360||a>170/360||s<.2||c<.08||c>.75||n.some(l=>l!==e&&l.type==="shape"&&be(l)?.some(m=>Tr(m,t)))?null:e.kind==="ellipse"?"oval-cricket":e.kind==="rect"?"pitch-football":null}var Lh="Estimated from the drawing; confirm with the venue.",qs=e=>{if(!e.length)return null;let t=[...e].sort((o,r)=>o-r),n=Math.floor(t.length/2);return t.length%2?t[n]:(t[n-1]+t[n])/2},Er=e=>({x:e.reduce((t,n)=>t+n.x,0)/e.length,y:e.reduce((t,n)=>t+n.y,0)/e.length}),po=e=>{let t=0;for(let n=0;n<e.length;n++){let o=e[n],r=e[(n+1)%e.length];t+=o.x*r.y-r.x*o.y}return Math.abs(t)/2};function Fh(e){return e.height!==void 0||e.rake!==void 0||e.elevation!==void 0||e.surfaceKind!==void 0}function _r(e){let t=new Map;for(let n of e){let o=t.get(n.rowId);o?o.push(n):t.set(n.rowId,[n])}return t}function Tr(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o],a=t[r];i.y>e.y!=a.y>e.y&&e.x<(a.x-i.x)*(e.y-i.y)/(a.y-i.y)+i.x&&(n=!n)}return n}function kr(e,t){let n=t[0],o=1/0;for(let r=0;r<t.length;r++){let i=t[r],a=t[(r+1)%t.length],s=a.x-i.x,c=a.y-i.y,u=s*s+c*c,l=u>0?Math.max(0,Math.min(1,((e.x-i.x)*s+(e.y-i.y)*c)/u)):0,m={x:i.x+s*l,y:i.y+c*l},h=Math.hypot(e.x-m.x,e.y-m.y);h<o&&(o=h,n=m)}return n}function $s(e,t){let n=0,o=0;for(let r of e.values()){if(r.length<3)continue;let i=r[0],a=r[r.length-1],s=a.x-i.x,c=a.y-i.y,u=Math.hypot(s,c);if(u<1e-6)continue;let l={x:(i.x+a.x)/2,y:(i.y+a.y)/2},m=kr(l,t),h=m.x-l.x,d=m.y-l.y,f=Math.hypot(h,d);f<1e-6||(o+=Math.abs((-c*h+s*d)/(u*f))*r.length,n+=r.length)}return n?o/n:0}function Dh(e,t,n){let o=e.filter(p=>p.type==="shape"),r=o.find(p=>p.role==="stage");if(r){let p=be(r);return p?{shape:r,centre:Er(p),outline:p,inferred:!1}:null}if(!n.length)return null;let i=1/0,a=-1/0,s=1/0,c=-1/0;for(let p of n)i=Math.min(i,p.x),a=Math.max(a,p.x),s=Math.min(s,p.y),c=Math.max(c,p.y);let u=(a-i)*(c-s),l=[];for(let p of o){if(p.role)continue;let b=be(p);if(!b)continue;let y=po(b);if(y*me*me<6||y>u)continue;let g=Math.min(...b.map(w=>w.x)),M=Math.max(...b.map(w=>w.x)),v=Math.min(...b.map(w=>w.y)),R=Math.max(...b.map(w=>w.y)),P=0;for(let w of n)w.x>g&&w.x<M&&w.y>v&&w.y<R&&Tr(w,b)&&P++;if(P>n.length*.05)continue;let x=Er(b),S=$s(t,b);S>=vh&&l.push({shape:p,centre:x,outline:b,score:S,area:y,box:[g,v,M,R]})}let m=(p,b)=>b!==p&&b.area>p.area&&p.box[0]>=b.box[0]-1e-6&&p.box[1]>=b.box[1]-1e-6&&p.box[2]<=b.box[2]+1e-6&&p.box[3]<=b.box[3]+1e-6,h=l.filter(p=>!l.some(b=>m(p,b))),d=Math.max(0,...h.map(p=>p.score)),f=h.filter(p=>p.score>=d-.03).sort((p,b)=>b.area-p.area)[0]??null;return f?{shape:f.shape,centre:f.centre,outline:f.outline,inferred:!0}:null}function Oh(e,t,n){if(!n||n.length<3)return Math.hypot(e.x-t.x,e.y-t.y);let o=kr(e,n);return Math.hypot(e.x-o.x,e.y-o.y)}function Zs(e){let t=[...e].sort((i,a)=>i.x-a.x||i.y-a.y);if(t.length<3)return t;let n=(i,a,s)=>(a.x-i.x)*(s.y-i.y)-(a.y-i.y)*(s.x-i.x),o=[];for(let i of t){for(;o.length>=2&&n(o[o.length-2],o[o.length-1],i)<=0;)o.pop();o.push(i)}let r=[];for(let i=t.length-1;i>=0;i--){let a=t[i];for(;r.length>=2&&n(r[r.length-2],r[r.length-1],a)<=0;)r.pop();r.push(a)}return[...o.slice(0,-1),...r.slice(0,-1)]}function Bh(e){if(!e.length||e.length>Ch)return[];let t=[..._r(e).values()],n=t.map((s,c)=>c),o=s=>n[s]===s?s:n[s]=o(n[s]),r=Ah/me,i=t.map(s=>({minX:Math.min(...s.map(c=>c.x))-r,maxX:Math.max(...s.map(c=>c.x))+r,minY:Math.min(...s.map(c=>c.y))-r,maxY:Math.max(...s.map(c=>c.y))+r}));for(let s=0;s<t.length;s++)for(let c=s+1;c<t.length;c++){let u=i[s],l=i[c];if(u.maxX<l.minX||l.maxX<u.minX||u.maxY<l.minY||l.maxY<u.minY)continue;t[s].some(h=>t[c].some(d=>Math.hypot(h.x-d.x,h.y-d.y)<=r))&&(n[o(s)]=o(c))}let a=new Map;return t.forEach((s,c)=>{let u=o(c),l=a.get(u);l?l.push(...s):a.set(u,[...s])}),[...a.values()].filter(s=>new Set(s.map(c=>c.rowId)).size>=2)}function Nh(e,t,n){if(!t.length)return null;let o=t.filter(S=>n.tableIds.has(S.rowId)||S.kind==="booth").length>t.length/2,r=_r(t),i=!n.outline||$s(r,n.outline)>=Mh,a=0,s=0;for(let S of r.values()){if(S.length<2)continue;let w=S[0],I=S[S.length-1],L=I.x-w.x,O=I.y-w.y,D=Math.hypot(L,O);if(D<1e-6)continue;let A={x:(w.x+I.x)/2,y:(w.y+I.y)/2},E=i?n.outline?kr(A,n.outline):n.focal:n.middle,T=-O/D,V=L/D;T*(E.x-A.x)+V*(E.y-A.y)<0&&(T=-T,V=-V),a+=T*S.length,s+=V*S.length}let c={x:t.reduce((S,w)=>S+w.x,0)/t.length,y:t.reduce((S,w)=>S+w.y,0)/t.length};if(Math.hypot(a,s)<1e-9){let S=i?n.focal:n.middle;a=S.x-c.x,s=S.y-c.y}let u=Math.hypot(a,s)||1,l={x:a/u,y:s/u},m=S=>-(S.x*l.x+S.y*l.y),h=S=>-S.x*l.y+S.y*l.x,d=1/0,f=-1/0,p=1/0,b=-1/0,y=1/0,g=new Map;for(let S of t){let w=m(S),I=h(S);d=Math.min(d,w),f=Math.max(f,w),p=Math.min(p,I),b=Math.max(b,I),i&&(y=Math.min(y,Oh(S,n.focal,n.outline)));let L=S.logicalRowId??S.rowId,O=g.get(L);O?O.push(w):g.set(L,[w])}i||(y=Math.max(0,d-m(n.middle)));let M=[...g.values()].map(S=>qs(S)).sort((S,w)=>S-w),v=[];if(!o)for(let S of M)v.length&&S-v[v.length-1]<dh/me||v.push(S);let R=Fh(e),P=dt(e,{floorBaseHeightM:n.baseHeightM}),x={id:e.id,section:e,authored:R,plane:n,facing:l,facesAction:i,hull:Zs(t),sample:t.filter((S,w)=>w%Math.ceil(t.length/Ih)===0),frontD:d,backD:f,latMin:p,latMax:b,frontDistance:y,rowDepths:v,rowCount:v.length,level:0,height:P.height,rake:R?P.rake:0,backHeight:0};return x.backHeight=x.height+(f-d)*me*Math.tan(x.rake*Math.PI/180),x}function Vh(e,t,n,o){if(e.length<2)return 0;let r=Math.max(1,t*me),i=n+ch-o,a=0,s=0;for(let u=1;u<e.length;u++){let l=Math.max(hh,(e[u]-e[u-1])*me),m=(i+lh)*(r+l)/r;a+=m-i,s+=l,i=m,r+=l}let c=Math.atan(a/s)*180/Math.PI;return Math.round(Math.max(Ys,Math.min(uh,c))*10)/10}function Gh(e,t){if(e.facing.x*t.facing.x+e.facing.y*t.facing.y<wh)return null;let n=-1/0,o=1/0,r=-1/0;for(let m of t.hull){n=Math.max(n,-(m.x*e.facing.x+m.y*e.facing.y));let h=-m.x*e.facing.y+m.y*e.facing.x;o=Math.min(o,h),r=Math.max(r,h)}if(Math.min(e.latMax,r)-Math.max(e.latMin,o)<Ks*(e.latMax-e.latMin))return null;let a=Ph/me,s=new Map,c=new Map;for(let m of e.sample){let h=Math.floor((-m.x*e.facing.y+m.y*e.facing.x)/a),d=-(m.x*e.facing.x+m.y*e.facing.y);s.set(h,Math.min(s.get(h)??1/0,d))}for(let m of t.sample){let h=Math.floor((-m.x*e.facing.y+m.y*e.facing.x)/a),d=-(m.x*e.facing.x+m.y*e.facing.y);c.set(h,Math.max(c.get(h)??-1/0,d))}let u=[];for(let[m,h]of s){let d=c.get(m);d!==void 0&&u.push(h-d)}let l=u.length?qs(u):e.frontD-n;return l<-1/me?null:l}function Hh(e,t){if(t.plane.floorIndex>=e.plane.floorIndex)return!1;let n=-1/0,o=1/0,r=1/0,i=-1/0;for(let c of t.hull){let u=-(c.x*e.facing.x+c.y*e.facing.y);n=Math.max(n,u),o=Math.min(o,u);let l=-c.x*e.facing.y+c.y*e.facing.x;r=Math.min(r,l),i=Math.max(i,l)}let a=Math.min(e.latMax,i)-Math.max(e.latMin,r),s=Math.min(e.backD,n)-Math.max(e.frontD,o);return a>Ks*(e.latMax-e.latMin)&&s>1/me}function zh(e,t=!1){let n=t?xh:gh,o=new Map,r=[...e].sort((c,u)=>c.plane.floorIndex-u.plane.floorIndex||c.frontDistance-u.frontDistance),i=[],a=new Map,s=c=>{if(c.plane.floorIndex===0||c.plane.baseHeightM>0)return c.plane.baseHeightM;let u=a.get(c.plane.floorIndex-1);return u===void 0?c.plane.baseHeightM:u+Hs};for(let c of r){if(!c.authored){let l=s(c),m;for(let f of i){if(f.plane.floorIndex>c.plane.floorIndex)continue;if(Hh(c,f)){let y=f.backHeight+Rh;y>l&&(l=y,m=f);continue}let p=Gh(c,f);if(p==null)continue;let b=f.backHeight+mh+Math.min(fh,Math.max(0,p)*me)*Math.tan(f.rake*Math.PI/180);b>l&&(l=b,m=f)}c.height=Math.round(Math.min(l,c.plane.baseHeightM+yh)*100)/100;let h=!m&&c.height>c.plane.baseHeightM;if(c.level=m?m.level+1:h?1:0,c.rake=Vh(c.rowDepths,c.frontDistance,c.height,c.plane.focalHeightM),!c.facesAction&&c.rowCount<Sh)c.rake=0;else if(!m&&!h){let f=Math.max(1e-6,(c.backD-c.frontD)*me);c.rake=Math.min(c.rake,ph,Math.round(Math.atan(bh/f)*1800/Math.PI)/10)}else c.rowCount>=2&&(c.rake=Math.max(c.rake,n[Math.min(c.level,n.length)-1]));let d=(c.backD-c.frontD)*me;if(t&&d>0&&c.height+d*Math.tan(c.rake*Math.PI/180)>c.plane.baseHeightM+Us){let f=Math.max(0,c.plane.baseHeightM+Us-c.height);c.rake=Math.max(Ys,Math.round(Math.atan(f/d)*1800/Math.PI)/10)}c.backHeight=c.height+d*Math.tan(c.rake*Math.PI/180),o.set(c.id,m?.id)}let u=c.plane.floorIndex;a.set(u,Math.min(a.get(u)??1/0,c.height)),i.push(c)}return o}var Cr=(e,t)=>!!e&&e.x===t.x&&e.y===t.y;function bo(e,t={x:0,y:-40}){let n=zt(e),o=new Map;for(let b of n){if(!b.sectionId)continue;let y=o.get(b.sectionId);y?y.push(b):o.set(b.sectionId,[b])}let r={focalInferred:!1,confident:!1,sections:[]},i=e.floors?.length?e.floors.map((b,y)=>({objects:b.objects,floorIndex:y,floorId:b.id,baseHeightM:b.baseHeightM??0,focal:b.focalPoint??e.focalPoint})):[{objects:e.objects,floorIndex:0,floorId:void 0,baseHeightM:0,focal:e.focalPoint}],a=new Set(i.flatMap(b=>b.objects.filter(y=>y.type==="table").map(y=>y.id))),s=[],c,u=new Set,l=i.map(b=>{let y=O=>!e.floors?.length||O.floorId===b.floorId,g=Bh(n.filter(O=>!O.sectionId&&O.kind!=="booth"&&!a.has(O.rowId)&&y(O))),M=[];for(let O of g){let D=je(Ke(Zs(O)),Eh/me);if(n.some(E=>!y(E)&&Tr(E,D)))continue;let A=`${Xs}${b.floorIndex}-${M.length}`;u.add(A),o.set(A,O),M.push({type:"section",id:A,label:"",color:_h,outline:D})}let v=M.length?{...b,objects:[...b.objects,...M]}:b,R=new Set(v.objects.filter(O=>O.type==="section").map(O=>O.logicalSectionId??O.id)),P=[...o.entries()].filter(([O])=>R.has(O)).flatMap(([,O])=>O),x=Dh(v.objects,_r(P),P),S=v.focal;(x||v.focal&&!Cr(v.focal,t))&&(r.confident=!0),x&&(r.stage??={id:x.shape.id,inferred:x.inferred,...v.floorId?{floorId:v.floorId}:{}},(x.inferred||Cr(v.focal,t))&&(S=x.centre,r.focalInferred=!0));let w=x&&(!x.inferred||po(x.outline)*me*me<=js),I=x?void 0:c,L={tableIds:a,floorIndex:v.floorIndex,floorId:v.floorId,baseHeightM:v.baseHeightM,focal:I?.focal??S,outline:x?.outline??I?.outline,focalHeightM:I?.focalHeightM??v.baseHeightM+(x&&w?Xe({...x.shape,role:"stage"}).heightM:0),middle:P.length?{x:P.reduce((O,D)=>O+D.x,0)/P.length,y:P.reduce((O,D)=>O+D.y,0)/P.length}:S};for(let O of v.objects){if(O.type!=="section")continue;let D=Nh(O,o.get(O.logicalSectionId??O.id)??[],L);D&&s.push(D)}return L.outline&&(c=L),Cr(v.focal,L.focal)||(r.focal??=[]).push({...v.floorId?{floorId:v.floorId}:{},point:{...L.focal}}),{unit:v,plane:L,stage:x,planeSeats:P}}),m=i.flatMap(b=>b.objects).map(b=>b.type==="shape"&&!b.role&&(Ar(b.label)==="wall"||!Ar(b.label)&&zs(b))?{...b,role:"wall"}:b),h=ho({objects:m},n)!==null;h&&(r.indoor=!0);let d=zh(s,h),f=new Map(s.filter(b=>!b.authored).map(b=>[b.id,b])),p=l.map(({unit:b,plane:y,stage:g,planeSeats:M})=>b.objects.map(v=>{let R=v.type==="shape"&&!v.role&&v.id!==g?.shape.id?Ar(v.label):null;if(v.type==="shape"&&!v.role&&v.id!==g?.shape.id&&(R==="wall"||!R&&zs(v))&&v.type==="shape"){(r.roles??=[]).push({id:v.id,...y.floorId?{floorId:y.floorId}:{},role:"wall"});let{fill:L,...O}=v;return{...O,role:"wall"}}if(R&&v.type==="shape")return(r.roles??=[]).push({id:v.id,...y.floorId?{floorId:y.floorId}:{},role:R}),{...v,role:R};let x=g?.inferred&&v.id===g.shape.id&&v.type==="shape"?kh(v,g.outline,b.objects,M):null;if(x&&v.type==="shape")return r.stage?.id===v.id&&(r.stage.field=x),{...v,role:"stage",stageKind:x};if(g?.inferred&&v.id===g.shape.id&&v.type==="shape"&&po(g.outline)*me*me<=js)return r.stage?.id===v.id&&(r.stage.deck=!0),{...v,role:"stage"};let S=v.type==="section"?f.get(v.id):void 0;if(!S||v.type!=="section")return v;let w=S.rowCount>=2&&S.rake>0;u.has(S.id)?r.looseRowBlocks=(r.looseRowBlocks??0)+1:r.sections.push({id:S.id,floorId:y.floorId,surfaceKind:w?"rakedRows":"flat",height:S.height,rake:S.rake,stackedOn:d.get(S.id)});let I={status:"inferred",source:"public-2d-topology",note:Lh};return{...v,height:S.height,rake:S.rake,surfaceKind:w?"rakedRows":"flat",physical3dProvenance:{height:I,rake:I,surfaceKind:I}}}));if(e.floors?.length){let b=e.floors.map((y,g)=>({...y,objects:p[g],focalPoint:l[g].plane.focal}));return{doc:{...e,floors:b,objects:b[0].objects,focalPoint:b[0].focalPoint},report:r}}return{doc:{...e,objects:p[0],focalPoint:l[0].plane.focal},report:r}}var Qs=/^[\p{L}\p{N}]{1,4}$/u,Uh=/^([\p{L}\p{N}]{2,})[\s\-\u2013\u2014\u00b7_./]+(.+)$/u;function Js(e,t){let n=t?.trim();if(!n)return e;let o=e.toLocaleLowerCase("en-US"),r=n.toLocaleLowerCase("en-US");if(o.startsWith(`${r} `)){let a=e.slice(n.length).trim();if(Qs.test(a))return a}let i=Uh.exec(e);if(i){let a=i[1].toLocaleLowerCase("en-US"),s=i[2].trim();if((r.startsWith(a)||a.startsWith(r))&&Qs.test(s))return s}return e}function ec(e,t,n){return n<0?t>1?e.filter(o=>o.kind==="floor"):[...e]:e.filter(o=>o.floorIndex===void 0||o.floorIndex===n)}function tc(e,t){let n=[...e].sort((r,i)=>r.screen.y-i.screen.y),o=[];for(let r of n){let i=o.find(a=>a.some(s=>Math.abs(s.screen.x-r.screen.x)<104&&Math.abs(s.screen.y-r.screen.y)<34));i?i.push(r):o.push([r])}return o.flatMap(r=>r.length<2?r:r.map((i,a)=>({...i,screen:{...i.screen,x:Math.max(54,Math.min(t-54,i.screen.x+(a-(r.length-1)/2)*104))}})))}var jh=1.15,Xh=2.75,Wh=4.5,Yh=.85,Kh=.5,qh=.26;function nc(e,t,n){let o=Math.max(1e-6,t),r=e/o,i=n?.hasZoneLabels??!0,a=new Set;return r>=.75&&a.add("floor"),r>=jh&&a.add("zone"),r<=(i?Xh:Wh)&&(a.add("section"),a.add("ga")),r<=Yh&&(a.add("annotation"),a.add("booth")),r<=Kh&&a.add("row"),r<=qh&&a.add("seat"),a}function oc(e,t,n,o,r,i=6){let a=i+t,s=o-i-t,c=i+n,u=r-i-n;return{...e,x:a>s?o/2:Math.max(a,Math.min(s,e.x)),y:c>u?r/2:Math.max(c,Math.min(u,e.y))}}function Ze(e,t,n,o){let r=e,i=t[0],a=t[1],s=t[2],c=r[0]*i+r[4]*a+r[8]*s+r[12],u=r[1]*i+r[5]*a+r[9]*s+r[13],l=r[2]*i+r[6]*a+r[10]*s+r[14],m=r[3]*i+r[7]*a+r[11]*s+r[15];if(!(m>1e-6))return{x:0,y:0,depth:1/0,visible:!1};let h=c/m,d=u/m,f=l/m,p=h>=-1.05&&h<=1.05&&d>=-1.05&&d<=1.05&&f<=1;return{x:(h*.5+.5)*n,y:(1-(d*.5+.5))*o,depth:f,visible:p}}function rc(e,t,n=t){let o=[],r=[...e].sort((i,a)=>i.screen.depth-a.screen.depth);for(let i of r){let a=!1;for(let s of o)if(In(i,s,t,n)){a=!0;break}a||o.push(i)}return o}var $h=6;function In(e,t,n,o){let r=Math.abs(e.screen.x-t.screen.x),i=Math.abs(e.screen.y-t.screen.y),a=e.halfWidth!=null&&t.halfWidth!=null?Math.max(n,e.halfWidth+t.halfWidth+$h):n;return r<a&&i<o}function ic(e,t,n){return e.length*t*.58+(n?14:0)}var Zh={row:8,seat:14};function ac(e){return e<480?{row:5,seat:8}:e<768?{row:6,seat:10}:Zh}function sc(e,t,n,o){let r=Math.max(1,Math.min(n,o)*.5),i=Math.min(2,Math.hypot(e.x-n/2,e.y-o/2)/r);return t*(1+1.5*i)}function yo(e,t,n,o,r=[]){let i=[...e].sort((s,c)=>(c.priority??0)-(s.priority??0)||s.focus-c.focus),a=[];for(let s of i){if(a.length>=o)break;let c=!1;for(let u of r)if(In(s,u,t,n)){c=!0;break}if(!c){for(let u of a)if(In(s,u,t,n)){c=!0;break}}c||a.push(s)}return a}function cc(e,t,n,o){let r=e[3]*t[0]+e[7]*t[1]+e[11]*t[2]+e[15];return r<=0||!(n>0)?0:n*Math.hypot(e[0],e[4],e[8])*o/(2*r)}var Qh=6,Jh=2.2,lc=.1,ep=.3,tp=1.8,np=.9,op=.55,rp=6e3;function mc(e){let{doc:t,units:n,seats:o,surfaces:r,focal:i}=e,a=t.zones??[],s=[];if(a.length){let c=new Map;for(let l of n)for(let m of l.objects)m.type==="section"&&m.zone&&c.set(m.id,m.zone);let u=new Map;for(let l=0;l<o.length;l++){let m=o[l],h=r.seatOwner[l],d=m.zoneId??(h?c.get(h):void 0);if(!d)continue;let f=u.get(d);f||(f={n:0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0,sumY:0},u.set(d,f)),f.n++,m.x<f.minX&&(f.minX=m.x),m.y<f.minY&&(f.minY=m.y),m.x>f.maxX&&(f.maxX=m.x),m.y>f.maxY&&(f.maxY=m.y),f.sumY+=r.seatDeckY(l)}for(let l of a){let m=u.get(l.id),h=[];for(let[d,f]of c)f===l.id&&h.push(d);if(!m||m.n===0){s.push({id:l.id,label:l.label,color:de(l.color),sectionIds:h,seatCount:0,center:[0,0,0],radius:0,focalWorld:[(l.focalPoint??i).x*C,1.5,(l.focalPoint??i).y*C]});continue}s.push({id:l.id,label:l.label,color:de(l.color),sectionIds:h,seatCount:m.n,center:[(m.minX+m.maxX)/2*C,m.sumY/m.n,(m.minY+m.maxY)/2*C],radius:.5*Math.hypot((m.maxX-m.minX)*C,(m.maxY-m.minY)*C)||1,focalWorld:[(l.focalPoint??i).x*C,1.5,(l.focalPoint??i).y*C]})}}return s}function fc(e){let{doc:t,units:n,seats:o,surfaces:r,seatData:i,hintedSeatFloor:a,zones:s,focal:c}=e,u=[],l=[],m=[],h=new Map;for(let d of n)for(let f of d.objects){if(f.type!=="section"||!f.zone)continue;let p=(f.displayLabel||f.label||"").trim().toLocaleLowerCase();if(!p)continue;let b=t.floors?.[d.index]?.name?.trim().toLocaleLowerCase();if(n.length>1&&b===p)continue;let y=h.get(f.zone);y||h.set(f.zone,y=new Set),y.add(p)}for(let d of s)d.seatCount!==0&&(h.get(d.id)?.has(d.label.trim().toLocaleLowerCase())||u.push({id:`zone:${d.id}`,kind:"zone",text:d.label,anchor:[d.center[0],d.center[1]+Qh,d.center[2]],color:t.zones?.find(f=>f.id===d.id)?.color}));{let d=new Map,f=new Map;for(let p=0;p<o.length;p++){let b=r.seatOwner[p];if(!b)continue;let y=d.get(b);y||(y={n:0,x:0,y:0,deck:0},d.set(b,y)),y.n++,y.x+=o[p].x,y.y+=o[p].y,y.deck+=r.seatDeckY(p);let g=f.get(b);g||(g={minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0,minDeck:1/0,maxDeck:-1/0},f.set(b,g)),g.minDeck=Math.min(g.minDeck,r.seatDeckY(p)),g.maxDeck=Math.max(g.maxDeck,r.seatDeckY(p)),o[p].x<g.minX&&(g.minX=o[p].x),o[p].x>g.maxX&&(g.maxX=o[p].x),o[p].y<g.minY&&(g.minY=o[p].y),o[p].y>g.maxY&&(g.maxY=o[p].y)}for(let p of n)for(let b of p.objects){if(b.type!=="section"||Ws(b))continue;let y=d.get(b.id);if(!y||y.n===0)continue;let g=f.get(b.id),M=[y.x/y.n*C,y.deck/y.n,y.y/y.n*C],v=b.displayLabel||b.label||b.id;l.push({id:b.id,floorIndex:p.index,label:v,seatCount:y.n,center:M,radius:Math.max(1,Math.hypot(g.maxX-g.minX,g.maxY-g.minY)*.5*C),box:{min:[g.minX*C-.4,g.minDeck,g.minY*C-.4],max:[g.maxX*C+.4,g.maxDeck+1,g.maxY*C+.4]},focalWorld:[p.focal.x*C,p.baseHeightM+1.5,p.focal.y*C]});let R=t.floors?.[p.index]?.name?.trim().toLocaleLowerCase();n.length>1&&R===v.trim().toLocaleLowerCase()||u.push({id:`section:${b.id}`,kind:"section",text:v,anchor:[M[0],M[1]+Jh,M[2]],floorIndex:p.index})}}{for(let y of n)for(let g of y.objects){if(g.type!=="gaArea")continue;let M=fn(g.points);if(!M)continue;let v=g.displayLabel||g.label||g.id;u.push({id:`ga:${g.id}`,kind:"ga",text:g.capacity>0?`${v} \xB7 ${g.capacity.toLocaleString()}`:v,anchor:[M.x*C,y.baseHeightM+tp,M.y*C],floorIndex:y.index})}let d=new Map,f=new Map;for(let y of n)for(let g of y.objects)if(g.type==="section"&&d.set(g.id,g.displayLabel||g.label||g.id),g.type==="row"){let M=g.displayLabel?.trim()||g.segmentedRow?.displayLabel?.trim();M&&f.set(g.id,M)}let p=new Map;for(let y=0;y<o.length;y++){let g=o[y],M=Math.hypot(g.x-c.x,g.y-c.y),v=p.get(g.rowId);(!v||M>v.far)&&p.set(g.rowId,{seat:g,index:y,far:M})}for(let[y,g]of p){let M=r.seatOwner[g.index]??g.seat.sectionId,v=uc(g.seat.label,y,d.get(M??""),f.get(y));v&&u.push({id:`row:${y}`,kind:"row",text:v,anchor:[g.seat.x*C,r.seatDeckY(g.index)+np,g.seat.y*C],floorIndex:a[g.index]})}let b=new Map;for(let y=0;y<o.length;y++){let g=o[y],M=b.get(g.rowId);M||(M={n:0,x:0,y:0,z:0,minX:1/0,maxX:-1/0,minZ:1/0,maxZ:-1/0,label:uc(g.label,g.rowId,d.get(r.seatOwner[y]??g.sectionId??""),f.get(g.rowId)),sectionId:r.seatOwner[y]??g.sectionId},b.set(g.rowId,M));let v=y*3,R=i.iPosition[v],P=i.iPosition[v+1],x=i.iPosition[v+2];M.n++,M.x+=R,M.y+=P,M.z+=x,M.minX=Math.min(M.minX,R),M.maxX=Math.max(M.maxX,R),M.minZ=Math.min(M.minZ,x),M.maxZ=Math.max(M.maxZ,x)}for(let[y,g]of b)m.push({id:y,label:g.label,sectionId:g.sectionId,seatCount:g.n,center:[g.x/g.n,g.y/g.n,g.z/g.n],radius:Math.max(.8,Math.hypot(g.maxX-g.minX,g.maxZ-g.minZ)*.5)});if(o.length<=rp)for(let y=0;y<o.length;y++){let g=o[y],M=Lr(g.displayLabel||g.label);M&&u.push({id:`seat:${g.id}`,kind:"seat",seatWidthM:i.iChairWidth[y]*2,text:M,anchor:[g.x*C,r.seatDeckY(y)+op,g.y*C],floorIndex:a[y],rowId:g.rowId})}}for(let d of n)for(let f of d.objects)if(f.type==="shape"&&f.role&&["entrance","exit","screen","suite","obstruction"].includes(f.role)){let p=be(f),b=p?fn(p):null;if(!b||!f.label)continue;u.push({id:`architecture:${f.id}`,kind:"annotation",text:f.label,anchor:[b.x*C,d.baseHeightM+Xe(f).heightM+lc,b.y*C],color:f.fill,floorIndex:d.index})}else if(f.type==="text"){if(!f.text)continue;u.push({id:`text:${f.id}`,kind:"annotation",text:f.text,anchor:[f.position.x*C,d.baseHeightM+lc,f.position.y*C],color:f.color,rotation:f.rotation,floorIndex:d.index})}else if(f.type==="booth"){let p=qe(f);if(!p)continue;let b=fn(p);if(!b)continue;u.push({id:`booth:${f.id}`,kind:"booth",text:f.displayLabel||f.label||f.id,anchor:[b.x*C,d.baseHeightM+co+ep,b.y*C],floorIndex:d.index})}return{labels:u,sections:l,rows:m}}function dc(e,t){if(t.length>1)for(let n of t)e.push({id:`floor:${n.id}`,kind:"floor",text:n.label,anchor:[n.center[0],n.box.max[1]+1.2,n.center[2]],floorIndex:n.index})}function Lr(e){let t=e.lastIndexOf("-");return t>=0&&t<e.length-1?e.slice(t+1):e}function uc(e,t,n,o){if(o?.trim())return o.trim();let r=e?e.lastIndexOf("-"):-1,i=r>0?e.slice(0,r):t;return i&&Js(i,n)}function hc(e){let{doc:t,units:n,seats:o,surfaces:r,solids:i,hintedSeatFloor:a,seatFloor:s}=e,c=[];{let u=n.map(()=>({minX:1/0,minY:1/0,minZ:1/0,maxX:-1/0,maxY:-1/0,maxZ:-1/0}));for(let h=0;h<i.floor.length;h+=1){let d=Math.max(0,Math.min(n.length-1,Math.round(i.floor[h]))),f=h*3,p=u[d];p.minX=Math.min(p.minX,i.position[f]),p.minY=Math.min(p.minY,i.position[f+1]),p.minZ=Math.min(p.minZ,i.position[f+2]),p.maxX=Math.max(p.maxX,i.position[f]),p.maxY=Math.max(p.maxY,i.position[f+1]),p.maxZ=Math.max(p.maxZ,i.position[f+2])}let l=new Map;for(let h=0;h<n.length;h++)for(let d of n[h].objects)d.type==="section"&&l.set(d.id,h);let m=n.map(()=>({n:0,minX:1/0,minY:1/0,minDeck:1/0,maxX:-1/0,maxY:-1/0,maxDeck:-1/0,sumX:0,sumDeck:0,sumZ:0}));for(let h=0;h<o.length;h++){let d=r.seatOwner[h],f=(d!==null?l.get(d):void 0)??a[h];if(f===void 0)continue;let p=m[f],b=o[h];p.n++,b.x<p.minX&&(p.minX=b.x),b.y<p.minY&&(p.minY=b.y),b.x>p.maxX&&(p.maxX=b.x),b.y>p.maxY&&(p.maxY=b.y);let y=r.seatDeckY(h);p.sumX+=b.x*C,p.sumDeck+=y,p.sumZ+=b.y*C,p.minDeck=Math.min(p.minDeck,y),p.maxDeck=Math.max(p.maxDeck,y+1.6),s[h]=f}for(let h=0;h<n.length;h++){let d=m[h],f=t.floors?.[h],p=u[h],b=Math.min(d.n?d.minX*C:n[h].focal.x*C-1,Number.isFinite(p.minX)?p.minX:1/0),y=Math.max(d.n?d.maxX*C:n[h].focal.x*C+1,Number.isFinite(p.maxX)?p.maxX:-1/0),g=Math.min(d.n?d.minY*C:n[h].focal.y*C-1,Number.isFinite(p.minZ)?p.minZ:1/0),M=Math.max(d.n?d.maxY*C:n[h].focal.y*C+1,Number.isFinite(p.maxZ)?p.maxZ:-1/0),v=Math.min(d.n?Math.min(n[h].baseHeightM,d.minDeck):n[h].baseHeightM,Number.isFinite(p.minY)?p.minY:1/0),R=Math.max(d.n?Math.max(d.maxDeck,v+.5):v+.5,Number.isFinite(p.maxY)?p.maxY:-1/0),P=[d.n?d.sumX/d.n:(b+y)/2,d.n?d.sumDeck/d.n:(v+R)/2,d.n?d.sumZ/d.n:(g+M)/2],x=Math.max(1,.5*Math.hypot(y-b,R-v,M-g));c.push({index:h,id:f?.id??`floor-${h}`,label:f?.name??(n.length>1?`Floor ${h+1}`:"Venue"),seatCount:d.n,center:P,radius:x,box:{min:[b,v,g],max:[y,R,M]},focalWorld:[n[h].focal.x*C,n[h].baseHeightM+1.5,n[h].focal.y*C]})}}return c}function Fr(e,t){let n=1/0,o=1/0,r=-1/0,i=-1/0,a=(s,c)=>{s<n&&(n=s),c<o&&(o=c),s>r&&(r=s),c>i&&(i=c)};for(let s of t)a(s.x,s.y);for(let s of e)for(let c of s.objects)if(c.type==="section")for(let u of c.outline)a(u.x,u.y);else if(c.type==="shape"&&c.points)for(let u of c.points)a(u.x,u.y);else if(c.type==="gaArea")for(let u of c.points)a(u.x,u.y);else if(c.type==="booth"){let u=qe(c);if(u)for(let l of u)a(l.x,l.y)}else if(c.type==="table"){let u=lo(c);if(u)for(let l of u)a(l.x,l.y)}else if(c.type==="decorImage"){let u=uo(c);if(u)for(let l of u)a(l.x,l.y)}return Number.isFinite(n)||(n=-100,o=-100,r=100,i=100),{minX:n,minY:o,maxX:r,maxY:i}}function vc(e,t,n,o,r,i,a){if(t.length===1){let s=n.map(h=>({x:h.x,y:h.y}));for(let h of t[0].objects)h.type==="section"?s.push(...h.outline):h.type==="shape"?s.push(...be(h)??h.points??[]):h.type==="gaArea"?s.push(...h.points):h.type==="booth"?s.push(...qe(h)??[]):h.type==="table"?s.push(...lo(h)??[]):h.type==="decorImage"&&s.push(...uo(h)??[]);if(yc(e,t[0],n,i)||xc(e,t[0],n,s,i))return!1;if(a&&bc(e,t[0].baseHeightM,s,i,a))return!0;let c=Pn(s),u=(r.minX+r.maxX)/2,l=(r.minY+r.maxY)/2,m=c.length>=3?c.map(h=>{let d=h.x-u,f=h.y-l,p=Math.max(1,Math.hypot(d,f));return{x:h.x+d/p*80,y:h.y+f/p*80}}):pn(r.minX-28,r.minY-28,r.maxX-r.minX+56,r.maxY-r.minY+56);return se(e,m,void 0,()=>-.04,-.22,i.ground,i.ground,oe),!1}else{let s=t.reduce((b,y)=>y.baseHeightM<b.baseHeightM?y:b);e.setFloor(s.index);let c={...s,objects:t.flatMap(b=>b.objects)},u=n.map(b=>({x:b.x,y:b.y}));for(let b of c.objects)b.type==="section"&&u.push(...b.outline);if(yc(e,c,n,i)||xc(e,c,n,u,i))return!1;if(a&&bc(e,s.baseHeightM,u,i,a))return!0;let l=n.filter((b,y)=>o[y]===s.index),m=Fr([s],l),h=Math.hypot(m.maxX-m.minX,m.maxY-m.minY),d=Math.max(28,Math.min(80,h*.04)),f=pn(m.minX-d,m.minY-d,m.maxX-m.minX+d*2,m.maxY-m.minY+d*2),p=s.baseHeightM-.03;return se(e,f,void 0,()=>p,p-.22,i.ground,i.ground,oe),!1}}function Dr(e,t,n,o){let{cx:r,cz:i,radius:a}=n,s=1/0,c=1/0,u=1/0,l=-1/0,m=-1/0,h=-1/0,d=(b,y,g)=>{s=Math.min(s,b),l=Math.max(l,b),c=Math.min(c,y),m=Math.max(m,y),u=Math.min(u,g),h=Math.max(h,g)};for(let b=0;b<e.position.length;b+=3){let y=b/3;o&&y>=o[0]&&y<o[1]||d(e.position[b],e.position[b+1],e.position[b+2])}for(let b=0;b<t.count;b++){let y=b*3,g=t.iPosition[y],M=t.iPosition[y+1],v=t.iPosition[y+2],R=Math.max(.35,t.iMaxRadius[b]??.35);d(g-R,M,v-R),d(g+R,M+1.6,v+R)}Number.isFinite(s)||(s=r-a,l=r+a,c=0,m=a*.16,u=i-a,h=i+a);let f=[(s+l)/2,(c+m)/2,(u+h)/2],p=Math.max(1,.5*Math.hypot(l-s,m-c,h-u));return{center:f,radius:p,minY:c,maxY:m}}function Mc(e,t,n,o,r,i){let a=1/0,s=1/0,c=-1/0,u=-1/0;for(let v=0;v<e.count;v++){let R=v*3,P=e.iPosition[R],x=e.iPosition[R+2];P<a&&(a=P),P>c&&(c=P),x<s&&(s=x),x>u&&(u=x)}for(let v of t)a=Math.min(a,v.cx-v.halfX),c=Math.max(c,v.cx+v.halfX),s=Math.min(s,v.cz-v.halfZ),u=Math.max(u,v.cz+v.halfZ);let l=n.minX*C,m=n.maxX*C,h=n.minY*C,d=n.maxY*C,f=l,p=m,b=h,y=d;if(Number.isFinite(a)){let v=Math.max(2,.06*Math.hypot(c-a,u-s));f=Math.max(l,a-v),p=Math.min(m,c+v),b=Math.max(h,s-v),y=Math.min(d,u+v)}let g=Math.min(0,o),M=Math.max(r,i*.05);return{min:[f,g,b],max:[p,M,y]}}var pc=12,ip=.6,ap=40;function bc(e,t,n,o,r){let i=Pn([...n]);if(i.length<3)return!1;let a=1/0,s=1/0,c=-1/0,u=-1/0;for(let v of i)a=Math.min(a,v.x),c=Math.max(c,v.x),s=Math.min(s,v.y),u=Math.max(u,v.y);let l=Math.hypot(c-a,u-s)*C,m=je(i,pc/C,1.2),h=Math.max(ap,l*ip),d=je(i,(pc+h)/C,1.2);if(m.length!==d.length)return!1;let f=he(o.ground,[.78,.76,.72],.35),p=he(o.ground,[.56,.62,.52],.3);se(e,m,void 0,()=>t-.04,t-.22,f,f,oe);let b=t-.05,y=m.map(v=>[v.x*C,b,v.y*C]),g=d.map(v=>[v.x*C,b,v.y*C]),M=[0,1,0];for(let v=0;v<y.length;v++){let R=(v+1)%y.length;e.tri(y[v],g[R],g[v],M,p,r,r),e.tri(y[v],y[R],g[R],M,p,p,r)}return!0}function yc(e,t,n,o){let r=ho(t,n);if(!r)return!1;let i=t.baseHeightM,a=he(o.ground,[.62,.55,.47],.4);return se(e,r,void 0,()=>i-.04,i-.22,a,a,oe),!0}var sp=3e3,cp=20,gc=1.5,lp=1.2,up=.25;function xc(e,t,n,o,r){if(!n.length||n.length>sp||o.length<3)return!1;for(let w of t.objects){if(w.type==="shape"&&ma(w.stageKind))return!1;if(w.type==="section"){let{height:I}=dt(w,{floorBaseHeightM:t.baseHeightM});if(I-t.baseHeightM>cp)return!1}}let i=0,a=0;for(let w of o)i+=w.x,a+=w.y;i/=o.length,a/=o.length;let s=0,c=0,u=0;for(let w of o){let I=w.x-i,L=w.y-a;s+=I*I,c+=L*L,u+=I*L}let l=.5*Math.atan2(2*u,s-c),m=Math.cos(l),h=Math.sin(l),d=-h,f=m,p=1/0,b=-1/0,y=1/0,g=-1/0;for(let w of o){let I=(w.x-i)*m+(w.y-a)*h,L=(w.x-i)*d+(w.y-a)*f;p=Math.min(p,I),b=Math.max(b,I),y=Math.min(y,L),g=Math.max(g,L)}let M=w=>[[p-w,y-w],[b+w,y-w],[b+w,g+w],[p-w,g+w]].map(([I,L])=>({x:i+m*I+d*L,y:a+h*I+f*L})),v=M(gc/C),R=M((gc+up)/C),P=t.baseHeightM,x=he(r.ground,[.62,.55,.47],.4),S=he(r.ground,[.86,.86,.84],.55);return se(e,R,void 0,()=>P-.04,P-.22,x,x,oe),se(e,R,[v.slice().reverse()],()=>P+lp,P-.04,he(S,[1,1,1],.2),S,oe),!0}function Sc(e,t,n){let o=()=>({byObjectId:new Map,elements:[]});if(!t||!e)return o();let r=pa(t);if(!r.ok||r.value.id!==e)return o();let i=new Map;for(let m of n)for(let h of m.objects)h.type==="shape"&&i.set(h.id,{shape:h,unit:m});let a=new Set,s=new Set,c=new Map((t.overlay.productionElements??[]).map(m=>{let h=m.runtimeContentImageUrl;return[m.id,typeof h=="string"&&/^(?:blob:|data:image\/|https:\/\/)/.test(h)?h:void 0]})),u=[];for(let m of r.value.overlay.productionElements??[]){let h=i.get(m.objectId),d=h?be(h.shape):null,f=m.baseElevationM??0;if(!h||!d||d.length<3||!m.id||a.has(m.id)||s.has(m.objectId)||!Number.isFinite(m.heightM)||m.heightM<.05||m.heightM>50||!Number.isFinite(f)||f<-10||f>100)return o();a.add(m.id),s.add(m.objectId);let p=d.map(S=>S.x*C),b=d.map(S=>S.y*C),y=h.unit.baseHeightM+f,g=Math.min(...p),M=Math.max(...p),v=Math.min(...b),R=Math.max(...b),P,x=c.get(m.id)??m.contentImageUrl;if(m.kind==="screen"&&x&&(P=es(d,y,y+m.heightM,h.unit.focal),!P))if(M-g>=R-v){let S=Math.abs(v-h.unit.focal.y*C)<=Math.abs(R-h.unit.focal.y*C)?v-.006:R+.006;P=[[g,y,S],[M,y,S],[g,y+m.heightM,S],[M,y+m.heightM,S]]}else{let S=Math.abs(g-h.unit.focal.x*C)<=Math.abs(M-h.unit.focal.x*C)?g-.006:M+.006;P=[[S,y,v],[S,y,R],[S,y+m.heightM,v],[S,y+m.heightM,R]]}u.push({id:m.id,objectId:m.objectId,kind:m.kind,floorIndex:h.unit.index,baseY:y,topY:y+m.heightM,bounds:{min:[g,y,v],max:[M,y+m.heightM,R]},occlusion:m.occlusion,...x?{contentImageUrl:x}:{},...P?{contentPlane:P}:{}})}let l=u.sort((m,h)=>m.id.localeCompare(h.id));return{byObjectId:new Map(l.map(m=>[m.objectId,m])),elements:l}}var wc=[.13,.14,.17],qt=[.4,.43,.47],mp=.18,fp=.02,dp=2.4,hp=1500,pp=240;function Pc(e,t,n,o){let r=t.stageKind??"";if(Tt(r)||r==="round"||!o.length)return;let i=be(t);if(!i||i.length<3)return;let a={x:i.reduce((E,T)=>E+T.x,0)/i.length,y:i.reduce((E,T)=>E+T.y,0)/i.length},s=0,c=0,u=new Set;for(let E of o)s+=E.x,c+=E.y,u.add(Math.floor(Math.atan2(E.y-a.y,E.x-a.x)*180/Math.PI/10));if(u.size*10>pp)return;let l=a.x-s/o.length,m=a.y-c/o.length,h=Math.hypot(l,m);if(h<1e-6)return;let d=l/h,f=m/h,p=-f,b=d,y=-1/0,g=1/0,M=1/0,v=-1/0;for(let E of i){let T=(E.x-a.x)*d+(E.y-a.y)*f,V=(E.x-a.x)*p+(E.y-a.y)*b;y=Math.max(y,T),g=Math.min(g,T),M=Math.min(M,V),v=Math.max(v,V)}let R=(v-M)*C,P=(y-g)*C;if(R<3||P<1.5||R*P>hp)return;let x=mp/C,S=(E,T)=>({x:a.x+d*E+p*T,y:a.y+f*E+b*T}),w=(E,T,V,_)=>[S(E,V),S(E,_),S(T,_),S(T,V)],I=n+Math.max(3.5,Math.min(8,R*.35)),L=n+Math.min(dp,I-n-1),O=.2/C,D=g+Math.min(P*.25,1.5)/C,A=fp/C;se(e,w(y-2*x+A,y-x-A,M+x+O,v-x-O),void 0,()=>L,n,wc,wc,oe);for(let[E,T]of[[M+x,M+x+O],[v-x-O,v-x]])se(e,w(y-2*x,y-x,E,T),void 0,()=>I+.3,n,qt,qt,oe),se(e,w(D+O,y-2*x,E,T),void 0,()=>I+.3,I,qt,qt,oe);se(e,w(D,D+O,M+x,v-x),void 0,()=>I+.3,I,qt,qt,oe)}function Ne(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Be(e){return Array.isArray(e)?e:[]}function bp(e){let t=[e];for(;t.length;){let n=t.pop();if(Array.isArray(n)){t.push(...n);continue}if(!Ne(n))continue;let o=Ne(n.extensions)?n.extensions:null;if(o&&Object.prototype.hasOwnProperty.call(o,"KHR_draco_mesh_compression"))return!0;t.push(...Object.values(n))}return!1}function go(e,t){return!Array.isArray(e)||e.length!==t||!e.every(n=>typeof n=="number"&&Number.isFinite(n))?null:e}function yp(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function gp(e,t){let n=new Array(16).fill(0);for(let o=0;o<4;o++)for(let r=0;r<4;r++)for(let i=0;i<4;i++)n[o*4+r]+=e[i*4+r]*t[o*4+i];return n}function xp(e){let t=go(e.matrix,16);if(t)return t;if(e.matrix!==void 0)return null;let n=e.translation===void 0?[0,0,0]:go(e.translation,3),o=e.rotation===void 0?[0,0,0,1]:go(e.rotation,4),r=e.scale===void 0?[1,1,1]:go(e.scale,3);if(!n||!o||!r)return null;let[i,a,s,c]=o,u=Math.hypot(i,a,s,c);if(!(u>1e-8))return null;let l=i/u,m=a/u,h=s/u,d=c/u,f=l+l,p=m+m,b=h+h,y=l*f,g=l*p,M=l*b,v=m*p,R=m*b,P=h*b,x=d*f,S=d*p,w=d*b;return[(1-(v+P))*r[0],(g+w)*r[0],(M-S)*r[0],0,(g-w)*r[1],(1-(y+P))*r[1],(R+x)*r[1],0,(M+S)*r[2],(R-x)*r[2],(1-(y+v))*r[2],0,n[0],n[1],n[2],1]}function vp(e,t,n,o){return[e[0]*t+e[4]*n+e[8]*o+e[12],e[1]*t+e[5]*n+e[9]*o+e[13],e[2]*t+e[6]*n+e[10]*o+e[14]]}function Mp(e){let t=e[0],n=e[4],o=e[8],r=e[1],i=e[5],a=e[9],s=e[2],c=e[6],u=e[10],l=i*u-a*c,m=a*s-r*u,h=r*c-i*s,d=t*l+n*m+o*h;if(Math.abs(d)<1e-12)return null;let f=1/d;return[l*f,m*f,h*f,(o*c-n*u)*f,(t*u-o*s)*f,(n*s-t*c)*f,(n*a-o*i)*f,(o*r-t*a)*f,(t*i-n*r)*f]}function Ic(e,t,n,o){let r=e[0]*t+e[1]*n+e[2]*o,i=e[3]*t+e[4]*n+e[5]*o,a=e[6]*t+e[7]*n+e[8]*o,s=Math.hypot(r,i,a)||1;return r/=s,i/=s,a/=s,[r,i,a]}function Sp(e){if(e.byteLength<20||e.byteLength>8388608)return null;let t=new DataView(e.buffer,e.byteOffset,e.byteLength);if(t.getUint32(0,!0)!==1179937895||t.getUint32(4,!0)!==2||t.getUint32(8,!0)!==e.byteLength)return null;let n=12,o=null,r=null;for(;n+8<=e.byteLength;){let i=t.getUint32(n,!0),a=t.getUint32(n+4,!0);if(n+=8,i%4!==0||n+i>e.byteLength)return null;let s=e.subarray(n,n+i);if(a===1313821514&&!o)try{let c=JSON.parse(new TextDecoder().decode(s).replace(/[\u0000 ]+$/g,""));if(!Ne(c))return null;o=c}catch{return null}else if(a===5130562&&!r)r=s;else return null;n+=i}return n===e.byteLength&&o&&r?{json:o,bin:r}:null}function wp(e){return e===5120||e===5121?1:e===5122||e===5123?2:e===5125||e===5126?4:0}function Pp(e){return e==="SCALAR"?1:e==="VEC2"?2:e==="VEC3"?3:e==="VEC4"?4:0}function Ip(e,t,n){return n===5120?e.getInt8(t):n===5121?e.getUint8(t):n===5122?e.getInt16(t,!0):n===5123?e.getUint16(t,!0):n===5125?e.getUint32(t,!0):e.getFloat32(t,!0)}function Rp(e){let t=e instanceof Uint8Array?e:new Uint8Array(e),n=Sp(t);if(!n)return{ok:!1,issue:"invalid_glb"};let{json:o,bin:r}=n;if(!Ne(o.asset)||o.asset.version!=="2.0")return{ok:!1,issue:"unsupported_glb"};let i=Be(o.extensionsUsed).filter(v=>typeof v=="string");if(i.includes("KHR_draco_mesh_compression")||bp(o))return{ok:!1,issue:"draco_not_allowed"};if(i.length||Be(o.extensionsRequired).length)return{ok:!1,issue:"unsupported_glb"};if(Be(o.images).length||Be(o.textures).length)return{ok:!1,issue:"external_resource"};let a=Be(o.buffers);if(a.length!==1||!Ne(a[0])||a[0].uri!==void 0||typeof a[0].byteLength!="number"||!Number.isInteger(a[0].byteLength)||a[0].byteLength<0||a[0].byteLength>r.byteLength)return{ok:!1,issue:"external_resource"};let s=Be(o.accessors),c=Be(o.bufferViews),u=Be(o.meshes),l=Be(o.nodes),m=Be(o.scenes),h=typeof o.scene=="number"?o.scene:0;if(!Ne(m[h]))return{ok:!1,issue:"unsupported_glb"};let d=new DataView(r.buffer,r.byteOffset,r.byteLength),f=(v,R,P)=>{if(typeof v!="number"||!Number.isInteger(v)||!Ne(s[v]))return null;let x=s[v];if(x.type!==R||x.sparse!==void 0||x.normalized===!0||typeof x.count!="number"||!Number.isInteger(x.count)||x.count<1||typeof x.componentType!="number"||!P.includes(x.componentType)||typeof x.bufferView!="number")return null;let S=c[x.bufferView];if(!Ne(S)||S.buffer!==0||typeof S.byteLength!="number"||!Number.isInteger(S.byteLength)||S.byteLength<0)return null;let w=Pp(x.type),I=wp(x.componentType),L=typeof S.byteStride=="number"?S.byteStride:w*I,O=typeof S.byteOffset=="number"?S.byteOffset:0,D=typeof x.byteOffset=="number"?x.byteOffset:0,A=O+D,E=D+(x.count-1)*L+w*I;if(!Number.isInteger(L)||!Number.isInteger(O)||!Number.isInteger(D)||L<w*I||O<0||D<0||O+S.byteLength>r.byteLength||E>S.byteLength)return null;let T=[];for(let V=0;V<x.count;V++){let _=[];for(let k=0;k<w;k++){let H=Ip(d,A+V*L+k*I,x.componentType);if(!Number.isFinite(H))return null;_.push(H)}T.push(_)}return T},p=[],b=[],y=0,g=new Set,M=(v,R)=>{if(typeof v!="number"||!Number.isInteger(v)||!Ne(l[v])||g.has(v))return!1;g.add(v);let P=l[v],x=xp(P);if(!x)return!1;let S=gp(R,x),w=Mp(S);if(!w)return!1;if(P.mesh!==void 0){if(typeof P.mesh!="number")return!1;let I=u[P.mesh];if(!Ne(I))return!1;for(let L of Be(I.primitives)){if(!Ne(L)||L.mode!==void 0&&L.mode!==4||!Ne(L.attributes))return!1;let O=f(L.attributes.POSITION,"VEC3",[5126]),D=L.attributes.NORMAL===void 0?null:f(L.attributes.NORMAL,"VEC3",[5126]);if(!O||L.attributes.NORMAL!==void 0&&!D)return!1;let A=O.length;if(L.indices!==void 0){let T=typeof L.indices=="number"?s[L.indices]:null;A=Ne(T)?T.count:void 0}if(typeof A!="number"||!Number.isInteger(A)||A%3!==0||(y+=A/3,y>1e5))return!1;let E=L.indices===void 0?O.map((T,V)=>[V]):f(L.indices,"SCALAR",[5121,5123,5125]);if(!E||E.length%3!==0||E.length!==A)return!1;for(let T=0;T<E.length;T+=3){let V=[E[T][0],E[T+1][0],E[T+2][0]];if(V.some(H=>!Number.isInteger(H)||H<0||H>=O.length))return!1;let _=V.map(H=>vp(S,...O[H])),k=null;if(!D){let H=_[1][0]-_[0][0],B=_[1][1]-_[0][1],F=_[1][2]-_[0][2],G=_[2][0]-_[0][0],j=_[2][1]-_[0][1],N=_[2][2]-_[0][2];k=Ic([1,0,0,0,1,0,0,0,1],B*N-F*j,F*G-H*N,H*j-B*G)}for(let H=0;H<3;H++)p.push(..._[H]),b.push(...D?Ic(w,...D[V[H]]):k)}}}for(let I of Be(P.children))if(!M(I,S))return!1;return g.delete(v),!0};for(let v of Be(m[h].nodes))if(!M(v,yp()))return{ok:!1,issue:y>1e5?"triangle_limit":"unsupported_glb"};return!y||p.length!==y*9||b.length!==p.length?{ok:!1,issue:"unsupported_glb"}:{ok:!0,triangleCount:y,position:new Float32Array(p),normal:new Float32Array(b)}}function Rc(e){try{return Rp(e)}catch{return{ok:!1,issue:"invalid_glb"}}}function $t(e){let{doc:t}=e,n=Ji(t.theme),o=n.structure,r=Ua(t,e.eventConfigurationId??t.eventConfigurationId),i=Sc(e.eventConfigurationId,e.eventConfiguration,r),a=e.seats,s=new jn,c=null;if(e.registeredShellGlb){let Y=Rc(e.registeredShellGlb);if(Y.ok){let W=Y.position.length/3,Q=new Float32Array(Y.position.length),te=n.materials.shell??o.tierWall;for(let $=0;$<W;$++){let ne=Y.normal[$*3+1],ee=ne<-.25?.4:.62+.38*Math.max(0,ne);Q[$*3]=te[0]*ee,Q[$*3+1]=te[1]*ee,Q[$*3+2]=te[2]*ee}c={position:Y.position,normal:Y.normal,color:Q,floor:new Float32Array(W).fill(-2),material:new Float32Array(W),count:W}}}let u=new Map;for(let Y of r)for(let W of Y.objects)u.set(W.id,Y.index),W.type==="section"&&u.set(W.logicalSectionId??W.id,Y.index);let l=a.map(Y=>u.get(Y.sectionId??"")??u.get(Y.rowId??"")??0),m=Fr(r,a),h=s.vertexCount,f=vc(s,r,a,l,m,o,he(n.background.top,n.background.bottom,.5))?s.vertexCount:h,p=$a(t,a),b=new Map,y=new Map;for(let Y of t.categories??[])b.set(Y.key,Y.color),Y.seatGlyph&&y.set(Y.key,Y.seatGlyph);let g=[],M=Ka(r,a,l),v=new Map;a.forEach((Y,W)=>{let Q=M.seatDeckY(W);Number.isFinite(Q)&&v.set(Y.rowId,Math.min(v.get(Y.rowId)??1/0,Q))});let R=new Float32Array(a.length),P=[],x=new Map((t.floors??[]).map((Y,W)=>[Y.id,W])),S=r.map(()=>[]);for(let Y of a){let W=Y.floorId?x.get(Y.floorId)??0:0;S[Math.min(W,S.length-1)]?.push(Y)}let w=(Y,W)=>{if(!W||W.length<3)return!1;let Q=Math.min(...W.map(ee=>ee.x)),te=Math.max(...W.map(ee=>ee.x)),$=Math.min(...W.map(ee=>ee.y)),ne=Math.max(...W.map(ee=>ee.y));for(let ee=0;ee<Y;ee++)for(let q of S[ee])if(!(q.x<Q||q.x>te||q.y<$||q.y>ne)&&Te(q,W,void 0))return!0;return!1},I=null,L=Y=>r.length===1?a:a.filter((W,Q)=>l[Q]===Y),O=(Y,W)=>{let Q=qe(Y);if(!Q)return!1;let te=1/0,$=1/0,ne=-1/0,ee=-1/0;for(let q of Q)te=Math.min(te,q.x),ne=Math.max(ne,q.x),$=Math.min($,q.y),ee=Math.max(ee,q.y);return a.some((q,le)=>q.kind!=="booth"&&(r.length===1||l[le]===W)&&q.x>te&&q.x<ne&&q.y>$&&q.y<ee&&De(Q,q.x,q.y))};for(let Y=0;Y<r.length;Y++){let W=r[Y];s.setFloor(Y);let Q=new eo,te=[],$=W.objects.filter(q=>q.type==="shape"&&(q.role==="entrance"||q.role==="exit")),ne=W.objects.filter(q=>q.type==="section"&&!!q.outline&&q.outline.length>=3),ee=Ps(W.objects.filter(q=>q.type==="booth"),W.focal);for(let q of W.objects)if(q.type==="section"){let le=s.vertexCount;Bs(s,q,W,Za(q,p),M.bySection.get(q.id),Q,ne,o,Y>0&&w(Y,q.outline));let re=s.vertexCount-le;re>0&&P.push({sectionId:q.id,start:le,count:re})}else if(q.type==="shape"){let le=i.byObjectId.get(q.id),re=g.length;s.setMaterial((le?.kind??q.role)==="screen"?1:0);let Le=q.role==="stage"&&!le?Rs(q,L(Y)):q,Ce=Ja(Le,te);if(vs(s,Le,W.baseHeightM+Ce.supportOffsetM,Ce.topOffsetM-Ce.supportOffsetM,o,W.focal,g,le,$),s.setMaterial(0),q.role==="stage"&&!le&&g.length>re&&(I??Y)===Y){I=Y;let we=t.floors?.[Y]?.id,ve=r.length>1&&we?a.filter(tt=>tt.floorId===we):a;Pc(s,Le,g[g.length-1].y,ve)}}else q.type==="gaArea"?Ss(s,q,W.baseHeightM,de(b.get(q.categoryKey)),o):q.type==="booth"?ys(s,q,W.baseHeightM,de(b.get(q.categoryKey)),o,ee.get(q.id)??W.focal,O(q,Y)):q.type==="table"?xs(s,q,Math.max(W.baseHeightM,v.get(q.id)??W.baseHeightM),de(q.fill??t.theme?.decorFill??"#232c40"),o,!!(q.fill??t.theme?.decorFill)):q.type==="decorImage"&&Ms(s,q,W.baseHeightM,o);Vs(s,W,a,M,o,n.materials.shell,!c)}let D=r.length>1?{x:r.reduce((Y,W)=>Y+W.focal.x,0)/r.length,y:r.reduce((Y,W)=>Y+W.focal.y,0)/r.length}:t.focalPoint??{x:(m.minX+m.maxX)/2,y:(m.minY+m.maxY)/2},A=Ki(c?[s.build(),c]:[s.build()]),E=$i(a,e.initialState,M,R,b,y),T=mc({doc:t,units:r,seats:a,surfaces:M,focal:D}),{labels:V,sections:_,rows:k}=fc({doc:t,units:r,seats:a,surfaces:M,seatData:E,hintedSeatFloor:l,zones:T,focal:D}),H=new Map(_.map((Y,W)=>[Y.id,W]));M.seatOwner.forEach((Y,W)=>{E.iSection[W]=Y?H.get(Y)??-1:-1});let B=hc({doc:t,units:r,seats:a,surfaces:M,solids:A,hintedSeatFloor:l,seatFloor:R});dc(V,B),E.iYaw=gi(E.iPosition,a.length,Y=>a[Y].rowId,Y=>{let W=r[R[Y]]?.focal??D;return[W.x*C,W.y*C]});let F=(m.minX+m.maxX)/2*C,G=(m.minY+m.maxY)/2*C,j=.5*Math.hypot((m.maxX-m.minX)*C,(m.maxY-m.minY)*C)||10,N=Dr(A,E,{cx:F,cz:G,radius:j},[h,f]),z=Dr(A,E,{cx:F,cz:G,radius:j}),K=Mc(E,g,m,N.minY,N.maxY,j);return{sharedAisles:Zi(r.flatMap(Y=>Y.objects.flatMap(W=>{if(W.type!=="section")return[];let Q=M.bySection.get(W.id);return Q?[{sectionId:W.id,floorIndex:Y.index,rows:Q.rowLevels}]:[]}))),solids:A,sectionSolidRanges:P,seats:E,seatSectionIds:M.seatOwner,bounds:{center:[(K.min[0]+K.max[0])/2,(K.min[1]+K.max[1])/2,(K.min[2]+K.max[2])/2],radius:j,groundY:0,box:K},renderBounds:{center:N.center,radius:N.radius},clipBounds:{center:z.center,radius:z.radius},stateColorLUT:ea(n,Re),theme:n,seatCount:a.length,focalWorld:[D.x*C,1.5,D.y*C],zones:T,stages:g,productionElements:i.elements,sections:_,rows:k,labels:V,floors:B}}var gt=require("ogl"),Ap=.05,Cp=.6,Ep=12,_p=1.6,Tp=1,kp=2.5,Lp=650,Ac=24;function Fp(e){let t=[],n=[],o=[],r=(m,h,d)=>{t.push(...m),n.push(...h),o.push(d)};for(let m=0;m<16;m++){let h=m/16*Math.PI*2,d=(m+1)/16*Math.PI*2,f=M=>[Math.cos(M),0,Math.sin(M)],p=[Math.cos(h)*.012,0,Math.sin(h)*.012],b=[Math.cos(d)*.012,0,Math.sin(d)*.012],y=[Math.cos(h)*.03,1,Math.sin(h)*.03],g=[Math.cos(d)*.03,1,Math.sin(d)*.03];r(p,f(h),0),r(y,f(h),0),r(g,f(d),0),r(p,f(h),0),r(g,f(d),0),r(b,f(d),0)}let c=.16,u=.24,l=.01;for(let m=0;m<48;m++){let h=m/48*Math.PI*2,d=(m+1)/48*Math.PI*2,f=[Math.cos(h)*c,l,Math.sin(h)*c],p=[Math.cos(h)*u,l,Math.sin(h)*u],b=[Math.cos(d)*u,l,Math.sin(d)*u],y=[Math.cos(d)*c,l,Math.sin(d)*c];for(let g of[f,p,b,f,b,y])r(g,[0,1,0],1)}return new gt.Geometry(e,{position:{size:3,data:new Float32Array(t)},normal:{size:3,data:new Float32Array(n)},part:{size:1,data:new Float32Array(o)}})}var Dp=`#version 300 es
|
|
20
|
+
}`});async function hu(e,t,n,o={}){let r=o.fadeMs??400,i=t?.initialBearingDeg??0,a=Math.max(-rt,Math.min(rt,t?.initialPitchDeg??0)),s=Oo,c=!1,l=new AbortController,u=()=>l.abort();o.signal?.addEventListener("abort",u,{once:!0});let m=()=>{},h=[n.camera.position.x,n.camera.position.y,n.camera.position.z];if(!t&&n.cameraOriginWorld&&n.camera.position.set(n.cameraOriginWorld[0],n.cameraOriginWorld[1],n.cameraOriginWorld[2]),!t&&n.focalWorld){let B=n.camera.position,D=n.focalWorld[0]-B.x,G=n.focalWorld[1]-B.y,j=n.focalWorld[2]-B.z,V=Math.hypot(D,j);V>.001&&(i=Math.atan2(D,-j)*180/Math.PI,a=Math.max(-rt,Math.min(rt,Math.atan2(G,V)*180/Math.PI)))}let d=null;if(t){let B=n.gl.getParameter(n.gl.MAX_TEXTURE_SIZE),D=ko(t,To(B)),G;try{let j=t.resolveUrl?await t.resolveUrl(D.initialUrl):D.initialUrl;if(!j)throw new Error("panorama_asset_unavailable");G=await Dn(j,l.signal)}catch{return o.signal?.removeEventListener("abort",u),null}try{d=mu(n.gl,G)}catch{return l.abort(),o.signal?.removeEventListener("abort",u),null}d.mesh.renderOrder=999,d.mesh.setParent(n.scene),D.upgradeUrl&&(m=Lo(()=>{(t.resolveUrl?t.resolveUrl(D.upgradeUrl):Promise.resolve(D.upgradeUrl)).then(V=>!V||l.signal.aborted?null:Dn(V,l.signal)).then(V=>{V&&(c||l.signal.aborted||(d?.setImage(V),n.requestRender()))}).catch(()=>{})}))}let f=n.camera.fov;n.camera.perspective({fov:s,aspect:n.camera.aspect});let p=n.camera.quaternion.slice(),b=()=>{let B=n.camera.position;d?.mesh.position.set(B.x,B.y,B.z);let[D,G,j]=uu(i,a);n.camera.lookAt([B.x+D,B.y+G,B.z+j]),n.requestRender()};b();let y=document.createElement("div"),g=document.activeElement instanceof HTMLElement?document.activeElement:null;y.setAttribute("role","dialog"),y.setAttribute("aria-modal","true"),y.setAttribute("aria-label",o.seatLabel?`View from ${o.seatLabel}`:"View from seat"),y.tabIndex=-1,Object.assign(y.style,{position:"absolute",inset:"0",zIndex:"10",cursor:"grab",touchAction:"none"});let M=document.createElement("button");if(M.type="button",M.setAttribute("aria-label","Close"),M.textContent="\u2715",Object.assign(M.style,{position:"absolute",top:"12px",right:"12px",zIndex:"2",width:"44px",height:"44px",borderRadius:"999px",cursor:"pointer",border:"1px solid rgba(255,255,255,0.25)",background:"rgba(8,12,18,0.6)",color:"#e6edf3",fontSize:"15px",lineHeight:"1"}),y.appendChild(M),o.disclosure){let B=document.createElement("div");B.textContent=`${o.disclosurePrefix??"360\xB0 panorama"} \xB7 ${o.disclosure}`,Object.assign(B.style,{position:"absolute",top:"calc(12px + var(--sl-3d-top-inset, 0px))",left:"12px",zIndex:"2",maxWidth:"calc(100% - 88px)",padding:"8px 11px",borderRadius:"999px",overflow:"hidden",color:"#dce6f8",background:"rgba(8,12,18,0.68)",font:"600 11px/1.2 ui-sans-serif, system-ui, sans-serif",textOverflow:"ellipsis",whiteSpace:"nowrap",pointerEvents:"none",backdropFilter:"blur(6px)"}),y.appendChild(B)}let P=document.createElement("div");P.textContent=ci(o.lookAroundHint),Object.assign(P.style,{position:"absolute",bottom:"12px",left:"0",right:"0",textAlign:"center",color:"rgba(230,237,243,0.7)",font:"12px ui-sans-serif, system-ui, sans-serif",pointerEvents:"none"}),y.appendChild(P),e.appendChild(y),M.focus({preventScroll:!0});let I=!1,S=0,x=0,v=0,w=new Map,R=()=>{let[B,D]=[...w.values()];return B&&D?Math.hypot(B.x-D.x,B.y-D.y):0},T=B=>{let D=si(B);D!==s&&(s=D,n.camera.perspective({fov:s,aspect:n.camera.aspect}),b())},O=B=>{B.target!==M&&(w.set(B.pointerId,{x:B.clientX,y:B.clientY}),I=w.size===1,S=B.clientX,x=B.clientY,w.size===2&&(v=R()),y.setPointerCapture?.(B.pointerId),y.style.cursor="grabbing")},C=B=>{if(w.has(B.pointerId)){if(w.set(B.pointerId,{x:B.clientX,y:B.clientY}),w.size>=2){let D=R();v>0&&D>0&&T(s*(v/D)),v=D,I=!1;return}I&&(i+=(B.clientX-S)*du,a=Math.max(-rt,Math.min(rt,a+(B.clientY-x)*du)),S=B.clientX,x=B.clientY,b())}},A=B=>{w.delete(B.pointerId),v=w.size===2?R():0;let D=w.values().next().value;I=w.size===1,D?(S=D.x,x=D.y):y.style.cursor="grab";try{y.releasePointerCapture?.(B.pointerId)}catch{}},_=B=>{B.preventDefault(),T(s+B.deltaY*.04)};y.addEventListener("pointerdown",O),y.addEventListener("pointermove",C),y.addEventListener("pointerup",A),y.addEventListener("pointercancel",A),y.addEventListener("wheel",_,{passive:!1});let L=B=>{if(!c){if(B.key==="Tab"){B.preventDefault(),M.focus({preventScroll:!0});return}if(B.key==="Escape"){B.stopPropagation(),H.close();return}if(B.key==="ArrowLeft"||B.key==="ArrowRight")i+=B.key==="ArrowLeft"?-4:4;else if(B.key==="ArrowUp"||B.key==="ArrowDown")a=Math.max(-rt,Math.min(rt,a+(B.key==="ArrowUp"?4:-4)));else if(B.key==="+"||B.key==="="){T(s-5),B.preventDefault();return}else if(B.key==="-"){T(s+5),B.preventDefault();return}else return;B.preventDefault(),b()}};window.addEventListener("keydown",L);let N=0,k=(B,D)=>{if(!d){D?.();return}let G=B===1?0:1,j=performance.now(),V=()=>{if(c)return;let z=r<=0?1:Math.min(1,(performance.now()-j)/r);d?.setOpacity(G+(B-G)*z),n.requestRender(),z<1?N=requestAnimationFrame(V):D?.()};N=requestAnimationFrame(V)};k(1);let F=()=>{c||(c=!0,m(),l.abort(),o.signal?.removeEventListener("abort",u),cancelAnimationFrame(N),y.removeEventListener("pointerdown",O),y.removeEventListener("pointermove",C),y.removeEventListener("pointerup",A),y.removeEventListener("pointercancel",A),y.removeEventListener("wheel",_),window.removeEventListener("keydown",L),y.remove(),g?.isConnected&&g.focus({preventScroll:!0}),d?.dispose(),n.camera.position.set(h[0],h[1],h[2]),n.camera.perspective({fov:f,aspect:n.camera.aspect}),n.camera.quaternion.set(p[0],p[1],p[2],p[3]),n.requestRender())},H={close(){if(c)return;let B=()=>{F(),o.onClose?.()};cancelAnimationFrame(N),k(0,B)},dispose:F};return M.addEventListener("click",()=>H.close()),H}var du,pu=cn(()=>{"use strict";fu();Do();Do();ai();du=.15});var bu={};wi(bu,{createOpenPanorama:()=>c0});function c0(e){let{container:t,model:n,opts:o,analytics:r,orbit:i,loop:a,seatsById:s,ensureSeatView:c,resolvedSeatViewPose:l,gpu:u,gl:m,isContextLost:h,isDisposed:d,flightGen:f,setPanorama:p,getLoadAbort:b,setLoadAbort:y,setPanoramaSphereVisible:g,setFrozen:M,raisePanoramaLayer:P,restorePanoramaLayer:I,getOverviewChip:S,labelOverlay:x,reducedMotion:v,removeArriveChip:w,showArriveChip:R}=e;return async(T,O,C)=>{b()?.abort();let A=new AbortController;y(A);let _=n.seats.idToIndex.get(T);if(_===void 0){i.syncFromCamera();return}let L=s.get(T)?.label??T,N=l(T,_),k=c(T);if(!k){A.abort(),b()===A&&y(null),i.syncFromCamera();return}M(!0),a.stop();let F;try{F=await k}catch{if(b()===A&&y(null),r.panoramaFailed(T,"source"),!d()&&C===f()){M(!1),i.resumeAfterFlight(N.focal),a.requestRender();let q=R(T,C,!0);requestAnimationFrame(()=>q?.querySelector("[data-panorama-trigger]")?.focus())}return}if(d()||C!==f()){A.abort(),b()===A&&y(null);return}w();let H=S(),B=()=>{A.abort(),b()===A&&y(null),p(null),g(!1),I(),H.style.display="",x.setVisible(!o.arriveAtSeatEye),M(!1),r.panoramaClosed(),i.resumeAfterFlight(N.focal),a.requestRender();let q=R(T,f());requestAnimationFrame(()=>q?.querySelector("[data-panorama-trigger]")?.focus())},D=F.generated===!0,G=cu(F);P(),g(!D),H.style.display="none";let j=v()?0:O,V=u(),z=V&&!h()?await hu(t,D?null:F,{gl:m,scene:V.main,camera:i.camera,requestRender:()=>a.requestRender(),cameraOriginWorld:D?N.eye:void 0,focalWorld:N.focal},{fadeMs:j,seatLabel:L,disclosure:G,disclosurePrefix:D?"Live 3D view":"360\xB0 panorama",lookAroundHint:o.lookAroundHint,onClose:B,signal:A.signal}):null;if(d()||C!==f()){A.abort(),g(!1),b()===A&&y(null),z?.dispose(),H.style.display="",I();return}if(z)i.syncFromCamera(),x.setVisible(!1),M(!1),a.requestRender(),p(z);else if(D){I(),H.style.display="",M(!1),i.resumeAfterFlight(N.focal),a.requestRender(),p(null),g(!1),r.panoramaFailed(T,"mount");let q=R(T,f(),!0);requestAnimationFrame(()=>q?.querySelector("[data-panorama-trigger]")?.focus()),b()===A&&y(null);return}else g(!1),r.panoramaFallback(T),p(lu(t,F,{fadeMs:j,seatLabel:L,disclosure:G,onClose:B,signal:A.signal,lookAroundHint:o.lookAroundHint}));r.panoramaOpened()}}var yu=cn(()=>{"use strict";Do();pu()});var w0={};wi(w0,{VENUE3D_QUALITY_REPORT_VERSION:()=>ll,autoVenue3d:()=>vo,buildSceneModel:()=>Qt,estimateVenue3D:()=>Bn,inspectVenue3DQualityEvidence:()=>Po,mountVenue3D:()=>S0,prepareVenue3D:()=>ku,prepareVenue3DFromChart:()=>Lu});module.exports=Zu(w0);function Ii(e,t,n){let o=Math.floor(t.length/3),r=n.center[0],i=n.center[2];if(o>0){let c=Math.max(1,Math.floor(o/4e3)),l=0,u=0,m=0;for(let h=0;h<o;h+=c)l+=t[h*3],u+=t[h*3+2],m++;r=l/m,i=u/m}let a=e[0]-r,s=e[2]-i;return Math.hypot(a,s)>n.radius*.12?Math.atan2(a,s):void 0}var Fu=require("ogl");function Ri(e,t,n="#ffffff"){let{iPosition:o,count:r}=t.seats;if(r<2||typeof document>"u")return null;let i=1/0,a=-1/0,s=1/0,c=-1/0;for(let I=0;I<r;I++){let S=o[I*3],x=o[I*3+2];S<i&&(i=S),S>a&&(a=S),x<s&&(s=x),x>c&&(c=x)}for(let I of t.stages)i=Math.min(i,I.cx-I.halfX),a=Math.max(a,I.cx+I.halfX),s=Math.min(s,I.cz-I.halfZ),c=Math.max(c,I.cz+I.halfZ);let l=Math.min(130/Math.max(.001,a-i),86/Math.max(.001,c-s)),u=(148-(a-i)*l)/2,m=(104-(c-s)*l)/2,h=I=>u+(I-i)*l,d=I=>m+(I-s)*l,f=Math.min(2,typeof window<"u"&&window.devicePixelRatio||1),p=document.createElement("canvas");p.width=Math.round(148*f),p.height=Math.round(104*f),p.setAttribute("aria-hidden","true"),p.setAttribute("data-seat-locator","");let b=p.style;b.position="absolute",b.left="12px",b.bottom="12px",b.width="148px",b.height="104px",b.borderRadius="10px",b.background="rgba(10,14,22,.72)",b.border="1px solid rgba(255,255,255,.14)",b.boxShadow="0 4px 14px rgba(0,0,0,.35)",b.pointerEvents="none",b.zIndex="3",b.display="none",e.appendChild(p);let y=document.createElement("canvas");y.width=p.width,y.height=p.height;let g=y.getContext("2d");if(g){g.scale(f,f),g.fillStyle="rgba(214,222,234,.28)";let I=Math.max(1,Math.ceil(r/6e3));for(let S=0;S<r;S+=I)g.fillRect(h(o[S*3])-.6,d(o[S*3+2])-.6,1.2,1.2);g.fillStyle="rgba(236,240,246,.16)",g.strokeStyle="rgba(236,240,246,.55)",g.lineWidth=1;for(let S of t.stages){let x=h(S.cx-S.halfX),v=d(S.cz-S.halfZ),w=S.halfX*2*l,R=S.halfZ*2*l;g.fillRect(x,v,w,R),g.strokeRect(x+.5,v+.5,Math.max(0,w-1),Math.max(0,R-1))}}let M=p.getContext("2d"),P="";return{el:p,update(I,S){if(!I||!M||e.clientWidth>0&&e.clientWidth<560){b.display!=="none"&&(b.display="none"),P="";return}let x=h(I[0]),v=d(I[2]),w=S?Math.atan2(S[2],S[0]):0,R=`${x.toFixed(1)},${v.toFixed(1)},${w.toFixed(2)}`;if(R!==P){if(P=R,b.display="block",M.setTransform(1,0,0,1,0,0),M.clearRect(0,0,p.width,p.height),M.drawImage(y,0,0),M.setTransform(f,0,0,f,0,0),S){let T=M.createRadialGradient(x,v,0,x,v,26);T.addColorStop(0,"rgba(255,255,255,.55)"),T.addColorStop(1,"rgba(255,255,255,0)"),M.fillStyle=T,M.beginPath(),M.moveTo(x,v),M.arc(x,v,26,w-.5,w+.5),M.closePath(),M.fill()}M.fillStyle=n,M.strokeStyle="rgba(10,14,22,.9)",M.lineWidth=1.5,M.beginPath(),M.arc(x,v,3.6,0,Math.PI*2),M.fill(),M.stroke()}},dispose(){p.remove()}}}var Me={pedestal:0,pad:1,back:2,arm:3,footrest:4,leg:5,body:10,head:11},Qu=.44,Ju=.15,Ai=.3,em=.24;function Ei(e){return e===void 0||!Number.isFinite(e)||e<=0?em:Math.min(Ai,Math.max(Ju,e*Qu))}var un=.21,tm=.05,qo=.45,ft=qo+tm,mn=.92,ln=.66,$o=1.205,Ci=-.23,_i=.38,nm=[{part:Me.pedestal,min:[-.3,0,-.3],max:[.3,.36,.3]},{part:Me.pad,min:[-1,.36,-.95],max:[1,qo,1]},{part:Me.back,min:[-1,ft,-1],max:[1,mn,-.72]},{part:Me.arm,min:[-1,.44,-.82],max:[-.78,.65,.78]},{part:Me.arm,min:[.78,.44,-.82],max:[1,.65,.78]},{part:Me.footrest,min:[-.9,.18,.78],max:[.9,.31,1.34]},{part:Me.leg,min:[-.82,0,-.7],max:[-.62,.37,-.48]},{part:Me.leg,min:[.62,0,-.7],max:[.82,.37,-.48]},{part:Me.leg,min:[-.82,0,.48],max:[-.62,.37,.7]},{part:Me.leg,min:[.62,0,.48],max:[.82,.37,.7]}],om=[{part:Me.body,min:[-.52,.39,-.08],max:[-.08,.55,.82]},{part:Me.body,min:[.08,.39,-.08],max:[.52,.55,.82]},{part:Me.body,min:[-.47,.05,.58],max:[-.13,.43,.82]},{part:Me.body,min:[.13,.05,.58],max:[.47,.43,.82]},{part:Me.head,min:[-.16,1.04,-.33],max:[.16,1.1,-.13]}],rm=[{n:[1,0,0],c:[[1,0,0],[1,1,0],[1,1,1],[1,0,1]]},{n:[-1,0,0],c:[[0,0,1],[0,1,1],[0,1,0],[0,0,0]]},{n:[0,1,0],c:[[0,1,0],[0,1,1],[1,1,1],[1,1,0]]},{n:[0,-1,0],c:[[0,0,1],[0,0,0],[1,0,0],[1,0,1]]},{n:[0,0,1],c:[[0,0,1],[1,0,1],[1,1,1],[0,1,1]]},{n:[0,0,-1],c:[[1,0,0],[0,0,0],[0,1,0],[1,1,0]]}];function Ti(){let e=[],t=[],n=[],o=[],r=(L,N,k)=>{let F=n.length,[H,B,D]=L,G=[B[0]-H[0],B[1]-H[1],B[2]-H[2]],j=[D[0]-H[0],D[1]-H[1],D[2]-H[2]],V=G[1]*j[2]-G[2]*j[1],z=G[2]*j[0]-G[0]*j[2],q=G[0]*j[1]-G[1]*j[0],$=Math.hypot(V,z,q);$>1e-9?(V/=$,z/=$,q/=$):[V,z,q]=N,V*N[0]+z*N[1]+q*N[2]<0&&(V=-V,z=-z,q=-q);for(let re of L)e.push(...re),t.push(V,z,q),n.push(k);o.push(F,F+1,F+2,F,F+2,F+3)},i=L=>{for(let N of rm){let k=N.c.map(F=>F.map((H,B)=>H?L.max[B]:L.min[B]));r(k,N.n,L.part)}},a=(L,N)=>{let[k,F,H]=N?[0,1,2]:[0,2,1],B=L.min[k],D=L.max[k],G=L.min[F],j=L.max[F],V=(D-B)*.1,z=(j-G)*.1,q=N?[[B+V,G],[D-V,G],[D,G+z],[D*.94,j-(j-G)*.23],[D*ln,j],[B*ln,j],[B*.94,j-(j-G)*.23],[B,G+z]]:[[B+V,G],[D-V,G],[D,G+z],[D,j-z],[D-V,j],[B+V,j],[B,j-z],[B,G+z]],$=(Q,W,Y)=>{let K=[0,0,0];return K[k]=Q,K[F]=W,K[H]=Y,K},re=[L.min[H],L.max[H]].map(Q=>q.map(([W,Y])=>$(W,Y,Q)));for(let Q=0;Q<q.length;Q++){let W=(Q+1)%q.length,Y=[0,0,0];Y[k]=(q[Q][0]+q[W][0])/2-(B+D)/2,Y[F]=(q[Q][1]+q[W][1])/2-(G+j)/2,r([re[0][Q],re[0][W],re[1][W],re[1][Q]],Y,L.part)}for(let Q=0;Q<2;Q++){let W=[0,0,0];W[H]=Q?1:-1;let Y=re[Q];for(let K=1;K<Y.length-1;K++){let oe=n.length;for(let ee of[Y[0],Y[K],Y[K+1]])e.push(...ee),t.push(...W),n.push(L.part);o.push(oe,oe+1,oe+2)}}};for(let L of nm)L.part===Me.pad||L.part===Me.back?a(L,L.part===Me.back):i(L);for(let L of om)i(L);let s=qo,c=1.08,l=.47,u=.69,m=-.55,h=.08,d=-.48,f=.01,p=[-l,s,m],b=[l,s,m],y=[-l,s,h],g=[l,s,h],M=[-u,c,d],P=[u,c,d],I=[-u,c,f],S=[u,c,f];r([b,P,S,g],[1,0,0],Me.body),r([y,I,M,p],[-1,0,0],Me.body),r([I,S,P,M],[0,1,0],Me.body),r([p,b,g,y],[0,-1,0],Me.body),r([g,S,I,y],[0,0,1],Me.body),r([p,M,P,b],[0,0,-1],Me.body);let x=10,v=8,w=[0,$o,Ci],R=[.42,.115,_i],T=n.length;for(let L=0;L<=v;L++){let N=Math.PI*L/v,k=Math.cos(N),F=Math.sin(N);for(let H=0;H<=x;H++){let B=Math.PI*2*H/x,D=F*Math.cos(B),G=F*Math.sin(B);e.push(w[0]+R[0]*D,w[1]+R[1]*k,w[2]+R[2]*G);let j=D/R[0],V=k/R[1],z=G/R[2],q=Math.hypot(j,V,z)||1;j/=q,V/=q,z/=q,t.push(j,V,z),n.push(Me.head)}}for(let L=0;L<v;L++)for(let N=0;N<x;N++){let k=T+L*(x+1)+N,F=k+x+1;o.push(k,F,k+1,k+1,F,F+1)}let O=new Float32Array(e),C=new Float32Array(t),A=new Float32Array(n),_=new Uint16Array(o);return{position:O,normal:C,part:A,index:_,vertexCount:n.length,indexCount:o.length}}function ki(e,t,n,o){let r=new Float32Array(t),i=l=>e[l*3],a=l=>e[l*3+2],s=0,c=(l,u)=>{let m=u-l;for(let h=l;h<u;h++){let[d,f]=o(h),p=d-i(h),b=f-a(h);if(m>=2){let y=Math.max(l,h-1),g=Math.min(u-1,h+1),M=i(g)-i(y),P=a(g)-a(y),I=Math.hypot(M,P);if(I>1e-6){let S=-P/I,x=M/I;S*p+x*b<0&&(S=-S,x=-x),p=S,b=x}}r[h]=p===0&&b===0?0:Math.atan2(p,b)}};for(let l=1;l<=t;l++)(l===t||n(l)!==n(s))&&(c(s,l),s=l);return r}var Zo=78,Li=18;function Fi(){let e=[],t=[],n=[],o=[],r=[],i=[{n:[1,0,0],c:[[1,0,0],[1,1,0],[1,1,1],[1,0,1]]},{n:[-1,0,0],c:[[0,0,1],[0,1,1],[0,1,0],[0,0,0]]},{n:[0,1,0],c:[[0,1,0],[0,1,1],[1,1,1],[1,1,0]]},{n:[0,-1,0],c:[[0,0,1],[0,0,0],[1,0,0],[1,0,1]]},{n:[0,0,1],c:[[0,0,1],[1,0,1],[1,1,1],[0,1,1]]},{n:[0,0,-1],c:[[1,0,0],[0,0,0],[0,1,0],[1,1,0]]}];for(let s of[{part:1,min:[-1,.36,-.95],max:[1,.45,1]},{part:2,min:[-1,ft,-1],max:[1,mn,-.72]}])for(let c of i){let l=e.length/3,u=c.n[1]+(s.part===2?Math.abs(c.n[0])*(1-ln)/(mn-ft):0),m=Math.hypot(c.n[0],u,c.n[2]),h=[c.n[0]/m,u/m,c.n[2]/m];for(let[d,f]of c.c.entries()){let p=f.map((b,y)=>s.min[y]+b*(s.max[y]-s.min[y]));s.part===2&&(p[0]*=1-f[1]*(1-ln)),e.push(...p),t.push(...h),n.push(s.part),o.push(...[[-1,-1],[1,-1],[1,1],[-1,1]][d])}r.push(l,l+1,l+2,l,l+2,l+3)}let a=e.length/3;for(let[s,c]of[[-1,-1],[1,-1],[1,1],[-1,1]])e.push(s,c,0),t.push(0,1,0),n.push(0),o.push(s,c);return r.push(a,a+1,a+2,a,a+2,a+3),r.push(...r.slice(12,18),...r.slice(60,66),...r.slice(72,78)),{position:new Float32Array(e),normal:new Float32Array(t),surface:new Float32Array(n),uv:new Float32Array(o),index:new Uint16Array(r)}}var Gi=require("ogl");var im=/^#?([\da-f]{3}|[\da-f]{6})$/i;function Oi(e){let t=e.replace("#","");return{r:parseInt(t.slice(0,2),16),g:parseInt(t.slice(2,4),16),b:parseInt(t.slice(4,6),16)}}function am(e){let t=im.exec((e??"").trim());if(!t)return null;let n=t[1].length===3?t[1].split("").map(r=>r+r).join(""):t[1],o=parseInt(n,16);return[o>>16&255,o>>8&255,o&255]}function pe(e){let t=am(e);return t?[t[0]/255,t[1]/255,t[2]/255]:null}function Qo(e){let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4}function sm(e){return .2126*Qo(e[0])+.7152*Qo(e[1])+.0722*Qo(e[2])}function Di(e){return sm([e[0]*255,e[1]*255,e[2]*255])}function cm(e){return .2126*e[0]+.7152*e[1]+.0722*e[2]}function be(e,t,n){return[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n,e[2]+(t[2]-e[2])*n]}function Ye(e,t){let n=cm(e);return be(e,[n,n,n],t)}function Bi({r:e,g:t,b:n}){let o=e/255,r=t/255,i=n/255,a=Math.max(o,r,i),s=Math.min(o,r,i),c=(a+s)/2;if(a===s)return{h:0,s:0,l:c};let l=a-s,u=c>.5?l/(2-a-s):l/(a+s),m;return a===o?m=((r-i)/l+(r<i?6:0))/6:a===r?m=((i-o)/l+2)/6:m=((o-r)/l+4)/6,{h:m,s:u,l:c}}var Ce=["available","held","sold","selected","dimmed"];function fn(e){let t=Ce.indexOf(e);return t<0?0:t}var Ni={available:[.24,.82,.52],held:[.34,.39,.45],sold:[.34,.39,.45],selected:[.24,.74,1],dimmed:[.28,.32,.37]};function Vi(e){let t=.2126*e[0]+.7152*e[1]+.0722*e[2],n=.78,o=.86;return[(t+(e[0]-t)*n)*o,(t+(e[1]-t)*n)*o,(t+(e[2]-t)*n)*o]}var Jo={ground:[.07,.085,.11],tierTop:[.24,.28,.34],tierWall:[.17,.2,.25],stageTop:[.94,.7,.38],stageWall:[.48,.33,.18],decorTop:[.22,.25,.29],decorWall:[.15,.17,.2],gaTop:[.24,.28,.33],gaWall:[.16,.19,.23],boothTop:[.3,.33,.38],boothWall:[.2,.23,.27],tableTop:[.38,.34,.29],tableWall:[.24,.21,.18]},Et={top:[.05,.06,.08],bottom:[.1,.12,.15]};function ie(e,t){return[Math.min(1,e[0]*t),Math.min(1,e[1]*t),Math.min(1,e[2]*t)]}function lm(){let e=typeof window<"u"&&window.devicePixelRatio||1,t=navigator.deviceMemory,n=typeof t=="number"&&t<=4?1.5:2;return Math.min(e,n)}var Un=class{constructor(t,n){this.clearRgb=[0,0,0];this.container=t,this.canvas=document.createElement("canvas"),this.canvas.style.display="block",this.canvas.style.width="100%",this.canvas.style.height="100%",this.canvas.style.touchAction="none",this.canvas.tabIndex=0,this.canvas.setAttribute("role","application"),this.canvas.setAttribute("aria-label","Interactive 3D venue. Drag or use arrow keys to look around; pinch, scroll, plus or minus to zoom."),this.renderer=new Gi.Renderer({canvas:this.canvas,dpr:lm(),alpha:!1,antialias:!1,depth:!0,stencil:!1,powerPreference:"high-performance",webgl:2}),this.gl=this.renderer.gl,this.clearRgb=[Et.top[0],Et.top[1],Et.top[2]],this.gl.clearColor(this.clearRgb[0],this.clearRgb[1],this.clearRgb[2],1),t.appendChild(this.canvas),this.lostHandler=o=>{o.preventDefault(),n.onContextLost()},this.restoredHandler=()=>n.onContextRestored(),this.canvas.addEventListener("webglcontextlost",this.lostHandler,!1),this.canvas.addEventListener("webglcontextrestored",this.restoredHandler,!1),this.resize()}setClearColor(t){this.clearRgb=[t[0],t[1],t[2]],this.gl.clearColor(t[0],t[1],t[2],1)}get clearColor(){return this.clearRgb}resize(){let t=Math.max(1,this.container.clientWidth||this.canvas.clientWidth||1),n=Math.max(1,this.container.clientHeight||this.canvas.clientHeight||1);return this.renderer.setSize(t,n),{width:t,height:n}}get pixelHeight(){return this.renderer.height*this.renderer.dpr}get aspect(){return this.renderer.width/Math.max(1,this.renderer.height)}dispose(){this.canvas.removeEventListener("webglcontextlost",this.lostHandler,!1),this.canvas.removeEventListener("webglcontextrestored",this.restoredHandler,!1);let t=this.gl.getExtension("WEBGL_lose_context");t&&t.loseContext(),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas)}simulateContextLossCycle(){let t=this.gl.getExtension("WEBGL_lose_context");t&&(t.loseContext(),setTimeout(()=>{t.restoreContext&&t.restoreContext()},300))}};var Bt=require("ogl"),Re=Math.PI/180,er=15*Re,tr=80*Re,Dt=.12,Hi=35,nr=1.25,zi=.006,um=4,Nt=.82,dn=1/Nt,mm=.12,fm=2;function dm(e,t){return{azimuth:e*zi,polar:-t*zi}}function hm(e,t,n){if(!n)return 1;let o=t[0]-e[0],r=t[2]-e[2];return(n[0]-t[0])*o+(n[2]-t[2])*r<0?-1:1}function Ui(e,t,n){let o=Math.max(fm,Math.max(1,t)*mm),r=n*um;return{minDist:e?Math.min(e.minDist,o):o,maxDist:e?Math.max(e.maxDist,r):r}}var pm=1.5;function bm(e,t,n){let o=Math.max(1,n)*pm;if(!e)return{anchor:[t[0],t[1],t[2]],limit:o};let[r,i,a]=e.anchor,s=t[1]-i,c=Math.max(Math.abs(t[0]-r),Math.abs(t[2]-a),s>=0?s:-s*2);return{anchor:e.anchor,limit:Math.max(e.limit,c+o)}}function ji(e,t,n,o,r,i,a,s){let c=Math.sin(n),l=[c*Math.sin(t),Math.cos(n),c*Math.cos(t)],u=[e[0]+o*l[0],e[1]+o*l[1],e[2]+o*l[2]],m=[-l[0],-l[1],-l[2]],h=[-m[2],0,m[0]],d=Math.hypot(h[0],h[2])||1;h=[h[0]/d,0,h[2]/d];let f=[h[1]*m[2]-h[2]*m[1],h[2]*m[0]-h[0]*m[2],h[0]*m[1]-h[1]*m[0]],p=Math.tan(r*Re/2),b=p*(i>0?i:1),y=[0,1,2].map(P=>m[P]+a*b*h[P]+s*p*f[P]);if(y[1]>=-1e-6)return null;let g=(e[1]-u[1])/y[1],M=Math.hypot(y[0],y[1],y[2]);return!(g>0)||g*M>o*ym?null:[u[0]+y[0]*g,e[1],u[2]+y[2]*g]}var Xi=3,ym=4,Wi=.72;function Yi(e,t){let n=Math.sin(t),o=-n*Math.sin(e),r=-Math.cos(t),i=-n*Math.cos(e);if(Math.abs(r)>.999)return null;let a=-i,s=o,c=Math.hypot(a,s);return a/=c,s/=c,{fx:o,fy:r,fz:i,rx:a,rz:s,ux:-s*r,uy:s*o-a*i,uz:a*r}}var gm=.4;function xm(e,t,n,o,r,i){let a=[e.center[0],e.center[1],e.center[2]],s=i(a),c=e.fitPoints,l=Yi(o,r);if(!c||c.length<9||!l)return{center:a,distance:s};let{fx:u,fy:m,fz:h,rx:d,rz:f,ux:p,uy:b,uz:y}=l,g=Math.hypot(u,h),M=u/g,P=h/g,I=M*p+P*y,S=gm*Math.max(1,e.radius);for(let x=0;x<3;x++){let v=1/0,w=-1/0,R=1/0,T=-1/0;for(let N=0;N+2<c.length;N+=3){let k=c[N]-a[0],F=c[N+1]-a[1],H=c[N+2]-a[2],B=s+k*u+F*m+H*h;if(!(B>.001))continue;let D=(k*d+H*f)/(B*t),G=(k*p+F*b+H*y)/(B*n);D<v&&(v=D),D>w&&(w=D),G<R&&(R=G),G>T&&(T=G)}if(!Number.isFinite(v))break;let O=(v+w)/2*s*t,C=Math.abs(I)>.1?(R+T)/2*s*n/I:0,A=O*d+C*M,_=O*f+C*P;if(Math.hypot(a[0]+A-e.center[0],a[2]+_-e.center[2])>S){let N=a[0]-e.center[0],k=a[2]-e.center[2],F=N+A,H=k+_,B=S/Math.hypot(F,H);A=F*B-N,_=H*B-k}a=[a[0]+A,a[1],a[2]+_],s=i(a)}return{center:a,distance:s}}var jn=class{constructor(t,n,o,r){this.fovY=Hi;this.target=new Bt.Vec3;this.azimuth=-30*Re;this.polar=55*Re;this.distance=10;this.azT=-30*Re;this.polT=55*Re;this.distT=10;this.minDist=1;this.maxDist=100;this.envelope=null;this.gestureFired=!1;this.interactionEnabled=!0;this.dragging=!1;this.panning=!1;this.lastX=0;this.lastY=0;this.activePointers=new Map;this.pinchDist=0;this.pinchCx=0;this.pinchCy=0;this.targetT=new Bt.Vec3;this.panAnchor=new Bt.Vec3;this.panLimit=0;this.panBox=null;this.grabSign=1;this.zoomPointResolver=null;this.primaryDragMode="orbit";this.camera=new Bt.Camera(t,{fov:Hi,near:.1,far:5e3,aspect:1}),this.canvas=n,this.requestRender=o,this.onGesture=r,this.onPointerDown=i=>{if(this.interactionEnabled){try{this.canvas.setPointerCapture?.(i.pointerId)}catch{}if(this.activePointers.set(i.pointerId,{x:i.clientX,y:i.clientY}),this.activePointers.size===1){let a=i.button===2||i.button===1,s=i.button===0&&(i.shiftKey?this.primaryDragMode==="orbit":this.primaryDragMode==="pan");this.panning=a||s,this.dragging=!this.panning,this.dragging&&(this.grabSign=this.grabSignAt(i.clientX,i.clientY)),this.lastX=i.clientX,this.lastY=i.clientY}else if(this.activePointers.size===2){this.dragging=!1,this.panning=!1,this.pinchDist=this.currentPinchDistance();let a=this.pinchCentroid();this.pinchCx=a.x,this.pinchCy=a.y}}},this.onPointerMove=i=>{if(!this.interactionEnabled||!this.activePointers.has(i.pointerId))return;if(this.activePointers.set(i.pointerId,{x:i.clientX,y:i.clientY}),this.activePointers.size>=2){let l=this.currentPinchDistance(),u=this.pinchCentroid();this.pinchDist>0&&(this.dollyAt(Math.exp((this.pinchDist-l)*.005),u.x,u.y),this.fireGesture()),this.pinchDist=l,this.panBy(u.x-this.pinchCx,u.y-this.pinchCy),this.pinchCx=u.x,this.pinchCy=u.y;return}let a=i.clientX-this.lastX,s=i.clientY-this.lastY;if(this.panning){this.lastX=i.clientX,this.lastY=i.clientY,(a!==0||s!==0)&&(this.panBy(a,s),this.fireGesture());return}if(!this.dragging)return;this.lastX=i.clientX,this.lastY=i.clientY,(a!==0||s!==0)&&this.fireGesture();let c=dm(a,s);this.azT+=c.azimuth*this.grabSign,this.polT=Math.max(er,Math.min(tr,this.polT+c.polar)),this.requestRender()},this.onPointerUp=i=>{this.activePointers.delete(i.pointerId);try{this.canvas.releasePointerCapture?.(i.pointerId)}catch{}this.activePointers.size<2&&(this.pinchDist=0),this.activePointers.size===0&&(this.dragging=!1,this.panning=!1)},this.onContextMenu=i=>{i.preventDefault()},this.onWheel=i=>{if(i.preventDefault(),!this.interactionEnabled)return;let a=i.deltaMode===1?16:i.deltaMode===2?100:1,s=Math.max(-2,Math.min(2,i.deltaY*a/100));this.dollyAt(Math.exp(s*.22),i.clientX,i.clientY),this.fireGesture()},this.onKeyDown=i=>{if(!this.interactionEnabled)return;let a=7*Re;if(i.shiftKey&&(i.key==="ArrowLeft"||i.key==="ArrowRight"||i.key==="ArrowUp"||i.key==="ArrowDown"))this.panBy(i.key==="ArrowLeft"?-32:i.key==="ArrowRight"?32:0,i.key==="ArrowUp"?-32:i.key==="ArrowDown"?32:0);else if(i.key==="ArrowLeft"||i.key==="ArrowRight")this.azT+=i.key==="ArrowLeft"?-a:a;else if(i.key==="ArrowUp"||i.key==="ArrowDown")this.polT=Math.max(er,Math.min(tr,this.polT+(i.key==="ArrowUp"?-a:a)));else if(i.key==="+"||i.key==="=")this.dollyBy(Nt);else if(i.key==="-"||i.key==="_")this.dollyBy(dn);else return;i.preventDefault(),this.fireGesture(),this.requestRender()},n.addEventListener("pointerdown",this.onPointerDown),n.addEventListener("pointermove",this.onPointerMove),n.addEventListener("pointerup",this.onPointerUp),n.addEventListener("pointercancel",this.onPointerUp),n.addEventListener("wheel",this.onWheel,{passive:!1}),n.addEventListener("keydown",this.onKeyDown),n.addEventListener("contextmenu",this.onContextMenu)}pinchCentroid(){let t=[...this.activePointers.values()];if(!t.length)return{x:0,y:0};let n=0,o=0;for(let r of t)n+=r.x,o+=r.y;return{x:n/t.length,y:o/t.length}}panBy(t,n){let o=this.canvas.clientHeight||1,r=2*this.distance*Math.tan(this.fovY*Re/2)/o,i=Math.sin(this.azimuth),a=Math.cos(this.azimuth),s=a,c=-i,l=Math.cos(this.polar),u=Math.sin(this.polar),m=-i*l,h=-a*l;this.targetT.x+=(-t*s+n*m)*r,this.targetT.z+=(-t*c+n*h)*r,this.targetT.y+=n*u*r,this.clampPan(),this.requestRender()}widenPanBox(t){this.panBox=bm(this.panBox,t.center,t.radius),this.panAnchor.set(this.panBox.anchor[0],this.panBox.anchor[1],this.panBox.anchor[2]),this.panLimit=this.panBox.limit}clampPan(){if(this.panLimit<=0)return;let t=this.panLimit,n=this.panAnchor.x,o=this.panAnchor.y,r=this.panAnchor.z;this.targetT.x=Math.max(n-t,Math.min(n+t,this.targetT.x)),this.targetT.z=Math.max(r-t,Math.min(r+t,this.targetT.z)),this.targetT.y=Math.max(o-t*.5,Math.min(o+t,this.targetT.y))}fireGesture(){this.gestureFired||(this.gestureFired=!0,this.onGesture?.())}currentPinchDistance(){let t=[...this.activePointers.values()];return t.length<2?0:Math.hypot(t[0].x-t[1].x,t[0].y-t[1].y)}dollyBy(t){this.distT=Math.max(this.minDist,Math.min(this.maxDist,this.distT*t)),this.requestRender()}dollyAt(t,n,o){let r=this.distT,i=this.canvas.getBoundingClientRect?.(),a=this.zoomPointResolver?.(n,o)??null;if(a){this.distT=Math.max(Xi,Math.min(this.maxDist,this.distT*t)),this.minDist=Math.min(this.minDist,Math.max(Xi,this.distT)),this.requestRender(),this.scaleTargetAbout(a,this.distT/r);return}let s=i&&i.width>0&&i.height>0?ji([this.targetT.x,this.targetT.y,this.targetT.z],this.azT,this.polT,this.distT,this.fovY,this.camera.aspect||i.width/i.height,(n-i.left)/i.width*2-1,1-(o-i.top)/i.height*2):null;this.dollyBy(t),s&&this.scaleTargetAbout(s,this.distT/r)}scaleTargetAbout(t,n){!Number.isFinite(n)||n===1||(this.targetT.x=t[0]+(this.targetT.x-t[0])*n,this.targetT.y=t[1]+(this.targetT.y-t[1])*n,this.targetT.z=t[2]+(this.targetT.z-t[2])*n,this.clampPan())}grabSignAt(t,n){let o=this.canvas.getBoundingClientRect?.(),r=this.zoomPointResolver?.(t,n)??(o&&o.width>0&&o.height>0?ji([this.target.x,this.target.y,this.target.z],this.azimuth,this.polar,this.distance,this.fovY,this.camera.aspect||o.width/o.height,(t-o.left)/o.width*2-1,1-(n-o.top)/o.height*2):null),i=this.camera.position;return hm([i.x,i.y,i.z],[this.target.x,this.target.y,this.target.z],r)}setZoomPointResolver(t){this.zoomPointResolver=t}zoomBy(t){this.interactionEnabled&&(this.dollyBy(t),this.fireGesture())}dollyLimitState(){return{atMin:this.distT<=this.minDist+1e-6,atMax:this.distT>=this.maxDist-1e-6}}setPrimaryDragMode(t){this.primaryDragMode=t}setInteractionEnabled(t){this.interactionEnabled=t,!t&&(this.activePointers.clear(),this.dragging=!1,this.panning=!1,this.pinchDist=0)}frame(t,n=!1,o,r=!1,i){this.camera.perspective({fov:this.fovY,aspect:this.camera.aspect}),this.target.set(t.center[0],t.center[1],t.center[2]),this.targetT.copy(this.target),this.widenPanBox(t);let a=Math.max(1,t.radius),s=this.fovY*Re/2,c=r?Math.max(.82,this.camera.aspect||1):this.camera.aspect||1,l=Math.atan(Math.tan(s)*c);this.azT=o??-30*Re,this.polT=Math.max(15,Math.min(80,i?.polarDeg??55))*Re;let u=this.framedOn(t,s,l),m=u.distance;this.target.set(u.center[0],u.center[1],u.center[2]),this.targetT.copy(this.target),this.distT=m*Math.max(1.05,Math.min(2,i?.margin??nr)),this.envelope=Ui(this.envelope,a,m),this.minDist=this.envelope.minDist,this.maxDist=this.envelope.maxDist,n?(this.azimuth=this.azT,this.polar=12*Re,this.distance=this.distT*1.7):(this.azimuth=this.azT,this.polar=this.polT,this.distance=this.distT),this.applyPosition()}setAspect(t){if(!(t>0)||!Number.isFinite(t))return;let n=this.camera.aspect;if(this.interactionEnabled&&n>0){let o=Math.min(n,1)/Math.min(t,1);this.distance*=o,this.distT*=o,this.maxDist=Math.max(this.maxDist,this.distance,this.distT),this.applyPosition()}this.camera.perspective({aspect:t})}glideTo(t,n){this.syncFromCamera(),this.camera.perspective({fov:this.fovY,aspect:this.camera.aspect}),this.widenPanBox(t),this.targetT.set(t.center[0],t.center[1],t.center[2]);let o=this.fovY*Re/2,r=Math.atan(Math.tan(o)*(this.camera.aspect||1));this.azT=this.azimuth,this.polT=Math.max(15,Math.min(80,n?.polarDeg??55))*Re;let i=this.framedOn(t,o,r),a=i.distance;this.targetT.set(i.center[0],i.center[1],i.center[2]),this.distT=a*Math.max(1.05,Math.min(2,n?.margin??nr)),this.envelope=Ui(this.envelope,Math.max(1,t.radius),a),this.minDist=this.envelope.minDist,this.maxDist=this.envelope.maxDist,this.requestRender()}frameSoft(t,n,o=!1,r){this.target.set(t.center[0],t.center[1],t.center[2]),this.targetT.copy(this.target),this.widenPanBox(t),this.syncFromCamera(),this.camera.perspective({fov:this.fovY,aspect:this.camera.aspect});let i=this.fovY*Re/2,a=o?Math.max(.82,this.camera.aspect||1):this.camera.aspect||1,s=Math.atan(Math.tan(i)*a);this.azT=n??this.azimuth,this.polT=Math.max(15,Math.min(80,r?.polarDeg??55))*Re;let c=this.framedOn(t,i,s);this.targetT.set(c.center[0],c.center[1],c.center[2]),this.distT=c.distance*Math.max(1.05,Math.min(2,r?.margin??nr))}framedOn(t,n,o){return xm(t,Math.tan(o),Math.tan(n),this.azT,this.polT,r=>this.fitDistance({...t,center:r},n,o,this.azT,this.polT))}fitDistance(t,n,o,r,i){let a=Math.max(1,t.radius),s=Math.max(a/Math.tan(n),a/Math.tan(o)),c=t.box;if(!c)return s;let l=Yi(r,i);if(!l)return s;let{fx:u,fy:m,fz:h,rx:d,rz:f,ux:p,uy:b,uz:y}=l,g=Math.tan(o),M=Math.tan(n),P=1;for(let R=0;R<8;R++){let T=(R&1?c.max[0]:c.min[0])-t.center[0],O=(R&2?c.max[1]:c.min[1])-t.center[1],C=(R&4?c.max[2]:c.min[2])-t.center[2],A=T*u+O*m+C*h,_=Math.abs(T*d+C*f),L=Math.abs(T*p+O*b+C*y);P=Math.max(P,_/g-A,L/M-A)}let I=Math.min(s,Math.max(P,a*.35)),S=t.fitPoints;if(!S||S.length<9)return I;let x=0,v=1/(g*Wi),w=1/(M*Wi);for(let R=0;R+2<S.length;R+=3){let T=S[R]-t.center[0],O=S[R+1]-t.center[1],C=S[R+2]-t.center[2],A=T*u+O*m+C*h,_=Math.abs(T*d+C*f),L=Math.abs(T*p+O*b+C*y);x=Math.max(x,_*v-A,L*w-A)}return Math.min(I*1.5,Math.max(I*.55,x))}updateClipping(t){let n=this.camera.position.x-t.center[0],o=this.camera.position.y-t.center[1],r=this.camera.position.z-t.center[2],i=Math.hypot(this.camera.position.x-this.target.x,this.camera.position.y-this.target.y,this.camera.position.z-this.target.z),a=this.interactionEnabled&&Math.abs(i-this.distance)<=this.distance*.01,{near:s,far:c}=Sm(Math.hypot(n,o,r),t.radius,a?this.distance:null);this.camera.perspective({near:s,far:c,aspect:this.camera.aspect})}update(){let t=this.azT-this.azimuth,n=this.polT-this.polar,o=this.distT-this.distance,r=this.targetT.x-this.target.x,i=this.targetT.y-this.target.y,a=this.targetT.z-this.target.z,s=Math.max(1e-4,this.distance*1e-4),c=Math.abs(t)>1e-4||Math.abs(n)>1e-4||Math.abs(o)>1e-4||Math.abs(r)>s||Math.abs(i)>s||Math.abs(a)>s;return this.azimuth+=t*Dt,this.polar+=n*Dt,this.distance+=o*Dt,this.target.x+=r*Dt,this.target.y+=i*Dt,this.target.z+=a*Dt,c&&this.applyPosition(),c}get currentAzimuth(){return this.azimuth}get currentDistance(){return this.distance}syncFromCamera(){let t=this.camera.position.x-this.target.x,n=this.camera.position.y-this.target.y,o=this.camera.position.z-this.target.z,r=Math.hypot(t,n,o)||1,i=Math.max(er,Math.min(tr,Math.acos(Math.max(-1,Math.min(1,n/r)))));this.distance=this.distT=r,this.polar=this.polT=i,this.azimuth=this.azT=Math.atan2(t,o)}setTarget(t){this.target.set(t[0],t[1],t[2]),this.targetT.copy(this.target)}resumeAfterFlight(t){this.camera.perspective({fov:this.fovY,aspect:this.camera.aspect}),t&&this.target.set(t[0],t[1],t[2]),this.targetT.copy(this.target),this.syncFromCamera()}applyPosition(){let t=Math.sin(this.polar),n=this.target.x+this.distance*t*Math.sin(this.azimuth),o=this.target.y+this.distance*Math.cos(this.polar),r=this.target.z+this.distance*t*Math.cos(this.azimuth);this.camera.position.set(n,o,r),this.camera.lookAt(this.target)}dispose(){this.canvas.removeEventListener("pointerdown",this.onPointerDown),this.canvas.removeEventListener("pointermove",this.onPointerMove),this.canvas.removeEventListener("pointerup",this.onPointerUp),this.canvas.removeEventListener("pointercancel",this.onPointerUp),this.canvas.removeEventListener("wheel",this.onWheel),this.canvas.removeEventListener("keydown",this.onKeyDown),this.canvas.removeEventListener("contextmenu",this.onContextMenu),this.activePointers.clear()}},vm=.1,Mm=.25;function Sm(e,t,n){let o=Math.max(1,t)*1.18,r=n==null?Mm:Math.max(.05,n*vm),i=Math.max(r,e-o),a=Math.max(i+10,e+o);return{near:i,far:a}}var Xn=class{constructor(t){this.rafId=0;this.running=!1;this.lastTime=0;this.fpsEma=0;this.rendered=0;this.tick=t=>{let n=this.lastTime?(t-this.lastTime)/1e3:.016666666666666666;if(this.lastTime=t,n>0){let r=1/n;this.fpsEma=this.fpsEma?this.fpsEma*.9+r*.1:r}this.rendered++,this.frame(n)?this.rafId=requestAnimationFrame(this.tick):(this.running=!1,this.rafId=0)};this.frame=t}requestRender(){this.running||(this.running=!0,this.lastTime=0,this.rafId=requestAnimationFrame(this.tick))}stats(){return{fps:this.running?Math.round(this.fpsEma):0,rendered:this.rendered,idle:!this.running}}stop(){this.rafId&&cancelAnimationFrame(this.rafId),this.rafId=0,this.running=!1}};function Ki(e){let t=!1;return n=>{n!==t&&(t=n,n?e.dataset.slReady="1":delete e.dataset.slReady)}}function qi(e,t,n){return Math.max(t,Math.min(n,e))}var Vt=2.5,wm=1.15,hn=12,Gt=22,$i=6,Zi=9.5,Qi=.9,Ji=2.2,or=30,rr=4,Wn=8192;var G0=Gt+rr;function ea(e,t){let n=t*1.4,o=t*3.2;if(e<=n)return{scale:1,fade:0,minPixels:Vt};let r=Math.min(1,(e-n)/Math.max(.001,o-n));return{scale:1-r*.4,fade:r*.55,minPixels:Vt+r*(wm-Vt)}}function ta(e,t,n){return!(e>0)||!(t>0)||!(n>0)?!1:t*n/e>=64}var Pm=12;function na(e,t,n,o,r){if(!(e>0)||!(t>0)||!(n>0)||!(o>0)||!(r>0))return!1;let i=Math.tan(o/2*Math.PI/180);if(!(i>0))return!1;let a=t/(n*i)*(r/2);return Math.PI*a*a/e>=Pm}var Im=[{key:"wheelchair",label:"Wheelchair space",short:"Wheelchair",icon:"\u267F"},{key:"companion",label:"Companion seat",short:"Companion",icon:"\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}"},{key:"semi-ambulatory",label:"Semi-ambulatory (limited mobility)",short:"Limited mobility",icon:"\u{1F9AF}"},{key:"designated-aisle",label:"Designated aisle / transfer seat",short:"Aisle transfer",icon:"AS"},{key:"step-free",label:"Step-free accessible seat",short:"Step-free",icon:"SF"},{key:"hearing",label:"Assistive listening",short:"Hearing",icon:"\u{1F9BB}"},{key:"cart",label:"CART live-caption view",short:"CART captions",icon:"CC"},{key:"sign-language",label:"Sign-language view",short:"Sign language",icon:"\u{1F91F}"},{key:"low-vision",label:"Blind / low-vision viewing",short:"Low vision",icon:"LV"},{key:"sensory-friendly",label:"Quiet / sensory-friendly seating",short:"Sensory-friendly",icon:"QS"},{key:"plus-size",label:"Plus-size seat",short:"Plus-size",icon:"\u{1F4BA}"},{key:"lift-armrest",label:"Lift-up armrest",short:"Lift armrest",icon:"\u2195\uFE0F"}],z0=new Map(Im.map(e=>[e.key,e]));var Rm={wheelchair:"#3b82f6",companion:"#8b5cf6","semi-ambulatory":"#0ea5e9","designated-aisle":"#0284c7","step-free":"#16a34a",hearing:"#14b8a6",cart:"#7c3aed","sign-language":"#f59e0b","low-vision":"#d97706","sensory-friendly":"#6366f1","plus-size":"#ec4899","lift-armrest":"#22c55e"};function oa(e){let t=e?.[0];return t&&Rm[t]||"#3b82f6"}var Am=[{key:"obstructedView",label:"Obstructed view",short:"Obstructed",icon:"\u26D4"},{key:"restrictedView",label:"Restricted view",short:"Restricted",icon:"\u{1F441}"},{key:"premium",label:"Premium seat",short:"Premium",icon:"\u2605"}],U0=new Map(Am.map(e=>[e.key,e]));var Em=["reference-focal","bar","entrance","exit","restroom","screen","sound","concession","coat","wall","rail","suite","obstruction"],j0=new Set(Em);var ia=[{key:"circle",label:"Standard seat",shortLabel:"Standard",useCase:"General assigned seating",group:"general",path:null,bounds:null,mark:null},{key:"theatre",label:"Theatre chair",shortLabel:"Theatre",useCase:"Auditoriums, arenas and stadium stands",group:"fixed",path:"M4.5 3.5 Q4.5 1.5 6.5 1.5 L17.5 1.5 Q19.5 1.5 19.5 3.5 L19.5 13 L4.5 13 Z M3.5 12 L20.5 12 Q22.5 12 22.5 14 L22.5 21 Q22.5 22.5 21 22.5 Q19.5 22.5 19.5 21 L19.5 17.5 L4.5 17.5 L4.5 21 Q4.5 22.5 3 22.5 Q1.5 22.5 1.5 21 L1.5 14 Q1.5 12 3.5 12 Z",bounds:{x:1.5,y:1.5,width:21,height:21},mark:{x:12,y:10,radius:6}},{key:"dining",label:"Dining chair",shortLabel:"Dining",useCase:"Banquets, restaurants and table seating",group:"flexible",path:"M7 1 Q6 1 6 2.5 L6.75 10.5 L5 10.5 Q4 10.5 4 12 L4 14 Q4 15 5.25 15 L6 15 L4 23 L7 23 L9.5 15 L14.5 15 L17 23 L20 23 L18 15 L18.75 15 Q20 15 20 14 L20 12 Q20 10.5 19 10.5 L17.25 10.5 L18 2.5 Q18 1 17 1 Z",bounds:{x:4,y:1,width:16,height:22},mark:{x:12,y:10,radius:4.5}},{key:"folding",label:"Folding chair",shortLabel:"Folding",useCase:"Concert floors, ceremonies and conferences",group:"flexible",path:"M6 2 Q5 2 5 3 L6 8 L18 8 L19 3 Q19 2 18 2 Z M5 9 L19 9 Q20 9 20 10.5 L19 13 L5 13 L4 10.5 Q4 9 5 9 Z M6 12 L9 12 L12 17 L15 12 L18 12 L14 19 L17 23 L14 23 L12 21 L10 23 L7 23 L10 19 Z",bounds:{x:4,y:2,width:16,height:21},mark:{x:12,y:5,radius:3}},{key:"armchair",label:"Premium armchair",shortLabel:"Armchair",useCase:"Boxes, lounges and club seating",group:"premium",path:"M3.5 4 Q3.5 1.5 6 1.5 L18 1.5 Q20.5 1.5 20.5 4 L20.5 13 L3.5 13 Z M1.5 12.5 Q1.5 10 3.25 10 Q5 10 5 12.5 L5 13.5 L19 13.5 L19 12.5 Q19 10 20.75 10 Q22.5 10 22.5 12.5 L22.5 19.5 Q22.5 22 20 22 L4 22 Q1.5 22 1.5 19.5 Z",bounds:{x:1.5,y:1.5,width:21,height:20.5},mark:{x:12,y:7.5,radius:5.5}},{key:"recliner",label:"Recliner",shortLabel:"Recliner",useCase:"Luxury cinemas and premium clubs",group:"premium",path:"M7 2 Q7 1 8.5 1 L15.5 1 Q17 1 17 2 L19 13 L5 13 Z M4 9 Q2 9 2 11.5 L2 16 Q2 18 4 18 L6 18 L6 15 L18 15 L18 18 L20 18 Q22 18 22 16 L22 11.5 Q22 9 20 9 Q18 9 18 11 L18 13 L6 13 L6 11 Q6 9 4 9 Z M7 17 L17 17 Q18 17 18.5 18.5 L19.5 22.5 L4.5 22.5 L5.5 18.5 Q6 17 7 17 Z",bounds:{x:2,y:1,width:20,height:21.5},mark:{x:12,y:8,radius:5}},{key:"stool",label:"Stool",shortLabel:"Stool",useCase:"Bars, high-tops and seating rails",group:"flexible",path:"M6 2.5 L18 2.5 Q22 2.5 22 6.5 L22 12 Q22 16 18 16 L6 16 Q2 16 2 12 L2 6.5 Q2 2.5 6 2.5 Z M6 15.5 L9.5 15.5 L7.5 22.5 L3 22.5 Z M14.5 15.5 L18 15.5 L20.5 22.5 L16 22.5 Z",bounds:{x:2,y:2.5,width:20,height:20},mark:{x:12,y:9.25,radius:6.5}},{key:"bench",label:"Bench place",shortLabel:"Bench",useCase:"Pews, bleachers and terraces",group:"fixed",path:"M2.5 0.5 L21.5 0.5 Q23 0.5 23 2 L23 5 Q23 6.5 21.5 6.5 L2.5 6.5 Q1 6.5 1 5 L1 2 Q1 0.5 2.5 0.5 Z M2 7.5 L22 7.5 Q23.5 7.5 23.5 9 L23.5 15.5 Q23.5 17 22 17 L18 17 L18 21.5 Q18 22.5 16.75 22.5 Q15.5 22.5 15.5 21.5 L15.5 17 L8.5 17 L8.5 21.5 Q8.5 22.5 7.25 22.5 Q6 22.5 6 21.5 L6 17 L2 17 Q0.5 17 0.5 15.5 L0.5 9 Q0.5 7.5 2 7.5 Z",bounds:{x:.5,y:.5,width:23,height:22},mark:{x:12,y:12.25,radius:4.75}}],aa=ia.map(e=>e.key),Cm=new Map(ia.map(e=>[e.key,e]));function ra(e){return typeof e=="string"&&Cm.has(e)}function sa(e,t){return ra(e)?e:ra(t?.seatGlyph)?t.seatGlyph:"circle"}var fe=.02291666666666667,ze=1/fe,_m=58,Tm=_m*fe;var km=3,ca=0,ir=120,Lm=0,Fm=45,Om=7,Qe=1.2;function ar(e,t,n,o){return Number.isFinite(e)?Math.max(t,Math.min(n,e)):o}function Dm(e){return!Number.isFinite(e)||!Number.isInteger(e)||e<0?0:e<=Om?e:km}function dt(e,t={}){let n=ar(t.floorBaseHeightM,ca,ir,0),o=Math.min(ir,n+Dm(e.elevation)*Tm),r=e.height===void 0?o:ar(e.height,ca,ir,o),i=ar(e.rake,Lm,Fm,0);return{height:r,rake:i}}var ua=it(require("earcut"),1),cr=it(require("polygon-clipping"),1);var $0=Math.PI/180;function sr(e){let t=0,n=0;for(let r of e)t+=r.x,n+=r.y;let o=e.length||1;return{x:t/o,y:n/o}}function pn(e){return e.length?sr(e):null}function Be(e){let t=0;for(let n=0,o=e.length;n<o;n+=1){let r=e[n],i=e[(n+1)%o];t+=r.x*i.y-i.x*r.y}return t/2}function Ne(e,t,n){let o=!1;for(let r=0,i=e.length-1;r<e.length;i=r++){let a=e[r],s=e[i];a.y>n!=s.y>n&&t<(s.x-a.x)*(n-a.y)/(s.y-a.y)+a.x&&(o=!o)}return o}var E=fe,Bm=.002;function Nm(e,t,n){let o=Math.hypot(t[0]-e[0],t[1]-e[1],t[2]-e[2]),r=Math.hypot(n[0]-t[0],n[1]-t[1],n[2]-t[2]),i=Math.hypot(e[0]-n[0],e[1]-n[1],e[2]-n[2]),a=Math.max(o,r,i);if(a<1e-9)return!0;let s=(o+r+i)/2;return 2*Math.sqrt(Math.max(0,s*(s-o)*(s-r)*(s-i)))/a<Bm}var Ct=class{constructor(t=16384){this.len=0;this.buf=new Float32Array(t)}push3(t,n,o){this.len+3>this.buf.length&&this.grow(this.len+3),this.buf[this.len++]=t,this.buf[this.len++]=n,this.buf[this.len++]=o}push1(t){this.len+1>this.buf.length&&this.grow(this.len+1),this.buf[this.len++]=t}grow(t){let n=this.buf.length*2;for(;n<t;)n*=2;let o=new Float32Array(n);o.set(this.buf.subarray(0,this.len)),this.buf=o}get length(){return this.len}toArray(){return this.buf.slice(0,this.len)}},qn=class{constructor(){this.pos=new Ct;this.nor=new Ct;this.col=new Ct;this.flr=new Ct;this.mat=new Ct;this.currentFloor=0;this.currentMaterial=0}setFloor(t){this.currentFloor=t}setMaterial(t){this.currentMaterial=t}tri(t,n,o,r,i,a=i,s=i){Nm(t,n,o)||(this.pos.push3(t[0],t[1],t[2]),this.pos.push3(n[0],n[1],n[2]),this.pos.push3(o[0],o[1],o[2]),this.nor.push3(r[0],r[1],r[2]),this.nor.push3(r[0],r[1],r[2]),this.nor.push3(r[0],r[1],r[2]),this.col.push3(i[0],i[1],i[2]),this.col.push3(a[0],a[1],a[2]),this.col.push3(s[0],s[1],s[2]),this.flr.push1(this.currentFloor),this.flr.push1(this.currentFloor),this.flr.push1(this.currentFloor),this.mat.push1(this.currentMaterial),this.mat.push1(this.currentMaterial),this.mat.push1(this.currentMaterial))}triN(t,n,o,r,i,a,s,c=s,l=s){[...t,...n,...o].every(Number.isFinite)&&(this.pos.push3(t[0],t[1],t[2]),this.pos.push3(n[0],n[1],n[2]),this.pos.push3(o[0],o[1],o[2]),this.nor.push3(r[0],r[1],r[2]),this.nor.push3(i[0],i[1],i[2]),this.nor.push3(a[0],a[1],a[2]),this.col.push3(s[0],s[1],s[2]),this.col.push3(c[0],c[1],c[2]),this.col.push3(l[0],l[1],l[2]),this.flr.push1(this.currentFloor),this.flr.push1(this.currentFloor),this.flr.push1(this.currentFloor),this.mat.push1(this.currentMaterial),this.mat.push1(this.currentMaterial),this.mat.push1(this.currentMaterial))}get vertexCount(){return this.pos.length/3}build(){return{position:this.pos.toArray(),normal:this.nor.toArray(),color:this.col.toArray(),floor:this.flr.toArray(),material:this.mat.toArray(),count:this.pos.length/3}}};function Vm(e,t,n){let o=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2],a=n[0]-e[0],s=n[1]-e[1],c=n[2]-e[2],l=r*c-i*s,u=i*a-o*c,m=o*s-r*a,h=Math.hypot(l,u,m)||1;return l/=h,u/=h,m/=h,[l,u,m]}function Gm(e,t){let n=[...e],o=[];for(let a of e)o.push(a.x,a.y);let r=[];if(t){for(let a of t)if(!(a.length<3)){r.push(n.length);for(let s of a)n.push(s),o.push(s.x,s.y)}}let i=(0,ua.default)(o,r.length?r:void 0,2);return{pts:n,tris:i}}function Je(e){return Be(e)<0?[...e].reverse():e}var Hm=3;function zm(e,t,n,o){let r=o(e),i=o(t),a=o(n),s=(d,f,p,b)=>Math.abs(o({x:(d.x+f.x)/2,y:(d.y+f.y)/2})-(p+b)/2),c=(e.x+t.x+n.x)/3,l=(e.y+t.y+n.y)/3,u=(r+i+a)/3,m=Math.max(s(e,t,r,i),s(t,n,i,a),s(n,e,a,r),Math.abs(o({x:c,y:l})-u)),h=(d,f,p)=>{let b=Math.abs(o({x:(d+c)/2,y:(f+l)/2})-(p+u)/2);b>m&&(m=b)};return h((e.x+t.x)/2,(e.y+t.y)/2,(r+i)/2),h((t.x+n.x)/2,(t.y+n.y)/2,(i+a)/2),h((n.x+e.x)/2,(n.y+e.y)/2,(a+r)/2),m}function bn(e,t,n,o,r){if(r<=0)return zm(e,t,n,o);let i={x:(e.x+t.x)/2,y:(e.y+t.y)/2},a={x:(t.x+n.x)/2,y:(t.y+n.y)/2},s={x:(n.x+e.x)/2,y:(n.y+e.y)/2};return Math.max(bn(e,i,s,o,r-1),bn(i,t,a,o,r-1),bn(s,a,n,o,r-1),bn(i,a,s,o,r-1))}function yn(e,t,n,o,r,i,a,s){if(a>0){let h={x:(t.x+n.x)/2,y:(t.y+n.y)/2},d={x:(n.x+o.x)/2,y:(n.y+o.y)/2},f={x:(o.x+t.x)/2,y:(o.y+t.y)/2};yn(e,t,h,f,r,i,a-1,s),yn(e,h,n,d,r,i,a-1,s),yn(e,f,d,o,r,i,a-1,s),yn(e,h,d,f,r,i,a-1,s);return}let c=[t.x*E,r(t),t.y*E],l=[n.x*E,r(n),n.y*E],u=[o.x*E,r(o),o.y*E];if(s){e.triN(c,l,u,s(t),s(n),s(o),i);return}let m=Vm(c,l,u);m[1]<0&&(m=[-m[0],-m[1],-m[2]]),e.tri(c,l,u,m,i)}var Um=8;function la(e,t,n){if(!Number.isFinite(n))return e;let o=[],r=(i,a,s,c,l)=>{if(l>0){let u={x:(i.x+a.x)/2,y:(i.y+a.y)/2},m=t(u);if(Math.abs(m-(s+c)/2)>n){r(i,u,s,m,l-1),r(u,a,m,c,l-1);return}}o.push(i)};for(let i=0;i<e.length;i++){let a=e[i],s=e[(i+1)%e.length];r(a,s,t(a),t(s),Um)}return o}function Yn(e,t){if(e.length<3)return e;let n=[];for(let r of e){let i=n[n.length-1];i&&Math.hypot(r.x-i.x,r.y-i.y)<t||n.push(r)}for(;n.length>2&&Math.hypot(n[0].x-n[n.length-1].x,n[0].y-n[n.length-1].y)<t;)n.pop();if(n.length<3)return e;let o=[];for(let r=0;r<n.length;r++){let i=o.length?o[o.length-1]:n[(r-1+n.length)%n.length],a=n[r],s=n[(r+1)%n.length],c=s.x-i.x,l=s.y-i.y,u=Math.hypot(c,l);u>t&&Math.abs((a.x-i.x)*l-(a.y-i.y)*c)/u<t||o.push(a)}return o.length>=3?o:n}var Kn=.001*ze*.1;function ae(e,t,n,o,r,i,a,s,c=1/0,l){if(!t||t.length<3||(c===void 0&&(c=1/0),Math.abs(Be(t))<1e-4))return;let u=Yn(la(Yn(Je(t),Kn),o,c),Kn),m=n?.map(S=>Yn(la(Yn(Je(S),Kn),o,c),Kn)).filter(S=>S.length>=3&&Math.abs(Be(S))>=1e-4),{pts:h,tris:d}=Gm(u,m),f=[i[0]*s.top,i[1]*s.top,i[2]*s.top],p=[i[0]*s.bottomCap,i[1]*s.bottomCap,i[2]*s.bottomCap],b=[a[0]*s.top,a[1]*s.top,a[2]*s.top],y=[a[0]*s.wallBottom,a[1]*s.wallBottom,a[2]*s.wallBottom],g=0;if(Number.isFinite(c))for(;g<Hm;g++){let S=0;for(let x=0;x<d.length;x+=3){let v=bn(h[d[x]],h[d[x+1]],h[d[x+2]],o,g);v>S&&(S=v)}if(S<=c)break}for(let S=0;S<d.length;S+=3){let x=h[d[S]],v=h[d[S+1]],w=h[d[S+2]];yn(e,x,v,w,o,f,g,l);let R=[x.x*E,r,x.y*E],T=[v.x*E,r,v.y*E],O=[w.x*E,r,w.y*E];e.tri(R,O,T,[0,-1,0],p)}let M=S=>{if(g<=0)return S;let x=1<<g,v=[];for(let w=0;w<S.length;w++){let R=S[w],T=S[(w+1)%S.length];for(let O=0;O<x;O++){let C=O/x;v.push({x:R.x+(T.x-R.x)*C,y:R.y+(T.y-R.y)*C})}}return v},P=sr(u),I=[{ring:M(u),flip:!1}];if(m)for(let S of m)S.length>=3&&I.push({ring:M(S),flip:!0});for(let{ring:S,flip:x}of I)for(let v=0;v<S.length;v++){let w=S[v],R=S[(v+1)%S.length],T=(R.x-w.x)*E,C=(R.y-w.y)*E,A=-T,_=Math.hypot(C,A)||1;C/=_,A/=_;let L=(w.x+R.x)/2-P.x,N=(w.y+R.y)/2-P.y,k=C*L+A*N;x&&(k=-k),k<0&&(C=-C,A=-A);let F=[C,0,A],H=[w.x*E,o(w),w.y*E],B=[R.x*E,o(R),R.y*E],D=[w.x*E,r,w.y*E],G=[R.x*E,r,R.y*E];e.tri(H,B,G,F,b,b,y),e.tri(H,G,D,F,b,y,y)}}function ma(e){let t=0;for(let c of e)t+=c.count;let n=new Float32Array(t*3),o=new Float32Array(t*3),r=new Float32Array(t*3),i=new Float32Array(t),a=new Float32Array(t),s=0;for(let c of e)n.set(c.position,s*3),o.set(c.normal,s*3),r.set(c.color,s*3),i.set(c.floor,s),a.set(c.material,s),s+=c.count;return{position:n,normal:o,color:r,floor:i,material:a,count:t}}function Ke(e,t,n=2.5){if(t<=0||e.length<3)return e;let o=Je(e),r=o.length,i=[];for(let s=0;s<r;s++){let c=o[s],l=o[(s+1)%r],u=l.x-c.x,m=l.y-c.y,h=Math.hypot(u,m)||1;i.push({x:m/h,y:-u/h})}let a=[];for(let s=0;s<r;s++){let c=o[s],l=i[(s-1+r)%r],u=i[s],m=l.x+u.x,h=l.y+u.y,d=Math.hypot(m,h),f=()=>{a.push([c.x+l.x*t,c.y+l.y*t]),a.push([c.x+u.x*t,c.y+u.y*t])};if(d<1e-9){f();continue}m/=d,h/=d;let p=m*l.x+h*l.y,b=1/Math.max(p,1e-6);if(!Number.isFinite(b)||b>n){f();continue}a.push([c.x+m*t*b,c.y+h*t*b])}if(a.length<3)return e;try{let s=cr.default.union([[...a,a[0]]]),c=null,l=-1/0;for(let m of s){let h=Math.abs(Be(m[0].map(([d,f])=>({x:d,y:f}))));h>l&&(l=h,c=m[0])}if(!c)return e;let u=c.map(([m,h])=>({x:m,y:h}));if(u.length>1){let m=u[0],h=u[u.length-1];Math.abs(m.x-h.x)<1e-9&&Math.abs(m.y-h.y)<1e-9&&u.pop()}return u.length>=3?u:e}catch{return e}}function ht(e,t,n=2.5){if(e.length<3)return[];if(t<=0)return e;let o=Je(e),r=o.length,i=[];for(let c=0;c<r;c++){let l=o[c],u=o[(c+1)%r],m=Math.hypot(u.x-l.x,u.y-l.y)||1;i.push({x:-(u.y-l.y)/m,y:(u.x-l.x)/m})}let a=[],s=[];for(let c=0;c<r;c++){let l=o[c],u=i[(c-1+r)%r],m=i[c],h=u.x+m.x,d=u.y+m.y,f=Math.hypot(h,d),p=f<1e-9?1/0:1/Math.max(h/f*u.x+d/f*u.y,1e-6);if(!Number.isFinite(p)||p>n){a.push({x:l.x+u.x*t,y:l.y+u.y*t},{x:l.x+m.x*t,y:l.y+m.y*t}),s.push(c,c);continue}h/=f,d/=f,a.push({x:l.x+h*t*p,y:l.y+d*t*p}),s.push(c)}for(let c=0;c<a.length;c++){let l=(c+1)%a.length,u=s[c],m=s[l];if(m!==(u+1)%r)continue;let h=o[u],d=o[m];if((a[l].x-a[c].x)*(d.x-h.x)+(a[l].y-a[c].y)*(d.y-h.y)<=0)return[]}try{let c=cr.default.intersection([[...a.map(f=>[f.x,f.y]),[a[0].x,a[0].y]]],[[...o.map(f=>[f.x,f.y]),[o[0].x,o[0].y]]]),l=null,u=0;for(let f of c){let p=Math.abs(Be(f[0].map(([b,y])=>({x:b,y}))));p>u&&(u=p,l=f[0])}if(!l)return[];let m=l.map(([f,p])=>({x:f,y:p})),h=m[0],d=m[m.length-1];return m.length>1&&Math.abs(h.x-d.x)<1e-9&&Math.abs(h.y-d.y)<1e-9&&m.pop(),m.length>=3?Je(m):[]}catch{return[]}}function $n(e,t,n,o,r=28){let i=[];for(let a=0;a<r;a++){let s=a/r*Math.PI*2;i.push({x:e+n*Math.cos(s),y:t+o*Math.sin(s)})}return i}function gn(e,t,n,o){return[{x:e,y:t},{x:e+n,y:t},{x:e+n,y:t+o},{x:e,y:t+o}]}var at=.22;function fa(e,t){let n=Ce[e];if(n!=="sold"&&n!=="held")return-1;let o=(t+1)*2654435761;return o^=o>>>15,o=Math.imul(o,2246822519),o^=o>>>13,(o>>>0)%1e5/1e5}var jm=.42;function Xm(e){let t=e.length,n=new Float64Array(t);if(t<2)return n.fill(1/0),n;let o=1/0,r=1/0,i=-1/0,a=-1/0;for(let f of e)f.x<o&&(o=f.x),f.y<r&&(r=f.y),f.x>i&&(i=f.x),f.y>a&&(a=f.y);let s=Math.max(i-o,1e-6),c=Math.max(a-r,1e-6),l=Math.max(Math.sqrt(s*c/t),1e-6),u=Math.max(1,Math.ceil(s/l)+1),m=Math.max(1,Math.ceil(c/l)+1),h=new Map,d=(f,p)=>{let b=Math.min(u-1,Math.max(0,Math.floor((f-o)/l)));return Math.min(m-1,Math.max(0,Math.floor((p-r)/l)))*u+b};for(let f=0;f<t;f++){let p=d(e[f].x,e[f].y),b=h.get(p);b?b.push(f):h.set(p,[f])}for(let f=0;f<t;f++){let p=e[f],b=Math.min(u-1,Math.max(0,Math.floor((p.x-o)/l))),y=Math.min(m-1,Math.max(0,Math.floor((p.y-r)/l))),g=1/0;for(let M=1;M<=4;M++){for(let P=y-M;P<=y+M;P++)if(!(P<0||P>=m))for(let I=b-M;I<=b+M;I++){if(I<0||I>=u||M>1&&Math.abs(P-y)<M&&Math.abs(I-b)<M)continue;let S=h.get(P*u+I);if(S)for(let x of S){if(x===f)continue;let v=Math.hypot(e[x].x-p.x,e[x].y-p.y);v<g&&(g=v)}}if(Number.isFinite(g)&&g<=M*l)break}n[f]=g}return n}function Wm(e){let t=e.eyeHeightM;return Number.isFinite(t)?Math.max(0,t-Qe):0}function da(e,t,n,o,r,i){let a=e.length,s=new Float32Array(a*3),c=new Float32Array(a),l=new Float32Array(a*3),u=new Float32Array(a),m=new Float32Array(a),h=new Float32Array(a),d=new Float32Array(a),f=new Float32Array(a*3),p=new Map,b=Xm(e);for(let y=0;y<a;y++){let g=e[y],P=(n?.seatPitchU(y)??b[y])*E;u[y]=Number.isFinite(P)?Math.max(.06,Math.min(at,P*jm)):at,m[y]=Ei(Number.isFinite(P)?P:void 0);let I=sa(g.glyph,{seatGlyph:i?.get(g.categoryKey)});h[y]=aa.indexOf(I),d[y]=g.wheelchairSpaceType==="no-seat"?0:1,s[y*3]=g.x*E,s[y*3+1]=n?n.seatDeckY(y):Wm(g),s[y*3+2]=g.y*E,c[y]=fn(t?t(g):"available");let S=pe(r?.get(g.categoryKey)??"#6e7bff")??[.43,.48,1];if(l[y*3]=S[0],l[y*3+1]=S[1],l[y*3+2]=S[2],g.accessibility?.length){let x=pe(oa(g.accessibility));x&&(f[y*3]=x[0],f[y*3+1]=x[1],f[y*3+2]=x[2])}p.set(g.id,y)}return{count:a,iPosition:s,iState:c,iCategory:l,iMaxRadius:u,iRing:f,idToIndex:p,iChairWidth:m,iGlyph:h,iPhysicalSeat:d,iFloor:o??new Float32Array(a),iSection:new Float32Array(a).fill(-1),iYaw:new Float32Array(a)}}var Ym=64;function lr(e,t){let n=[];for(let a of t){let s=e.idToIndex.get(a.seatId);if(s===void 0)continue;let c=fn(a.state);e.iState[s]!==c&&(e.iState[s]=c,n.push(s))}if(!n.length)return[];n.sort((a,s)=>a-s);let o=[],r=n[0],i=n[0];for(let a=1;a<n.length;a++){let s=n[a];if(s!==i){if(s<=i+Ym){i=s;continue}o.push({start:r,length:i-r+1}),r=s,i=s}}return o.push({start:r,length:i-r+1}),o}var xn=3,_t=.38,vn=.24;function Km(e){if(e.length<3)return null;let t=e[0],n=e[Math.floor(e.length/2)],o=e[e.length-1],r=(n.x-t.x)*E,i=(n.y-t.y)*E,a=(o.x-t.x)*E,s=(o.y-t.y)*E,c=2*(r*s-i*a);if(Math.abs(c)<1e-7)return null;let l=r*r+i*i,u=a*a+s*s,m=(l*s-u*i)/c+t.x*E,h=(r*u-a*l)/c+t.y*E,d=Math.hypot(t.x*E-m,t.y*E-h);return d<1||d>200||!Number.isFinite(d)||e.some(f=>Math.abs(Math.hypot(f.x*E-m,f.y*E-h)-d)>.03)?null:{x:m,z:h,radius:d}}function ha(e){let t=[],n=new Map,o=(c,l)=>`${Math.floor(c/xn)},${Math.floor(l/xn)}`;for(let c of e)for(let l of c.rows){for(let m of l.pts){let h=m.x*E,d=m.y*E,f=o(h,d),p=n.get(f)??[];p.push({x:h,z:d,y:l.y,floor:c.floorIndex}),n.set(f,p)}if(l.patch||l.pts.length<2)continue;let u=Km(l.pts);for(let m of[0,l.pts.length-1]){let h=l.pts[m],d=l.pts[m===0?1:m-1],f=h.x-d.x,p=h.y-d.y,b=Math.hypot(f,p);b<1e-6||t.push({sectionId:c.sectionId,floorIndex:c.floorIndex,curve:u,row:l,point:h,x:h.x*E,z:h.y*E,dx:f/b,dz:p/b})}}let r=new Map;t.forEach((c,l)=>{let u=o(c.x,c.z),m=r.get(u)??[];m.push(l),r.set(u,m)});let i=(c,l)=>{let u=Math.floor(c/xn),m=Math.floor(l/xn);return[-1,0,1].flatMap(h=>[-1,0,1].map(d=>`${u+h},${m+d}`))},a=new Map;t.forEach((c,l)=>{let u=-1,m=1/0,h=!1;for(let d of i(c.x,c.z))for(let f of r.get(d)??[]){let p=t[f];if(c.sectionId===p.sectionId&&c.row.blockId===p.row.blockId||c.floorIndex!==p.floorIndex||Math.abs(c.row.y-p.row.y)>.05)continue;let b=p.x-c.x,y=p.z-c.z,g=Math.hypot(b,y);if(g<_t*2+.45||g>xn)continue;let M=c.curve&&p.curve&&Math.hypot(c.curve.x-p.curve.x,c.curve.z-p.curve.z)<=.05&&Math.abs(c.curve.radius-p.curve.radius)<=.05,P=Math.min((b*c.dx+y*c.dz)/g,(-b*p.dx-y*p.dz)/g);(M?P<.8:P<.98)||!M&&(Math.abs(b*c.dz-y*c.dx)>.15||Math.abs(b*p.dz-y*p.dx)>.15)||(g<m-.02?(u=f,m=g,h=!1):Math.abs(g-m)<=.02&&(h=!0))}u>=0&&!h&&a.set(l,u)});let s=[];for(let[c,l]of a){if(c>=l||a.get(l)!==c)continue;let u=t[c],m=t[l],h=Math.hypot(m.x-u.x,m.z-u.z),d=(m.x-u.x)/h,f=(m.z-u.z)/h,p=!1;for(let y of i((u.x+m.x)/2,(u.z+m.z)/2))for(let g of n.get(y)??[]){if(g.floor!==u.floorIndex||Math.abs(g.y-u.row.y)>.75)continue;let M=(g.x-u.x)*d+(g.z-u.z)*f,P=Math.abs((g.x-u.x)*f-(g.z-u.z)*d);M>.01&&M<h-.01&&P<vn+_t&&(p=!0)}if(p)continue;let b=(y,g)=>({x:(u.x+d*y-f*g)/E,y:(u.z+f*y+d*g)/E});s.push({sections:[u.sectionId,m.sectionId],blocks:[u.row.blockId,m.row.blockId],floorIndex:u.floorIndex,ends:[u.point,m.point],clearWidthM:h-2*_t,heightM:(u.row.y+m.row.y)/2,outline:[b(_t,-vn),b(h-_t,-vn),b(h-_t,vn),b(_t,vn)]})}return s}var qm=.15,$m=1.6;function pa(e){return qi(e??1,qm,$m)}var Zm=.15,Qm=.9,Jm=1.76;function ba(e){return!!e&&e[0]*.2126+e[1]*.7152+e[2]*.0722>.55?{zenith:[.36,.58,.84],horizon:[.82,.88,.94]}:{zenith:[.05,.08,.15],horizon:[.3,.38,.5]}}function ef(){return{background:{top:[...Et.top],bottom:[...Et.bottom]},sky:ba(null),structure:Jo,seatStates:{...Ni},seatScale:1,materials:{seat:null,shell:null,roughness:.78}}}function tf(e){return!!e&&e[0]*.2126+e[1]*.7152+e[2]*.0722>.55?{deck:"#a8ada9",fascia:"#69777c",shell:"#8d9ca0",roughness:.87}:{deck:"#69747b",fascia:"#3e4d58",shell:"#526572",roughness:.87}}function ya(e){let t=ef();e??={};let n=pe(e.background);if(n){t.background={top:ie(n,Qm),bottom:ie(n,Jm)},t.sky=ba(n);let s={};for(let[l,u]of Object.entries(Jo))s[l]=be(u,n,Zm);n[0]*.2126+n[1]*.7152+n[2]*.0722>.55&&(s.ground=ie(n,.86)),t.structure=s}let o=pe(e.selectionColor)??pe(e.accent);o&&(t.seatStates={...t.seatStates,selected:o});let r=e.seatScale;typeof r=="number"&&Number.isFinite(r)&&(t.seatScale=pa(r));let i=Object.fromEntries(Object.entries(e.venue3d??{}).filter(([,s])=>s!=null)),a={...tf(n),...i};if(a){let s=pe(a.deck),c=pe(a.fascia);s&&(t.structure={...t.structure,tierTop:s,gaTop:s}),c&&(t.structure={...t.structure,tierWall:c,gaWall:c}),t.materials.seat=pe(a.seat),t.materials.shell=pe(a.shell),typeof a.roughness=="number"&&Number.isFinite(a.roughness)&&(t.materials.roughness=Math.min(1,Math.max(0,a.roughness)))}return t}function ga(e,t){let n=[];for(let o of t)n.push(...e.seatStates[o]);return n}var nf=new Set(["pitch-football","rink-hockey","track-athletics","oval-cricket","pitch-rugby","diamond-baseball","court-basketball","court-tennis","ring-boxing"]),of=new Set(["pitch-football","track-athletics","oval-cricket","pitch-rugby","diamond-baseball"]);function Tt(e){return!!e&&nf.has(e)}function Zn(e){return!!e&&of.has(e)}var Qn=1.1,rf={"pitch-football":{width:105,height:68},"rink-hockey":{width:60,height:30},"track-athletics":{width:176.9,height:92.5},"oval-cricket":{width:150,height:140},"pitch-rugby":{width:120,height:70},"diamond-baseball":{width:140,height:140},"court-basketball":{width:32,height:19},"court-tennis":{width:36.57,height:18.29},"ring-boxing":{width:7.8,height:7.8}},af={"pitch-football":"#2f7d4f","rink-hockey":"#e8f1f8","track-athletics":"#a4472f","oval-cricket":"#3d8a53","pitch-rugby":"#2f7d4f","diamond-baseball":"#2f7d4f","court-basketball":"#c8894f","court-tennis":"#3f7a5a","ring-boxing":"#2a4d8f"};var sf=Math.PI*2;function cf(e,t,n,o,r,i){return{x:r+e*n-t*o,y:i+e*o+t*n}}function xa(e,t){let n=Math.max(0,e-t),o=[],r=20;for(let i=0;i<=r;i++){let a=-Math.PI/2+i/r*Math.PI;o.push({x:n+t*Math.cos(a),y:t*Math.sin(a)})}for(let i=0;i<=r;i++){let a=Math.PI/2+i/r*Math.PI;o.push({x:-n+t*Math.cos(a),y:t*Math.sin(a)})}return o}var va=(()=>{let t={x:0,y:52},n=25,o={x:70,y:t.y-70},r=(o.x*o.x+o.y*o.y-4900)/(2*(o.y+70)),i=r+70,a=[],s=Math.atan2(o.y-r,o.x),c=Math.atan2(o.y-r,-o.x);for(let l=0;l<=24;l++){let u=s+(c-s)*l/24;a.push({x:i*Math.cos(u),y:r+i*Math.sin(u)})}return{half:70,home:t,backstop:n,fence:a}})();var Jn="#f1f5f9";function Mn(e){return Tt(e)}function pt(e,t,n,o,r=32){let i=[];for(let a=0;a<r;a++){let s=a/r*sf;i.push({x:e+n*Math.cos(s),y:t+o*Math.sin(s)})}return i}function st(e,t,n,o){return[{x:e-n,y:t-o},{x:e+n,y:t-o},{x:e+n,y:t+o},{x:e-n,y:t+o}]}function lf(e){let{kind:t,cx:n,cy:o,width:r,height:i}=e,a=(e.rotation??0)*Math.PI/180,s=Math.cos(a),c=Math.sin(a),l=r/2,u=i/2,m=[],h=rf[t],d=p=>h?p/h.width*r:0,f=p=>h?p/h.height*i:0;switch(t){case"pitch-football":{m.push({points:[{x:0,y:-u},{x:0,y:u}],closed:!1}),m.push({points:pt(0,0,d(9.15),f(9.15)),closed:!0});for(let p of[-1,1])m.push({points:st(p*(l-d(16.5)/2),0,d(16.5)/2,f(40.32)/2),closed:!0}),m.push({points:st(p*(l-d(5.5)/2),0,d(5.5)/2,f(18.32)/2),closed:!0});break}case"rink-hockey":{m.push({points:[{x:0,y:-u},{x:0,y:u}],closed:!1,ink:"#d63b3b"});for(let p of[-1,1]){m.push({points:[{x:p*d(7.5),y:-u},{x:p*d(7.5),y:u}],closed:!1,ink:"#2f6ecb"}),m.push({points:[{x:p*(l-d(4)),y:-f(11)},{x:p*(l-d(4)),y:f(11)}],closed:!1,ink:"#d63b3b"});for(let b of[-1,1])m.push({points:pt(p*d(20.5),b*f(7),d(4.5),f(4.5)),closed:!0,ink:"#2f6ecb"})}m.push({points:pt(0,0,d(4.5),f(4.5)),closed:!0,ink:"#2f6ecb"});break}case"track-athletics":{let b=u-f(1.22)*8;b>0&&m.push({points:xa(l-d(1.22)*8,b),closed:!0,fill:"#2f7d4f"});for(let y=1;y<8;y++){let g=f(1.22)*y,M=u-g;if(M<=0)break;m.push({points:xa(l-d(1.22)*y,M),closed:!0})}break}case"oval-cricket":{m.push({points:pt(0,0,d(27.4),f(27.4+20.12/2),40),closed:!0}),m.push({points:st(0,0,d(3.05)/2,f(20.12)/2),closed:!0,ink:"#d8cfae"});break}case"pitch-rugby":{let p=b=>({points:[{x:d(b),y:-u},{x:d(b),y:u}],closed:!1});m.push(p(0));for(let b of[-1,1]){m.push(p(b*50),p(b*28));for(let y=-35;y<35;y+=4)m.push({points:[{x:d(b*10),y:f(y)},{x:d(b*10),y:f(Math.min(35,y+2))}],closed:!1})}break}case"diamond-baseball":{let p=(L,N)=>({x:d(L),y:f(N)}),{home:b}=va,y=27.43,g=y/Math.SQRT2,M={x:b.x+g,y:b.y-g},P={x:b.x,y:b.y-2*g},I={x:b.x-g,y:b.y-g},S={x:b.x,y:b.y-18.44},x="#b98a59",v=af["diamond-baseball"],w=38.94,R=[p(b.x,b.y)],T=Math.atan2(b.y-w/Math.SQRT2-S.y,w/Math.SQRT2),O=Math.PI-T;for(let L=0;L<=16;L++){let N=T-(T+Math.PI*2-O)%(Math.PI*2)*(L/16);R.push(p(S.x+29*Math.cos(N),S.y+29*Math.sin(N)))}m.push({points:R,closed:!0,fill:x,ink:x});let C={x:b.x,y:b.y-g},A=[{x:b.x,y:b.y},M,P,I].map(L=>p(C.x+(L.x-C.x)*.84,C.y+(L.y-C.y)*.84));m.push({points:A,closed:!0,fill:v,ink:v}),m.push({points:pt(d(S.x),f(S.y),d(2.74),f(2.74),20),closed:!0,fill:x,ink:x}),m.push({points:pt(d(b.x),f(b.y),d(3.96),f(3.96),20),closed:!0,fill:x,ink:x});let _=va.fence;m.push({points:[p(b.x,b.y),p(_[0].x,_[0].y)],closed:!1}),m.push({points:[p(b.x,b.y),p(_[_.length-1].x,_[_.length-1].y)],closed:!1});for(let L of[M,P,I])m.push({points:st(d(L.x),f(L.y),d(.3),f(.3)),closed:!0,fill:Jn});break}case"court-basketball":{m.push({points:st(0,0,d(14),f(7.5)),closed:!0}),m.push({points:[{x:0,y:-f(7.5)},{x:0,y:f(7.5)}],closed:!1}),m.push({points:pt(0,0,d(1.8),f(1.8),24),closed:!0});for(let p of[-1,1]){let b=p*14,y=p*(14-5.8),g=p*(14-1.575);m.push({points:st(d((b+y)/2),0,d(2.9),f(2.45)),closed:!0,fill:"#2f5d8a"}),m.push({points:pt(d(y),0,d(1.8),f(1.8),24),closed:!0});let M=Math.sqrt(6.75*6.75-6.6*6.6),P=[{x:d(b),y:-f(6.6)}],I=Math.atan2(-6.6,-p*M),S=2*Math.atan2(6.6,M);for(let x=0;x<=16;x++){let v=I-p*S*(x/16);P.push({x:d(g+6.75*Math.cos(v)),y:f(6.75*Math.sin(v))})}P.push({x:d(b),y:f(6.6)}),m.push({points:P,closed:!1})}break}case"court-tennis":{m.push({points:st(0,0,d(11.885),f(5.485)),closed:!0,fill:"#2b5f99"});for(let p of[-1,1])m.push({points:[{x:-d(11.885),y:p*f(4.115)},{x:d(11.885),y:p*f(4.115)}],closed:!1}),m.push({points:[{x:p*d(6.4),y:-f(4.115)},{x:p*d(6.4),y:f(4.115)}],closed:!1});m.push({points:[{x:-d(6.4),y:0},{x:d(6.4),y:0}],closed:!1}),m.push({points:[{x:0,y:-f(6.4)},{x:0,y:f(6.4)}],closed:!1,ink:"#d1d5db"});break}case"ring-boxing":{m.push({points:st(0,0,d(3.05),f(3.05)),closed:!0});let y=[[-1,-1,"#c53030"],[1,1,"#2b6cb0"],[1,-1,"#e2e8f0"],[-1,1,"#e2e8f0"]];for(let[g,M,P]of y)m.push({points:st(g*d(3.05),M*f(3.05),d(.3),f(.3)),closed:!0,fill:P,ink:P});break}default:return[]}return m.map(p=>({...p,points:p.points.map(b=>cf(b.x,b.y,s,c,n,o))}))}function Ma(e){if(e.role!=="stage"||!Mn(e.stageKind))return[];let t=null;if(e.x!=null&&e.y!=null&&e.width!=null&&e.height!=null&&e.width>0&&e.height>0&&[e.x,e.y,e.width,e.height].every(Number.isFinite))t={cx:e.x+e.width/2,cy:e.y+e.height/2,width:e.width,height:e.height};else if(e.points&&e.points.length>=3&&e.points.every(n=>Number.isFinite(n.x)&&Number.isFinite(n.y))){let n=e.points.map(u=>u.x),o=e.points.map(u=>u.y),r=Math.min(...n),i=Math.max(...n),a=Math.min(...o),s=Math.max(...o),c=Math.max(1,i-r),l=Math.max(1,s-a);t={cx:r+c/2,cy:a+l/2,width:c,height:l}}return t?lf({kind:e.stageKind,...t}):[]}function Sa(e,t){let n=1-t,o=n*n*n,r=3*n*n*t,i=3*n*t*t,a=t*t*t;return{x:o*e.start.x+r*e.control1.x+i*e.control2.x+a*e.end.x,y:o*e.start.y+r*e.control1.y+i*e.control2.y+a*e.end.y}}function wa(e,t,n=192){if(!Number.isInteger(t)||t<1)throw new Error("Path point count must be a positive integer");if(t===1)return[Sa(e,.5)];let o=Array.from({length:n+1},(c,l)=>Sa(e,l/n)),r=new Float64Array(o.length);for(let c=1;c<o.length;c+=1){let l=o[c].x-o[c-1].x,u=o[c].y-o[c-1].y;r[c]=r[c-1]+Math.hypot(l,u)}let i=r[r.length-1];if(i<=1e-9)return Array.from({length:t},()=>({...e.start}));let a=[],s=1;for(let c=0;c<t;c+=1){let l=i*c/(t-1);for(;s<r.length-1&&r[s]<l;)s+=1;let u=r[s-1],m=r[s],h=m===u?0:(l-u)/(m-u);a.push({x:o[s-1].x+(o[s].x-o[s-1].x)*h,y:o[s-1].y+(o[s].y-o[s-1].y)*h})}return a}function Pa(e){let t=new Map,n=new Map;for(let o of e){if(o.type!=="row"||!o.segmentedRow)continue;let r=n.get(o.segmentedRow.groupId)??[];r.push(o),n.set(o.segmentedRow.groupId,r)}for(let[o,r]of n){let i=r.slice().sort((h,d)=>h.segmentedRow.componentIndex-d.segmentedRow.componentIndex),a=i[0]?.segmentedRow?.componentCount??0,s=i[0]?.segmentedRow;if(!s||!(a>=2&&i.length===a&&s?.boundaryBefore==="start"&&i.every((h,d)=>h.segmentedRow?.kind==="segmented-row-v1"&&h.segmentedRow.groupId===o&&h.segmentedRow.componentCount===a&&h.segmentedRow.componentIndex===d&&h.segmentedRow.repeatLabelOnComponents===s.repeatLabelOnComponents&&(d===0?h.segmentedRow.boundaryBefore==="start":h.segmentedRow.boundaryBefore!=="start")&&h.segmentedRow.displayLabel===s.displayLabel)))continue;let l=i.reduce((h,d)=>h+d.seatCount,0),u=0,m=0;for(let h of i)h.segmentedRow.boundaryBefore==="break"&&(u+=1),t.set(h.id,{groupId:o,adjacencyOffset:u,displayOffset:m,displayLabel:s.displayLabel,totalSeats:l,canonical:i[0],viewFromSeatUrl:s.viewFromSeatUrl,viewFromSeatMeta:s.viewFromSeatMeta,confidenceEvidence:s.confidenceEvidence}),u+=h.seatCount,m+=h.seatCount}return t}var uf="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var mf="abcdefghijklmnopqrstuvwxyz";function ff(e,t){let n=t.length,o=e+1,r="";for(;o>0;){o-=1;let i=o%n;r=t[i]+r,o=Math.floor(o/n)}return r}function ur(e,t=!1){let n=t?mf:uf;return ff(Math.max(0,Math.floor(e)-1),n)}var df=[[1e3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50,"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]];function Ia(e){if(!Number.isFinite(e)||e<=0)return String(e);let t=Math.floor(e),n="";for(let[o,r]of df)for(;t>=o;)n+=r,t-=o;return n}function hf(e){let t=new Array(e);return Array.from({length:e},(n,o)=>o).sort((n,o)=>Math.abs(2*n-(e-1))-Math.abs(2*o-(e-1))||n-o).forEach((n,o)=>t[n]=o),t}function eo(e,t){let n=e.seatLabelStart??1,o=e.seatNumbering?.direction??"ltr",r=e.seatNumbering?.step??1,i=e.seatNumbering?.scheme??"decimal",a=e.seatNumbering?.prefix??"",s=e.seatNumbering?.endAt,c=e.seatCount;if(i==="updown"||i==="updown-descending"){let d=Math.ceil(c/2),f=i==="updown"?t<d?n+2*t:n-1+2*(c-t):t<d?n+2*(d-1-t):n+1+2*(t-d);return`${a}${f}`}let l=i==="odd"||i==="even"?2:r,u=s!=null&&Number.isFinite(s)?s-(c-1)*l:n,m=o==="center"?hf(c)[t]:o==="rtl"?c-1-t:t,h;switch(i){case"odd":{let d=u%2===1?u:u+1;h=String(d+m*2);break}case"even":{let d=u%2===0?u:u+1;h=String(d+m*2);break}case"roman":h=Ia(u+m*r);break;case"letters-upper":h=ur(u+m*r,!1);break;case"letters-lower":h=ur(u+m*r,!0);break;default:h=String(u+m*r);break}return`${a}${h}`}function pf(e){return{...e.canonical,seatCount:e.totalSeats,label:e.displayLabel,displayLabel:e.displayLabel}}function Ra(e,t,n){return n?.label??`${e.seatLabelBase??e.label}-${eo(e,t)}`}function mr(e,t,n,o){if(o?.displayLabel)return o.displayLabel;if(e.seatDisplayLabelMode==="number")return eo(e,t);if(!n)return`${e.displayLabel||e.label}-${eo(e,t)}`;let r=pf(n),i=n.displayOffset+t;return`${n.displayLabel}-${eo(r,i)}`}function Aa(e){let t=e.length;return t<=3?[...e]:[e[Math.floor(t*.25)],e[Math.floor(t*.5)],e[Math.floor(t*.75)]]}function Ht(e,t,n){if(!e.length)return 1/0;if(e.length===1)return Math.hypot(t-e[0].x,n-e[0].y);let o=1/0;for(let r=0;r+1<e.length;r++){let i=e[r],a=e[r+1],s=a.x-i.x,c=a.y-i.y,l=s*s+c*c,u=l>1e-12?((t-i.x)*s+(n-i.y)*c)/l:0;u<0?u=0:u>1&&(u=1);let m=t-(i.x+u*s),h=n-(i.y+u*c);if(Math.abs(m)>=o||Math.abs(h)>=o)continue;let d=Math.hypot(m,h);d<o&&(o=d)}return o}function bf(e){let t=0,n=0;for(let i of e)t+=i.x,n+=i.y;let o=e.length||1;t/=o,n/=o;let r=0;for(let i of e){let a=Math.hypot(i.x-t,i.y-n);a>r&&(r=a)}return{cx:t,cy:n,r}}function Ea(e,t){return Math.hypot(e.cx-t.cx,e.cy-t.cy)-e.r-t.r}function fr(e,t){let n=1/0;for(let o of Aa(e)){let r=Ht(t,o.x,o.y);r<n&&(n=r)}for(let o of Aa(t)){let r=Ht(e,o.x,o.y);r<n&&(n=r)}return n}function yf(e,t){if(e.length<3)return{pts:e,seatIndices:t};let n=0,o=0;for(let u of e)n+=u.x,o+=u.y;n/=e.length,o/=e.length;let r=-1,i=e[0];for(let u of e){let m=Math.hypot(u.x-n,u.y-o);m>r&&(r=m,i=u)}let a=i.x-n,s=i.y-o,c=Math.hypot(a,s);c>1e-9?(a/=c,s/=c):(a=1,s=0);let l=e.map((u,m)=>({p:u,i:m,t:(u.x-n)*a+(u.y-o)*s})).sort((u,m)=>u.t-m.t);return{pts:l.map(u=>u.p),seatIndices:l.map(u=>t[u.i])}}function dr(e){let t=e.length;if(t<3)return null;let n=0,o=0;for(let g of e)n+=g.x,o+=g.y;n/=t,o/=t;let r=0,i=0,a=0,s=0,c=0,l=0,u=0;for(let g of e){let M=g.x-n,P=g.y-o;r+=M*M,a+=P*P,i+=M*P,s+=M*M*M,c+=P*P*P,l+=M*P*P,u+=P*M*M}let m=r*a-i*i;if(Math.abs(m)<1e-9)return null;let h=(s+l)/2,d=(c+u)/2,f=(h*a-d*i)/m,p=(d*r-h*i)/m,b=f+n,y=p+o;return!Number.isFinite(b)||!Number.isFinite(y)?null:{cx:b,cy:y}}var gf=.15;function xf(e){if(e.length<2)return null;let t=e.map(I=>{let S=0,x=0;for(let v of I.pts)S+=v.x,x+=v.y;return{x:S/I.pts.length,y:x/I.pts.length}}),n=0,o=0;for(let I of t)n+=I.x,o+=I.y;n/=t.length,o/=t.length;let r=0,i=0,a=0;for(let I of t){let S=I.x-n,x=I.y-o;r+=S*S,i+=S*x,a+=x*x}let s=r+a,c=r*a-i*i,l=s/2+Math.sqrt(Math.max(0,s*s/4-c)),u,m;Math.abs(i)>1e-12?(u=l-a,m=i):r>=a?(u=1,m=0):(u=0,m=1);let h=Math.hypot(u,m);if(!(h>1e-12))return null;u/=h,m/=h;let d=0,f=0,p=0;for(let I of e){if(I.pts.length<2)continue;let S=I.pts[0],x=I.pts[I.pts.length-1],v=x.x-S.x,w=x.y-S.y,R=Math.hypot(v,w);if(!(R>1e-9))continue;let T=v/R,O=w/R;d+=(T*T-O*O)*R,f+=2*T*O*R,p+=R}if(p>0&&Math.hypot(d,f)>=Mf*p){let I=Math.atan2(f,d)/2,S=Math.cos(I),x=Math.sin(I);Math.abs(u*S+m*x)>Sf&&(u=-x,m=S)}let b=1/0,y=-1/0,g=[];for(let I of e){let S=1/0,x=-1/0;for(let v of I.pts){let w=v.x*u+v.y*m;w<S&&(S=w),w>x&&(x=w),w<b&&(b=w),w>y&&(y=w)}g.push(x-S)}let M=y-b;return M>1e-9?(g.sort((I,S)=>I-S),g[Math.min(g.length-1,Math.floor(g.length*.9))]/M<=vf?{x:u,y:m}:null):null}var vf=.35,Mf=.8,Sf=.7;function to(e,t,n,o){let r=new Map;for(let S of n){let x=t[S],v=x.rowId||`__seat-${S}`,w=r.get(v);w||(w={pts:[],idx:[]},r.set(v,w)),w.pts.push({x:x.x,y:x.y}),w.idx.push(S)}if(!r.size)return{sectionId:e,rows:[],blockCount:0};let i=[];for(let[S,x]of r){let v=yf(x.pts,x.idx),w=0;for(let R of v.pts)w+=Math.hypot(R.x-o.x,R.y-o.y);i.push({id:S,pts:v.pts,seatIndices:v.seatIndices,blockId:-1,ordinal:0,blockDepth:0,focalDistance:w/v.pts.length})}let a=i.map(S=>bf(S.pts)),s=i.length<=256?i.length*(i.length-1)/2:0,c=s?new Float64Array(s):null;c?.fill(Number.NaN);let l=c?new Map(i.map((S,x)=>[S,x])):null,u=(S,x)=>(S>x&&([S,x]=[x,S]),S*(2*i.length-S-1)/2+(x-S-1)),m=(S,x)=>{if(!c)return fr(i[S].pts,i[x].pts);let v=u(S,x),w=c[v];if(!Number.isNaN(w))return w;let R=fr(i[S].pts,i[x].pts);return c[v]=R,R},h=(S,x)=>l?m(l.get(S),l.get(x)):fr(S.pts,x.pts),d=[];for(let S=0;S<i.length;S++){let x=1/0;for(let v=0;v<i.length;v++){if(S===v||Ea(a[S],a[v])>=x)continue;let w=m(S,v);w<x&&(x=w)}Number.isFinite(x)&&d.push(x)}d.sort((S,x)=>S-x);let f=d.length?d[Math.floor(d.length/2)]:1,p=Math.max(f*1.8,1e-6),b=i.map(()=>[]);for(let S=0;S<i.length;S++)for(let x=S+1;x<i.length;x++)Ea(a[S],a[x])>p||m(S,x)<=p&&(b[S].push(x),b[x].push(S));let y=0;for(let S=0;S<i.length;S++){if(i[S].blockId!==-1)continue;let x=y++,v=[S];for(i[S].blockId=x;v.length;){let w=v.pop();for(let R of b[w])i[R].blockId===-1&&(i[R].blockId=x,v.push(R))}}let g=new Map;for(let S of i){let x=g.get(S.blockId)??[];x.push(S),g.set(S.blockId,x)}let M=[];for(let S of i){if(S.pts.length<4)continue;let x=dr(S.pts);x&&(!Number.isFinite(x.cx)||!Number.isFinite(x.cy)||M.push({x:x.cx,y:x.cy}))}let P=M.length>=2?(()=>{let S=M.map(w=>w.x).sort((w,R)=>w-R),x=M.map(w=>w.y).sort((w,R)=>w-R),v=Math.floor(M.length/2);return{cx:S[v],cy:x[v]}})():null;if(P){let S=O=>Math.hypot(O.x-P.cx,O.y-P.cy),x=1/0,v=-1/0,w=[];for(let O of i){let C=1/0,A=-1/0;for(let _ of O.pts){let L=S(_);L<C&&(C=L),L>A&&(A=L)}w.push(A-C),C<x&&(x=C),A>v&&(v=A)}let R=v-x;w.sort((O,C)=>O-C);let T=w[Math.min(w.length-1,Math.floor(w.length*.9))];if(R>1e-9&&T/R<=gf){let O=i.map(D=>{let G=0;for(let j of D.pts)G+=S(j);return{row:D,radius:G/D.pts.length}}),C=0,A=0;for(let D of O)C+=D.radius,A+=D.row.focalDistance;C/=O.length,A/=O.length;let _=0;for(let D of O)_+=(D.radius-C)*(D.row.focalDistance-A);if(_<0)for(let D of O)D.radius=-D.radius;let N=1/0;for(let D of O)D.radius<N&&(N=D.radius);O.sort((D,G)=>D.radius-G.radius);let k=-1,F=-1/0,H=R/Math.max(1,O.length)*.5,B=[];for(let D of O)D.radius-F>H&&(k++,F=D.radius),D.row.ordinal=k,D.row.blockDepth=D.radius-N,B.push(D.row);return{sectionId:e,rows:B,blockCount:y}}}let I=[];for(let[,S]of g){let x=xf(S);if(x){let v=O=>{let C=0;for(let A of O.pts)C+=A.x*x.x+A.y*x.y;return C/O.pts.length};S.sort((O,C)=>v(O)-v(C)),S.length>=2&&S[0].focalDistance>S[S.length-1].focalDistance&&S.reverse();let w=[],R=f*.5;for(let O of S){let C=w[w.length-1];C&&Math.abs(v(O)-v(C[0]))<R?C.push(O):w.push([O])}let T=0;for(let O=0;O<w.length;O++){if(O>0){let C=1/0;for(let A of w[O-1])for(let _ of w[O])C=Math.min(C,h(A,_));T+=C}for(let C of w[O])C.ordinal=O,C.blockDepth=T,I.push(C)}}else{let v=1/0;for(let w of S)w.focalDistance<v&&(v=w.focalDistance);S.sort((w,R)=>w.focalDistance-R.focalDistance);for(let w=0;w<S.length;w++)S[w].ordinal=w,S[w].blockDepth=Math.max(0,S[w].focalDistance-v),I.push(S[w])}}return{sectionId:e,rows:I,blockCount:y}}var wf=/^\d{4}-\d{2}-\d{2}$/;function Pf(e){let t=Date.parse(e);return Number.isFinite(t)?wf.test(e)?t+864e5:t:null}function If(e,t=Date.now()){if(e.validUntil===void 0){if(e.status!=="approved")return!0;let o=e.assessedAt?Date.parse(e.assessedAt):Number.NaN;return Number.isFinite(o)&&(t instanceof Date?t.getTime():t)<=o+366*864e5}let n=Pf(e.validUntil);return n===null?!1:(t instanceof Date?t.getTime():t)<n}function Rf(e,t,n){return!(e.eventConfigurationId&&e.eventConfigurationId!==t||e.eventConfigurationVersion!==void 0&&e.eventConfigurationVersion!==n)}function Af(e){return e.status!=="draft"&&e.status!=="retracted"}function Ef(e,t){return e.status===void 0?t===void 0:e.status!=="approved"?!0:typeof t=="string"&&typeof e.basisSha256=="string"&&e.basisSha256===t}function Ca(e,t={}){return!!e&&Af(e)&&Rf(e,t.activeConfigurationId,t.activeConfigurationVersion)&&Ef(e,t.activeBasisSha256)&&If(e,t.now)}var Cf=/^data:image\/(?:png|jpe?g|webp|gif|avif);base64,[a-z0-9+/]+={0,2}$/i,_f=/[\s"'<>`\\]/;function Tf(e){if(typeof e!="string"||!e||e.length>2e6||e!==e.trim())return!1;if(e.startsWith("data:"))return Cf.test(e);if(_f.test(e))return!1;try{let t=new URL(e);return t.protocol==="https:"&&!t.username&&!t.password}catch{return!1}}function _a(e){let t=e.trim();return Tf(t)?t:null}var hr="seatlayer.event-configuration/1";var zt=100,kf=120,Lf=2e5,Ff=1e4,Of=/^[a-f0-9]{64}$/,Df=new Set(["stage","screen","barrier","camera_platform","sound_desk","rigging_truss"]);function Sn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function kt(e,t){return typeof e=="string"&&e.length>=1&&e.length<=t&&e.normalize("NFKC").trim()===e}function Bf(e){return typeof e=="number"&&Number.isInteger(e)&&e>0}function Ta(e){return!Array.isArray(e)||e.length>Lf||!e.every(t=>kt(t,zt))?null:[...new Set(e)].sort()}function Nf(e){return!Sn(e)||!kt(e.chartId,zt)||!kt(e.version,zt)||e.sha256!==void 0&&(typeof e.sha256!="string"||!Of.test(e.sha256))?null:{chartId:e.chartId,version:e.version,...typeof e.sha256=="string"?{sha256:e.sha256}:{}}}function pr(e,t,n){return typeof e=="number"&&Number.isFinite(e)&&e>=t&&e<=n}function Vf(e){return Sn(e)?e.mode==="none"||e.mode==="opaque"?e.opacity===void 0?{mode:e.mode}:null:e.mode==="partial"&&pr(e.opacity,.01,.99)?{mode:"partial",opacity:e.opacity}:null:null}function Gf(e,t){if(e===void 0)return;if(!Array.isArray(e)||e.length>Ff)return null;let n=new Set(t),o=new Set,r=new Set,i=0,a=[];for(let s of e){if(!Sn(s)||!kt(s.id,zt)||!kt(s.objectId,zt)||!n.has(s.objectId)||!Df.has(String(s.kind))||!pr(s.heightM,.05,50)||s.baseElevationM!==void 0&&!pr(s.baseElevationM,-10,100))return null;let c=Vf(s.occlusion);if(!c||o.has(s.id)||r.has(s.objectId))return null;let l=s.contentImageUrl===void 0?void 0:typeof s.contentImageUrl=="string"?_a(s.contentImageUrl):null;if(s.contentImageUrl!==void 0&&(!l||s.kind!=="screen"||++i>1))return null;o.add(s.id),r.add(s.objectId),a.push({id:s.id,objectId:s.objectId,kind:s.kind,heightM:s.heightM,...s.baseElevationM!==void 0?{baseElevationM:s.baseElevationM}:{},occlusion:c,...l?{contentImageUrl:l}:{}})}return a.sort((s,c)=>s.id.localeCompare(c.id))}function Hf(e){let t=[];if(!Sn(e))return{issues:[{code:"invalid_export",path:"configuration",message:"Configuration must be an object"}]};e.schema!==hr&&t.push({code:"unsupported_schema",path:"configuration.schema",message:`Configuration schema must be ${hr}`}),kt(e.id,zt)||t.push({code:"invalid_id",path:"configuration.id",message:"Configuration id must contain 1 to 100 normalized characters"}),kt(e.label,kf)||t.push({code:"invalid_label",path:"configuration.label",message:"Configuration label must contain 1 to 120 normalized characters"}),Bf(e.version)||t.push({code:"invalid_version",path:"configuration.version",message:"Configuration version must be a positive integer"});let n=Nf(e.baseVenue);n||t.push({code:"invalid_base_venue",path:"configuration.baseVenue",message:"Base venue must identify one normalized chart id and exact version"});let o=Sn(e.overlay)?e.overlay:null,r=Ta(o?.objectIds),i=Ta(o?.productionKillSeatIds),a=r?Gf(o?.productionElements,r):null;return(!o||!r||!i)&&t.push({code:"invalid_overlay",path:"configuration.overlay",message:"Overlay ids must be bounded arrays of normalized stable ids"}),a===null&&t.push({code:"invalid_production_element",path:"configuration.overlay.productionElements",message:"Production elements must be unique, bounded semantics over referenced base-venue objects"}),t.length||!n||!r||!i||a===null?{issues:t}:{issues:t,value:{schema:hr,id:e.id,label:e.label,version:e.version,baseVenue:n,overlay:{objectIds:r,productionKillSeatIds:i,...a!==void 0?{productionElements:a}:{}}}}}function ka(e){let t=Hf(e);return t.value?{ok:!0,value:t.value}:{ok:!1,issues:t.issues}}function zf(e){if((e.kind==="polygon"||e.kind==="polyline"||e.kind==="line")&&e.points&&e.points.length>=2)return e.points;if(e.x==null||e.y==null||e.width==null||e.height==null)return null;let t=e.x,n=e.y,o=e.width,r=e.height;return[{x:t,y:n},{x:t+o,y:n},{x:t+o,y:n+r},{x:t,y:n+r}]}function Uf(e,t,n){let o=n*Math.PI/180,r=Math.cos(o),i=Math.sin(o),a=e.x-t.x,s=e.y-t.y;return{x:t.x+a*r-s*i,y:t.y+a*i+s*r}}function La(e){let t=zf(e);if(!t||t.length<2)return null;let n=e.rotation??0,o=Math.abs(n)<1e-6?t:t.map(c=>Uf(c,{x:t.reduce((l,u)=>l+u.x,0)/t.length,y:t.reduce((l,u)=>l+u.y,0)/t.length},n)),r=1/0,i=1/0,a=-1/0,s=-1/0;for(let c of o)r=Math.min(r,c.x),i=Math.min(i,c.y),a=Math.max(a,c.x),s=Math.max(s,c.y);return!Number.isFinite(r)||a-r<1e-6||s-i<1e-6?null:{minX:r,minY:i,maxX:a,maxY:s}}var jf=5,Xf=3,Wf=.92,Yf=1.9,Kf=2,qf=.6,$f=1,Zf=.06;function Qf(e){return e.heightM!==void 0?e.heightM:e.stageKind==="ring-boxing"?Qn:Mn(e.stageKind)?Zf:$f}function Fa(e){let t=1/0,n=1/0,o=-1/0,r=-1/0,i=-1/0;for(let a of Ba(e)){let s=a.baseHeightM??0;for(let c of a.objects){if(c.type!=="shape"||c.role!=="stage")continue;let l=La(c);l&&(t=Math.min(t,l.minX),n=Math.min(n,l.minY),o=Math.max(o,l.maxX),r=Math.max(r,l.maxY),i=Math.max(i,s+Qf(c)))}}return!Number.isFinite(t)||!Number.isFinite(i)?null:{minX:t,minY:n,maxX:o,maxY:r,deckTopM:i}}function Jf(e,t,n,o){let r=1/0,i=1/0,a=-1/0,s=-1/0;for(let d of e)Number.isFinite(d.eyeHeightM)&&(r=Math.min(r,d.x),a=Math.max(a,d.x),i=Math.min(i,d.y),s=Math.max(s,d.y));if(!Number.isFinite(r))return null;let c=r*t,l=i*t,u=Math.max(1,Math.ceil((a-r)*t/n)+1),m=Math.max(1,Math.ceil((s-i)*t/n)+1),h=new Float64Array(u*m).fill(-1/0);for(let d of e){if(!Number.isFinite(d.eyeHeightM))continue;let f=d.eyeHeightM-Qe,p=Math.min(u-1,Math.max(0,Math.floor((d.x*t-c)/n))),y=Math.min(m-1,Math.max(0,Math.floor((d.y*t-l)/n)))*u+p,g=f+o;g>h[y]&&(h[y]=g)}return{cellM:n,minX:c,minY:l,cols:u,rows:m,top:h}}function ed(e,t,n){let o=Math.floor((t-e.minX)/e.cellM),r=Math.floor((n-e.minY)/e.cellM);return o<0||r<0||o>=e.cols||r>=e.rows?-1/0:e.top[r*e.cols+o]}function Oa(e,t,n={}){let o=new Map;if(!t||!e.length)return o;let r=n.metresPerChartUnit??fe,i=n.cellM??qf,a=n.chairBackM??Wf,s=n.selfRowSkipM??Kf,c=n.clearThreshold??.9,l=n.partialThreshold??.25,u=Math.max(1,n.columns??jf),m=Math.max(1,n.rows??Xf),h=Jf(e,r,i,a);if(!h)return o;let d=(t.maxX-t.minX)*r,f=(t.maxY-t.minY)*r,p=d>=f,b=(t.minX+t.maxX)/2*r,y=(t.minY+t.maxY)/2*r,g=[];for(let P=0;P<u;P++){let I=(P+.5)/u-.5,S=p?b+I*d:b,x=p?y:y+I*f;for(let v=0;v<m;v++){let w=t.deckTopM+(m===1?0:v/(m-1)*Yf);g.push({x:S,y:x,z:w})}}let M=i/2;for(let P of e){if(!Number.isFinite(P.eyeHeightM))continue;let I=P.x*r,S=P.y*r,x=P.eyeHeightM,v=0,w=1/0;for(let T of g){let O=T.x-I,C=T.y-S,A=Math.hypot(O,C);if(!(A>s)){v++;continue}let _=O/A,L=C/A,N=0;for(let k=s;k<A;k+=M){let F=ed(h,I+_*k,S+L*k);if(!(!Number.isFinite(F)||F>=x)&&F>x+(T.z-x)*k/A){N=k;break}}N?w=Math.min(w,N):v++}let R=v/g.length;R>=c||o.set(P.id,{seatId:P.id,mark:R<l?"obstructedView":"restrictedView",visibleFraction:R,totalRays:g.length,atDistanceM:Number.isFinite(w)?w:0})}return o}function Da(e,t){if(!t.size)return 0;let n=0;for(let o of e){let r=t.get(o.id);if(!r)continue;let i=o.commercial;i?.restrictedView!==void 0||i?.obstructedView!==void 0||(o.commercial={...i,[r.mark]:!0},n++)}return n}function br(e){return e?e.accessibility?.length?e.wheelchairSpaceType&&!e.accessibility.includes("wheelchair")?["wheelchair",...e.accessibility]:e.accessibility:e.wheelchairSpaceType?["wheelchair"]:e.accessible?["wheelchair"]:[]:[]}var oo=Math.PI/180;var wn=16;function yr(e,t,n,o){let r=n*oo,i=Math.cos(r),a=Math.sin(r);return{x:o.x+e*i-t*a,y:o.y+e*a+t*i}}function za(e){let{seatCount:t,seatSpacing:n,curve:o,rotation:r,origin:i}=e,a=[];if(e.path)return wa(e.path,t);if(t<=1)return t===1&&a.push({x:i.x,y:i.y}),a;if(o===0){for(let l=0;l<t;l++)a.push(yr(l*n,0,r,i));return a}let s=o/(t-1)*oo,c=n/(2*Math.sin(Math.abs(s)/2));for(let l=0;l<t;l++){let u=l*s,m=c*Math.sin(u),h=-c+c*Math.cos(u);a.push(yr(m,h,r,i))}return a}function Ua(e){let t=new Map;if(e.overrides)for(let n of e.overrides)t.set(n.index,n);return t}function td(e,t){let n=Ua(e);return za(e).map((o,r)=>{let i=n.get(r),a=br(i),s=Ra(e,r,i),c={...e.commercial,...i?.commercial};return{index:r,x:o.x+(i?.dx??0),y:o.y+(i?.dy??0),label:s,displayLabel:mr(e,r,t,i),categoryKey:i?.categoryKey??e.categoryKey,skipped:!!i?.skip,accessible:a.length>0,accessibility:a,wheelchairSpaceType:i?.wheelchairSpaceType,commercial:Object.values(c).some(l=>l!==void 0&&l!==!1&&l!=="")?c:void 0,glyph:i?.glyph,viewUrl:i?.viewFromSeatUrl??e.viewFromSeatUrl,viewMeta:i?.viewFromSeatUrl?i.viewFromSeatMeta:e.viewFromSeatMeta,labelStyle:i?.labelStyle??e.seatLabelStyle}})}function nd(e){let t=[];for(let n of td(e))n.skipped||t.push({id:`${e.id}:${n.index}`,label:n.label,displayLabel:n.displayLabel===n.label?void 0:n.displayLabel,x:n.x,y:n.y,rowId:e.id,categoryKey:n.categoryKey,accessible:n.accessible||void 0,accessibility:n.accessibility.length?n.accessibility:void 0,wheelchairSpaceType:n.wheelchairSpaceType,commercial:n.commercial,glyph:n.glyph,viewUrl:n.viewUrl,viewMeta:n.viewMeta,labelStyle:n.labelStyle});return t}function od(e){if(e.seatCountsBySide)return{...e.seatCountsBySide};let t=e.sides&&e.sides.length?e.sides:["top","bottom"],n=["top","bottom","left","right"].filter(i=>t.includes(i)),o={top:0,bottom:0,left:0,right:0};if(!n.length)return o;let r=Math.max(0,Math.round(e.seatCount));for(let i=0;i<r;i++)o[n[i%n.length]]+=1;return o}function rd(e){let t=[],n=Math.max(0,Math.round(e.seatCount));if(n===0)return t;let o=new Map((e.overrides??[]).map(u=>[u.index,u])),r=(u,m,h,d)=>{let f=o.get(u),p=br(f),b=f?.label??`${e.label}-${u+1}`,y=e.displayLabel??e.label;return{index:u,label:b,displayLabel:f?.displayLabel??`${y}-${u+1}`,x:m+(f?.dx??0),y:h+(f?.dy??0),categoryKey:f?.categoryKey??e.categoryKey,skipped:!!f?.skip,accessible:p.length>0,accessibility:p,wheelchairSpaceType:f?.wheelchairSpaceType,commercial:f?.commercial,glyph:f?.glyph,viewUrl:f?.viewFromSeatUrl,viewMeta:f?.viewFromSeatUrl?f.viewFromSeatMeta:void 0,labelStyle:f?.labelStyle,...d?{side:d}:{}}};if(e.shape==="round"){let u=(e.radius??40)+wn,m=e.rotation*oo,h=Math.max(0,Math.min(360,e.seatArc??360));if(h>=360||n===1){for(let b=0;b<n;b++){let y=m+b/n*2*Math.PI;t.push(r(b,e.center.x+u*Math.cos(y),e.center.y+u*Math.sin(y)))}return t}let d=h*oo,f=(2*Math.PI-d)/2,p=m+f;for(let b=0;b<n;b++){let y=p+b/(n-1)*d;t.push(r(b,e.center.x+u*Math.cos(y),e.center.y+u*Math.sin(y)))}return t}let i=e.width??80,a=e.height??50,s=od(e),c=["top","bottom","left","right"],l=0;for(let u of c){let m=s[u];for(let h=0;h<m;h++){let d,f;u==="top"?(d=-i/2+(h+.5)*i/m,f=-a/2-wn):u==="bottom"?(d=-i/2+(h+.5)*i/m,f=a/2+wn):u==="left"?(d=-i/2-wn,f=-a/2+(h+.5)*a/m):(d=i/2+wn,f=-a/2+(h+.5)*a/m);let p=yr(d,f,e.rotation,e.center);t.push(r(l++,p.x,p.y,u))}}return t}function id(e){return rd(e).filter(t=>!t.skipped).map(t=>({id:`${e.id}:${t.index}`,label:t.label,...t.displayLabel!==t.label?{displayLabel:t.displayLabel}:{},x:t.x,y:t.y,rowId:e.id,categoryKey:t.categoryKey,...t.accessible?{accessible:!0}:{},...t.accessibility.length?{accessibility:t.accessibility}:{},...t.wheelchairSpaceType?{wheelchairSpaceType:t.wheelchairSpaceType}:{},...t.commercial?{commercial:t.commercial}:{},...t.glyph?{glyph:t.glyph}:{},...t.viewUrl?{viewUrl:t.viewUrl}:{},...t.viewUrl&&t.viewMeta?{viewMeta:t.viewMeta}:{},...t.labelStyle?{labelStyle:t.labelStyle}:{}}))}function ad(e){return[{id:`${e.id}:0`,label:e.label,...e.displayLabel&&e.displayLabel!==e.label?{displayLabel:e.displayLabel}:{},x:e.center.x,y:e.center.y,rowId:e.id,categoryKey:e.categoryKey,kind:"booth"}]}function Na(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o].x,a=t[o].y,s=t[r].x,c=t[r].y;a>e.y!=c>e.y&&e.x<(s-i)*(e.y-a)/(c-a)+i&&(n=!n)}return n}function sd(e,t){return t.some((n,o)=>{let r=t[(o+1)%t.length],i=(e.y-n.y)*(r.x-n.x)-(e.x-n.x)*(r.y-n.y);if(Math.abs(i)>1e-7)return!1;let a=(e.x-n.x)*(r.x-n.x)+(e.y-n.y)*(r.y-n.y),s=(r.x-n.x)**2+(r.y-n.y)**2;return a>=-1e-7&&a<=s+1e-7})}function gr(e){return Array.isArray(e)?e.filter(t=>Array.isArray(t)&&t.length>=3):[]}function Le(e,t,n){return Na(e,t)&&!gr(n).some(o=>Na(e,o)||sd(e,o))}function no(e){if(!e.length)return{x:0,y:0};let t=0,n=0;for(let o of e)t+=o.x,n+=o.y;return{x:t/e.length,y:n/e.length}}function ja(e){switch(e.type){case"row":{let t=za(e),n=Ua(e),o=0,r=0,i=0;for(let a=0;a<t.length;a++){let s=n.get(a);s?.skip||(o+=t[a].x+(s?.dx??0),r+=t[a].y+(s?.dy??0),i++)}return i?{x:o/i,y:r/i}:{x:e.origin.x,y:e.origin.y}}case"table":case"booth":return{x:e.center.x,y:e.center.y};case"gaArea":return no(e.points);case"section":return no(e.outline);case"text":return{x:e.position.x,y:e.position.y};case"shape":return e.points&&e.points.length?no(e.points):e.x!=null&&e.y!=null&&e.width!=null&&e.height!=null?{x:e.x+e.width/2,y:e.y+e.height/2}:{x:e.x??0,y:e.y??0};case"decorImage":return{x:e.x+e.width/2,y:e.y+e.height/2}}}function Va(e,t){return e.length===t.length&&e.every((n,o)=>n.x===t[o].x&&n.y===t[o].y)}function cd(e,t){if(e.type!=="gaArea"||!Va(e.points,t.outline))return!1;let n=gr(e.holes),o=gr(t.holes);return n.length===o.length&&n.every((r,i)=>Va(r,o[i]))}function ld(e,t,n=e.filter(r=>r.type==="section"),o=ja(t)){let r="referenceInventorySource"in t?t.referenceInventorySource?.logicalSectionId:void 0;return(r?n.find(a=>(a.logicalSectionId??a.id)===r&&(cd(t,a)||Le(o,a.outline,a.holes))):void 0)??n.find(a=>Le(o,a.outline,a.holes))}function Ba(e){return e.floors&&e.floors.length?e.floors:[{id:"floor-0",name:"Main",objects:e.objects,focalPoint:e.focalPoint,referenceImage:e.referenceImage,backgroundImage:e.backgroundImage}]}function Ga(e,t,n,o,r,i,a,s,c){let l=[],u=e.filter(p=>p.type==="section"),m=Pa(e),h=p=>!p?.eventConfigurationId||p.eventConfigurationId===o&&(p.eventConfigurationVersion===void 0||p.eventConfigurationVersion===c),d=p=>Ca(p,{activeConfigurationId:o,activeConfigurationVersion:c,activeBasisSha256:r,now:s}),f=(p,b)=>d(p)?{...p,coverage:b}:void 0;for(let p of e){let b=[];if(p.type==="row"?b=nd(p):p.type==="table"?b=id(p):p.type==="booth"&&(b=ad(p)),!b.length)continue;for(let I of b)I.viewUrl&&!h(I.viewMeta)&&(I.viewUrl=void 0,I.viewMeta=void 0);if(p.type==="row"){let I=m.get(p.id);if(I){let S=new Map((p.overrides??[]).map(x=>[x.index,x]));for(let x of b){let v=Number(x.id.slice(x.id.lastIndexOf(":")+1));if(!Number.isInteger(v))continue;x.logicalRowId=I.groupId,x.logicalSeatIndex=I.adjacencyOffset+v,S.get(v)?.displayLabel||(x.displayLabel=mr(p,v,I)),!x.viewUrl&&I.viewFromSeatUrl&&h(I.viewFromSeatMeta)&&(x.viewUrl=I.viewFromSeatUrl,x.viewMeta=I.viewFromSeatMeta);let w=S.get(v)?.confidenceEvidence;x.confidenceEvidence=f(w,"exact-seat")??f(p.confidenceEvidence,"row-representative")??f(I.confidenceEvidence,"row-representative")}}}let y=ld(e,p,u,p.type==="row"?no(b):ja(p)),g=y?.viewFromSeatUrl,P=(y?.zone?t?.find(I=>I.id===y.zone):void 0)?.focalPoint??n;for(let I of b){if(!I.confidenceEvidence){let S=Number(I.id.slice(I.id.lastIndexOf(":")+1)),x=(p.type==="row"||p.type==="table")&&Number.isInteger(S)?p.overrides?.find(v=>v.index===S)?.confidenceEvidence:void 0;I.confidenceEvidence=f(x,"exact-seat")??(p.type==="row"?f(p.confidenceEvidence,"row-representative"):void 0)}I.confidenceEvidence??=f(y?.confidenceEvidence,"section-representative")??(a?f(a.evidence,a.coverage):void 0),!I.viewUrl&&g&&h(y?.viewFromSeatMeta)&&(I.viewUrl=g,I.viewMeta=y?.viewFromSeatMeta),!I.viewUrl&&i&&h(i.meta)&&(I.viewUrl=i.url,I.viewMeta=i.meta),y&&(I.sectionId=y.logicalSectionId??y.id),y?.zone&&(I.zoneId=y.zone),P&&(I.focalPoint={...P})}l.push(...b)}return l}function Ut(e,t={}){if(e.floors?.length){let o=[];for(let r of e.floors){let i=r.focalPoint??e.focalPoint,a=r.viewFromSeatUrl?{url:r.viewFromSeatUrl,meta:r.viewFromSeatMeta}:e.viewFromSeatUrl?{url:e.viewFromSeatUrl,meta:e.viewFromSeatMeta}:void 0,s=r.confidenceEvidence?{evidence:r.confidenceEvidence,coverage:"floor-representative"}:e.confidenceEvidence?{evidence:e.confidenceEvidence,coverage:"venue-representative"}:void 0,c=Ga(r.objects,e.zones,i,e.eventConfigurationId,e.confidenceBasisSha256,a,s,t.now,t.eventConfigurationVersion??e.eventConfigurationVersion);t.resolveEyeHeights!==!1&&Ha(r.objects,r.focalPoint??e.focalPoint,r.baseHeightM??0,c);for(let l of c)l.floorId=r.id;for(let l of c)o.push(l)}return o}let n=Ga(e.objects,e.zones,e.focalPoint,e.eventConfigurationId,e.confidenceBasisSha256,e.viewFromSeatUrl?{url:e.viewFromSeatUrl,meta:e.viewFromSeatMeta}:void 0,e.confidenceEvidence?{evidence:e.confidenceEvidence,coverage:"venue-representative"}:void 0,t.now,t.eventConfigurationVersion??e.eventConfigurationVersion);return t.resolveEyeHeights!==!1&&Ha(e.objects,e.focalPoint,t.floorBaseHeightM??0,n),ud(e,n,t)}function ud(e,t,n){return!n.deriveRestrictedView||e.derivedRestrictedView===!1||n.resolveEyeHeights===!1||Da(t,Oa(t,Fa(e))),t}function Ha(e,t,n,o){let r=e.filter(m=>m.type==="section"),i=n>0||r.some(m=>m.height!==void 0||m.rake!==void 0||(m.elevation??0)>0);if(!r.length||!i||!t){for(let m of o)m.eyeHeightM=n+Qe;return}let a=new Array(o.length),s=new Map;for(let m of r)s.has(m.id)||s.set(m.id,m);let c=new Map,l=new Map;for(let m=0;m<o.length;m++){let h=o[m],f=(h.sectionId?s.get(h.sectionId)??r.find(b=>b.logicalSectionId===h.sectionId&&Le({x:h.x,y:h.y},b.outline,b.holes)):void 0)??r.find(b=>Le({x:h.x,y:h.y},b.outline,b.holes))??null;if(a[m]=f,!f)continue;c.has(f.id)||c.set(f.id,dt(f,{floorBaseHeightM:n}));let p=l.get(f.id);p?p.push(m):l.set(f.id,[m])}let u=new Array(o.length).fill(void 0);for(let[m,h]of l){let d=c.get(m);if(!d)continue;let f=d.rake>0?Math.tan(d.rake*Math.PI/180):0,p=to(m,o,h,t);for(let b of p.rows){let y=b.blockDepth*fe*f,g=d.height+y;for(let M of b.seatIndices)u[M]=g}}for(let m=0;m<o.length;m++){let h=o[m],d=a[m];if(!d){h.eyeHeightM=n+Qe;continue}let f=c.get(d.id);h.eyeHeightM=(u[m]??f.height)+Qe}}function Xa(e){let t=1/0,n=1/0,o=-1/0,r=-1/0,i=!1;for(let a of e)!Number.isFinite(a.x)||!Number.isFinite(a.y)||(i=!0,a.x<t&&(t=a.x),a.y<n&&(n=a.y),a.x>o&&(o=a.x),a.y>r&&(r=a.y));return i?{minX:t,minY:n,maxX:o,maxY:r}:null}function jt(e,t){return e.minX<=t.maxX&&t.minX<=e.maxX&&e.minY<=t.maxY&&t.minY<=e.maxY}function Pn(e){if(e.length<3)return e.map(i=>({...i}));let t=[...e].sort((i,a)=>i.x-a.x||i.y-a.y),n=(i,a,s)=>(a.x-i.x)*(s.y-i.y)-(a.y-i.y)*(s.x-i.x),o=i=>{let a=[];for(let s of i){for(;a.length>=2&&n(a[a.length-2],a[a.length-1],s)<=0;)a.pop();a.push(s)}return a.pop(),a},r=[...o(t),...o([...t].reverse())];return r.length>=3?r.map(i=>({...i})):t.map(i=>({...i}))}var ms=it(require("polygon-clipping"),1);var ne={top:1,wallBottom:.58,bottomCap:.4};function Lt(e,t){if(!e)return t;let n=ie(Ye(e,.4),.62);return be(t,n,.22)}function Wa(e,t){return e?be(t,ie(Ye(e,.25),.74),.62):t}function Ya(e,t){return e?be(t,ie(Ye(e,.08),.9),.82):t}function Ka(e,t){let n=new Map;for(let i of e.categories??[])n.set(i.key,i.color);let o=new Map;for(let i of t){if(!i.sectionId)continue;let a=o.get(i.sectionId);a||(a=new Map,o.set(i.sectionId,a)),a.set(i.categoryKey,(a.get(i.categoryKey)??0)+1)}let r=new Map;for(let[i,a]of o){let s=0,c=0,l=0,u=0;for(let[m,h]of a){let d=pe(n.get(m));d&&(s+=d[0]*h,c+=d[1]*h,l+=d[2]*h,u+=h)}u>0&&r.set(i,[s/u,c/u,l/u])}return r}function qa(e,t){return pe(e.color)??t.get(e.logicalSectionId??e.id)??null}var Sr=it(require("polygon-clipping"),1);var Mr=it(require("polygon-clipping"),1);var Ja=it(require("earcut"),1);var md=.58,$a=.01,Ue=at*1.5*ze,fd=.5,dd=.6;function hd(e,t){let n=e.length,o=[];for(let a=0;a<n;a++){let s=e[Math.max(0,a-1)],c=e[Math.min(n-1,a+1)],l=c.x-s.x,u=c.y-s.y,m=Math.hypot(l,u);if(m<1e-9){o.push([0,0]);continue}l/=m,u/=m,o.push([-u,l])}let r=0;for(let a=0;a<n;a++)r+=(e[a].x-t.x)*o[a][0]+(e[a].y-t.y)*o[a][1];return r<0?o.map(([a,s])=>[-a,-s]):o}function pd(e,t){if(e.length<2||t<=0)return[...e];let n=[...e],o=(a,s)=>{let c=s.x-a.x,l=s.y-a.y,u=Math.hypot(c,l)||1;return{x:c/u,y:l/u}},r=o(n[1],n[0]),i=o(n[n.length-2],n[n.length-1]);return n.unshift({x:n[0].x+r.x*t,y:n[0].y+r.y*t}),n.push({x:n[n.length-1].x+i.x*t,y:n[n.length-1].y+i.y*t}),n}var Za=Math.PI/12;function bd(e){if(e.length<3)return[...e];let t=[...e].sort((i,a)=>i.x-a.x||i.y-a.y),n=(i,a,s)=>(a.x-i.x)*(s.y-i.y)-(a.y-i.y)*(s.x-i.x),o=i=>{let a=[];for(let s of i){for(;a.length>=2&&n(a[a.length-2],a[a.length-1],s)<=0;)a.pop();a.push(s)}return a.pop(),a},r=[...o(t),...o([...t].reverse())];return r.length>=3?r:[...e]}function es(e,t){if(!e.length||!(t>0))return[];let n=bd(e),o=(s,c,l,u)=>{let m=l-c;for(;m<0;)m+=Math.PI*2;for(;m>Math.PI*2;)m-=Math.PI*2;let h=Math.max(1,Math.ceil(m/Za)),d=t/Math.cos(m/h/2);for(let f=0;f<=h;f++){let p=c+m*f/h;u.push({x:s.x+Math.cos(p)*d,y:s.y+Math.sin(p)*d})}};if(n.length<3){let s=0,c=0;for(let d of n)s+=d.x,c+=d.y;s/=n.length||1,c/=n.length||1;let l=0;for(let d of n)l=Math.max(l,Math.hypot(d.x-s,d.y-c));let u=[],m=Math.max(3,Math.ceil(Math.PI*2/Za)),h=(l+t)/Math.cos(Math.PI/m);for(let d=0;d<m;d++){let f=d/m*Math.PI*2;u.push({x:s+Math.cos(f)*h,y:c+Math.sin(f)*h})}return u}let r=n.length,i=[];for(let s=0;s<r;s++){let c=n[s],l=n[(s+1)%r];i.push(Math.atan2(-(l.x-c.x),l.y-c.y))}let a=[];for(let s=0;s<r;s++)o(n[s],i[(s+r-1)%r],i[s],a);return is(a)}function yd(e,t,n){if(e.length===1)return Math.hypot(t-e[0].x,n-e[0].y);let o=1/0;for(let r=0;r+1<e.length;r++){let i=e[r],a=e[r+1],s=a.x-i.x,c=a.y-i.y,l=s*s+c*c,u=l>1e-12?((t-i.x)*s+(n-i.y)*c)/l:0;u<0?u=0:u>1&&(u=1);let m=Math.hypot(t-(i.x+u*s),n-(i.y+u*c));m<o&&(o=m)}return o}function ro(e){let t=e.map(r=>{let i=0,a=0;for(let l of r.pts)i+=l.x,a+=l.y;let s=r.pts.length||1;i/=s,a/=s;let c=0;for(let l of r.pts){let u=Math.hypot(l.x-i,l.y-a);u>c&&(c=u)}return{cx:i,cy:a,rad:c}}),n=r=>{let i=r.length;return i<=2?[...r]:[r[Math.floor(i*.25)],r[Math.floor(i*.5)],r[Math.floor(i*.75)]]},o=[];for(let r=0;r<e.length;r++){let i=n(e[r].pts),a=[],s=1/0,c=null;for(let u of i){let m=1/0;for(let h=0;h<e.length;h++){if(h===r||Math.abs(e[h].y-e[r].y)<.001)continue;let d=t[h],f=Math.hypot(u.x-d.cx,u.y-d.cy)-d.rad;if(f>=m&&f>=s)continue;let p=yd(e[h].pts,u.x,u.y);p<m&&(m=p),e[h].depth<e[r].depth&&p<s&&(s=p,c=e[h].y)}Number.isFinite(m)&&m>0&&a.push(m)}a.sort((u,m)=>u-m);let l=a.length?a[Math.floor(a.length/2)]:1;o.push({pitch:l,belowY:c})}return o}function ts(e,t,n,o){let r=e[t],i=r.pts.length>=2?[...r.pts]:r.pts.length===1?(()=>{let u=r.pts[0],m=u.x-o.x,h=u.y-o.y,d=Math.hypot(m,h)||1;m/=d,h/=d;let f=Math.max(n[t].pitch,.001)*.5;return[{x:u.x+h*f,y:u.y-m*f},{x:u.x-h*f,y:u.y+m*f}]})():[];if(i.length<2)return null;let a=0,s=0;for(let u=1;u<i.length;u++){let m=Math.hypot(i[u].x-i[u-1].x,i[u].y-i[u-1].y);m>1e-6&&(a+=m,s++)}let c=s>0?a/s:0,l=pd(i,Math.max(c*dd,Ue));return{pts:l,nrm:hd(l,o),front:Math.max(n[t].pitch*md,Ue),back:Math.max(n[t].pitch*fd,Ue)}}var Xt=1.5,ns=.3;function xr(e,t){if(e.length<3)return e;let n=e[0],o=e[e.length-1],r=o.x-n.x,i=o.y-n.y,a=Math.hypot(r,i),s=-1,c=-1;for(let m=1;m<e.length-1;m++){let h=e[m],d=a>1e-12?Math.abs((h.x-n.x)*i-(h.y-n.y)*r)/a:Math.hypot(h.x-n.x,h.y-n.y);d>s&&(s=d,c=m)}if(s<=t||c<0)return[n,o];let l=xr(e.slice(0,c+1),t),u=xr(e.slice(c),t);return[...l.slice(0,-1),...u]}function os(e,t){if(e.length<4)return e;let n=xr([...e,e[0]],t);return n.pop(),n.length>=3?n:e}function gd(e){let t=e.map((o,r)=>{let i=e[(r+1)%e.length];return{a:o,b:i,i:r,minX:Math.min(o.x,i.x),maxX:Math.max(o.x,i.x),minY:Math.min(o.y,i.y),maxY:Math.max(o.y,i.y)}}).sort((o,r)=>o.minX-r.minX),n=(o,r,i)=>(r.x-o.x)*(i.y-o.y)-(r.y-o.y)*(i.x-o.x);for(let o=0;o<t.length;o++){let r=t[o];for(let i=o+1;i<t.length&&t[i].minX<=r.maxX;i++){let a=t[i];if(!(Math.abs(r.i-a.i)===1||Math.abs(r.i-a.i)===e.length-1||r.maxY<a.minY||a.maxY<r.minY)&&n(r.a,r.b,a.a)*n(r.a,r.b,a.b)<=0&&n(a.a,a.b,r.a)*n(a.a,a.b,r.b)<=0)return!0}}return!1}function rs(e,t,n){if(e.length<2)return[];let o=n??ro(e),r=new Map;for(let a=0;a<e.length;a++){let s=r.get(e[a].blockId);s?s.push(a):r.set(e[a].blockId,[a])}let i=[];for(let[,a]of r){let s=[];for(let g of a){let M=e[g].patch;M&&M.length>=3?i.push({outline:[...M],holes:[],topY:e[g].y}):s.push(g)}if(!s.length)continue;s.sort((g,M)=>e[g].depth-e[M].depth);let l=s.map(g=>ts(e,g,o,t)).filter(g=>g!==null);if(!l.length)continue;let u=(g,M)=>({x:g.pts[M].x-g.nrm[M][0]*(g.front+Xt),y:g.pts[M].y-g.nrm[M][1]*(g.front+Xt)}),m=(g,M)=>({x:g.pts[M].x+g.nrm[M][0]*(g.back+Xt),y:g.pts[M].y+g.nrm[M][1]*(g.back+Xt)}),h=l[0],d=l[l.length-1],f=[];for(let g=0;g<h.pts.length;g++)f.push(u(h,g));for(let g of l)f.push(m(g,g.pts.length-1));for(let g=d.pts.length-1;g>=0;g--)f.push(m(d,g));for(let g=l.length-1;g>=0;g--)f.push(u(l[g],0));let p=is(f),b=1/0;for(let g of s)e[g].y<b&&(b=e[g].y);if(!Number.isFinite(b))continue;if(p.length>=3&&Math.abs(Be(p))>1e-6&&l.every(g=>{let M=g.pts[Math.floor(g.pts.length/2)];return Ne(p,M.x,M.y)})&&!gd(p)){i.push({outline:os(p,ns),holes:[],topY:b});continue}for(let g of xd(l))i.push({outline:g,holes:[],topY:b})}return i}function xd(e){let t=[];for(let n of e){let o=[],r=[],i=n.front+Xt,a=n.back+Xt;for(let c=0;c<n.pts.length;c++){let l=n.pts[c],u=n.nrm[c];o.push([l.x-u[0]*i,l.y-u[1]*i]),r.push([l.x+u[0]*a,l.y+u[1]*a])}let s=[...o,...r.reverse()];s.length<3||(s.push(s[0]),t.push([s]))}if(!t.length)return[];try{let n=Mr.default.union(t[0],...t.slice(1)),o=[];for(let r of n){if(!r.length||r[0].length<4)continue;let i=r[0].map(([c,l])=>({x:c,y:l})),a=i[0],s=i[i.length-1];i.length>1&&Math.abs(a.x-s.x)<1e-9&&Math.abs(a.y-s.y)<1e-9&&i.pop(),i.length>=3&&o.push(os(i,ns))}return o}catch{return[]}}function is(e){let t=[];for(let n of e){let o=t[t.length-1];o&&Math.hypot(n.x-o.x,n.y-o.y)<1e-9||t.push(n)}for(;t.length>2&&Math.hypot(t[0].x-t[t.length-1].x,t[0].y-t[t.length-1].y)<1e-9;)t.pop();return t}var vr=class{constructor(t){this.minX=1/0;this.minY=1/0;this.maxX=-1/0;this.maxY=-1/0;this.rings=t;for(let n of t)for(let o of n)o.x<this.minX&&(this.minX=o.x),o.y<this.minY&&(this.minY=o.y),o.x>this.maxX&&(this.maxX=o.x),o.y>this.maxY&&(this.maxY=o.y)}containsAll(t){for(let n of t)if(n.x<this.minX||n.x>this.maxX||n.y<this.minY||n.y>this.maxY)return!1;for(let n of this.rings){let o=!0;for(let r of t)if(!Ne(n,r.x,r.y)){o=!1;break}if(o)return!0}return!1}};function Qa(e,t,n,o,r,i){if(o.length<3)return;if(n.containsAll(o)){let l=[0,1,0],u=o[0];for(let m=1;m+1<o.length;m++){let h=o[m],d=o[m+1];e.tri([u.x*E,r,u.y*E],[h.x*E,r,h.y*E],[d.x*E,r,d.y*E],l,i)}return}let a=o.map(l=>[l.x,l.y]);a.push(a[0]);let s;try{s=Mr.default.intersection([a],t)}catch{return}let c=[0,1,0];for(let l of s){if(!l.length||l[0].length<4)continue;let u=l[0],m=[],h=[];for(let f=0;f<u.length-1;f++)m.push(u[f][0],u[f][1]),h.push([u[f][0],u[f][1]]);if(h.length<3)continue;let d=(0,Ja.default)(m,void 0,2);for(let f=0;f<d.length;f+=3){let p=h[d[f]],b=h[d[f+1]],y=h[d[f+2]];e.tri([p[0]*E,r,p[1]*E],[b[0]*E,r,b[1]*E],[y[0]*E,r,y[1]*E],c,i)}}}function as(e,t,n,o,r,i,a){if(t.length<2)return;let s=a??ro(t),c=[0,1,0],l=i&&i.length>=3?[[...i.map(d=>[d.x,d.y]),[i[0].x,i[0].y]]]:null,u=i&&i.length>=3?new vr([[...i]]):null,m=d=>{e.setMaterial(2),d(),e.setMaterial(0)},h=d=>{e.setMaterial(3),d(),e.setMaterial(0)};for(let d=0;d<t.length;d++){let f=t[d];if(f.patch&&f.patch.length>=3){let I=[...f.patch],S=s[d].belowY??o;if(h(()=>{if(l&&u)Qa(e,l,u,I,f.y,r.tread);else{let x=I[0];for(let v=1;v+1<I.length;v++){let w=I[v],R=I[v+1];e.tri([x.x*E,f.y,x.y*E],[w.x*E,f.y,w.y*E],[R.x*E,f.y,R.y*E],c,r.tread)}}}),f.y>S+$a){let x=0,v=0;for(let w of I)x+=w.x,v+=w.y;x/=I.length,v/=I.length,m(()=>{for(let w=0;w<I.length;w++){let R=I[w],T=I[(w+1)%I.length],O=T.x-R.x,C=T.y-R.y,A=Math.hypot(O,C);if(A<1e-6)continue;let _=C/A,L=-O/A;(R.x-x)*_+(R.y-v)*L<0&&(_=-_,L=-L);let N=[_,0,L],k=[R.x*E,f.y,R.y*E],F=[T.x*E,f.y,T.y*E],H=[R.x*E,S,R.y*E],B=[T.x*E,S,T.y*E];e.tri(k,F,B,N,r.riser),e.tri(k,B,H,N,r.riser)}})}continue}let p=ts(t,d,s,n);if(!p)continue;let{pts:b,nrm:y,front:g,back:M}=p,P=s[d].belowY??o;for(let I=0;I+1<b.length;I++){let S=b[I],x=b[I+1],v=y[I],w=y[I+1];if(Math.hypot(x.x-S.x,x.y-S.y)<1e-6||v[0]===0&&v[1]===0||w[0]===0&&w[1]===0)continue;let R=[(S.x-v[0]*g)*E,f.y,(S.y-v[1]*g)*E],T=[(x.x-w[0]*g)*E,f.y,(x.y-w[1]*g)*E],O=[(S.x+v[0]*M)*E,f.y,(S.y+v[1]*M)*E],C=[(x.x+w[0]*M)*E,f.y,(x.y+w[1]*M)*E];if(h(()=>{l&&u?Qa(e,l,u,[{x:S.x-v[0]*g,y:S.y-v[1]*g},{x:x.x-w[0]*g,y:x.y-w[1]*g},{x:x.x+w[0]*M,y:x.y+w[1]*M},{x:S.x+v[0]*M,y:S.y+v[1]*M}],f.y,r.tread):(e.tri(R,T,C,c,r.tread),e.tri(R,C,O,c,r.tread))}),f.y>P+$a){let A=[R[0],P,R[2]],_=[T[0],P,T[2]],L=[-v[0],0,-v[1]];m(()=>{e.tri(R,T,_,L,r.riser),e.tri(R,_,A,L,r.riser)})}}}}function vd(e,t){let n=e.eventConfigurationIds;return!n?.length||!!t&&n.includes(t)}function ss(e,t){return e.filter(n=>n.type!=="shape"||vd(n,t))}function cs(e,t){let n=e.focalPoint??{x:0,y:0};return e.floors?.length?e.floors.map((o,r)=>({objects:ss(o.objects,t),focal:{x:(o.focalPoint??n).x,y:(o.focalPoint??n).y},baseHeightM:o.baseHeightM??0,index:r})):[{objects:ss(e.objects,t),focal:n,baseHeightM:0,index:0}]}var Md={minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};function ct(e){return Xa(e)??Md}function ls(e,t){let n=Ke(e.outline,Ue),o=ct(n),r=t.filter(a=>a!==e&&a.outline&&a.outline.length>=3&&jt(o,ct(a.outline)));if(!r.length)return[n];let i=a=>{let s=a.map(c=>[c.x,c.y]);return s.push(s[0]),s};try{let a=Sr.default.difference([i(n)],...r.map(c=>[i(c.outline)])),s=[];for(let c of a){if(!c.length)continue;let l=c[0].map(([u,m])=>({x:u,y:m}));if(l.length>1){let u=l[0],m=l[l.length-1];Math.abs(u.x-m.x)<1e-9&&Math.abs(u.y-m.y)<1e-9&&l.pop()}l.length>=3&&s.push(l)}return s.length?s:[n]}catch{return[n]}}function us(e,t){if(!t.length)return e;let n=i=>{let a=i.map(s=>[s.x,s.y]);return a.push(a[0]),a},o=t.map(i=>[n(i)]),r=[];for(let i of e){let a;try{a=Sr.default.intersection([n(i.outline)],o.flat())}catch{r.push(i);continue}for(let s of a){if(!s.length)continue;let c=s[0].map(([l,u])=>({x:l,y:u}));if(c.length>1){let l=c[0],u=c[c.length-1];Math.abs(l.x-u.x)<1e-9&&Math.abs(l.y-u.y)<1e-9&&c.pop()}c.length>=3&&r.push({outline:c,holes:[],topY:i.topY})}}return r.length?r:e}function Sd(e,t){return e===void 0||t===void 0?!0:Math.abs(e-t)<.001}var io=class{constructor(){this.rings=[];this.boxes=[];this.levels=[]}subtract(t,n){let o=t.map(c=>[c.x,c.y]);if(o.length<3)return[];o.push(o[0]);let r=ct(t),i=this.rings.filter((c,l)=>jt(r,this.boxes[l])&&Sd(n,this.levels[l])),a=[[o]];if(i.length)try{a=ms.default.difference([o],...i).map(l=>l.map(u=>u.map(([m,h])=>[m,h])))}catch{a=[[o]]}this.rings.push([o]),this.boxes.push(r),this.levels.push(n);let s=[];for(let c of a){if(!c.length)continue;let l=c[0].map(([u,m])=>({x:u,y:m}));if(l.length>1){let u=l[0],m=l[l.length-1];Math.abs(u.x-m.x)<1e-9&&Math.abs(u.y-m.y)<1e-9&&l.pop()}l.length>=3&&s.push(l)}return s}};function ao(e,t){if(!t)return e;let n=1/0,o=-1/0,r=1/0,i=-1/0;for(let m of e)n=Math.min(n,m.x),o=Math.max(o,m.x),r=Math.min(r,m.y),i=Math.max(i,m.y);let a=(n+o)/2,s=(r+i)/2,c=t*Math.PI/180,l=Math.cos(c),u=Math.sin(c);return e.map(m=>{let h=m.x-a,d=m.y-s;return{x:a+h*l-d*u,y:s+h*u+d*l}})}function ge(e){let t=null;if(e.kind==="polygon"&&e.points&&e.points.length>=3&&(t=e.points),e.kind==="rect"&&e.width&&e.height&&(t=gn(e.x??0,e.y??0,e.width,e.height)),e.kind==="ellipse"&&e.width&&e.height){let n=(e.x??0)+e.width/2,o=(e.y??0)+e.height/2;t=$n(n,o,e.width/2,e.height/2)}return t?ao(t,e.rotation):null}function qe(e){let t=e.role??"",n={stage:{kind:"stage",heightM:1},entrance:{kind:"portal",heightM:2.7},exit:{kind:"portal",heightM:2.7},screen:{kind:"solid",heightM:6},wall:{kind:"solid",heightM:2.8},rail:{kind:"solid",heightM:1.1},suite:{kind:"suite",heightM:3},obstruction:{kind:"solid",heightM:4.5},sound:{kind:"solid",heightM:1.45},restroom:{kind:"solid",heightM:2.4},bar:{kind:"solid",heightM:1.1},concession:{kind:"solid",heightM:1.1},coat:{kind:"solid",heightM:1.1},goal:{kind:"portal",heightM:1.8}},o=t==="stage"&&Mn(e.stageKind)?{kind:"stage",heightM:e.stageKind==="ring-boxing"?Qn:.06}:n[t]??{kind:"plate",heightM:.25};return{...o,heightM:e.heightM??o.heightM}}var wd=.08,Pd=30,Id=.015;function Rd(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o],a=t[r];i.y>e.y!=a.y>e.y&&e.x<(a.x-i.x)*(e.y-i.y)/(a.y-i.y)+i.x&&(n=!n)}return n}function fs(e,t){let n=ge(e)??(e.points?.length?ao(e.points,e.rotation):null),o=qe(e),i=!e.role&&o.kind==="plate"&&e.heightM===void 0&&!!n&&Math.abs(Be(n))*fe**2>=Pd?Id:o.heightM;if(!n)return{topOffsetM:i,supportOffsetM:0};if(o.kind!=="plate"&&o.kind!=="stage")return{topOffsetM:i,supportOffsetM:0};let a=1/0,s=1/0,c=-1/0,l=-1/0;for(let d of n)a=Math.min(a,d.x),s=Math.min(s,d.y),c=Math.max(c,d.x),l=Math.max(l,d.y);let u=i,m=0,h=1e-6*Math.max(1,c-a,l-s);for(let d of t)c>d.minX&&a<d.maxX&&l>d.minY&&s<d.maxY&&u<=d.topOffsetM+1e-6&&(u=d.topOffsetM+wd),a>=d.minX-h&&c<=d.maxX+h&&s>=d.minY-h&&l<=d.maxY+h&&(!d.poly||n.every(b=>Rd(b,d.poly)||Ad(b,d.poly,h)))&&(m=Math.max(m,d.topOffsetM));return e.fill&&e.fill!=="none"&&e.fill!=="transparent"&&t.push({minX:a,minY:s,maxX:c,maxY:l,topOffsetM:u,poly:n}),{topOffsetM:u,supportOffsetM:Math.min(m,u)}}function Ad(e,t,n){for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[r],a=t[o],s=a.x-i.x,c=a.y-i.y,l=s*s+c*c,u=l?Math.max(0,Math.min(1,((e.x-i.x)*s+(e.y-i.y)*c)/l)):0;if(Math.hypot(e.x-(i.x+u*s),e.y-(i.y+u*c))<=n)return!0}return!1}function bt(e,t,n){return{x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}}function Ve(e){if(e.length!==4)return e;let t=Math.hypot(e[1].x-e[0].x,e[1].y-e[0].y),n=Math.hypot(e[2].x-e[1].x,e[2].y-e[1].y);return t>=n?e:[e[1],e[2],e[3],e[0]]}function _e(e,t,n){return[bt(e[0],e[1],t),bt(e[0],e[1],n),bt(e[3],e[2],n),bt(e[3],e[2],t)]}function In(e,t,n){return[bt(e[0],e[3],t),bt(e[1],e[2],t),bt(e[1],e[2],n),bt(e[0],e[3],n)]}function he(e,t,n,o,r,i){ae(e,t,void 0,()=>n,o,r,i,ne)}var Ed=.8,Cd=.6,_d=2;function Wt(e,t){if(!t.length)return null;let n=[],o=0;for(let a of e.objects){if(a.type!=="shape"||a.role!=="wall")continue;let s=ge(a)??[],c=ds(s)/2;!(c>0)||Ld(s)/c*E>_d||(n.push(...s),o+=c)}if(n.length<3)return null;let r=Pn(n);if(r.length<3||o<ds(r)*Cd)return null;let i=0;for(let a of t)Fd(a,r)&&(i+=1);return i>=t.length*Ed?r:null}var hs=6,Td=5,kd=8;function ps(e){return Math.max(kd,(Number.isFinite(e)?e:0)+Td)}function bs(e){let t=0,n=0,o=0;for(let r=0;r<e.length;r++){let i=e[r],a=e[(r+1)%e.length],s=i.x*a.y-a.x*i.y;t+=s,n+=(i.x+a.x)*s,o+=(i.y+a.y)*s}if(Math.abs(t)<1e-9){let r=0,i=0;for(let a of e)r+=a.x,i+=a.y;return{x:r/Math.max(1,e.length),y:i/Math.max(1,e.length)}}return{x:n/(3*t),y:o/(3*t)}}function Ld(e){let t=0;for(let n=0;n<e.length;n++){let o=e[n],r=e[(n+1)%e.length];t+=o.x*r.y-r.x*o.y}return Math.abs(t)/2}function ds(e){let t=0;for(let n=0;n<e.length;n++){let o=e[n],r=e[(n+1)%e.length];t+=Math.hypot(r.x-o.x,r.y-o.y)}return t}function Fd(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o],a=t[r];i.y>e.y!=a.y>e.y&&e.x<(a.x-i.x)*(e.y-i.y)/(a.y-i.y)+i.x&&(n=!n)}return n}function Od(e){return{kind:"radial",rowCount:0,rows:[],nearestRow:()=>-1,depthAt:(t,n)=>Math.hypot(t-e.x,n-e.y),gradientAt:(t,n)=>{let o=t-e.x,r=n-e.y,i=Math.hypot(o,r);return i<1e-9?[0,0]:[o/i,r/i]}}}function Dd(e,t){if(!e.length)return null;let n=0,o=0,r=0;for(let d of e)n+=d.x,o+=d.y,r+=Math.hypot(d.x-t.x,d.y-t.y);let i=e.length;n/=i,o/=i,r/=i;let a=e[0],s=-1;for(let d of e){let f=Math.hypot(d.x-n,d.y-o);f>s&&(s=f,a=d)}let c=a.x-n,l=a.y-o,u=Math.hypot(c,l);u>1e-9?(c/=u,l/=u):(c=1,l=0);let m=[...e].sort((d,f)=>(d.x-n)*c+(d.y-o)*l-((f.x-n)*c+(f.y-o)*l)),h=0;for(let d of m){let f=Math.hypot(d.x-n,d.y-o);f>h&&(h=f)}return{pts:m,cx:n,cy:o,radius:h,depth:r}}function ys(e,t,n){let o=e.pts;if(o.length===1)return Math.hypot(t-o[0].x,n-o[0].y);let r=1/0;for(let i=0;i+1<o.length;i++){let a=o[i],s=o[i+1],c=s.x-a.x,l=s.y-a.y,u=c*c+l*l,m=u>1e-12?((t-a.x)*c+(n-a.y)*l)/u:0;m<0?m=0:m>1&&(m=1);let h=Math.hypot(t-(a.x+m*c),n-(a.y+m*l));h<r&&(r=h)}return r}var so=8;function Bd(e,t,n){let o=new Array(so).fill(1/0),r=new Array(so).fill(-1);for(let u=0;u<e.length;u++){let m=e[u],h=Math.hypot(t-m.cx,n-m.cy)-m.radius;for(let d=0;d<so;d++)if(h<o[d]){for(let f=so-1;f>d;f--)o[f]=o[f-1],r[f]=r[f-1];o[d]=h,r[d]=u;break}}let i=new Array(3).fill(1/0),a=new Array(3).fill(-1);for(let u of r){if(u<0)continue;let m=ys(e[u],t,n);for(let h=0;h<3;h++)if(m<i[h]){for(let d=2;d>h;d--)i[d]=i[d-1],a[d]=a[d-1];i[h]=m,a[h]=u;break}}if(a[0]<0)return 0;if(i[0]<1e-6)return e[a[0]].depth;let s=i[0]*2.2,c=0,l=0;for(let u=0;u<3;u++){let m=a[u];if(m<0||i[u]>s)continue;let h=1/(i[u]*i[u]);c+=h*e[m].depth,l+=h}return l>0?c/l:e[a[0]].depth}function Nd(e){let t=(o,r)=>Bd(e,o,r),n=(o,r)=>{let i=1/0,a=-1;for(let s=0;s<e.length;s++){let c=e[s];if(Math.hypot(o-c.cx,r-c.cy)-c.radius>=i)continue;let l=ys(c,o,r);l<i&&(i=l,a=s)}return a};return{kind:"rows",rowCount:e.length,rows:e,nearestRow:n,depthAt:t,gradientAt:(o,r)=>{let i=(t(o+.5,r)-t(o-.5,r))/1,a=(t(o,r+.5)-t(o,r-.5))/(2*.5),s=Math.hypot(i,a);return s<1e-9?[0,0]:[i/s,a/s]}}}function gs(e,t){let n=[];for(let o of e){let r=Dd(o.points,t);r&&n.push(r)}return n.length<2?Od(t):(n.sort((o,r)=>o.depth-r.depth),Nd(n))}var yt=.06,Vd=.05,vs=.05,xs=.15,wr=25;function Ms(e,t,n){let o=new Map,r=new Array(t.length).fill(null),i=new Float64Array(t.length),a=new Array(t.length).fill(void 0),s=new Array(t.length).fill(void 0),c=new Map,l=[],u=new Set;for(let h=0;h<e.length;h+=1){let d=e[h];for(let f of d.objects){if(f.type==="table"&&u.add(f.id),f.type!=="section"||!f.outline||f.outline.length<3)continue;let p=Ke(f.outline,Ue);c.set(f.id,{section:f,unit:d,frontU:1/0,hasSeats:!1,rows:new Map,seatIndices:[]}),l.push({id:f.id,floorIndex:h,box:ct(p),section:f,unit:d,outline:p})}}let m=new Map;for(let h of l){let d=m.get(h.floorIndex);d?d.push(h):m.set(h.floorIndex,[h])}for(let h=0;h<t.length;h++){let d=t[h],f=n?m.get(n[h])??[]:l,p=d.sectionId?f.find(y=>y.id===d.sectionId)??f.find(y=>y.section.logicalSectionId===d.sectionId&&Le({x:d.x,y:d.y},y.outline,y.section.holes)):void 0,b=p?[p]:f;for(let y of b){if(n&&y.floorIndex!==n[h]||!p&&(d.x<y.box.minX||d.x>y.box.maxX||d.y<y.box.minY||d.y>y.box.maxY||!Le({x:d.x,y:d.y},y.outline,y.section.holes)))continue;r[h]=y.id;let g=c.get(y.id);g.hasSeats=!0;let M=d.focalPoint??y.unit.focal,P=Math.hypot(d.x-M.x,d.y-M.y);P<g.frontU&&(g.frontU=P),g.seatIndices.push(h);let I=d.rowId||`__seat-${h}`,S=g.rows.get(I);S?S.push({x:d.x,y:d.y}):g.rows.set(I,[{x:d.x,y:d.y}]);break}}for(let[h,d]of c){let f=dt(d.section,{floorBaseHeightM:d.unit.baseHeightM}),p=d.unit.baseHeightM,b=f.rake>0?Math.tan(f.rake*Math.PI/180):0,y=f.rake<=.01&&f.height<=p+.001,g=d.section.surfaceKind,M=g==="flat"?!0:g==="rakedRows"&&f.rake>.01?!1:y,P=d.hasSeats?to(h,t,d.seatIndices,d.unit.focal):{sectionId:h,rows:[],blockCount:0},S=P.rows.length<2?gs([...d.rows.values()].map(k=>({points:k})),d.unit.focal):null,x=1/0;if(S){if(d.hasSeats)for(let k of d.rows.values())for(let F of k){let H=S.depthAt(F.x,F.y);H<x&&(x=H)}if(!d.hasSeats||!Number.isFinite(x)){x=1/0;for(let k of d.section.outline){let F=S.depthAt(k.x,k.y);F<x&&(x=F)}}}let v=p+Vd,w=Math.max(v,f.height),R=k=>{let F=Math.max(0,k-x)*fe,H=Math.min(F*b,wr);return Math.max(v,f.height+H)},T=k=>{let F=Math.max(0,k)*fe,H=Math.min(F*b,wr);return Math.max(v,f.height+H)},O=M?[]:P.rows.map(k=>({pts:k.pts,y:T(k.blockDepth),depth:k.blockDepth,blockId:k.blockId,...u.has(k.id)?{patch:es(k.pts,Ue)}:{}})),C=O.length?O[0].y:w,A=O.map(k=>{let F=k.patch&&k.patch.length>=3?k.patch:k.pts,H=0,B=0;for(let j of F)H+=j.x,B+=j.y;let D=F.length||1;H/=D,B/=D;let G=0;for(let j of F){let V=Math.hypot(j.x-H,j.y-B);V>G&&(G=V)}return{cx:H,cy:B,rad:G}}),_=M?()=>w:O.length>=2?(k,F)=>{let H=1/0,B=C;for(let D=0;D<O.length;D++){let G=A[D];if(Math.hypot(k-G.cx,F-G.cy)-G.rad>=H)continue;let j=O[D].patch,V=j&&j.length>=3?Ne(j,k,F)?0:Ht(j,k,F):Ht(O[D].pts,k,F);V<H&&(H=V,B=O[D].y)}return B}:(k,F)=>S?R(S.depthAt(k,F)):w,L=[0,1,0],N=O.length>=2||M?()=>L:(k,F)=>{if(!S)return L;let H=S.depthAt(k,F);if(H<=x)return L;let B=(H-x)*fe;if(B*b>=wr||f.height+B*b<=v)return L;let[D,G]=S.gradientAt(k,F);if(D===0&&G===0)return L;let j=1/Math.hypot(b,1);return[-D*b*j,j,-G*b*j]};if(!M)for(let k of P.rows){let F=T(k.blockDepth);for(let H of k.seatIndices)a[H]=F}for(let k of P.rows){let F=[];for(let j=1;j<k.pts.length;j++){let V=Math.hypot(k.pts[j].x-k.pts[j-1].x,k.pts[j].y-k.pts[j-1].y);V>1e-6&&F.push(V)}F.sort((j,V)=>j-V);let H=F.length?F[Math.floor(F.length/2)]:1/0,B=1/0,D=k.pts[Math.floor(k.pts.length/2)];if(D)for(let j of P.rows){if(j===k||j.blockId!==k.blockId)continue;let V=Ht(j.pts,D.x,D.y);V>1e-6&&V<B&&(B=V)}let G=Math.min(H,Math.max(B,H*.5));if(Number.isFinite(G)&&G>0)for(let j of k.seatIndices)s[j]=G}o.set(h,{sectionId:h,deckAt:_,normalAt:N,flat:M,bottomY:p,rowLevels:O,landingY:C})}for(let h=0;h<t.length;h++){let d=r[h],f=t[h];if(d){let y=a[h];i[h]=(y??o.get(d).deckAt(f.x,f.y))+xs;continue}let p=f.eyeHeightM,b=Number.isFinite(p)?Math.max(0,p-Qe):0;i[h]=f.kind==="booth"?b+yt+xs:b}return{bySection:o,seatOwner:r,seatDeckY:h=>i[h],seatPitchU:h=>s[h]}}function Yt(e,t,n){if(e.length!==4||n<=t)return null;let o=Ve(e),r=Math.hypot(o[1].x-o[0].x,o[1].y-o[0].y)*E,i=Math.hypot(o[3].x-o[0].x,o[3].y-o[0].y)*E;if(r<1e-6||i<1e-6)return null;let a=Math.min(.22/r,.16),s=Math.min(.28,(n-t)*.13),c=Math.min(.065/i,.2);return{quad:o,side:a,face:c,opening:_e(o,a,1-a),openingTop:n-s}}function Pr(e,t,n){if(e.length!==4||n-t<=.2)return null;let o=Ve(e),r=Math.hypot(o[1].x-o[0].x,o[1].y-o[0].y)*E;if(r<=1e-6)return null;let i=Math.min(.14,(n-t)*.08,r*.08),a=i/r,s=_e(o,a,1-a);return{quad:o,side:a,trim:i,inner:s,panel:In(s,.15,.85),bottom:t+i,top:n-i}}function Ss(e,t,n,o){let r=Pr(e,t,n);if(!r)return;let{panel:i}=r,a=(g,M)=>({x:(g.x+M.x)/2,y:(g.y+M.y)/2}),s=a(i[0],i[1]),c=a(i[3],i[2]),l=Math.hypot(s.x-o.x,s.y-o.y)<=Math.hypot(c.x-o.x,c.y-o.y),[u,m]=l?[i[0],i[1]]:[i[3],i[2]],h=l?{x:s.x-c.x,y:s.y-c.y}:{x:c.x-s.x,y:c.y-s.y},d=Math.hypot(h.x,h.y);if(d<1e-6)return;-(m.y-u.y)*h.x+(m.x-u.x)*h.y<0&&([u,m]=[m,u]);let f=Math.min(.006,d*E*.05),p=h.x/d*f,b=h.y/d*f,y=(g,M)=>[g.x*E+p,M,g.y*E+b];return[y(u,r.bottom),y(m,r.bottom),y(u,r.top),y(m,r.top)]}var ws=it(require("polygon-clipping"),1);function lt(e,t,n,o,r,i,a,s={}){let c=ct(t),l=s.ao??ne,u=r.flatMap(p=>{if(p.role!=="entrance"&&p.role!=="exit")return[];let b=ge(p);if(!b||b.length!==4||!jt(c,ct(b)))return[];let y=s.portalBase??n,g=Yt(b,y,y+qe(p).heightM);if(!g)return[];let M=Math.min(o,g.openingTop);return M<=n?[]:[{poly:g.opening,height:M}]});if(!u.length)return!1;let m=p=>p.map(b=>[b.x,b.y]),h=[m(t),...(s.holes??[]).map(m)],d=[n,...new Set(u.map(p=>p.height)),o].sort((p,b)=>p-b),f=[];try{for(let p=1;p<d.length;p++){let b=d[p-1],y=d[p];if(y-b<1e-6)continue;let g=u.filter(P=>P.height>b+1e-6).map(P=>[m(P.poly)]),M=g.length?ws.default.difference(h,...g):[h];f.push({low:b,high:y,polys:M})}}catch{return!1}for(let p of f)for(let b of p.polys){let[y,...g]=b.map(P=>P.map(([I,S])=>({x:I,y:S}))),M=P=>l.wallBottom+(l.top-l.wallBottom)*(P-n)/(o-n);ae(e,y,g,()=>p.high,p.low,i,a,{...l,top:M(p.high),wallBottom:M(p.low)})}return!0}function Ps(e,t,n,o,r,i,a){let s=o-n;if(s<=0)return;let c=s<1.5?[[n,o,1]]:[[n,n+Math.min(.9,s*.18),.82],[n+Math.min(.9,s*.18),o-.1,1],[o-.1,o,1.1]],l=u=>ne.wallBottom+(ne.top-ne.wallBottom)*(u-n)/s;for(let[u,m,h]of c){let d={...ne,top:l(m),wallBottom:l(u)},f=ie(i,h),p=ie(a,h);lt(e,t,u,m,r,f,p,{portalBase:n,ao:d})||ae(e,t,void 0,()=>m,u,f,p,d)}}function Rn(e,t,n){let o=pe(t.stroke?.color),r=t.stroke?.width??0;if(!o||!Number.isFinite(r)||r<=0)return;let i=t.kind==="line"||t.kind==="polyline",a=i?ao(t.points??[],t.rotation):ge(t);if(!a||a.length<2)return;let s=i?a.length-1:a.length,c=r*.5;for(let l=0;l<s;l++){let u=a[l],m=a[(l+1)%a.length],h=Math.hypot(m.x-u.x,m.y-u.y);if(h<1e-6)continue;let d=-(m.y-u.y)/h*c,f=(m.x-u.x)/h*c,p=[(u.x+d)*E,n,(u.y+f)*E],b=[(m.x+d)*E,n,(m.y+f)*E],y=[(m.x-d)*E,n,(m.y-f)*E],g=[(u.x-d)*E,n,(u.y-f)*E];e.tri(p,b,y,[0,1,0],o),e.tri(p,y,g,[0,1,0],o)}}function Is(e){return e==="bar"||e==="concession"||e==="coat"||e==="restroom"}var Kt=(e,t,n)=>({x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n});function co(e,t,n,o){let[r,i,a,s]=t?e:[e[3],e[2],e[1],e[0]];return[Kt(r,s,n),Kt(i,a,n),Kt(i,a,o),Kt(r,s,o)]}function Rs(e,t,n,o,r,i,a,s,c=!1){if(n.length!==4||r-o<.4)return!1;let l=v=>c?Math.min(v,r):v,u=Ve(n),m=Math.hypot(u[3].x-u[0].x,u[3].y-u[0].y)*E;if(m<.4)return!1;let h=Kt(u[0],u[1],.5),d=Kt(u[3],u[2],.5),f=Math.hypot(h.x-s.x,h.y-s.y)<=Math.hypot(d.x-s.x,d.y-s.y),p=be(a,[.92,.9,.86],.35),b=ie(i,.72),y=r-o;if(t==="restroom"){let v=Math.min(.18,y*.08);return he(e,u,r-v,o,a,i),he(e,u,r,r-v,p,p),!0}let g=o+Math.min(1.1,y),M=t==="coat"?1:Math.min(.5,.75/m),P=co(u,f,0,M);if(he(e,P,g-.05,o,b,i),he(e,P,g,g-.05,p,p),t==="coat"||m<1.2)return!0;if(t==="bar"){let v=co(u,f,Math.max(M+.2,1-.45/m),1),w=l(o+Math.max(Math.min(2.2,y*2),g-o+.6));return he(e,v,w,o,a,b),!0}let I=co(u,f,Math.max(M+.25,.55),1),S=l(o+Math.max(2.6,g-o+1.4));if(S-.14<=g)return!0;he(e,I,S-.14,o,a,i),he(e,u,S,S-.14,p,b);let x=Math.min(.08,.1/Math.max(.1,Math.hypot(u[1].x-u[0].x,u[1].y-u[0].y)*E));for(let[v,w]of[[0,x],[1-x,1]])he(e,co(_e(u,v,w),f,0,Math.min(.08,.1/m)),S-.14,g,b,b);return!0}var Gd=[.12,.38,.16],Hd=[.72,.62,.45],zd=[.88,.93,.96],As=[.95,.95,.94],Ud=[.66,.29,.22],Ir={length:20.12,width:3.05},jd=.14,Xd=9.76,ut=[.93,.94,.95],lo=[.1,.11,.13],Wd=[.45,.85,1.25],Yd=1.45,Es=.012,Cs=.004,Kd=1.07,qd=.15;function $t(e,t,n,o,r,i){e.setMaterial(i),ae(e,t,n?[n.slice().reverse()]:void 0,()=>o,o-.004,r,r,ne)}var _s=(e,t)=>ht(e,t/E);function Ts(e,t,n){let o=t.x-e.x,r=t.y-e.y,i=Math.hypot(o,r);if(i<1e-9)return null;let a=-r/i*n,s=o/i*n;return[{x:e.x+a,y:e.y+s},{x:t.x+a,y:t.y+s},{x:t.x-a,y:t.y-s},{x:e.x-a,y:e.y-s}]}function $d(e,t,n,o){let r=t.map(i=>[i.x*E,n,i.y*E]);e.tri(r[0],r[1],r[2],[0,1,0],o),e.tri(r[0],r[2],r[3],[0,1,0],o)}function uo(e,t,n,o,r,i){let a=n/E,s=[{x:t.x-a,y:t.y-a},{x:t.x+a,y:t.y-a},{x:t.x+a,y:t.y+a},{x:t.x-a,y:t.y+a}];ae(e,s,void 0,()=>r,o,i,ie(i,.85),ne)}function qt(e,t,n,o,r,i,a){let s=Ts(t,n,o/E);s&&ae(e,s,void 0,()=>i,r,a,ie(a,.85),ne)}function mo(e){let t=Ve(e),n={x:(t[0].x+t[2].x)/2,y:(t[0].y+t[2].y)/2},o=Math.hypot(t[1].x-t[0].x,t[1].y-t[0].y)||1,r=Math.hypot(t[3].x-t[0].x,t[3].y-t[0].y)||1,i={x:(t[1].x-t[0].x)/o,y:(t[1].y-t[0].y)/o},a={x:(t[3].x-t[0].x)/r,y:(t[3].y-t[0].y)/r};return{at:(c,l)=>({x:n.x+(i.x*c+a.x*l)/E,y:n.y+(i.y*c+a.y*l)/E}),lengthM:o*E,widthM:r*E}}function ks(e,t,n){let o=Ma(t);if(!o.length)return;let r=1/0,i=-1/0,a=1/0,s=-1/0;for(let M of t.points??[])r=Math.min(r,M.x),i=Math.max(i,M.x),a=Math.min(a,M.y),s=Math.max(s,M.y);let c=(t.rotation??0)*Math.PI/180,l=Math.cos(c),u=Math.sin(c),m=(r+i)/2,h=(a+s)/2,d=M=>c?{x:m+(M.x-m)*l-(M.y-h)*u,y:h+(M.x-m)*u+(M.y-h)*l}:M,f=Math.min(i-r,s-a)*E,p=Math.max(.04,Math.min(.3,f*.004))/E,b=0;e.setMaterial(0);for(let M of o){if(!M.fill)continue;let P=M.points.map(d);$t(e,P,null,n+Es+b*Cs,pe(M.fill)??ut,0),b++}let y=o.filter(M=>!(M.fill&&M.ink===M.fill)),g=[...new Set(y.map(M=>M.ink??Jn))];for(let M of g){let P=n+Es+b++*Cs,I=pe(M)??ut;for(let S of y){if((S.ink??Jn)!==M)continue;let x=S.points.map(d),v=S.closed?x.length:x.length-1;for(let w=0;w<v;w++){let R=Ts(x[w],x[(w+1)%x.length],p);R&&$d(e,R,P,I)}}}}function Ls(e,t,n,o,r){if(t.length<3)return!1;let i=o+.006,a=r??Gd;if(n==="oval-cricket"){let s=t.reduce((I,S)=>I+S.x,0)/t.length,c=t.reduce((I,S)=>I+S.y,0)/t.length,l=I=>t.map(S=>({x:s+(S.x-s)*I,y:c+(S.y-c)*I})),u=8;for(let I=0;I<u;I++){let S=l(1-I/u),x=I===u-1?null:l(1-(I+1)/u);$t(e,S,x,i,ie(a,I%2?1.04:.96),4)}let m=t[0];for(let I of t)Math.hypot(I.x-s,I.y-c)>Math.hypot(m.x-s,m.y-c)&&(m=I);let h=Math.hypot(m.x-s,m.y-c)||1,d=(m.x-s)/h,f=(m.y-c)/h,p=-f,b=d,y=Math.min(1,2*h*E*jd/Ir.length),g=Ir.length*y/2/E,M=Ir.width*y/2/E,P=[[-g,-M],[g,-M],[g,M],[-g,M]].map(([I,S])=>({x:s+d*I+p*S,y:c+f*I+b*S}));return $t(e,P,null,i+.004,Hd,0),e.setMaterial(0),!0}if(n==="rink-hockey"){let s=_s(t,qd);return $t(e,s,null,i,zd,0),e.setMaterial(0),ae(e,t,[s.slice().reverse()],()=>o+Kd,o,As,ie(As,.9),ne),!0}if(n==="ring-boxing"&&t.length===4){let{at:s}=mo(t),c=[s(-3.05,-3.05),s(3.05,-3.05),s(3.05,3.05),s(-3.05,3.05)],l=[[.77,.19,.19],ut,[.17,.42,.69],ut];e.setMaterial(0),c.forEach((u,m)=>uo(e,u,.07,o,o+Yd,l[m]));for(let u of Wd)for(let m=0;m<4;m++)qt(e,c[m],c[(m+1)%4],.025,o+u-.025,o+u+.025,ut);return!0}if(n==="court-tennis"&&t.length===4){let{at:s}=mo(t);e.setMaterial(0),qt(e,s(0,-6.4),s(0,6.4),.015,o,o+.95,lo),qt(e,s(0,-6.4),s(0,6.4),.03,o+.95,o+1,ut);for(let c of[-1,1])uo(e,s(0,c*6.4),.05,o,o+1.07,lo);return!0}if(n==="court-basketball"&&t.length===4){let{at:s,lengthM:c}=mo(t),l=Math.min(14,c/2-.5);e.setMaterial(0);for(let u of[-1,1]){let m=s(u*(l+1.2),0),h=s(u*(l-1.2),0);uo(e,m,.12,o,o+3.4,lo),qt(e,m,h,.06,o+3.25,o+3.4,lo),qt(e,s(u*(l-1.2),-.9),s(u*(l-1.2),.9),.03,o+2.9,o+3.95,ut)}return!0}if(n==="pitch-rugby"&&t.length===4){let{at:s,lengthM:c}=mo(t),l=c*(50/120);e.setMaterial(0);for(let u of[-1,1]){for(let m of[-2.8,2.8])uo(e,s(u*l,m),.07,o,o+12,ut);qt(e,s(u*l,-2.8),s(u*l,2.8),.06,o+2.94,o+3.06,ut)}return!0}if(n==="track-athletics"){let s=_s(t,Xd);return s.length<3?!1:($t(e,t,s,i,Ud,0),$t(e,s,null,i,a,4),e.setMaterial(0),!0)}return!1}var Fs=[.19,.4,.15],Zd=.012,po=2.4,Qd=1,Jd=.75,eh=.15;function $e(e){if(e.points&&e.points.length>=3)return e.points;let{center:t,width:n,height:o,rotation:r}=e;if(!n||!o)return null;let i=(r??0)*Math.PI/180,a=Math.cos(i),s=Math.sin(i),c=n/2,l=o/2;return[[-c,-l],[c,-l],[c,l],[-c,l]].map(([u,m])=>({x:t.x+u*a-m*s,y:t.y+u*s+m*a}))}function Gs(e,t,n,o,r,i,a=!1){let s=$e(t);if(s){if(a){let c=Lt(o,r.boothTop),l=Je([...s]);ae(e,Ke(l,th/E),[l.slice().reverse()],()=>n+.03,n,c,ie(c,.8),ne);return}if(!(!t.points&&i&&oh(e,s,n,o,i))){if(!t.points&&i&&s.length===4){nh(e,s,n,o,i);return}ae(e,s,void 0,()=>n+po,n,Lt(o,r.boothTop),r.boothWall,ne)}}}var Rr=1.1,Os=[.9,.9,.88],th=.1,fo=[.87,.87,.85],Ds=.08;function Hs(e,t){let n=c=>({x:(e[c].x+e[(c+1)%4].x)/2,y:(e[c].y+e[(c+1)%4].y)/2}),o=0,r=1/0;for(let c=0;c<4;c++){let l=n(c),u=Math.hypot(l.x-t.x,l.y-t.y);u<r&&(r=u,o=c)}let i=[0,1,2,3].map(c=>e[(o+c)%4]),a=(c,l,u)=>({x:c.x+(l.x-c.x)*u,y:c.y+(l.y-c.y)*u});return{q:i,part:(c,l,u,m)=>{let h=a(i[0],i[1],c),d=a(i[0],i[1],l),f=a(i[3],i[2],c),p=a(i[3],i[2],l);return[a(h,f,u),a(d,p,u),a(d,p,m),a(h,f,m)]},depthM:Math.hypot(i[3].x-i[0].x,i[3].y-i[0].y)*E,widthM:Math.hypot(i[1].x-i[0].x,i[1].y-i[0].y)*E}}function nh(e,t,n,o,r){let{q:i,part:a}=Hs(t,r),s=o??[.35,.42,.55],c=be(s,[.78,.78,.77],.62),l=be(s,[.95,.95,.94],.45);he(e,i,n+yt,n,c,ie(c,.8)),he(e,a(.05,.95,.72,.98),n+Rr-.05,n+yt,l,ie(l,.8)),he(e,a(.03,.97,.7,1),n+Rr,n+Rr-.05,Os,ie(Os,.9))}function oh(e,t,n,o,r){if(t.length!==4)return!1;let{q:i,part:a,depthM:s,widthM:c}=Hs(t,r);if(s<1||c<1)return!1;let l=o??[.35,.42,.55],u=be(l,[.78,.78,.77],.62),m=n+po,h=Ds/c,d=Ds/s;he(e,i,n+yt,n,u,ie(u,.8)),he(e,a(0,1,1-d,1),m,n+yt,fo,ie(fo,.9));for(let[b,y]of[[0,h],[1-h,1]])he(e,a(b,y,0,1-d),m,n+yt,fo,ie(fo,.9));he(e,a(h,1-h,0,Math.min(.5,.06/s)),m,m-.3,l,ie(l,.85));let f=Math.min(.4,.6/c),p=Math.min(.12,.3/s);return he(e,a(.5-f,.5+f,.72-p,.72+p),n+Qd,n+yt,be(l,[.95,.95,.94],.7),ie(l,.75)),!0}function bo(e){if(e.shape==="round"){let u=e.radius;return u?$n(e.center.x,e.center.y,u,u,24):null}let{width:t,height:n,rotation:o,center:r}=e;if(!t||!n)return null;let i=(o??0)*Math.PI/180,a=Math.cos(i),s=Math.sin(i),c=t/2,l=n/2;return[[-c,-l],[c,-l],[c,l],[-c,l]].map(([u,m])=>({x:r.x+u*a-m*s,y:r.y+u*s+m*a}))}function zs(e,t,n,o,r,i=!0){let a=bo(t);if(!a)return;let s=a.reduce((h,d)=>h+d.x,0)/a.length,c=a.reduce((h,d)=>h+d.y,0)/a.length,l=h=>a.map(d=>({x:s+(d.x-s)*h,y:c+(d.y-c)*h})),u=i&&o?Lt(o,r.tableTop):rh,m=n+Jd;ae(e,a,void 0,()=>m,n+ih,u,ie(u,.86),ne),ae(e,l(.12),void 0,()=>m+.12,m,Bs,ie(Bs,.8),ne)}var rh=[.93,.92,.89],Bs=[.78,.66,.42],ih=.25;function Us(e,t,n,o,r,i,a,s,c=[]){let l=ge(t);if(!t.role&&(!t.fill||t.fill==="none"||t.fill==="transparent")||!l){Rn(e,t,n+o+Zd);return}let m=s?s.kind==="stage":t.role==="stage",h=s?s.kind==="screen":t.role==="screen",d=s?{kind:m?"stage":"solid",heightM:s.topY-s.baseY}:qe(t),f=s?.baseY??n,p=s?.topY??n+o;if(m&&a){let v=1/0,w=-1/0,R=1/0,T=-1/0;for(let O of l)O.x<v&&(v=O.x),O.x>w&&(w=O.x),O.y<R&&(R=O.y),O.y>T&&(T=O.y);a.push({cx:(v+w)/2*E,cz:(R+T)/2*E,y:p,halfX:Math.max((w-v)/2*E,.5),halfZ:Math.max((T-R)/2*E,.5)})}let b=pe(t.fill),y=t.role==="wall"||t.role==="entrance"||t.role==="exit",g=y?b?ie(Ye(b,.12),.95):r.tierTop:m&&b?be(r.stageTop,ie(Ye(b,.18),.9),.9):!t.role&&b?b:Lt(b,m?r.stageTop:r.decorTop),M=h?b:null,P=y?b?ie(Ye(b,.12),.85):r.tierWall:m?b?be(r.stageWall,ie(b,.58),.82):r.stageWall:h?M?be(ie(M,1.42),[.24,.46,.82],.08):[.24,.46,.82]:Lt(pe(t.fill),r.decorWall);if(t.role==="wall"&&!s){Ps(e,l,f,p,c,g,P),Rn(e,t,p+.012);return}if(h&&l.length===4&&p-f>.2){let v=Pr(l,f,p);if(!v)return;let{quad:w,side:R,trim:T,inner:O,panel:C}=v,A=[.12,.15,.18];for(let[_,L]of[[0,R],[1-R,1]])he(e,_e(w,_,L),p,f,A,A);he(e,O,f+T,f,A,A),he(e,O,p,p-T,A,A),he(e,C,p-T,f+T,P,P),Rn(e,t,p+.012);return}let I=b?ie(Ye(b,.15),.82):P,S=b?ie(Ye(b,.1),1.02):g;if(Is(t.role)&&!s&&Rs(e,t.role,l,f,p,I,S,i,t.heightM!==void 0))return;if((t.role==="sound"||s?.kind==="sound_desk")&&l.length===4&&p-f>.3){let v=Ve(l),w=Math.hypot(v[1].x-v[0].x,v[1].y-v[0].y)*E,R=Math.min(.12,.09/Math.max(w,.001)),T=[.18,.21,.24],O=p-Math.min(.12,(p-f)*.15);for(let[C,A]of[[0,R],[1-R,1]])he(e,_e(v,C,A),O,f,T,T);he(e,v,p,O,g,T);return}if(t.role==="rail"&&l.length===4&&p>f){let v=Ve(l),w=Math.hypot(v[1].x-v[0].x,v[1].y-v[0].y)*E,R=Math.max(1,Math.min(128,Math.ceil(w/1.4))),T=Math.min(.08,.055/Math.max(.055,w)),O=[.58,.64,.66];for(let C=0;C<=R;C++){let A=C/R,_=Math.min(1-T,Math.max(0,A-T/2));he(e,_e(v,_,_+T),p,f,O,ie(O,.8))}for(let C of[.52,1]){let A=f+(p-f)*C;he(e,v,A,Math.max(f,A-.055),O,ie(O,.8))}return}if(t.role==="goal"&&l.length===4){let v=Ve(l),w=Math.hypot(v[1].x-v[0].x,v[1].y-v[0].y)*E,R=Math.min(.12,.1/Math.max(.1,w)),T=[.9,.94,.94];for(let[O,C]of[[0,R],[1-R,1]])he(e,_e(v,O,C),Math.max(f,p-.1),f,T,T);he(e,v,p,Math.max(f,p-.1),T,T);return}if(d.kind==="portal"&&l.length===4){let v=Yt(l,f,p);if(!v)return;let{quad:w,side:R,face:T,openingTop:O}=v;for(let[C,A,_]of[[0,T,1],[T,1-T,.67],[1-T,1,1]]){let L=In(w,C,A),N=ie(g,_),k=ie(P,_);for(let[F,H]of[[0,R],[1-R,1]])he(e,_e(L,F,H),O,f,N,k);he(e,L,p,O,N,k)}return}if(d.kind==="suite"&&l.length===4){let v=l.map((T,O)=>{let C=l[(O+1)%4],A=(T.x+C.x)/2,_=(T.y+C.y)/2;return Math.hypot(A-i.x,_-i.y)}),w=v.indexOf(Math.min(...v)),R=[0,1,2,3].map(T=>l[(w+T)%4]);he(e,_e(R,0,.08),p,f,g,P),he(e,_e(R,.92,1),p,f,g,P),he(e,In(R,.88,1),p,f,g,P),he(e,R,p,Math.max(f,p-.18),g,P);return}if(m&&!t.stageKind?.startsWith("pitch-")&&p-f>.12){let v=p-Math.min(.06,(p-f)*.15);he(e,l,v,f,g,P),he(e,l,p,v,g,be(g,P,.2))}else he(e,l,p,f,g,P);if((t.stageKind==="pitch-football"||t.stageKind==="pitch-rugby")&&l.length===4){e.setMaterial(4);let v=Ve(l),w=be(b??Fs,Fs,b?.45:0);for(let R=0;R<12;R++){let T=_e(v,R/12,(R+1)/12),O=ie(w,R%2?1.09:.91),C=T.map(A=>[A.x*E,p+.006,A.y*E]);e.tri(C[0],C[1],C[2],[0,1,0],O),e.tri(C[0],C[2],C[3],[0,1,0],O)}}t.stageKind&&t.stageKind!=="pitch-football"&&Ls(e,l,t.stageKind,p,b),m&&Tt(t.stageKind)&&ks(e,t,p),e.setMaterial(h?1:0),Rn(e,t,p+.012)}function yo(e){let{x:t,y:n,width:o,height:r}=e;if(!o||!r)return null;let i=t+o/2,a=n+r/2,s=(e.rotation??0)*Math.PI/180,c=Math.cos(s),l=Math.sin(s),u=o/2,m=r/2;return[[-u,-m],[u,-m],[u,m],[-u,m]].map(([h,d])=>({x:i+h*c-d*l,y:a+h*l+d*c}))}function ah(e){if(!e||!e.startsWith("data:image/svg+xml"))return null;let t=e.slice(e.indexOf(",")+1);if(/;base64/i.test(e.slice(0,e.indexOf(","))))try{t=atob(t)}catch{return null}else try{t=decodeURIComponent(t)}catch{}let n=t.match(/<(?:rect|path)\b[^>]*\bfill="([^"]+)"/i);if(!n)return null;let o=n[1].trim();if(o==="none"||o==="transparent")return null;let r=o.match(/^url\(#([^)]+)\)$/);if(!r)return pe(o);let i=t.match(new RegExp(`<(?:linear|radial)Gradient\\b[^>]*\\bid="${r[1]}"[^>]*>([\\s\\S]*?)</(?:linear|radial)Gradient>`,"i"));if(!i)return null;let a=[];for(let s of i[1].matchAll(/stop-color="([^"]+)"/gi)){let c=pe(s[1].trim());c&&a.push(c)}return a.length?a.reduce((s,c,l)=>be(s,c,1/(l+1)),a[0]):null}function js(e,t,n,o){if(t.layer==="foreground")return;let r=yo(t);if(!r)return;let i=n+eh,a=Lt(ah(t.href),o.decorTop),s=Math.max(0,Math.min(1,t.opacity??1));s<1&&(a=be(o.ground,a,s)),ae(e,r,void 0,()=>i,n,a,be(a,o.decorWall,.5),ne)}function Xs(e,t,n,o,r){if(!t.points||t.points.length<3)return;let i=Wa(o,r.gaTop);ae(e,t.points,t.holes,()=>n+Ns,n,i,r.gaWall,ne),lh(e,t.points,n+Ns)}var Ns=.15,ho=[.72,.74,.76],Ar=1.1,Vs=.12,Er=.05,sh=.06,ch=2.4;function lh(e,t,n){let o=Je([...t]),r=ht(o,Vs/E),i=ht(o,(Vs+Er)/E);if(r.length<3||i.length<3)return;for(let s of[n+Ar,n+Ar*.5])ae(e,r,[i.slice().reverse()],()=>s,s-Er,ho,ie(ho,.85),ne);let a=sh/2/E;for(let s=0;s<r.length;s++){let c=r[s],l=r[(s+1)%r.length],u=Math.hypot(l.x-c.x,l.y-c.y)*E,m=Math.max(1,Math.round(u/ch));for(let h=0;h<m;h++){let d=h/m,f=c.x+(l.x-c.x)*d,p=c.y+(l.y-c.y)*d,b=[{x:f-a,y:p-a},{x:f+a,y:p-a},{x:f+a,y:p+a},{x:f-a,y:p+a}];ae(e,b,void 0,()=>n+Ar-Er,n,ho,ie(ho,.8),ne)}}}var Cr=.6,Ws=3,uh=.25;function mh(e,t){if(Ne(t,e.x,e.y))return 0;let n=1/0;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[r],a=t[o],s=a.x-i.x,c=a.y-i.y,l=s*s+c*c||1,u=Math.max(0,Math.min(1,((e.x-i.x)*s+(e.y-i.y)*c)/l));n=Math.min(n,Math.hypot(e.x-(i.x+u*s),e.y-(i.y+u*c)))}return n}function Ys(e,t){let n=e.map(a=>({booth:a,ring:$e(a)})).filter(a=>!!a.ring&&a.ring.length===4&&!a.booth.points),o=n.map(({ring:a})=>({minX:Math.min(...a.map(s=>s.x)),maxX:Math.max(...a.map(s=>s.x)),minY:Math.min(...a.map(s=>s.y)),maxY:Math.max(...a.map(s=>s.y))})),r=(Ws+Cr)/E,i=new Map;return n.forEach(({booth:a,ring:s},c)=>{let l={x:s.reduce((d,f)=>d+f.x,0)/4,y:s.reduce((d,f)=>d+f.y,0)/4},u=[0,1,2,3].map(d=>{let f=s[d],p=s[(d+1)%4],b={x:(f.x+p.x)/2,y:(f.y+p.y)/2},y=b.x-l.x,g=b.y-l.y,M=Math.hypot(y,g)||1,P={x:b.x+y/M*Cr/E,y:b.y+g/M*Cr/E},I=Ws/E;return o.forEach((S,x)=>{x===c||P.x<S.minX-r||P.x>S.maxX+r||P.y<S.minY-r||P.y>S.maxY+r||(I=Math.min(I,mh(P,n[x].ring)))}),{open:I*E,toward:{x:b.x+y/M*10/E,y:b.y+g/M*10/E},focal:Math.hypot(b.x-t.x,b.y-t.y)}}),m=Math.max(...u.map(d=>d.open)),h=u.filter(d=>d.open>=m-uh).sort((d,f)=>d.focal-f.focal)[0];i.set(a.id,h.toward)}),i}var Ks=it(require("polygon-clipping"),1);var fh=.45,dh=1500,hh=200;function qs(e,t){if(e.role!=="stage"||Tt(e.stageKind))return e;let n=ge(e);if(!n||n.length<3||Math.abs(Be(n))*E*E>dh)return e;let o=t.filter(a=>Ne(n,a.x,a.y));if(!o.length||o.length>hh)return e;let r=fh/E,i=o.map(a=>[[[a.x-r,a.y-r],[a.x+r,a.y-r],[a.x+r,a.y+r],[a.x-r,a.y+r],[a.x-r,a.y-r]]]);try{let a=Ks.default.difference([[...n.map(l=>[l.x,l.y]),[n[0].x,n[0].y]]],...i),s=null,c=0;for(let l of a){let u=l[0].slice(0,-1).map(([h,d])=>({x:h,y:d})),m=Math.abs(Be(u));m>c&&(c=m,s=u)}return!s||s.length<3?e:{...e,kind:"polygon",points:s,rotation:0}}catch{return e}}var ph=Math.PI/180,ye=96,bh=6,yh=60,gh=150,$s=.2,xh=.35;function vh(e,t){let n=Math.atan2(t.x-e.x,t.y-e.y)/ph;return n<0?n+360:n}function go(e){if(!e.length)return NaN;let t=[...e].sort((n,o)=>n-o);return t[Math.floor(t.length/2)]}function xo(e,t,n=2){let o=e.length,r=new Float64Array(o);for(let i=0;i<o;i++){let a=0,s=0;for(let c=-n;c<=n;c++){let l=i+c;if(t)l=(l%o+o)%o;else if(l<0||l>=o)continue;a+=e[l],s++}r[i]=a/s}return r}function Zs(e,t){let n=e.filter(h=>h.rows.length>=1);if(n.length<1)return null;let o=[],r=0,i=0,a=0;for(let h of n)for(let d of h.rows){for(let f of d.pts)r+=f.x,i+=f.y,a++;if(d.pts.length>=4){let f=dr(d.pts);f&&Number.isFinite(f.cx)&&Number.isFinite(f.cy)&&o.push({x:f.cx,y:f.cy})}}if(!a)return null;let s={x:r/a,y:i/a},c=s;if(o.length>=8){let h=go(o.map(y=>y.x)),d=go(o.map(y=>y.y)),f=0;for(let y of n)for(let g of y.rows)for(let M of g.pts){let P=Math.hypot(M.x-s.x,M.y-s.y);P>f&&(f=P)}let p=0,b=f*.2;for(let y of n)for(let g of y.rows)for(let M of g.pts)Math.hypot(M.x-h,M.y-d)<b&&p++;Math.hypot(h-s.x,d-s.y)<=f&&p/a<.01&&(c={x:h,y:d})}let l=[];for(let h of n){let d={sectionId:h.sectionId,rMin:1/0,rMax:-1/0,samples:[]};for(let f of h.rows)for(let p of f.pts){let b=Math.hypot(p.x-c.x,p.y-c.y),y=Math.min(ye-1,Math.floor(vh(c,p)/(360/ye)));d.samples.push({r:b,bin:y,levelM:f.levelM}),b<d.rMin&&(d.rMin=b),b>d.rMax&&(d.rMax=b)}d.samples.length&&l.push(d)}if(!l.length)return null;l.sort((h,d)=>h.rMin+h.rMax-(d.rMin+d.rMax));let u=[];for(let h of l){let d=!1;for(let f of u){let p=Math.min(h.rMax,f.rMax)-Math.max(h.rMin,f.rMin),b=Math.min(h.rMax-h.rMin,f.rMax-f.rMin);if(b>1e-9&&p>=xh*b){f.members.push(h),f.rMin=Math.min(f.rMin,h.rMin),f.rMax=Math.max(f.rMax,h.rMax),d=!0;break}}d||u.push({members:[h],rMin:h.rMin,rMax:h.rMax})}let m=[];for(let h of u){let d=new Array(ye).fill(null);for(let C of h.members)for(let A of C.samples){let _=d[A.bin];_||(_={samples:[]},d[A.bin]=_),_.samples.push({r:A.r,levelM:A.levelM})}let f=d.map(C=>!!C);if(!f.filter(Boolean).length)continue;let b=[],y=[];for(let C of d){if(!C)continue;let A=1/0,_=-1/0;for(let L of C.samples)L.r<A&&(A=L.r),L.r>_&&(_=L.r);b.push(A),y.push(_)}let g=go(b),M=go(y);if(!(g>=$s*M)||!(M>0))continue;let P=[...b].sort((C,A)=>C-A);if(!(P[Math.floor(P.length*.1)]>=$s*M))continue;let S=d.map(C=>{if(!C)return null;let A=[...C.samples].sort((D,G)=>D.r-G.r),_=A[0].r,L=A[A.length-1].r,N=A[0].levelM,k=-1/0;for(let D of A)D.levelM>k&&(k=D.levelM);let F=[];for(let D of A){let G={r:D.r,l:D.levelM};for(;F.length&&Math.abs(F[F.length-1].r-G.r)<1e-9;){if(F[F.length-1].l<=G.l){G.skip=!0;break}F.pop()}if(!G.skip){for(;F.length>=2;){let j=F[F.length-2],V=F[F.length-1];if((V.r-j.r)*(G.l-j.l)-(V.l-j.l)*(G.r-j.r)<=0)F.pop();else break}F.push(G)}}let H=F.map(D=>D.r),B=F.map(D=>D.l);return{inner:_,outer:L,front:N,top:k,profile:{rs:H,ls:B}}}),x=f.slice();for(let C=0;C<ye;C++){if(x[C])continue;let A=-1,_=-1,L=0;for(let z=1;z<=ye;z++){let q=(C-z+ye*2)%ye;if(x[q]){A=q;break}}for(let z=1;z<=ye;z++){let q=(C+z)%ye;if(x[q]){_=q,L=z;break}}if(A<0||_<0)continue;let N=0;for(let z=1;z<=ye;z++){let q=(C-z+ye*2)%ye;if(f[q]){N=z;break}}if(N-1+L>bh)continue;let F=S[A],H=S[_],B=N/(N+L),D=F.inner+(H.inner-F.inner)*B,G=F.outer+(H.outer-F.outer)*B,j=F.front+(H.front-F.front)*B,V=F.top+(H.top-F.top)*B;S[C]={inner:D,outer:G,front:j,top:V,profile:{rs:[D,G],ls:[j,V]}}}for(let C=0;C<ye;C++)S[C]&&(x[C]=!0);let v=360/ye,w=[],R=x.filter(Boolean).length,T=[];if(R===ye)T.push({start:0,len:ye});else{let C=0;for(;x[C];)C=(C+1)%ye;let A=-1;for(let _=0;_<=ye;_++){let L=(C+_)%ye,N=_<ye&&x[L];if(N&&A<0)A=L;else if(!N&&A>=0){let k=(L-A+ye)%ye||ye;T.push({start:A,len:k}),A=-1}}}for(let C of T){if(C.len*v<yh&&C.len<ye)continue;let A=C.len===ye,_=new Float64Array(C.len),L=new Float64Array(C.len),N=new Float64Array(C.len),k=new Float64Array(C.len),F=[];for(let z=0;z<C.len;z++){let q=S[(C.start+z)%ye];_[z]=q.inner,L[z]=q.outer,N[z]=q.front,k[z]=q.top,F.push(q.profile??{rs:[q.inner,q.outer],ls:[q.front,q.top]})}let H=xo(_,A),B=xo(L,A),D=xo(N,A),G=xo(k,A);for(let z=0;z<C.len;z++)H[z]>_[z]&&(H[z]=_[z]),B[z]<L[z]&&(B[z]=L[z]),H[z]>B[z]-1e-6&&(H[z]=Math.max(0,B[z]-1e-6)),G[z]<D[z]&&(G[z]=D[z]);let j={startBin:C.start,binCount:C.len,closed:A,innerR:H,outerR:B,frontLevelM:D,topLevelM:G,profiles:F},V=(z,q,$)=>{let re=F[z],Q=re.rs,W=re.ls;if(q<=Q[0]){W[0]>$&&(W[0]=$);return}if(q>=Q[Q.length-1]){W[W.length-1]>$&&(W[W.length-1]=$);return}for(let Y=0;Y+1<Q.length;Y++)if(q<=Q[Y+1]){W[Y]>$&&(W[Y]=$),W[Y+1]>$&&(W[Y+1]=$);return}};for(let z=0;z<C.len;z++){let q=d[(C.start+z)%ye];if(q)for(let $ of q.samples){V(z,$.r,$.levelM);let re=A?(z-1+C.len)%C.len:z-1,Q=A?(z+1)%C.len:z+1;re>=0&&V(re,$.r,$.levelM),Q<C.len&&V(Q,$.r,$.levelM)}}w.push(j)}w.reduce((C,A)=>C+A.binCount*v,0)<gh||m.push({arcs:w,sectionIds:h.members.map(C=>C.sectionId),innerRMedian:g,outerRMedian:M})}if(!m.length)return null;if(m.sort((h,d)=>h.innerRMedian-d.innerRMedian),t){let h=m[m.length-1].outerRMedian;if(Math.hypot(t.x-c.x,t.y-c.y)>.9*h)return null}return{centre:c,binCount:ye,binStepDeg:360/ye,rings:m}}function Qs(e,t,n,o){let r=e.binStepDeg,i=n/r-.5-t.startBin;i=(i%e.binCount+e.binCount)%e.binCount,i>t.binCount-1&&(t.closed?i=i-t.binCount<t.binCount-i?0:t.binCount-1:i=i-(t.binCount-1)<e.binCount-i?t.binCount-1:0);let a=Math.floor(i),s=t.closed?(a+1)%t.binCount:Math.min(t.binCount-1,a+1),c=i-a,l=u=>{let m=t.profiles[u],h=m.rs,d=m.ls;if(o<=h[0])return d[0];if(o>=h[h.length-1])return d[d.length-1];for(let f=0;f+1<h.length;f++)if(o<=h[f+1]){let p=h[f+1]-h[f],b=p>1e-9?(o-h[f])/p:0;return d[f]+(d[f+1]-d[f])*b}return d[d.length-1]};return l(a)*(1-c)+l(s)*c}function _r(e,t,n,o,r,i,a,s,c,l=[],u=r){if(t.length!==n.length||t.length<2||i-r<1.5)return;let m=(p,b,y)=>{lt(e,p,b,y,l,a,s,{portalBase:u,ao:c})||ae(e,p,void 0,()=>y,b,a,s,c)},h=(p,b,y)=>({x:p.x+(b.x-p.x)*y,y:p.y+(b.y-p.y)*y}),d=o?t.length:t.length-1,f=0;for(let p=0;p<d;p++){let b=(p+1)%t.length,y=Math.hypot(n[b].x-n[p].x,n[b].y-n[p].y)*fe;if(y<1e-5)continue;let g=(S,x)=>[h(t[p],t[b],S),h(t[p],t[b],x),h(n[p],n[b],x),h(n[p],n[b],S)];m(g(0,1),r,r+.95),m(g(0,1),i-.22,i);let M=Math.ceil((f-.32)/6)*6,P=!1,I=!1;for(let S=M;S<f+y;S+=6){let x=Math.max(0,(S-f)/y),v=Math.min(1,(S+.32-f)/y);v<=x||(m(g(x,v),r+.95,i-.22),P||=x<1e-6,I||=v>1-1e-6)}if(!o&&(p===0&&!P||p===d-1&&!I)){let S=Math.min(1,.32/y);m(g(p===0?0:1-S,p===0?S:1),r+.95,i-.22)}f+=y}}var gt=it(require("polygon-clipping"),1),En=.65;function Tr(e,t){let n=1/0;for(let o of t)for(let r=0;r<o.length;r++){let i=o[r],a=o[(r+1)%o.length],s=a.x-i.x,c=a.y-i.y,l=Math.max(0,Math.min(1,((e.x-i.x)*s+(e.y-i.y)*c)/(s*s+c*c||1)));n=Math.min(n,Math.hypot(e.x-i.x-l*s,e.y-i.y-l*c))}return n}var kr=.01;function Js(e,t,n,o,r,i,a,s=[],c=!0,l={bays:[],walls:[]}){if(o-r<=1e-5)return;let u=o-r>=3,m=u?o-En:r;e.setMaterial(5);let h=u?[]:s.filter(S=>{if(S.role!=="entrance"&&S.role!=="exit")return!1;let x=ge(S);if(!x)return!1;let v=Yt(x,r,r+qe(S).heightM);return v!==null&&v.openingTop<=o-.12});if((!h.length||!lt(e,t,m,o,h,i,a,{holes:n,portalBase:r}))&&ae(e,t,n,()=>o,m,i,a,ne,void 0,()=>[0,1,0]),!u){e.setMaterial(0);return}let d=c&&l.bays.length?Mh(t,n,ht(t,An/E),l):null,f=6/E,p=.22/E,b=s.flatMap(S=>{if(S.role!=="entrance"&&S.role!=="exit")return[];let x=ge(S);return x?.length?[{minX:Math.min(...x.map(v=>v.x)),maxX:Math.max(...x.map(v=>v.x)),minY:Math.min(...x.map(v=>v.y)),maxY:Math.max(...x.map(v=>v.y))}]:[]}),y=Math.min(...t.map(S=>S.x)),g=Math.max(...t.map(S=>S.x)),M=Math.min(...t.map(S=>S.y)),P=Math.max(...t.map(S=>S.y));for(let S=y+f/2;S<g;S+=f)for(let x=M+f/2;x<P;x+=f){if(b.some(w=>S+p>=w.minX&&S-p<=w.maxX&&x+p>=w.minY&&x-p<=w.maxY))continue;let v=[{x:S-p,y:x-p},{x:S+p,y:x-p},{x:S+p,y:x+p},{x:S-p,y:x+p}];!Le({x:S,y:x},t,n)||Tr({x:S,y:x},[t,...n??[]])<p*Math.SQRT2+(c?An/E:0)||d&&Tr({x:S,y:x},d.flat())<p*Math.SQRT2+An/E||ae(e,v,void 0,()=>m,r,i,a,ne)}if(d){for(let[S,...x]of d)ae(e,S,x,()=>m,r-kr,i,a,ne);e.setMaterial(0);return}let I=ht(t,An/E);if(c&&I.length>=3){let S=s.filter(w=>{if(w.role!=="entrance"&&w.role!=="exit")return!1;let R=ge(w);return!!R&&R.some(T=>!Le(T,t,void 0)||Tr(T,[t])<=An/E)}),x=[I.slice().reverse()],v=r-kr;(!S.length||!lt(e,t,v,m,S,i,a,{holes:x,portalBase:r+kr}))&&ae(e,t,x,()=>m,v,i,a,ne)}e.setMaterial(0)}var Lr=.25,An=Lr;function Mh(e,t,n,o){if(n.length<3)return null;let r=a=>{let s=a.map(c=>[c.x,c.y]);return s.push(s[0]),s},i=a=>{let[s,...c]=a.map(l=>[r(l)]);return gt.default.union(s,...c)};try{let a=[r(e),...(t??[]).map(r)],s=gt.default.difference(a,[r(n)]),c=gt.default.intersection(a,i(o.bays));if(!c.length)return null;let l=gt.default.difference(gt.default.intersection(a,i(o.walls)),c);return gt.default.union(gt.default.difference(s,c),l).map(m=>m.map(h=>h.slice(0,-1).map(([d,f])=>({x:d,y:f}))))}catch{return null}}var Sh=.02,wh=.25,Ph=1.2,Ih=.6,Rh=.45,Ah=2.3,Eh=Math.PI/180,ec=.005;function et(e,t,n){let o=n*Eh;return{x:e.x+t*Math.sin(o),y:e.y+t*Math.cos(o)}}function Ch(e,t){let n=t.rings[t.rings.length-1];if(!n)return!1;let o=n.outerRMedian*.85;for(let r of e){if(r.role!=="wall")continue;let i=r.points&&r.points.length>=2?r.points:r.x!==void 0&&r.y!==void 0&&r.width!==void 0&&r.height!==void 0?[{x:r.x,y:r.y},{x:r.x+r.width,y:r.y},{x:r.x+r.width,y:r.y+r.height},{x:r.x,y:r.y+r.height}]:[];if(i.length<2)continue;let a=0;for(let s of i)Math.hypot(s.x-t.centre.x,s.y-t.centre.y)>=o&&a++;if(a>=i.length/2)return!0}return!1}var _h=24,Th=.01;function kh(e,t,n,o,r,i,a,s,c){let l=n.binCount,u=_h,m=fe,h=i+.02,d=i-Th,f=[];for(let A=0;A<l;A++){let _=(n.startBin+A+.5)*t.binStepDeg,L=new Float64Array(u+1);for(let N=0;N<=u;N++){let k=o[A]+(r[A]-o[A])*N/u;L[N]=Math.max(h,Qs(t,n,_,k)-wh)}f.push(L)}if(c){let A=0;for(let _=0;_+1<l;_++)for(let L=0;L<u;L++){let N=et(t.centre,o[_]+(r[_]-o[_])*L/u,(n.startBin+_+.5)*t.binStepDeg),k=et(t.centre,o[_+1]+(r[_+1]-o[_+1])*(L+1)/u,(n.startBin+_+1.5)*t.binStepDeg);A=Math.max(A,Math.hypot(k.x-N.x,k.y-N.y))}for(let _=0;_<l;_++){let L=(n.startBin+_+.5)*t.binStepDeg;for(let N=0;N<=u;N++){let k=et(t.centre,o[_]+(r[_]-o[_])*N/u,L),F=c(k.x,k.y,A*1.01);F!==null&&(f[_][N]=Math.min(f[_][N],Math.max(d+ec,F-ec)))}}}let p=[a.bandTop[0]*s.top,a.bandTop[1]*s.top,a.bandTop[2]*s.top],b=[a.bandTop[0]*s.bottomCap,a.bandTop[1]*s.bottomCap,a.bandTop[2]*s.bottomCap],y=[a.bandWall[0]*s.top,a.bandWall[1]*s.top,a.bandWall[2]*s.top],g=[a.bandWall[0]*s.wallBottom,a.bandWall[1]*s.wallBottom,a.bandWall[2]*s.wallBottom],M=(A,_)=>{let L=(n.startBin+A+.5)*t.binStepDeg,N=o[A]+(r[A]-o[A])*_/u,k=et(t.centre,N,L);return[k.x*m,f[A][_],k.y*m]};{let A=Math.tan(12*Math.PI/180);for(let _=0;_<6;_++){let L=!1;for(let k=0;k<l;k++)for(let F=u-1;F>=0;F--)f[k][F]>f[k][F+1]&&(f[k][F]=f[k][F+1],L=!0);let N=n.closed?l:l-1;for(let k=0;k<N;k++){let F=(k+1)%l;for(let H=0;H<=u;H++){let B=f[F][H]-f[k][H];if(Math.abs(B)>1)continue;let D=o[k]+(r[k]-o[k])*H/u,G=o[F]+(r[F]-o[F])*H/u,j=et(t.centre,D,(n.startBin+k+.5)*t.binStepDeg),V=et(t.centre,G,(n.startBin+F+.5)*t.binStepDeg),z=A*Math.hypot(V.x-j.x,V.y-j.y)*m;B>z?(f[F][H]=f[k][H]+z,L=!0):-B>z&&(f[k][H]=f[F][H]+z,L=!0)}}if(!L)break}}let P=1,I=(A,_)=>{for(let L=0;L<=u;L+=4)if(Math.abs(f[A][L]-f[_][L])>P)return!0;return Math.abs(f[A][u]-f[_][u])>P},S=Math.tan(38*Math.PI/180),x=A=>(r[A]-o[A])/u*m,v=(A,_)=>f[A][_+1]-f[A][_]>S*Math.max(1e-6,x(A)),w=(A,_)=>{let L=n.closed?(A-1+l)%l:Math.max(0,A-1),N=n.closed?(A+1)%l:Math.min(l-1,A+1);Math.abs(f[L][_]-f[A][_])>P&&(L=A),Math.abs(f[N][_]-f[A][_])>P&&(N=A);let k=Math.max(0,_-1),F=Math.min(u,_+1);k<_&&v(A,k)&&(k=_),F>_&&v(A,_)&&(F=_);let H=M(L,_),B=M(N,_),D=M(A,k),G=M(A,F),j=B[0]-H[0],V=B[1]-H[1],z=B[2]-H[2],q=G[0]-D[0],$=G[1]-D[1],re=G[2]-D[2],Q=V*re-z*$,W=z*q-j*re,Y=j*$-V*q,K=Math.hypot(Q,W,Y);return K>1e-12?(Q/=K,W/=K,Y/=K,W<0&&(Q=-Q,W=-W,Y=-Y),[Q,W,Y]):[0,1,0]},R=(A,_,L=!1)=>{let N=L&&Math.min(A[1],_[1])-i>=3,k=[A[0],N?A[1]-En:d,A[2]],F=[_[0],N?_[1]-En:d,_[2]],H=_[0]-A[0],B=_[2]-A[2],D=Math.hypot(H,B);if(!(D>1e-12))return;let G=[B/D,0,-H/D];e.tri(A,_,F,G,y,y,g),e.tri(A,F,k,G,y,g,g)},T=.05*ze,O=A=>r[A]-o[A]<T,C=n.closed?l:l-1;for(let A=0;A<C;A++){let _=(A+1)%l;if(O(A)||O(_))continue;if(I(A,_)){let B=(n.startBin+A+1)*t.binStepDeg,D=($,re)=>{let Q=(o[A]+o[_])/2,W=(r[A]+r[_])/2,Y=Q+(W-Q)*re/u,K=et(t.centre,Y,B);return[K.x*m,f[$][re],K.y*m]};for(let $=0;$<u;$++){let re=M(A,$),Q=M(A,$+1),W=D(A,$),Y=D(A,$+1),K=w(A,$),oe=w(A,$+1);e.triN(re,W,Y,K,K,oe,p),e.triN(re,Y,Q,K,oe,oe,p);let ee=M(_,$),le=M(_,$+1),J=D(_,$),ce=D(_,$+1),Oe=w(_,$),te=w(_,$+1);e.triN(J,ee,le,Oe,Oe,te,p),e.triN(J,le,ce,Oe,te,te,p);let me=D(A,$),Se=D(A,$+1),Xe=D(_,$+1),De=D(_,$),Ae=Se[0]-me[0],We=Se[2]-me[2],Ze=Math.hypot(Ae,We);if(Ze>1e-12){let Pt=[We/Ze,0,-Ae/Ze];e.tri(me,Se,Xe,Pt,y),e.tri(me,Xe,De,Pt,y)}}let G=M(A,0),j=M(_,0),V=M(_,u),z=M(A,u),q=$=>[$[0],d,$[2]];Math.min(G[1],j[1])-i<3&&(e.tri(q(G),q(V),q(j),[0,-1,0],b),e.tri(q(G),q(z),q(V),[0,-1,0],b)),R(G,j,!0),R(z,V,!0);continue}for(let B=0;B<u;B++){let D=w(A,B),G=w(_,B),j=w(_,B+1),V=w(A,B+1);if(v(A,B)||v(_,B)){let Q=(Se,Xe)=>{let De=(n.startBin+Se+.5)*t.binStepDeg,Ae=o[Se]+(r[Se]-o[Se])*(B+.5)/u,We=et(t.centre,Ae,De);return[We.x*m,Xe,We.y*m]},W=M(A,B),Y=M(_,B),K=Q(A,f[A][B]),oe=Q(_,f[_][B]);e.triN(W,Y,oe,D,G,G,p),e.triN(W,oe,K,D,G,D,p);let ee=M(_,B+1),le=M(A,B+1),J=Q(A,f[A][B+1]),ce=Q(_,f[_][B+1]);e.triN(J,ce,ee,V,j,j,p),e.triN(J,ee,le,V,j,V,p);let Oe=oe[0]-K[0],te=oe[2]-K[2],me=Math.hypot(Oe,te);if(me>1e-12){let Se=[-te/me,0,Oe/me];e.tri(K,oe,ce,Se,y),e.tri(K,ce,J,Se,y)}continue}let z=M(A,B),q=M(_,B),$=M(_,B+1),re=M(A,B+1);e.triN(z,q,$,D,G,j,p),e.triN(z,$,re,D,j,V,p)}let L=M(A,0),N=M(_,0),k=M(_,u),F=M(A,u),H=B=>[B[0],d,B[2]];Math.min(L[1],N[1])-i<3&&(e.tri(H(L),H(k),H(N),[0,-1,0],b),e.tri(H(L),H(F),H(k),[0,-1,0],b)),R(L,N,!0),R(F,k,!0)}if(!n.closed)for(let A of[0,l-1])for(let _=0;_<u;_++)R(M(A,_),M(A,_+1))}function tc(e,t,n){let{bottomY:o,colors:r,ao:i}=n,a=new Float64Array(t.binCount).fill(-1/0);for(let u of t.rings)for(let m of u.arcs){let h=new Float64Array(m.binCount),d=new Float64Array(m.binCount);for(let p=0;p<m.binCount;p++){let b=(m.startBin+p)%t.binCount,y=Math.max(0,m.innerR[p]-Ue);h[p]=Math.max(y,a[b]+.001),d[p]=Math.max(h[p]+.001,m.outerR[p]+Ue)}let f=0;for(let p=0;p<m.binCount;p++){let b=m.topLevelM[p]-o;b>f&&(f=b)}f>=Ph&&kh(e,t,m,h,d,o,r,i,n.standTopNear);for(let p=0;p<m.binCount;p++){let b=(m.startBin+p)%t.binCount;d[p]>a[b]&&(a[b]=d[p])}}if(n.deriveShell===!1||Ch(n.shapes,t))return;let s=t.rings[t.rings.length-1],c=Ih*ze,l=Rh*ze;for(let u of s.arcs){let m=[],h=[];for(let w=0;w<u.binCount;w++){let R=(u.startBin+w+.5)*t.binStepDeg,T=u.outerR[w]+Ue+c;m.push(et(t.centre,T,R)),h.push(et(t.centre,T+l,R))}let d=-1/0;for(let w=0;w<u.binCount;w++)u.topLevelM[w]>d&&(d=u.topLevelM[w]);let f=d+Ah,p=u.closed?h:[...h,...m.slice().reverse()],b=u.closed?[m.slice().reverse()]:void 0,y=be(r.shellWall,[.66,.71,.72],.62),g=(w,R,T,O,C)=>{let A=Math.abs(O-d)<1e-6?O-Sh:O;lt(e,w,T,A,n.shapes,r.shellTop,C,{holes:R,portalBase:o,ao:i})||ae(e,w,R,()=>A,T,r.shellTop,C,i)},M=Math.max(1,Math.ceil((d-o)/4.5)),P=(d-o)/M,I=new Set,S=n.tierFrontLevels??t.rings.map(w=>{let R=w.arcs.flatMap(T=>Array.from(T.frontLevelM)).filter(Number.isFinite).sort((T,O)=>T-O);return R[Math.floor(R.length/2)]});for(let w of S)Number.isFinite(w)&&w-o>=3&&w<d&&I.add(Math.max(0,Math.min(M-1,Math.floor((w-o)/P))));let x=Math.min(...S.filter(w=>Number.isFinite(w)&&w-o>=3&&w<d));for(let w=0;w<M;w++)o+(w+1)*P<=x-En&&Number.isFinite(x)&&I.add(w);for(let w=0;w<M;w++){let R=o+(d-o)*w/M,T=o+(d-o)*(w+1)/M;I.has(w)&&T-R>=3.2?(g(p,b,R,R+.45,y),_r(e,m,h,u.closed,R+.45,T-.16,r.shellTop,y,i,n.shapes,o)):g(p,b,R,T-.16,y),g(p,b,T-.16,T,ie(y,.62))}_r(e,m,h,u.closed,d,f,r.shellTop,y,i,n.shapes,o);let v=8;for(let w=1;w<h.length;w++){if(v+=Math.hypot(h[w].x-h[w-1].x,h[w].y-h[w-1].y)*fe,v<8)continue;v=0;let R=h[w],T=h[w-1],O=R.x-T.x,C=R.y-T.y,A=Math.max(1,Math.hypot(O,C)),_=O/A*.16*ze,L=C/A*.16*ze,N=Math.max(1,Math.hypot(R.x-t.centre.x,R.y-t.centre.y)),k=(R.x-t.centre.x)/N*.24*ze,F=(R.y-t.centre.y)/N*.24*ze,H=[{x:R.x-_,y:R.y-L},{x:R.x+_,y:R.y+L},{x:R.x+_+k,y:R.y+L+F},{x:R.x-_+k,y:R.y-L+F}];g(H,void 0,o,d,ie(y,1.12))}}}var Lh=2.5,nc=.65,Fh=2,Oh=.03;function Dh(e,t){let n=()=>{let o=t;for(;e.length>2;){let r=e[0],i=e[1],a=Math.hypot(i.x-r.x,i.y-r.y);if(a>o){e[0]={x:r.x+(i.x-r.x)/a*o,y:r.y+(i.y-r.y)/a*o};return}o-=a,e.shift()}};n(),e.reverse(),n(),e.reverse()}function Dr(e,t,n){let o=new Map;for(let i of e){let a=o.get(i.blockId);(!a||i.depth<a.depth)&&o.set(i.blockId,i)}let r=[];for(let[i,a]of o){if(a.y-n<Lh||a.pts.length<2)continue;let s=a.pts.map(u=>{let m=u.x-t.x,h=u.y-t.y,d=Math.max(1,Math.hypot(m,h));return{x:u.x-m/d*nc/E,y:u.y-h/d*nc/E}}),c=[],l=[s[0]];for(let u=1;u<s.length;u++){let m=s[u-1],h=s[u];Math.hypot(h.x-m.x,h.y-m.y)*E>Fh?(l.length>=2&&c.push(l),l=[h]):l.push(h)}l.length>=2&&c.push(l);for(let u of c)Dh(u,Oh/E);c.length&&r.push({blockId:i,y:a.y,runs:c})}return r}var oc=.1,Bh=1.1,Nh=.22,Fr=.95,Or=.05,rc=1.8;function ic(e,t,n,o){let r=[.72,.72,.69],i=[.48,.55,.57];for(let a of Dr(t,n,o)){let s=a.y;for(let c of a.runs){let l=rc;for(let u=1;u<c.length;u++){let m=c[u-1],h=c[u],d=h.x-m.x,f=h.y-m.y,p=Math.hypot(d,f);if(p<1e-5)continue;let b=y=>{let g=-f/p*y/E/2,M=d/p*y/E/2;return[{x:m.x+g,y:m.y+M},{x:h.x+g,y:h.y+M},{x:h.x-g,y:h.y-M},{x:m.x-g,y:m.y-M}]};if(ae(e,b(Nh),void 0,()=>s+oc,s-Bh,r,r,ne),ae(e,b(Or),void 0,()=>s+Fr,s+Fr-Or,i,i,ne),l+=p*E,l>=rc||u===c.length-1){l=0;let y=.028/E,g=[{x:m.x-y,y:m.y-y},{x:m.x+y,y:m.y-y},{x:m.x+y,y:m.y+y},{x:m.x-y,y:m.y+y}];ae(e,g,void 0,()=>s+Fr-Or,s+oc,i,i,ne)}}}}}var Vh=.9,Gh=1.5,Hh=.3;function ac(e,t,n){let o=[],r=[],i=Vh/E,a=Gh/E,s=Hh/E;for(let c of e)for(let l of c.runs){if(l.length<2)continue;let u=l.slice(),m=(b,y)=>{let g=u[b],M=u[y],P=Math.hypot(g.x-M.x,g.y-M.y)||1;u[b]={x:g.x+(g.x-M.x)/P*s,y:g.y+(g.y-M.y)/P*s}};m(0,1),m(u.length-1,u.length-2);let h=u.map((b,y)=>{let g=u[Math.max(0,y-1)],M=u[Math.min(u.length-1,y+1)],P=M.x-g.x,I=M.y-g.y,S=Math.hypot(P,I)||1,x=-I/S,v=P/S;return x*(b.x-t.x)+v*(b.y-t.y)<0&&(x=-x,v=-v),{nx:x,ny:v}}),d=u.map((b,y)=>({x:b.x-h[y].nx*a,y:b.y-h[y].ny*a})),f=u.map((b,y)=>({x:b.x+h[y].nx*i,y:b.y+h[y].ny*i})),p=u.map((b,y)=>({x:b.x+h[y].nx*(i+n/E),y:b.y+h[y].ny*(i+n/E)}));o.push([...d,...f.slice().reverse()]),r.push([...f,...p.reverse()])}return{bays:o,walls:r}}function sc(e,t,n,o,r){let i=[.67,.71,.68];for(let a=0;a<t.length;a++){let s=t[a];if(!(s.pts.length<2))for(let c of[0,s.pts.length-1]){let l=s.pts[c],u=s.pts[c===0?1:c-1],m=l.x-u.x,h=l.y-u.y,d=Math.hypot(m,h);if(d<1e-5)continue;m/=d,h/=d;let f=1/0;for(let v=0;v<n.length;v++){let w=n[v],R=n[(v+1)%n.length],T=R.x-w.x,O=R.y-w.y,C=m*O-h*T;if(Math.abs(C)<1e-8)continue;let A=w.x-l.x,_=w.y-l.y,L=(A*O-_*T)/C,N=(A*h-_*m)/C;L>0&&N>=0&&N<=1&&(f=Math.min(f,L))}let p=.3/E,b=f-.04/E;if(!Number.isFinite(f)||f*E>2||b-p<.12/E)continue;let y=.27/E,g=[{x:l.x+m*p-h*y,y:l.y+h*p+m*y},{x:l.x+m*b-h*y,y:l.y+h*b+m*y},{x:l.x+m*b+h*y,y:l.y+h*b-m*y},{x:l.x+m*p+h*y,y:l.y+h*p-m*y}];if(!g.every(v=>Ne(n,v.x,v.y)))continue;let M=r?.[a]?.belowY,P=M==null?0:s.y-M,I=!!o&&P>.03&&P<=.65;if(I&&o){let v=(w,R)=>Math.hypot((w.x+R.x)/2-o.x,(w.y+R.y)/2-o.y);v(g[0],g[1])>v(g[3],g[2])&&(g=[g[3],g[2],g[1],g[0]])}let S=I?Math.ceil((P-1e-8)/.2):1,x=(v,w,R)=>({x:v.x+(w.x-v.x)*R,y:v.y+(w.y-v.y)*R});for(let v=0;v<S;v++){let w=v/S,R=(v+1)/S,T=[x(g[0],g[3],w),x(g[1],g[2],w),x(g[1],g[2],R),x(g[0],g[3],R)],O=s.y+.008-(I?P*(1-R):0);if(ae(e,T,void 0,()=>O,O-(I?P/S+.1:.16),i,[.43,.47,.46],ne),!I)continue;let C=Math.hypot(T[3].x-T[0].x,T[3].y-T[0].y)*E,A=Math.min(.04/C,.25),_=x(T[0],T[3],A),L=x(T[1],T[2],A),N=F=>[F.x*E,O+.004,F.y*E],k=[.66,.59,.39];e.tri(N(T[0]),N(T[1]),N(L),[0,1,0],k),e.tri(N(T[0]),N(L),N(_),[0,1,0],k)}}}}function cc(e,t,n,o,r,i,a,s,c=!1){if(!t.outline||t.outline.length<3)return;let l=n.baseHeightM,u=n.objects.filter(g=>g.type==="shape"&&(g.role==="entrance"||g.role==="exit")),m=Ya(o,s.tierTop);if(!r)return;let h=g=>r.deckAt(g.x,g.y),d=ls(t,a),f=d[0]??t.outline;if(r.rowLevels.length>=2){let g=ro(r.rowLevels),M=us(rs(r.rowLevels,n.focal,g),d),P=ac(Dr(r.rowLevels,n.focal,l),n.focal,Lr);for(let S of M){let x=Math.max(l,S.topY-lc);for(let v of i.subtract(S.outline,x))Js(e,v,S.holes,x,l,s.tierTop,s.tierWall,u,!c,P)}M.length||ae(e,f,t.holes,()=>r.landingY,l,m,s.tierWall,ne);let I={tread:[m[0]*ne.top,m[1]*ne.top,m[2]*ne.top],riser:[m[0]*.72,m[1]*.72,m[2]*.72]};for(let S of d.length?d:[f])as(e,r.rowLevels,n.focal,r.landingY,I,S,g);ic(e,r.rowLevels,n.focal,l),sc(e,r.rowLevels,t.outline,n.focal,g);return}let p=r.flat?1/0:vs,b=g=>r.normalAt(g.x,g.y),y=r.flat?r.landingY:void 0;for(let g of i.subtract(f,y))ae(e,g,t.holes,h,l,m,s.tierWall,ne,p,b)}function zh(e,t,n){let o=new Set;for(let a of e.objects)a.type==="section"&&o.add(a.id);let r=new Map;for(let a=0;a<t.length;a++){let s=n.seatOwner[a];if(!s||!o.has(s))continue;let c=n.bySection.get(s);if(c&&c.rowLevels.length>=2)continue;let l=t[a];if(l.kind==="booth")continue;let u=r.get(s);u||(u=new Map,r.set(s,u));let m=l.rowId||`__seat-${a}`,h=u.get(m);h||(h={pts:[],levelM:0,n:0},u.set(m,h)),h.pts.push({x:l.x,y:l.y}),h.levelM+=n.seatDeckY(a),h.n++}let i=[];for(let a of e.objects){if(a.type!=="section")continue;let s=n.bySection.get(a.id);if(s&&s.rowLevels.length>=2){let l=s.rowLevels.filter(u=>!u.patch).map(u=>({pts:u.pts,levelM:u.y}));l.length>=2&&i.push({sectionId:a.id,rows:l});continue}let c=r.get(a.id);c&&i.push({sectionId:a.id,rows:[...c.values()].map(l=>({pts:l.pts,levelM:l.levelM/l.n}))})}return i}function Uh(e,t){let n=1/0;for(let o=0;o<t.length;o++){let r=t[o],i=t[(o+1)%t.length],a=i.x-r.x,s=i.y-r.y,c=Math.max(0,Math.min(1,((e.x-r.x)*a+(e.y-r.y)*s)/(a*a+s*s||1)));n=Math.min(n,Math.hypot(e.x-r.x-c*a,e.y-r.y-c*s))}return n}var lc=.02;function jh(e,t){let n=e.objects.filter(o=>o.type==="section"&&!!o.outline&&o.outline.length>=3).flatMap(o=>{let r=t.bySection.get(o.id);if(!r)return[];let i=1/0,a=-1/0,s=1/0,c=-1/0;for(let u of o.outline)u.x<i&&(i=u.x),u.x>a&&(a=u.x),u.y<s&&(s=u.y),u.y>c&&(c=u.y);let l=r.landingY;for(let u of r.rowLevels)l=Math.min(l,u.y-lc);return[{outline:o.outline,holes:o.holes,surface:r,floorTop:l,minX:i,maxX:a,minY:s,maxY:c}]});return(o,r,i)=>{let a=null;for(let s of n){if(o<s.minX-i||o>s.maxX+i||r<s.minY-i||r>s.maxY+i)continue;let c={x:o,y:r};if(!Le(c,s.outline,s.holes)&&Uh(c,s.outline)>i)continue;let l=Math.min(s.surface.deckAt(o,r),s.floorTop);(a===null||l<a)&&(a=l)}return a}}var Xh=3,Wh=.4;function uc(e,t,n,o,r,i,a=!0){let s=zh(t,n,o);if(s.length<Xh)return;let c=Zs(s,t.focal);if(!c)return;let l=Math.max(0,...c.rings.map(u=>u.arcs.reduce((m,h)=>m+h.binCount,0)))/c.binCount;e.setMaterial(5),tc(e,c,{bottomY:t.baseHeightM,tierFrontLevels:s.map(u=>Math.min(...u.rows.map(m=>m.levelM))),colors:{bandTop:ie(r.tierTop,.8),bandWall:r.tierWall,shellTop:i??ie(r.tierWall,1.15),shellWall:i??r.tierWall},ao:ne,shapes:t.objects.filter(u=>u.type==="shape"),deriveShell:a&&l>=Wh,standTopNear:jh(t,o)}),e.setMaterial(0)}var mc=4;var Yh=[[/\b(wc|toilets?|restrooms?|washrooms?|lavatory|loo)\b/i,"restroom"],[/\b(bar|drinks|pub|cocktails?)\b/i,"bar"],[/\b(food|concessions?|snacks?|kiosk|caf[eé]|kitchen|catering)\b/i,"concession"],[/\b(coat ?check|cloak ?room|cloakroom|coats)\b/i,"coat"],[/\b(screen|led wall|projection|video wall)\b/i,"screen"],[/\b(sound|foh|mixing desk|control booth)\b/i,"sound"],[/\b(entrance|entry|way in|gate)\b/i,"entrance"],[/\b(exit|way out)\b/i,"exit"],[/\b(pillar|column|obstruction)\b/i,"obstruction"],[/\b(walls?|outline|boundary|perimeter)\b/i,"wall"]],Kh=1.2,qh=12;function fc(e){if(e.heightM!==void 0)return!1;let t=ge(e);if(!t||t.length<3)return!1;let n=0;for(let r=0;r<t.length;r++){let i=t[r],a=t[(r+1)%t.length];n+=Math.hypot(a.x-i.x,a.y-i.y)}return n*fe<qh*2?!1:2*Cn(t)/n*fe<=Kh}function Br(e){if(!e)return null;for(let[t,n]of Yh)if(t.test(e))return n;return null}var hc="auto-rows-";function pc(e){return e.id.startsWith(hc)&&!e.label}var $h=1.15,Zh=.09,bc=6,Qh=34,Jh=.35,ep=6,tp=.35,np=.75,op=12,rp=2.5,ip=40,ap=[18,24],sp=[12,16],dc=14,cp=.8,lp=.6,up=5,mp=.3,yc=.4,fp=2,dp=400,hp=2.6,pp=.8,bp=4,yp=26,gp=1.6,xp=6e3,vp=.6,Mp="#c3c7cd",Nr=300,Sp=240;function wp(e,t,n,o){if(!e.fill||!/^#[0-9a-f]{6}$/i.test(e.fill))return null;let r=Gr([...t]),i=new Set;for(let u of o)i.add(Math.floor(Math.atan2(u.y-r.y,u.x-r.x)*180/Math.PI/10));if(i.size*10<Sp)return null;let{h:a,s,l:c}=Bi(Oi(e.fill));return a<70/360||a>170/360||s<.2||c<.08||c>.75||n.some(u=>u!==e&&u.type==="shape"&&ge(u)?.some(m=>zr(m,t)))?null:e.kind==="ellipse"?"oval-cricket":e.kind==="rect"?"pitch-football":null}var Pp="Estimated from the drawing; confirm with the venue.",gc=e=>{if(!e.length)return null;let t=[...e].sort((o,r)=>o-r),n=Math.floor(t.length/2);return t.length%2?t[n]:(t[n-1]+t[n])/2},Gr=e=>({x:e.reduce((t,n)=>t+n.x,0)/e.length,y:e.reduce((t,n)=>t+n.y,0)/e.length}),Cn=e=>{let t=0;for(let n=0;n<e.length;n++){let o=e[n],r=e[(n+1)%e.length];t+=o.x*r.y-r.x*o.y}return Math.abs(t)/2};function Ip(e){return e.height!==void 0||e.rake!==void 0||e.elevation!==void 0||e.surfaceKind!==void 0}function Hr(e){let t=new Map;for(let n of e){let o=t.get(n.rowId);o?o.push(n):t.set(n.rowId,[n])}return t}function zr(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o],a=t[r];i.y>e.y!=a.y>e.y&&e.x<(a.x-i.x)*(e.y-i.y)/(a.y-i.y)+i.x&&(n=!n)}return n}function Ur(e,t){let n=t[0],o=1/0;for(let r=0;r<t.length;r++){let i=t[r],a=t[(r+1)%t.length],s=a.x-i.x,c=a.y-i.y,l=s*s+c*c,u=l>0?Math.max(0,Math.min(1,((e.x-i.x)*s+(e.y-i.y)*c)/l)):0,m={x:i.x+s*u,y:i.y+c*u},h=Math.hypot(e.x-m.x,e.y-m.y);h<o&&(o=h,n=m)}return n}function xc(e,t){let n=0,o=0;for(let r of e.values()){if(r.length<3)continue;let i=r[0],a=r[r.length-1],s=a.x-i.x,c=a.y-i.y,l=Math.hypot(s,c);if(l<1e-6)continue;let u={x:(i.x+a.x)/2,y:(i.y+a.y)/2},m=Ur(u,t),h=m.x-u.x,d=m.y-u.y,f=Math.hypot(h,d);f<1e-6||(o+=Math.abs((-c*h+s*d)/(l*f))*r.length,n+=r.length)}return n?o/n:0}function Rp(e,t,n){let o=e.filter(p=>p.type==="shape"),r=o.find(p=>p.role==="stage");if(r){let p=ge(r);return p?{shape:r,centre:Gr(p),outline:p,inferred:!1}:null}if(!n.length)return null;let i=1/0,a=-1/0,s=1/0,c=-1/0;for(let p of n)i=Math.min(i,p.x),a=Math.max(a,p.x),s=Math.min(s,p.y),c=Math.max(c,p.y);let l=(a-i)*(c-s),u=[];for(let p of o){if(p.role)continue;let b=ge(p);if(!b)continue;let y=Cn(b);if(y*fe*fe<6||y>l)continue;let g=Math.min(...b.map(w=>w.x)),M=Math.max(...b.map(w=>w.x)),P=Math.min(...b.map(w=>w.y)),I=Math.max(...b.map(w=>w.y)),S=0;for(let w of n)w.x>g&&w.x<M&&w.y>P&&w.y<I&&zr(w,b)&&S++;if(S>n.length*.05)continue;let x=Gr(b),v=xc(t,b);v>=cp&&u.push({shape:p,centre:x,outline:b,score:v,area:y,box:[g,P,M,I]})}let m=(p,b)=>b!==p&&b.area>p.area&&p.box[0]>=b.box[0]-1e-6&&p.box[1]>=b.box[1]-1e-6&&p.box[2]<=b.box[2]+1e-6&&p.box[3]<=b.box[3]+1e-6,h=u.filter(p=>!u.some(b=>m(p,b))),d=Math.max(0,...h.map(p=>p.score)),f=h.filter(p=>p.score>=d-.03).sort((p,b)=>b.area-p.area)[0]??null;return f?{shape:f.shape,centre:f.centre,outline:f.outline,inferred:!0}:null}function Ap(e,t,n){if(!n||n.length<3)return Math.hypot(e.x-t.x,e.y-t.y);let o=Ur(e,n);return Math.hypot(e.x-o.x,e.y-o.y)}function vc(e){let t=[...e].sort((i,a)=>i.x-a.x||i.y-a.y);if(t.length<3)return t;let n=(i,a,s)=>(a.x-i.x)*(s.y-i.y)-(a.y-i.y)*(s.x-i.x),o=[];for(let i of t){for(;o.length>=2&&n(o[o.length-2],o[o.length-1],i)<=0;)o.pop();o.push(i)}let r=[];for(let i=t.length-1;i>=0;i--){let a=t[i];for(;r.length>=2&&n(r[r.length-2],r[r.length-1],a)<=0;)r.pop();r.push(a)}return[...o.slice(0,-1),...r.slice(0,-1)]}function Ep(e){if(!e.length||e.length>xp)return[];let t=[...Hr(e).values()],n=t.map((s,c)=>c),o=s=>n[s]===s?s:n[s]=o(n[s]),r=gp/fe,i=t.map(s=>({minX:Math.min(...s.map(c=>c.x))-r,maxX:Math.max(...s.map(c=>c.x))+r,minY:Math.min(...s.map(c=>c.y))-r,maxY:Math.max(...s.map(c=>c.y))+r}));for(let s=0;s<t.length;s++)for(let c=s+1;c<t.length;c++){let l=i[s],u=i[c];if(l.maxX<u.minX||u.maxX<l.minX||l.maxY<u.minY||u.maxY<l.minY)continue;t[s].some(h=>t[c].some(d=>Math.hypot(h.x-d.x,h.y-d.y)<=r))&&(n[o(s)]=o(c))}let a=new Map;return t.forEach((s,c)=>{let l=o(c),u=a.get(l);u?u.push(...s):a.set(l,[...s])}),[...a.values()].filter(s=>new Set(s.map(c=>c.rowId)).size>=2)}function Cp(e,t,n){if(!t.length)return null;let o=t.filter(v=>n.tableIds.has(v.rowId)||v.kind==="booth").length>t.length/2,r=Hr(t),i=!n.outline||xc(r,n.outline)>=lp,a=0,s=0;for(let v of r.values()){if(v.length<2)continue;let w=v[0],R=v[v.length-1],T=R.x-w.x,O=R.y-w.y,C=Math.hypot(T,O);if(C<1e-6)continue;let A={x:(w.x+R.x)/2,y:(w.y+R.y)/2},_=i?n.outline?Ur(A,n.outline):n.focal:n.middle,L=-O/C,N=T/C;L*(_.x-A.x)+N*(_.y-A.y)<0&&(L=-L,N=-N),a+=L*v.length,s+=N*v.length}let c={x:t.reduce((v,w)=>v+w.x,0)/t.length,y:t.reduce((v,w)=>v+w.y,0)/t.length};if(Math.hypot(a,s)<1e-9){let v=i?n.focal:n.middle;a=v.x-c.x,s=v.y-c.y}let l=Math.hypot(a,s)||1,u={x:a/l,y:s/l},m=v=>-(v.x*u.x+v.y*u.y),h=v=>-v.x*u.y+v.y*u.x,d=1/0,f=-1/0,p=1/0,b=-1/0,y=1/0,g=new Map;for(let v of t){let w=m(v),R=h(v);d=Math.min(d,w),f=Math.max(f,w),p=Math.min(p,R),b=Math.max(b,R),i&&(y=Math.min(y,Ap(v,n.focal,n.outline)));let T=v.logicalRowId??v.rowId,O=g.get(T);O?O.push(w):g.set(T,[w])}i||(y=Math.max(0,d-m(n.middle)));let M=[...g.values()].map(v=>gc(v)).sort((v,w)=>v-w),P=[];if(!o)for(let v of M)P.length&&v-P[P.length-1]<tp/fe||P.push(v);let I=Ip(e),S=dt(e,{floorBaseHeightM:n.baseHeightM}),x={id:e.id,section:e,authored:I,plane:n,facing:u,facesAction:i,hull:vc(t),sample:t.filter((v,w)=>w%Math.ceil(t.length/dp)===0),frontD:d,backD:f,latMin:p,latMax:b,frontDistance:y,rowDepths:P,rowCount:P.length,level:0,height:S.height,rake:I?S.rake:0,backHeight:0};return x.backHeight=x.height+(f-d)*fe*Math.tan(x.rake*Math.PI/180),x}function _p(e,t,n,o){if(e.length<2)return 0;let r=Math.max(1,t*fe),i=n+$h-o,a=0,s=0;for(let l=1;l<e.length;l++){let u=Math.max(np,(e[l]-e[l-1])*fe),m=(i+Zh)*(r+u)/r;a+=m-i,s+=u,i=m,r+=u}let c=Math.atan(a/s)*180/Math.PI;return Math.round(Math.max(bc,Math.min(Qh,c))*10)/10}function Tp(e,t){if(e.facing.x*t.facing.x+e.facing.y*t.facing.y<mp)return null;let n=-1/0,o=1/0,r=-1/0;for(let m of t.hull){n=Math.max(n,-(m.x*e.facing.x+m.y*e.facing.y));let h=-m.x*e.facing.y+m.y*e.facing.x;o=Math.min(o,h),r=Math.max(r,h)}if(Math.min(e.latMax,r)-Math.max(e.latMin,o)<yc*(e.latMax-e.latMin))return null;let a=fp/fe,s=new Map,c=new Map;for(let m of e.sample){let h=Math.floor((-m.x*e.facing.y+m.y*e.facing.x)/a),d=-(m.x*e.facing.x+m.y*e.facing.y);s.set(h,Math.min(s.get(h)??1/0,d))}for(let m of t.sample){let h=Math.floor((-m.x*e.facing.y+m.y*e.facing.x)/a),d=-(m.x*e.facing.x+m.y*e.facing.y);c.set(h,Math.max(c.get(h)??-1/0,d))}let l=[];for(let[m,h]of s){let d=c.get(m);d!==void 0&&l.push(h-d)}let u=l.length?gc(l):e.frontD-n;return u<-1/fe?null:u}function kp(e,t){if(t.plane.floorIndex>=e.plane.floorIndex)return!1;let n=-1/0,o=1/0,r=1/0,i=-1/0;for(let c of t.hull){let l=-(c.x*e.facing.x+c.y*e.facing.y);n=Math.max(n,l),o=Math.min(o,l);let u=-c.x*e.facing.y+c.y*e.facing.x;r=Math.min(r,u),i=Math.max(i,u)}let a=Math.min(e.latMax,i)-Math.max(e.latMin,r),s=Math.min(e.backD,n)-Math.max(e.frontD,o);return a>yc*(e.latMax-e.latMin)&&s>1/fe}function Lp(e,t){let n=new Set;for(let o of e){let r=(Math.atan2(o.y-t.y,o.x-t.x)*180/Math.PI+360)%360;n.add(Math.floor(r/10))}return n.size/36}function Fp(e,t){let n=1/0,o=-1/0;for(let i of t.hull){let a=-(i.x*e.facing.x+i.y*e.facing.y);n=Math.min(n,a),o=Math.max(o,a)}let r=Math.max(0,Math.min(o-n,e.frontD-n));return t.height+r*fe*Math.tan(t.rake*Math.PI/180)}function Op(e,t=!1,n=!1){let o=t?sp:ap,r=new Map,i=[...e].sort((l,u)=>l.plane.floorIndex-u.plane.floorIndex||l.frontDistance-u.frontDistance),a=[],s=new Map,c=l=>{if(l.plane.floorIndex===0||l.plane.baseHeightM>0)return l.plane.baseHeightM;let u=s.get(l.plane.floorIndex-1);return u===void 0?l.plane.baseHeightM:u+mc};for(let l of i){if(!l.authored){let m=c(l),h;for(let p of a){if(p.plane.floorIndex>l.plane.floorIndex)continue;if(kp(l,p)){let M=Fp(l,p)+hp;M>m&&(m=M,h=p);continue}let b=Tp(l,p);if(b==null)continue;let g=n&&!!l.plane.stageDeck&&p.level===0&&p.plane.floorIndex===l.plane.floorIndex&&Math.max(0,b)*fe<=bp?p.backHeight:p.backHeight+Jh+Math.min(ep,Math.max(0,b)*fe)*Math.tan(p.rake*Math.PI/180);g>m&&(m=g,h=p)}l.height=Math.round(Math.min(m,l.plane.baseHeightM+ip)*100)/100;let d=!h&&l.height>l.plane.baseHeightM;if(l.level=h?h.level+1:d?1:0,l.rake=_p(l.rowDepths,l.frontDistance,l.height,l.plane.focalHeightM),!l.facesAction&&l.rowCount<up)l.rake=0;else if(!h&&!d){let p=Math.max(1e-6,(l.backD-l.frontD)*fe);l.rake=Math.min(l.rake,op,Math.round(Math.atan(rp/p)*1800/Math.PI)/10)}else l.rowCount>=2&&(l.rake=Math.max(l.rake,o[Math.min(l.level,o.length)-1]));let f=(l.backD-l.frontD)*fe;if(t&&f>0&&l.height+f*Math.tan(l.rake*Math.PI/180)>l.plane.baseHeightM+dc){let p=Math.max(0,l.plane.baseHeightM+dc-l.height);l.rake=Math.max(bc,Math.round(Math.atan(p/f)*1800/Math.PI)/10)}n&&l.plane.stageDeck&&l.level>0&&(l.rake=Math.min(l.rake,yp)),l.backHeight=l.height+f*Math.tan(l.rake*Math.PI/180),r.set(l.id,h?.id)}let u=l.plane.floorIndex;s.set(u,Math.min(s.get(u)??1/0,l.height)),a.push(l)}return r}var Vr=(e,t)=>!!e&&e.x===t.x&&e.y===t.y;function vo(e,t={x:0,y:-40}){let n=Ut(e),o=new Map;for(let b of n){if(!b.sectionId)continue;let y=o.get(b.sectionId);y?y.push(b):o.set(b.sectionId,[b])}let r={focalInferred:!1,confident:!1,sections:[]},i=e.floors?.length?e.floors.map((b,y)=>({objects:b.objects,floorIndex:y,floorId:b.id,baseHeightM:b.baseHeightM??0,focal:b.focalPoint??e.focalPoint})):[{objects:e.objects,floorIndex:0,floorId:void 0,baseHeightM:0,focal:e.focalPoint}],a=new Set(i.flatMap(b=>b.objects.filter(y=>y.type==="table").map(y=>y.id))),s=[],c,l=new Set,u=i.map(b=>{let y=O=>!e.floors?.length||O.floorId===b.floorId,g=Ep(n.filter(O=>!O.sectionId&&O.kind!=="booth"&&!a.has(O.rowId)&&y(O))),M=[];for(let O of g){let C=Ke(Je(vc(O)),vp/fe);if(n.some(_=>!y(_)&&zr(_,C)))continue;let A=`${hc}${b.floorIndex}-${M.length}`;l.add(A),o.set(A,O),M.push({type:"section",id:A,label:"",color:Mp,outline:C})}let P=M.length?{...b,objects:[...b.objects,...M]}:b,I=new Set(P.objects.filter(O=>O.type==="section").map(O=>O.logicalSectionId??O.id)),S=[...o.entries()].filter(([O])=>I.has(O)).flatMap(([,O])=>O),x=Rp(P.objects,Hr(S),S),v=P.focal;(x||P.focal&&!Vr(P.focal,t))&&(r.confident=!0),x&&(r.stage??={id:x.shape.id,inferred:x.inferred,...P.floorId?{floorId:P.floorId}:{}},(x.inferred||Vr(P.focal,t))&&(v=x.centre,r.focalInferred=!0));let w=x&&(!x.inferred||Cn(x.outline)*fe*fe<=Nr),R=x?void 0:c,T={tableIds:a,floorIndex:P.floorIndex,floorId:P.floorId,baseHeightM:P.baseHeightM,focal:R?.focal??v,outline:x?.outline??R?.outline,focalHeightM:R?.focalHeightM??P.baseHeightM+(x&&w?qe({...x.shape,role:"stage"}).heightM:0),stageDeck:R?.stageDeck??!!(x&&w&&Cn(x.outline)*fe*fe<=Nr),middle:S.length?{x:S.reduce((O,C)=>O+C.x,0)/S.length,y:S.reduce((O,C)=>O+C.y,0)/S.length}:v};for(let O of P.objects){if(O.type!=="section")continue;let C=Cp(O,o.get(O.logicalSectionId??O.id)??[],T);C&&s.push(C)}return T.outline&&(c=T),Vr(P.focal,T.focal)||(r.focal??=[]).push({...P.floorId?{floorId:P.floorId}:{},point:{...T.focal}}),{unit:P,plane:T,stage:x,planeSeats:S}}),m=i.flatMap(b=>b.objects).map(b=>b.type==="shape"&&!b.role&&(Br(b.label)==="wall"||!Br(b.label)&&fc(b))?{...b,role:"wall"}:b),h=Wt({objects:m},n)!==null;h&&(r.indoor=!0);let d=Op(s,h,Lp(n,u[0]?.plane.focal??t)<pp),f=new Map(s.filter(b=>!b.authored).map(b=>[b.id,b])),p=u.map(({unit:b,plane:y,stage:g,planeSeats:M})=>b.objects.map(P=>{let I=P.type==="shape"&&!P.role&&P.id!==g?.shape.id?Br(P.label):null;if(P.type==="shape"&&!P.role&&P.id!==g?.shape.id&&(I==="wall"||!I&&fc(P))&&P.type==="shape"){(r.roles??=[]).push({id:P.id,...y.floorId?{floorId:y.floorId}:{},role:"wall"});let{fill:T,...O}=P;return{...O,role:"wall"}}if(I&&P.type==="shape")return(r.roles??=[]).push({id:P.id,...y.floorId?{floorId:y.floorId}:{},role:I}),{...P,role:I};let x=g?.inferred&&P.id===g.shape.id&&P.type==="shape"?wp(P,g.outline,b.objects,M):null;if(x&&P.type==="shape")return r.stage?.id===P.id&&(r.stage.field=x),{...P,role:"stage",stageKind:x};if(g?.inferred&&P.id===g.shape.id&&P.type==="shape"&&Cn(g.outline)*fe*fe<=Nr)return r.stage?.id===P.id&&(r.stage.deck=!0),{...P,role:"stage"};let v=P.type==="section"?f.get(P.id):void 0;if(!v||P.type!=="section")return P;let w=v.rowCount>=2&&v.rake>0;l.has(v.id)?r.looseRowBlocks=(r.looseRowBlocks??0)+1:r.sections.push({id:v.id,floorId:y.floorId,surfaceKind:w?"rakedRows":"flat",height:v.height,rake:v.rake,stackedOn:d.get(v.id)});let R={status:"inferred",source:"public-2d-topology",note:Pp};return{...P,height:v.height,rake:v.rake,surfaceKind:w?"rakedRows":"flat",physical3dProvenance:{height:R,rake:R,surfaceKind:R}}}));if(e.floors?.length){let b=e.floors.map((y,g)=>({...y,objects:p[g],focalPoint:u[g].plane.focal}));return{doc:{...e,floors:b,objects:b[0].objects,focalPoint:b[0].focalPoint},report:r}}return{doc:{...e,objects:p[0],focalPoint:u[0].plane.focal},report:r}}var Mc=/^[\p{L}\p{N}]{1,4}$/u,Dp=/^([\p{L}\p{N}]{2,})[\s\-\u2013\u2014\u00b7_./]+(.+)$/u;function Sc(e,t){let n=t?.trim();if(!n)return e;let o=e.toLocaleLowerCase("en-US"),r=n.toLocaleLowerCase("en-US");if(o.startsWith(`${r} `)){let a=e.slice(n.length).trim();if(Mc.test(a))return a}let i=Dp.exec(e);if(i){let a=i[1].toLocaleLowerCase("en-US"),s=i[2].trim();if((r.startsWith(a)||a.startsWith(r))&&Mc.test(s))return s}return e}function wc(e,t,n){return n<0?t>1?e.filter(o=>o.kind==="floor"):[...e]:e.filter(o=>o.floorIndex===void 0||o.floorIndex===n)}function Pc(e,t){let n=[...e].sort((r,i)=>r.screen.y-i.screen.y),o=[];for(let r of n){let i=o.find(a=>a.some(s=>Math.abs(s.screen.x-r.screen.x)<104&&Math.abs(s.screen.y-r.screen.y)<34));i?i.push(r):o.push([r])}return o.flatMap(r=>r.length<2?r:r.map((i,a)=>({...i,screen:{...i.screen,x:Math.max(54,Math.min(t-54,i.screen.x+(a-(r.length-1)/2)*104))}})))}var Bp=1.15,Np=2.75,Vp=4.5,Gp=.85,Hp=.5,zp=.26;function Ic(e,t,n){let o=Math.max(1e-6,t),r=e/o,i=n?.hasZoneLabels??!0,a=new Set(["stage"]);return r>=.75&&a.add("floor"),r>=Bp&&a.add("zone"),r<=(i?Np:Vp)&&(a.add("section"),a.add("ga")),r<=Gp&&(a.add("annotation"),a.add("booth")),r<=Hp&&a.add("row"),r<=zp&&a.add("seat"),a}function Rc(e,t,n,o,r,i=6){let a=i+t,s=o-i-t,c=i+n,l=r-i-n;return{...e,x:a>s?o/2:Math.max(a,Math.min(s,e.x)),y:c>l?r/2:Math.max(c,Math.min(l,e.y))}}function tt(e,t,n,o){let r=e,i=t[0],a=t[1],s=t[2],c=r[0]*i+r[4]*a+r[8]*s+r[12],l=r[1]*i+r[5]*a+r[9]*s+r[13],u=r[2]*i+r[6]*a+r[10]*s+r[14],m=r[3]*i+r[7]*a+r[11]*s+r[15];if(!(m>1e-6))return{x:0,y:0,depth:1/0,visible:!1};let h=c/m,d=l/m,f=u/m,p=h>=-1.05&&h<=1.05&&d>=-1.05&&d<=1.05&&f<=1;return{x:(h*.5+.5)*n,y:(1-(d*.5+.5))*o,depth:f,visible:p}}function Ac(e,t,n=t){let o=[],r=[...e].sort((i,a)=>i.screen.depth-a.screen.depth);for(let i of r){let a=!1;for(let s of o)if(_n(i,s,t,n)){a=!0;break}a||o.push(i)}return o}var Up=6;function _n(e,t,n,o){let r=Math.abs(e.screen.x-t.screen.x),i=Math.abs(e.screen.y-t.screen.y),a=e.halfWidth!=null&&t.halfWidth!=null?Math.max(n,e.halfWidth+t.halfWidth+Up):n;return r<a&&i<o}function Ec(e,t,n){return e.length*t*.58+(n?14:0)}var jp={row:8,seat:14};function Cc(e){return e<480?{row:5,seat:8}:e<768?{row:6,seat:10}:jp}function _c(e,t,n,o){let r=Math.max(1,Math.min(n,o)*.5),i=Math.min(2,Math.hypot(e.x-n/2,e.y-o/2)/r);return t*(1+1.5*i)}function Mo(e,t,n,o,r=[]){let i=[...e].sort((s,c)=>(c.priority??0)-(s.priority??0)||s.focus-c.focus),a=[];for(let s of i){if(a.length>=o)break;let c=!1;for(let l of r)if(_n(s,l,t,n)){c=!0;break}if(!c){for(let l of a)if(_n(s,l,t,n)){c=!0;break}}c||a.push(s)}return a}function Tc(e,t,n,o){let r=e[3]*t[0]+e[7]*t[1]+e[11]*t[2]+e[15];return r<=0||!(n>0)?0:n*Math.hypot(e[0],e[4],e[8])*o/(2*r)}var Xp=6,Wp=2.2,kc=.1,Yp=new Set(["stage","entrance","exit","screen","suite","obstruction","sound","bar","concession","restroom","coat"]),Kp=.3,qp=1.8,$p=.9,Zp=.55,Qp=6e3;function Fc(e){let{doc:t,units:n,seats:o,surfaces:r,focal:i}=e,a=t.zones??[],s=[];if(a.length){let c=new Map;for(let u of n)for(let m of u.objects)m.type==="section"&&m.zone&&c.set(m.id,m.zone);let l=new Map;for(let u=0;u<o.length;u++){let m=o[u],h=r.seatOwner[u],d=m.zoneId??(h?c.get(h):void 0);if(!d)continue;let f=l.get(d);f||(f={n:0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0,sumY:0},l.set(d,f)),f.n++,m.x<f.minX&&(f.minX=m.x),m.y<f.minY&&(f.minY=m.y),m.x>f.maxX&&(f.maxX=m.x),m.y>f.maxY&&(f.maxY=m.y),f.sumY+=r.seatDeckY(u)}for(let u of a){let m=l.get(u.id),h=[];for(let[d,f]of c)f===u.id&&h.push(d);if(!m||m.n===0){s.push({id:u.id,label:u.label,color:pe(u.color),sectionIds:h,seatCount:0,center:[0,0,0],radius:0,focalWorld:[(u.focalPoint??i).x*E,1.5,(u.focalPoint??i).y*E]});continue}s.push({id:u.id,label:u.label,color:pe(u.color),sectionIds:h,seatCount:m.n,center:[(m.minX+m.maxX)/2*E,m.sumY/m.n,(m.minY+m.maxY)/2*E],radius:.5*Math.hypot((m.maxX-m.minX)*E,(m.maxY-m.minY)*E)||1,focalWorld:[(u.focalPoint??i).x*E,1.5,(u.focalPoint??i).y*E]})}}return s}function Oc(e){let{doc:t,units:n,seats:o,surfaces:r,seatData:i,hintedSeatFloor:a,zones:s,focal:c}=e,l=[],u=[],m=[],h=new Map;for(let d of n)for(let f of d.objects){if(f.type!=="section"||!f.zone)continue;let p=(f.displayLabel||f.label||"").trim().toLocaleLowerCase();if(!p)continue;let b=t.floors?.[d.index]?.name?.trim().toLocaleLowerCase();if(n.length>1&&b===p)continue;let y=h.get(f.zone);y||h.set(f.zone,y=new Set),y.add(p)}for(let d of s)d.seatCount!==0&&(h.get(d.id)?.has(d.label.trim().toLocaleLowerCase())||l.push({id:`zone:${d.id}`,kind:"zone",text:d.label,anchor:[d.center[0],d.center[1]+Xp,d.center[2]],color:t.zones?.find(f=>f.id===d.id)?.color}));{let d=new Map,f=new Map;for(let p=0;p<o.length;p++){let b=r.seatOwner[p];if(!b)continue;let y=d.get(b);y||(y={n:0,x:0,y:0,deck:0},d.set(b,y)),y.n++,y.x+=o[p].x,y.y+=o[p].y,y.deck+=r.seatDeckY(p);let g=f.get(b);g||(g={minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0,minDeck:1/0,maxDeck:-1/0},f.set(b,g)),g.minDeck=Math.min(g.minDeck,r.seatDeckY(p)),g.maxDeck=Math.max(g.maxDeck,r.seatDeckY(p)),o[p].x<g.minX&&(g.minX=o[p].x),o[p].x>g.maxX&&(g.maxX=o[p].x),o[p].y<g.minY&&(g.minY=o[p].y),o[p].y>g.maxY&&(g.maxY=o[p].y)}for(let p of n)for(let b of p.objects){if(b.type!=="section"||pc(b))continue;let y=d.get(b.id);if(!y||y.n===0)continue;let g=f.get(b.id),M=[y.x/y.n*E,y.deck/y.n,y.y/y.n*E],P=b.displayLabel||b.label||b.id;u.push({id:b.id,floorIndex:p.index,label:P,seatCount:y.n,center:M,radius:Math.max(1,Math.hypot(g.maxX-g.minX,g.maxY-g.minY)*.5*E),box:{min:[g.minX*E-.4,g.minDeck,g.minY*E-.4],max:[g.maxX*E+.4,g.maxDeck+1,g.maxY*E+.4]},focalWorld:[p.focal.x*E,p.baseHeightM+1.5,p.focal.y*E]});let I=t.floors?.[p.index]?.name?.trim().toLocaleLowerCase();n.length>1&&I===P.trim().toLocaleLowerCase()||l.push({id:`section:${b.id}`,kind:"section",text:P,anchor:[M[0],M[1]+Wp,M[2]],floorIndex:p.index})}}{for(let y of n)for(let g of y.objects){if(g.type!=="gaArea")continue;let M=pn(g.points);if(!M)continue;let P=g.displayLabel||g.label||g.id;l.push({id:`ga:${g.id}`,kind:"ga",text:g.capacity>0?`${P} \xB7 ${g.capacity.toLocaleString()}`:P,anchor:[M.x*E,y.baseHeightM+qp,M.y*E],floorIndex:y.index})}let d=new Map,f=new Map;for(let y of n)for(let g of y.objects)if(g.type==="section"&&d.set(g.id,g.displayLabel||g.label||g.id),g.type==="row"){let M=g.displayLabel?.trim()||g.segmentedRow?.displayLabel?.trim();M&&f.set(g.id,M)}let p=new Map;for(let y=0;y<o.length;y++){let g=o[y],M=Math.hypot(g.x-c.x,g.y-c.y),P=p.get(g.rowId);(!P||M>P.far)&&p.set(g.rowId,{seat:g,index:y,far:M})}for(let[y,g]of p){let M=r.seatOwner[g.index]??g.seat.sectionId,P=Lc(g.seat.label,y,d.get(M??""),f.get(y));P&&l.push({id:`row:${y}`,kind:"row",text:P,anchor:[g.seat.x*E,r.seatDeckY(g.index)+$p,g.seat.y*E],floorIndex:a[g.index]})}let b=new Map;for(let y=0;y<o.length;y++){let g=o[y],M=b.get(g.rowId);M||(M={n:0,x:0,y:0,z:0,minX:1/0,maxX:-1/0,minZ:1/0,maxZ:-1/0,label:Lc(g.label,g.rowId,d.get(r.seatOwner[y]??g.sectionId??""),f.get(g.rowId)),sectionId:r.seatOwner[y]??g.sectionId},b.set(g.rowId,M));let P=y*3,I=i.iPosition[P],S=i.iPosition[P+1],x=i.iPosition[P+2];M.n++,M.x+=I,M.y+=S,M.z+=x,M.minX=Math.min(M.minX,I),M.maxX=Math.max(M.maxX,I),M.minZ=Math.min(M.minZ,x),M.maxZ=Math.max(M.maxZ,x)}for(let[y,g]of b)m.push({id:y,label:g.label,sectionId:g.sectionId,seatCount:g.n,center:[g.x/g.n,g.y/g.n,g.z/g.n],radius:Math.max(.8,Math.hypot(g.maxX-g.minX,g.maxZ-g.minZ)*.5)});if(o.length<=Qp)for(let y=0;y<o.length;y++){let g=o[y],M=jr(g.displayLabel||g.label);M&&l.push({id:`seat:${g.id}`,kind:"seat",seatWidthM:i.iChairWidth[y]*2,text:M,anchor:[g.x*E,r.seatDeckY(y)+Zp,g.y*E],floorIndex:a[y],rowId:g.rowId})}}for(let d of n)for(let f of d.objects)if(f.type==="shape"&&f.role&&Yp.has(f.role)){let p=ge(f),b=p?pn(p):null;if(!b||!f.label)continue;l.push({id:`architecture:${f.id}`,kind:f.role==="stage"?"stage":"annotation",text:f.label,anchor:[b.x*E,d.baseHeightM+qe(f).heightM+kc,b.y*E],color:f.fill,floorIndex:d.index})}else if(f.type==="text"){if(!f.text)continue;l.push({id:`text:${f.id}`,kind:"annotation",text:f.text,anchor:[f.position.x*E,d.baseHeightM+kc,f.position.y*E],color:f.color,rotation:f.rotation,floorIndex:d.index})}else if(f.type==="booth"){let p=$e(f);if(!p)continue;let b=pn(p);if(!b)continue;l.push({id:`booth:${f.id}`,kind:"booth",text:f.displayLabel||f.label||f.id,anchor:[b.x*E,d.baseHeightM+po+Kp,b.y*E],floorIndex:d.index})}return{labels:l,sections:u,rows:m}}function Dc(e,t){if(t.length>1)for(let n of t)e.push({id:`floor:${n.id}`,kind:"floor",text:n.label,anchor:[n.center[0],n.box.max[1]+1.2,n.center[2]],floorIndex:n.index})}function jr(e){let t=e.lastIndexOf("-");return t>=0&&t<e.length-1?e.slice(t+1):e}function Lc(e,t,n,o){if(o?.trim())return o.trim();let r=e?e.lastIndexOf("-"):-1,i=r>0?e.slice(0,r):t;return i&&Sc(i,n)}function Bc(e){let{doc:t,units:n,seats:o,surfaces:r,solids:i,hintedSeatFloor:a,seatFloor:s}=e,c=[];{let l=n.map(()=>({minX:1/0,minY:1/0,minZ:1/0,maxX:-1/0,maxY:-1/0,maxZ:-1/0}));for(let h=0;h<i.floor.length;h+=1){let d=Math.max(0,Math.min(n.length-1,Math.round(i.floor[h]))),f=h*3,p=l[d];p.minX=Math.min(p.minX,i.position[f]),p.minY=Math.min(p.minY,i.position[f+1]),p.minZ=Math.min(p.minZ,i.position[f+2]),p.maxX=Math.max(p.maxX,i.position[f]),p.maxY=Math.max(p.maxY,i.position[f+1]),p.maxZ=Math.max(p.maxZ,i.position[f+2])}let u=new Map;for(let h=0;h<n.length;h++)for(let d of n[h].objects)d.type==="section"&&u.set(d.id,h);let m=n.map(()=>({n:0,minX:1/0,minY:1/0,minDeck:1/0,maxX:-1/0,maxY:-1/0,maxDeck:-1/0,sumX:0,sumDeck:0,sumZ:0}));for(let h=0;h<o.length;h++){let d=r.seatOwner[h],f=(d!==null?u.get(d):void 0)??a[h];if(f===void 0)continue;let p=m[f],b=o[h];p.n++,b.x<p.minX&&(p.minX=b.x),b.y<p.minY&&(p.minY=b.y),b.x>p.maxX&&(p.maxX=b.x),b.y>p.maxY&&(p.maxY=b.y);let y=r.seatDeckY(h);p.sumX+=b.x*E,p.sumDeck+=y,p.sumZ+=b.y*E,p.minDeck=Math.min(p.minDeck,y),p.maxDeck=Math.max(p.maxDeck,y+1.6),s[h]=f}for(let h=0;h<n.length;h++){let d=m[h],f=t.floors?.[h],p=l[h],b=Math.min(d.n?d.minX*E:n[h].focal.x*E-1,Number.isFinite(p.minX)?p.minX:1/0),y=Math.max(d.n?d.maxX*E:n[h].focal.x*E+1,Number.isFinite(p.maxX)?p.maxX:-1/0),g=Math.min(d.n?d.minY*E:n[h].focal.y*E-1,Number.isFinite(p.minZ)?p.minZ:1/0),M=Math.max(d.n?d.maxY*E:n[h].focal.y*E+1,Number.isFinite(p.maxZ)?p.maxZ:-1/0),P=Math.min(d.n?Math.min(n[h].baseHeightM,d.minDeck):n[h].baseHeightM,Number.isFinite(p.minY)?p.minY:1/0),I=Math.max(d.n?Math.max(d.maxDeck,P+.5):P+.5,Number.isFinite(p.maxY)?p.maxY:-1/0),S=[d.n?d.sumX/d.n:(b+y)/2,d.n?d.sumDeck/d.n:(P+I)/2,d.n?d.sumZ/d.n:(g+M)/2],x=Math.max(1,.5*Math.hypot(y-b,I-P,M-g));c.push({index:h,id:f?.id??`floor-${h}`,label:f?.name??(n.length>1?`Floor ${h+1}`:"Venue"),seatCount:d.n,center:S,radius:x,box:{min:[b,P,g],max:[y,I,M]},focalWorld:[n[h].focal.x*E,n[h].baseHeightM+1.5,n[h].focal.y*E]})}}return c}function Xr(e,t){let n=1/0,o=1/0,r=-1/0,i=-1/0,a=(s,c)=>{s<n&&(n=s),c<o&&(o=c),s>r&&(r=s),c>i&&(i=c)};for(let s of t)a(s.x,s.y);for(let s of e)for(let c of s.objects)if(c.type==="section")for(let l of c.outline)a(l.x,l.y);else if(c.type==="shape"&&c.points)for(let l of c.points)a(l.x,l.y);else if(c.type==="gaArea")for(let l of c.points)a(l.x,l.y);else if(c.type==="booth"){let l=$e(c);if(l)for(let u of l)a(u.x,u.y)}else if(c.type==="table"){let l=bo(c);if(l)for(let u of l)a(u.x,u.y)}else if(c.type==="decorImage"){let l=yo(c);if(l)for(let u of l)a(u.x,u.y)}return Number.isFinite(n)||(n=-100,o=-100,r=100,i=100),{minX:n,minY:o,maxX:r,maxY:i}}function Uc(e,t,n,o,r,i,a){if(t.length===1){let s=n.map(h=>({x:h.x,y:h.y}));for(let h of t[0].objects)h.type==="section"?s.push(...h.outline):h.type==="shape"?s.push(...ge(h)??h.points??[]):h.type==="gaArea"?s.push(...h.points):h.type==="booth"?s.push(...$e(h)??[]):h.type==="table"?s.push(...bo(h)??[]):h.type==="decorImage"&&s.push(...yo(h)??[]);if(Gc(e,t[0],n,i)||zc(e,t[0],n,s,i))return!1;if(a&&Vc(e,t[0].baseHeightM,s,i,a))return!0;let c=Pn(s),l=(r.minX+r.maxX)/2,u=(r.minY+r.maxY)/2,m=c.length>=3?c.map(h=>{let d=h.x-l,f=h.y-u,p=Math.max(1,Math.hypot(d,f));return{x:h.x+d/p*80,y:h.y+f/p*80}}):gn(r.minX-28,r.minY-28,r.maxX-r.minX+56,r.maxY-r.minY+56);return ae(e,m,void 0,()=>-.04,-.22,i.ground,i.ground,ne),!1}else{let s=t.reduce((b,y)=>y.baseHeightM<b.baseHeightM?y:b);e.setFloor(s.index);let c={...s,objects:t.flatMap(b=>b.objects)},l=n.map(b=>({x:b.x,y:b.y}));for(let b of c.objects)b.type==="section"&&l.push(...b.outline);if(Gc(e,c,n,i)||zc(e,c,n,l,i))return!1;if(a&&Vc(e,s.baseHeightM,l,i,a))return!0;let u=n.filter((b,y)=>o[y]===s.index),m=Xr([s],u),h=Math.hypot(m.maxX-m.minX,m.maxY-m.minY),d=Math.max(28,Math.min(80,h*.04)),f=gn(m.minX-d,m.minY-d,m.maxX-m.minX+d*2,m.maxY-m.minY+d*2),p=s.baseHeightM-.03;return ae(e,f,void 0,()=>p,p-.22,i.ground,i.ground,ne),!1}}function Wr(e,t,n,o){let{cx:r,cz:i,radius:a}=n,s=1/0,c=1/0,l=1/0,u=-1/0,m=-1/0,h=-1/0,d=(b,y,g)=>{s=Math.min(s,b),u=Math.max(u,b),c=Math.min(c,y),m=Math.max(m,y),l=Math.min(l,g),h=Math.max(h,g)};for(let b=0;b<e.position.length;b+=3){let y=b/3;o&&y>=o[0]&&y<o[1]||d(e.position[b],e.position[b+1],e.position[b+2])}for(let b=0;b<t.count;b++){let y=b*3,g=t.iPosition[y],M=t.iPosition[y+1],P=t.iPosition[y+2],I=Math.max(.35,t.iMaxRadius[b]??.35);d(g-I,M,P-I),d(g+I,M+1.6,P+I)}Number.isFinite(s)||(s=r-a,u=r+a,c=0,m=a*.16,l=i-a,h=i+a);let f=[(s+u)/2,(c+m)/2,(l+h)/2],p=Math.max(1,.5*Math.hypot(u-s,m-c,h-l));return{center:f,radius:p,minY:c,maxY:m}}var Jp=4096;function jc(e,t,n=[]){let o=Math.max(1,Math.ceil(e.count/Jp)),r=Math.ceil(e.count/o),i=new Float32Array((r*2+t.length*4+n.length)*3),a=0;for(let s=0;s<e.count;s+=o){let c=e.iPosition[s*3],l=e.iPosition[s*3+1],u=e.iPosition[s*3+2];i[a++]=c,i[a++]=l,i[a++]=u,i[a++]=c,i[a++]=0,i[a++]=u}for(let[s,c,l]of n)i[a++]=s,i[a++]=c,i[a++]=l;for(let s of t)for(let[c,l]of[[-1,-1],[1,-1],[1,1],[-1,1]])i[a++]=s.cx+c*s.halfX,i[a++]=s.y,i[a++]=s.cz+l*s.halfZ;return i.subarray(0,a)}function Xc(e,t,n,o,r,i,a=[]){let s=1/0,c=1/0,l=-1/0,u=-1/0;for(let I=0;I<e.count;I++){let S=I*3,x=e.iPosition[S],v=e.iPosition[S+2];x<s&&(s=x),x>l&&(l=x),v<c&&(c=v),v>u&&(u=v)}for(let[I,,S]of a)I<s&&(s=I),I>l&&(l=I),S<c&&(c=S),S>u&&(u=S);for(let I of t)s=Math.min(s,I.cx-I.halfX),l=Math.max(l,I.cx+I.halfX),c=Math.min(c,I.cz-I.halfZ),u=Math.max(u,I.cz+I.halfZ);let m=n.minX*E,h=n.maxX*E,d=n.minY*E,f=n.maxY*E,p=m,b=h,y=d,g=f;if(Number.isFinite(s)){let I=Math.max(2,.06*Math.hypot(l-s,u-c));p=Math.max(m,s-I),b=Math.min(h,l+I),y=Math.max(d,c-I),g=Math.min(f,u+I)}let M=Math.min(0,o),P=Math.max(r,i*.05);return{min:[p,M,y],max:[b,P,g]}}var Nc=12,eb=.6,tb=40;function Vc(e,t,n,o,r){let i=Pn([...n]);if(i.length<3)return!1;let a=1/0,s=1/0,c=-1/0,l=-1/0;for(let P of i)a=Math.min(a,P.x),c=Math.max(c,P.x),s=Math.min(s,P.y),l=Math.max(l,P.y);let u=Math.hypot(c-a,l-s)*E,m=Ke(i,Nc/E,1.2),h=Math.max(tb,u*eb),d=Ke(i,(Nc+h)/E,1.2);if(m.length!==d.length)return!1;let f=be(o.ground,[.78,.76,.72],.35),p=be(o.ground,[.56,.62,.52],.3);ae(e,m,void 0,()=>t-.04,t-.22,f,f,ne);let b=t-.05,y=m.map(P=>[P.x*E,b,P.y*E]),g=d.map(P=>[P.x*E,b,P.y*E]),M=[0,1,0];for(let P=0;P<y.length;P++){let I=(P+1)%y.length;e.tri(y[P],g[I],g[P],M,p,r,r),e.tri(y[P],y[I],g[I],M,p,p,r)}return!0}function Gc(e,t,n,o){let r=Wt(t,n);if(!r)return!1;let i=t.baseHeightM,a=be(o.ground,[.62,.55,.47],.4);return ae(e,r,void 0,()=>i-.04,i-.22,a,a,ne),!0}var nb=3e3,ob=20,Hc=1.5,rb=1.2,ib=.25;function zc(e,t,n,o,r){if(!n.length||n.length>nb||o.length<3)return!1;for(let w of t.objects){if(w.type==="shape"&&Zn(w.stageKind))return!1;if(w.type==="section"){let{height:R}=dt(w,{floorBaseHeightM:t.baseHeightM});if(R-t.baseHeightM>ob)return!1}}let i=0,a=0;for(let w of o)i+=w.x,a+=w.y;i/=o.length,a/=o.length;let s=0,c=0,l=0;for(let w of o){let R=w.x-i,T=w.y-a;s+=R*R,c+=T*T,l+=R*T}let u=.5*Math.atan2(2*l,s-c),m=Math.cos(u),h=Math.sin(u),d=-h,f=m,p=1/0,b=-1/0,y=1/0,g=-1/0;for(let w of o){let R=(w.x-i)*m+(w.y-a)*h,T=(w.x-i)*d+(w.y-a)*f;p=Math.min(p,R),b=Math.max(b,R),y=Math.min(y,T),g=Math.max(g,T)}let M=w=>[[p-w,y-w],[b+w,y-w],[b+w,g+w],[p-w,g+w]].map(([R,T])=>({x:i+m*R+d*T,y:a+h*R+f*T})),P=M(Hc/E),I=M((Hc+ib)/E),S=t.baseHeightM,x=be(r.ground,[.62,.55,.47],.4),v=be(r.ground,[.86,.86,.84],.55);return ae(e,I,void 0,()=>S-.04,S-.22,x,x,ne),ae(e,I,[P.slice().reverse()],()=>S+rb,S-.04,be(v,[1,1,1],.2),v,ne),!0}function Wc(e,t,n){let o=()=>({byObjectId:new Map,elements:[]});if(!t||!e)return o();let r=ka(t);if(!r.ok||r.value.id!==e)return o();let i=new Map;for(let m of n)for(let h of m.objects)h.type==="shape"&&i.set(h.id,{shape:h,unit:m});let a=new Set,s=new Set,c=new Map((t.overlay.productionElements??[]).map(m=>{let h=m.runtimeContentImageUrl;return[m.id,typeof h=="string"&&/^(?:blob:|data:image\/|https:\/\/)/.test(h)?h:void 0]})),l=[];for(let m of r.value.overlay.productionElements??[]){let h=i.get(m.objectId),d=h?ge(h.shape):null,f=m.baseElevationM??0;if(!h||!d||d.length<3||!m.id||a.has(m.id)||s.has(m.objectId)||!Number.isFinite(m.heightM)||m.heightM<.05||m.heightM>50||!Number.isFinite(f)||f<-10||f>100)return o();a.add(m.id),s.add(m.objectId);let p=d.map(v=>v.x*E),b=d.map(v=>v.y*E),y=h.unit.baseHeightM+f,g=Math.min(...p),M=Math.max(...p),P=Math.min(...b),I=Math.max(...b),S,x=c.get(m.id)??m.contentImageUrl;if(m.kind==="screen"&&x&&(S=Ss(d,y,y+m.heightM,h.unit.focal),!S))if(M-g>=I-P){let v=Math.abs(P-h.unit.focal.y*E)<=Math.abs(I-h.unit.focal.y*E)?P-.006:I+.006;S=[[g,y,v],[M,y,v],[g,y+m.heightM,v],[M,y+m.heightM,v]]}else{let v=Math.abs(g-h.unit.focal.x*E)<=Math.abs(M-h.unit.focal.x*E)?g-.006:M+.006;S=[[v,y,P],[v,y,I],[v,y+m.heightM,P],[v,y+m.heightM,I]]}l.push({id:m.id,objectId:m.objectId,kind:m.kind,floorIndex:h.unit.index,baseY:y,topY:y+m.heightM,bounds:{min:[g,y,P],max:[M,y+m.heightM,I]},occlusion:m.occlusion,...x?{contentImageUrl:x}:{},...S?{contentPlane:S}:{}})}let u=l.sort((m,h)=>m.id.localeCompare(h.id));return{byObjectId:new Map(u.map(m=>[m.objectId,m])),elements:u}}var Yc=[.13,.14,.17],Zt=[.4,.43,.47],ab=.18,sb=.02,cb=2.4,lb=1500,ub=240;function Kc(e,t,n,o){let r=t.stageKind??"";if(Tt(r)||r==="round"||!o.length)return;let i=ge(t);if(!i||i.length<3)return;let a={x:i.reduce((_,L)=>_+L.x,0)/i.length,y:i.reduce((_,L)=>_+L.y,0)/i.length},s=0,c=0,l=new Set;for(let _ of o)s+=_.x,c+=_.y,l.add(Math.floor(Math.atan2(_.y-a.y,_.x-a.x)*180/Math.PI/10));if(l.size*10>ub)return;let u=a.x-s/o.length,m=a.y-c/o.length,h=Math.hypot(u,m);if(h<1e-6)return;let d=u/h,f=m/h,p=-f,b=d,y=-1/0,g=1/0,M=1/0,P=-1/0;for(let _ of i){let L=(_.x-a.x)*d+(_.y-a.y)*f,N=(_.x-a.x)*p+(_.y-a.y)*b;y=Math.max(y,L),g=Math.min(g,L),M=Math.min(M,N),P=Math.max(P,N)}let I=(P-M)*E,S=(y-g)*E;if(I<3||S<1.5||I*S>lb)return;let x=ab/E,v=(_,L)=>({x:a.x+d*_+p*L,y:a.y+f*_+b*L}),w=(_,L,N,k)=>[v(_,N),v(_,k),v(L,k),v(L,N)],R=n+Math.max(3.5,Math.min(8,I*.35)),T=n+Math.min(cb,R-n-1),O=.2/E,C=g+Math.min(S*.25,1.5)/E,A=sb/E;ae(e,w(y-2*x+A,y-x-A,M+x+O,P-x-O),void 0,()=>T,n,Yc,Yc,ne);for(let[_,L]of[[M+x,M+x+O],[P-x-O,P-x]])ae(e,w(y-2*x,y-x,_,L),void 0,()=>R+.3,n,Zt,Zt,ne),ae(e,w(C+O,y-2*x,_,L),void 0,()=>R+.3,R,Zt,Zt,ne);ae(e,w(C,C+O,M+x,P-x),void 0,()=>R+.3,R,Zt,Zt,ne)}function He(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ge(e){return Array.isArray(e)?e:[]}function mb(e){let t=[e];for(;t.length;){let n=t.pop();if(Array.isArray(n)){t.push(...n);continue}if(!He(n))continue;let o=He(n.extensions)?n.extensions:null;if(o&&Object.prototype.hasOwnProperty.call(o,"KHR_draco_mesh_compression"))return!0;t.push(...Object.values(n))}return!1}function So(e,t){return!Array.isArray(e)||e.length!==t||!e.every(n=>typeof n=="number"&&Number.isFinite(n))?null:e}function fb(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function db(e,t){let n=new Array(16).fill(0);for(let o=0;o<4;o++)for(let r=0;r<4;r++)for(let i=0;i<4;i++)n[o*4+r]+=e[i*4+r]*t[o*4+i];return n}function hb(e){let t=So(e.matrix,16);if(t)return t;if(e.matrix!==void 0)return null;let n=e.translation===void 0?[0,0,0]:So(e.translation,3),o=e.rotation===void 0?[0,0,0,1]:So(e.rotation,4),r=e.scale===void 0?[1,1,1]:So(e.scale,3);if(!n||!o||!r)return null;let[i,a,s,c]=o,l=Math.hypot(i,a,s,c);if(!(l>1e-8))return null;let u=i/l,m=a/l,h=s/l,d=c/l,f=u+u,p=m+m,b=h+h,y=u*f,g=u*p,M=u*b,P=m*p,I=m*b,S=h*b,x=d*f,v=d*p,w=d*b;return[(1-(P+S))*r[0],(g+w)*r[0],(M-v)*r[0],0,(g-w)*r[1],(1-(y+S))*r[1],(I+x)*r[1],0,(M+v)*r[2],(I-x)*r[2],(1-(y+P))*r[2],0,n[0],n[1],n[2],1]}function pb(e,t,n,o){return[e[0]*t+e[4]*n+e[8]*o+e[12],e[1]*t+e[5]*n+e[9]*o+e[13],e[2]*t+e[6]*n+e[10]*o+e[14]]}function bb(e){let t=e[0],n=e[4],o=e[8],r=e[1],i=e[5],a=e[9],s=e[2],c=e[6],l=e[10],u=i*l-a*c,m=a*s-r*l,h=r*c-i*s,d=t*u+n*m+o*h;if(Math.abs(d)<1e-12)return null;let f=1/d;return[u*f,m*f,h*f,(o*c-n*l)*f,(t*l-o*s)*f,(n*s-t*c)*f,(n*a-o*i)*f,(o*r-t*a)*f,(t*i-n*r)*f]}function qc(e,t,n,o){let r=e[0]*t+e[1]*n+e[2]*o,i=e[3]*t+e[4]*n+e[5]*o,a=e[6]*t+e[7]*n+e[8]*o,s=Math.hypot(r,i,a)||1;return r/=s,i/=s,a/=s,[r,i,a]}function yb(e){if(e.byteLength<20||e.byteLength>8388608)return null;let t=new DataView(e.buffer,e.byteOffset,e.byteLength);if(t.getUint32(0,!0)!==1179937895||t.getUint32(4,!0)!==2||t.getUint32(8,!0)!==e.byteLength)return null;let n=12,o=null,r=null;for(;n+8<=e.byteLength;){let i=t.getUint32(n,!0),a=t.getUint32(n+4,!0);if(n+=8,i%4!==0||n+i>e.byteLength)return null;let s=e.subarray(n,n+i);if(a===1313821514&&!o)try{let c=JSON.parse(new TextDecoder().decode(s).replace(/[\u0000 ]+$/g,""));if(!He(c))return null;o=c}catch{return null}else if(a===5130562&&!r)r=s;else return null;n+=i}return n===e.byteLength&&o&&r?{json:o,bin:r}:null}function gb(e){return e===5120||e===5121?1:e===5122||e===5123?2:e===5125||e===5126?4:0}function xb(e){return e==="SCALAR"?1:e==="VEC2"?2:e==="VEC3"?3:e==="VEC4"?4:0}function vb(e,t,n){return n===5120?e.getInt8(t):n===5121?e.getUint8(t):n===5122?e.getInt16(t,!0):n===5123?e.getUint16(t,!0):n===5125?e.getUint32(t,!0):e.getFloat32(t,!0)}function Mb(e){let t=e instanceof Uint8Array?e:new Uint8Array(e),n=yb(t);if(!n)return{ok:!1,issue:"invalid_glb"};let{json:o,bin:r}=n;if(!He(o.asset)||o.asset.version!=="2.0")return{ok:!1,issue:"unsupported_glb"};let i=Ge(o.extensionsUsed).filter(P=>typeof P=="string");if(i.includes("KHR_draco_mesh_compression")||mb(o))return{ok:!1,issue:"draco_not_allowed"};if(i.length||Ge(o.extensionsRequired).length)return{ok:!1,issue:"unsupported_glb"};if(Ge(o.images).length||Ge(o.textures).length)return{ok:!1,issue:"external_resource"};let a=Ge(o.buffers);if(a.length!==1||!He(a[0])||a[0].uri!==void 0||typeof a[0].byteLength!="number"||!Number.isInteger(a[0].byteLength)||a[0].byteLength<0||a[0].byteLength>r.byteLength)return{ok:!1,issue:"external_resource"};let s=Ge(o.accessors),c=Ge(o.bufferViews),l=Ge(o.meshes),u=Ge(o.nodes),m=Ge(o.scenes),h=typeof o.scene=="number"?o.scene:0;if(!He(m[h]))return{ok:!1,issue:"unsupported_glb"};let d=new DataView(r.buffer,r.byteOffset,r.byteLength),f=(P,I,S)=>{if(typeof P!="number"||!Number.isInteger(P)||!He(s[P]))return null;let x=s[P];if(x.type!==I||x.sparse!==void 0||x.normalized===!0||typeof x.count!="number"||!Number.isInteger(x.count)||x.count<1||typeof x.componentType!="number"||!S.includes(x.componentType)||typeof x.bufferView!="number")return null;let v=c[x.bufferView];if(!He(v)||v.buffer!==0||typeof v.byteLength!="number"||!Number.isInteger(v.byteLength)||v.byteLength<0)return null;let w=xb(x.type),R=gb(x.componentType),T=typeof v.byteStride=="number"?v.byteStride:w*R,O=typeof v.byteOffset=="number"?v.byteOffset:0,C=typeof x.byteOffset=="number"?x.byteOffset:0,A=O+C,_=C+(x.count-1)*T+w*R;if(!Number.isInteger(T)||!Number.isInteger(O)||!Number.isInteger(C)||T<w*R||O<0||C<0||O+v.byteLength>r.byteLength||_>v.byteLength)return null;let L=[];for(let N=0;N<x.count;N++){let k=[];for(let F=0;F<w;F++){let H=vb(d,A+N*T+F*R,x.componentType);if(!Number.isFinite(H))return null;k.push(H)}L.push(k)}return L},p=[],b=[],y=0,g=new Set,M=(P,I)=>{if(typeof P!="number"||!Number.isInteger(P)||!He(u[P])||g.has(P))return!1;g.add(P);let S=u[P],x=hb(S);if(!x)return!1;let v=db(I,x),w=bb(v);if(!w)return!1;if(S.mesh!==void 0){if(typeof S.mesh!="number")return!1;let R=l[S.mesh];if(!He(R))return!1;for(let T of Ge(R.primitives)){if(!He(T)||T.mode!==void 0&&T.mode!==4||!He(T.attributes))return!1;let O=f(T.attributes.POSITION,"VEC3",[5126]),C=T.attributes.NORMAL===void 0?null:f(T.attributes.NORMAL,"VEC3",[5126]);if(!O||T.attributes.NORMAL!==void 0&&!C)return!1;let A=O.length;if(T.indices!==void 0){let L=typeof T.indices=="number"?s[T.indices]:null;A=He(L)?L.count:void 0}if(typeof A!="number"||!Number.isInteger(A)||A%3!==0||(y+=A/3,y>1e5))return!1;let _=T.indices===void 0?O.map((L,N)=>[N]):f(T.indices,"SCALAR",[5121,5123,5125]);if(!_||_.length%3!==0||_.length!==A)return!1;for(let L=0;L<_.length;L+=3){let N=[_[L][0],_[L+1][0],_[L+2][0]];if(N.some(H=>!Number.isInteger(H)||H<0||H>=O.length))return!1;let k=N.map(H=>pb(v,...O[H])),F=null;if(!C){let H=k[1][0]-k[0][0],B=k[1][1]-k[0][1],D=k[1][2]-k[0][2],G=k[2][0]-k[0][0],j=k[2][1]-k[0][1],V=k[2][2]-k[0][2];F=qc([1,0,0,0,1,0,0,0,1],B*V-D*j,D*G-H*V,H*j-B*G)}for(let H=0;H<3;H++)p.push(...k[H]),b.push(...C?qc(w,...C[N[H]]):F)}}}for(let R of Ge(S.children))if(!M(R,v))return!1;return g.delete(P),!0};for(let P of Ge(m[h].nodes))if(!M(P,fb()))return{ok:!1,issue:y>1e5?"triangle_limit":"unsupported_glb"};return!y||p.length!==y*9||b.length!==p.length?{ok:!1,issue:"unsupported_glb"}:{ok:!0,triangleCount:y,position:new Float32Array(p),normal:new Float32Array(b)}}function $c(e){try{return Mb(e)}catch{return{ok:!1,issue:"invalid_glb"}}}function Qt(e){let{doc:t}=e,n=ya(t.theme),o=n.structure,r=cs(t,e.eventConfigurationId??t.eventConfigurationId),i=Wc(e.eventConfigurationId,e.eventConfiguration,r),a=e.seats,s=new qn,c=null;if(e.registeredShellGlb){let W=$c(e.registeredShellGlb);if(W.ok){let Y=W.position.length/3,K=new Float32Array(W.position.length),oe=n.materials.shell??o.tierWall;for(let ee=0;ee<Y;ee++){let le=W.normal[ee*3+1],J=le<-.25?.4:.62+.38*Math.max(0,le);K[ee*3]=oe[0]*J,K[ee*3+1]=oe[1]*J,K[ee*3+2]=oe[2]*J}c={position:W.position,normal:W.normal,color:K,floor:new Float32Array(Y).fill(-2),material:new Float32Array(Y),count:Y}}}let l=new Map;for(let W of r)for(let Y of W.objects)l.set(Y.id,W.index),Y.type==="section"&&l.set(Y.logicalSectionId??Y.id,W.index);let u=a.map(W=>l.get(W.sectionId??"")??l.get(W.rowId??"")??0),m=Xr(r,a),h=s.vertexCount,f=Uc(s,r,a,u,m,o,be(n.background.top,n.background.bottom,.5))?s.vertexCount:h,p=Ka(t,a),b=new Map,y=new Map;for(let W of t.categories??[])b.set(W.key,W.color),W.seatGlyph&&y.set(W.key,W.seatGlyph);let g=[],M=Ms(r,a,u),P=new Map;a.forEach((W,Y)=>{let K=M.seatDeckY(Y);Number.isFinite(K)&&P.set(W.rowId,Math.min(P.get(W.rowId)??1/0,K))});let I=new Float32Array(a.length),S=[],x=new Map((t.floors??[]).map((W,Y)=>[W.id,Y])),v=r.map(()=>[]);for(let W of a){let Y=W.floorId?x.get(W.floorId)??0:0;v[Math.min(Y,v.length-1)]?.push(W)}let w=(W,Y)=>{if(!Y||Y.length<3)return!1;let K=Math.min(...Y.map(J=>J.x)),oe=Math.max(...Y.map(J=>J.x)),ee=Math.min(...Y.map(J=>J.y)),le=Math.max(...Y.map(J=>J.y));for(let J=0;J<W;J++)for(let ce of v[J])if(!(ce.x<K||ce.x>oe||ce.y<ee||ce.y>le)&&Le(ce,Y,void 0))return!0;return!1},R=null,T=W=>r.length===1?a:a.filter((Y,K)=>u[K]===W),O=(W,Y)=>{let K=$e(W);if(!K)return!1;let oe=1/0,ee=1/0,le=-1/0,J=-1/0;for(let ce of K)oe=Math.min(oe,ce.x),le=Math.max(le,ce.x),ee=Math.min(ee,ce.y),J=Math.max(J,ce.y);return a.some((ce,Oe)=>ce.kind!=="booth"&&(r.length===1||u[Oe]===Y)&&ce.x>oe&&ce.x<le&&ce.y>ee&&ce.y<J&&Ne(K,ce.x,ce.y))},C;for(let W=0;W<r.length;W++){let Y=r[W];s.setFloor(W);let K=Wt(Y,T(W)),oe=0;if(K){let te=0;for(let me of Y.objects)if(me.type==="section")for(let Se of M.bySection.get(me.id)?.rowLevels??[])te=Math.max(te,Se.y-Y.baseHeightM);if(oe=ps(te),!C){let me=bs(K);C={centre:[me.x*E,me.y*E]}}}let ee=new io,le=[],J=Y.objects.filter(te=>te.type==="shape"&&(te.role==="entrance"||te.role==="exit")),ce=Y.objects.filter(te=>te.type==="section"&&!!te.outline&&te.outline.length>=3),Oe=Ys(Y.objects.filter(te=>te.type==="booth"),Y.focal);for(let te of Y.objects)if(te.type==="section"){let me=s.vertexCount;cc(s,te,Y,qa(te,p),M.bySection.get(te.id),ee,ce,o,W>0&&w(W,te.outline));let Se=s.vertexCount-me;Se>0&&S.push({sectionId:te.id,start:me,count:Se})}else if(te.type==="shape"){let me=i.byObjectId.get(te.id),Se=g.length,Xe=K!==null&&te.role==="wall"&&!me;s.setMaterial(Xe?hs:(me?.kind??te.role)==="screen"?1:0);let De=te.role==="stage"&&!me?qs(te,T(W)):Xe&&te.heightM===void 0?{...te,heightM:oe}:te,Ae=fs(De,le);if(Us(s,De,Y.baseHeightM+Ae.supportOffsetM,Ae.topOffsetM-Ae.supportOffsetM,o,Y.focal,g,me,J),s.setMaterial(0),te.role==="stage"&&!me&&g.length>Se&&(R??W)===W){R=W;let We=t.floors?.[W]?.id,Ze=r.length>1&&We?a.filter(Pt=>Pt.floorId===We):a;Kc(s,De,g[g.length-1].y,Ze)}}else te.type==="gaArea"?Xs(s,te,Y.baseHeightM,pe(b.get(te.categoryKey)),o):te.type==="booth"?Gs(s,te,Y.baseHeightM,pe(b.get(te.categoryKey)),o,Oe.get(te.id)??Y.focal,O(te,W)):te.type==="table"?zs(s,te,Math.max(Y.baseHeightM,P.get(te.id)??Y.baseHeightM),pe(te.fill??t.theme?.decorFill??"#232c40"),o,!!(te.fill??t.theme?.decorFill)):te.type==="decorImage"&&js(s,te,Y.baseHeightM,o);uc(s,Y,a,M,o,n.materials.shell,!c)}let A=r.length>1?{x:r.reduce((W,Y)=>W+Y.focal.x,0)/r.length,y:r.reduce((W,Y)=>W+Y.focal.y,0)/r.length}:t.focalPoint??{x:(m.minX+m.maxX)/2,y:(m.minY+m.maxY)/2},_=ma(c?[s.build(),c]:[s.build()]),L=da(a,e.initialState,M,I,b,y),N=Fc({doc:t,units:r,seats:a,surfaces:M,focal:A}),{labels:k,sections:F,rows:H}=Oc({doc:t,units:r,seats:a,surfaces:M,seatData:L,hintedSeatFloor:u,zones:N,focal:A}),B=new Map(F.map((W,Y)=>[W.id,Y]));M.seatOwner.forEach((W,Y)=>{L.iSection[Y]=W?B.get(W)??-1:-1});let D=Bc({doc:t,units:r,seats:a,surfaces:M,solids:_,hintedSeatFloor:u,seatFloor:I});Dc(k,D),L.iYaw=ki(L.iPosition,a.length,W=>a[W].rowId,W=>{let Y=r[I[W]]?.focal??A;return[Y.x*E,Y.y*E]});let G=(m.minX+m.maxX)/2*E,j=(m.minY+m.maxY)/2*E,V=.5*Math.hypot((m.maxX-m.minX)*E,(m.maxY-m.minY)*E)||10,z=Wr(_,L,{cx:G,cz:j,radius:V},[h,f]),q=Wr(_,L,{cx:G,cz:j,radius:V}),$=Sb(r),re=Xc(L,g,m,z.minY,z.maxY,V,$);return{sharedAisles:ha(r.flatMap(W=>W.objects.flatMap(Y=>{if(Y.type!=="section")return[];let K=M.bySection.get(Y.id);return K?[{sectionId:Y.id,floorIndex:W.index,rows:K.rowLevels}]:[]}))),solids:_,sectionSolidRanges:S,seats:L,seatSectionIds:M.seatOwner,bounds:{center:[(re.min[0]+re.max[0])/2,(re.min[1]+re.max[1])/2,(re.min[2]+re.max[2])/2],radius:V,groundY:0,box:re,fitPoints:jc(L,g,$)},...C?{room:C}:{},...!C&&r.some(W=>W.objects.some(Y=>Y.type==="shape"&&Zn(Y.stageKind)))?{outdoor:!0}:{},renderBounds:{center:z.center,radius:z.radius},clipBounds:{center:q.center,radius:q.radius},stateColorLUT:ga(n,Ce),theme:n,seatCount:a.length,focalWorld:[A.x*E,1.5,A.y*E],zones:N,stages:g,productionElements:i.elements,sections:F,rows:H,labels:k,floors:D}}function Sb(e){let t=[];for(let n of e)for(let o of n.objects){let r=o.type==="gaArea"?o.points:o.type==="booth"?$e(o):null;for(let i of r??[])t.push([i.x*E,n.baseHeightM,i.y*E])}return t}var xt=require("ogl"),wb=.05,Pb=.6,Ib=12,Rb=1.6,Ab=1,Eb=2.5,Cb=650,Zc=24;function _b(e){let t=[],n=[],o=[],r=(m,h,d)=>{t.push(...m),n.push(...h),o.push(d)};for(let m=0;m<16;m++){let h=m/16*Math.PI*2,d=(m+1)/16*Math.PI*2,f=M=>[Math.cos(M),0,Math.sin(M)],p=[Math.cos(h)*.012,0,Math.sin(h)*.012],b=[Math.cos(d)*.012,0,Math.sin(d)*.012],y=[Math.cos(h)*.03,1,Math.sin(h)*.03],g=[Math.cos(d)*.03,1,Math.sin(d)*.03];r(p,f(h),0),r(y,f(h),0),r(g,f(d),0),r(p,f(h),0),r(g,f(d),0),r(b,f(d),0)}let c=.16,l=.24,u=.01;for(let m=0;m<48;m++){let h=m/48*Math.PI*2,d=(m+1)/48*Math.PI*2,f=[Math.cos(h)*c,u,Math.sin(h)*c],p=[Math.cos(h)*l,u,Math.sin(h)*l],b=[Math.cos(d)*l,u,Math.sin(d)*l],y=[Math.cos(d)*c,u,Math.sin(d)*c];for(let g of[f,p,b,f,b,y])r(g,[0,1,0],1)}return new xt.Geometry(e,{position:{size:3,data:new Float32Array(t)},normal:{size:3,data:new Float32Array(n)},part:{size:1,data:new Float32Array(o)}})}var Tb=`#version 300 es
|
|
21
21
|
precision highp float;
|
|
22
22
|
in vec3 position; in vec3 normal; in float part;
|
|
23
23
|
uniform mat4 modelViewMatrix; uniform mat4 projectionMatrix; uniform mat3 normalMatrix;
|
|
@@ -33,7 +33,7 @@ void main() {
|
|
|
33
33
|
float scale = part > 0.5 ? uRingScale : uHeight;
|
|
34
34
|
vec3 world = uSeat + vec3(position.x, position.y * grow, position.z) * scale;
|
|
35
35
|
gl_Position = projectionMatrix * modelViewMatrix * vec4(world, 1.0);
|
|
36
|
-
}`,
|
|
36
|
+
}`,kb=`#version 300 es
|
|
37
37
|
precision highp float;
|
|
38
38
|
in vec3 vNormal; in float vPart;
|
|
39
39
|
uniform vec3 uColor; uniform float uRingAlpha;
|
|
@@ -45,15 +45,15 @@ void main() {
|
|
|
45
45
|
float key = max(dot(normalize(vNormal), normalize(vec3(-0.4, 0.7, 0.6))), 0.0);
|
|
46
46
|
vec3 c = uColor * (0.55 + 0.5 * key) + vec3(0.12) * pow(key, 12.0);
|
|
47
47
|
fragColor = vec4(c, 1.0);
|
|
48
|
-
}`;function Bp(e){if(e>=1)return 1;if(e<.72){let n=e/.72;return 1-(1-n)*(1-n)}let t=(e-.72)/.28;return 1-.08*Math.sin(t*Math.PI)}function Or(e){return Math.max(Cp,Math.min(Ep,e*Ap))}function Cc(e,t){let n=new gt.Transform,o=Fp(e),r=new Map,i=(a,s)=>{let c=new gt.Program(e,{vertex:Dp,fragment:Op,uniforms:{uSeat:{value:a},uHeight:{value:1},uLift:{value:0},uRingScale:{value:1},uColor:{value:t},uRingAlpha:{value:.85}},transparent:!0,depthTest:!0,depthWrite:!1,cullFace:!1}),u=new gt.Mesh(e,{geometry:o,program:c});return u.frustumCulled=!1,u.setParent(n),{mesh:u,program:c,seat:a,start:s}};return{root:n,setSeats(a,s,c){let u=new Set(a.slice(0,Ac).map(l=>l.id));for(let[l,m]of r)u.has(l)||(m.mesh.setParent(null),r.delete(l));for(let l of a.slice(0,Ac))r.has(l.id)||r.set(l.id,i(l.position,c?s:-1/0))},update(a,s,c,u=!1){let l=!1;for(let m of r.values()){let h=s[0]-m.seat[0],d=s[1]-m.seat[1],f=s[2]-m.seat[2],p=Math.hypot(h,d,f);m.mesh.visible=!c&&p>(u?Tp:kp);let b=Or(p),y=Math.max(0,Math.min(1,(a-m.start)/Lp));y<1&&(l=!0),m.program.uniforms.uHeight.value=b,m.program.uniforms.uRingScale.value=Math.min(b,_p),m.program.uniforms.uLift.value=u?1:1-Bp(y),m.program.uniforms.uRingAlpha.value=.55+.4*(y<1?Math.sin(y*Math.PI):0)}return l},dispose(){for(let a of r.values())a.mesh.setParent(null);r.clear(),o.remove()}}}var Rn="#ffffff",Ec="#0b1220",An=6,Np=80,_c=14,Tc=88,kc=20,Lc={floor:{size:14,weight:"700",opacity:.98},zone:{size:15,weight:"600",opacity:.95},section:{size:12,weight:"500",opacity:.88},ga:{size:12,weight:"500",opacity:.88},booth:{size:11,weight:"500",opacity:.85},annotation:{size:11,weight:"400",opacity:.75},row:{size:11.5,weight:"700",opacity:.94},seat:{size:12.5,weight:"800",opacity:1}},Vp=640,Gp=.8,Hp=11,zp="3px 7px",Up="2px 5px",Fc="rgba(10,14,22,.62)",jp="#f4f7fb",Dc=5,Oc=2,Xp=6,Cn=new Set(["row","seat"]),Bc={floor:5,zone:4,section:3,ga:3,booth:2,annotation:1},Zt={row:{x:66,y:20},seat:{x:52,y:22}},Nr=de,Br=e=>Si(e);function Vr(e,t){let n=Br(e),o=Br(t);return(Math.max(n,o)+.05)/(Math.min(n,o)+.05)}function Gr(e,t){let n=/rgba\((\d+),(\d+),(\d+),([\d.]+)\)/.exec(e.replace(/\s/g,""));if(!n)return t;let o=Math.max(0,Math.min(1,Number(n[4])));return[1,2,3].map(r=>Number(n[r])/255*o+t[r-1]*(1-o))}function Wp(e,t=[.04,.06,.1],n=!0){let o=Br(t)<.42,r=o?"#f4f7fb":"#0b1220",i=o?"rgba(8,12,22,.78)":"rgba(255,255,255,.84)",a=n?Gr(i,t):t,s=Nr(e),c=n?7:4.5,u=s&&Vr(s,a)>=c?e:r;return o?{ink:u,backing:i,border:"rgba(210,222,245,.24)"}:{ink:u,backing:i,border:"rgba(11,18,32,.22)"}}function Yp(e,t=[.04,.06,.1]){let n=Gr(Fc,t),o=Nr(e);return{ink:o&&Vr(o,n)>=4.5?e:jp,backing:Fc}}var Kp='ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',xo=class{constructor(t,n={}){this.nodes=new Map;this.labels=[];this.nodeAppearance=new WeakMap;this.forcedDense=!1;this.selectedSeatLabelIds=new Set;this.narrowStage=!1;this.seatNumberRow=void 0;this.pinHeads=[];this.opts=n,this.root=document.createElement("div"),this.root.setAttribute("data-view3d-labels","");let o=this.root.style;o.position="absolute",o.inset="0",o.pointerEvents="none",o.overflow="hidden",o.fontFamily=n.fontFamily||Kp,t.appendChild(this.root)}setVisible(t){this.root.style.visibility=t?"":"hidden"}setLabels(t){this.labels=t;let n=new Set(t.map(o=>o.id));for(let[o,r]of this.nodes)n.has(o)||(r.remove(),this.nodes.delete(o))}setForcedDense(t){this.forcedDense=t}setSeatNumberRow(t){return t===this.seatNumberRow?!1:(this.seatNumberRow=t,!0)}setSelectedSeatIds(t){this.selectedSeatLabelIds=new Set(Array.from(t,n=>`seat:${n}`))}sizeFor(t){let n=Lc[t].size;return!this.narrowStage||Cn.has(t)?n:Math.max(Hp,n*Gp)}qualityEvidence(){let t=this.root.getBoundingClientRect(),n=this.root.style.visibility!=="hidden";return this.labels.map(o=>{let r=this.nodes.get(o.id),i=r?.getBoundingClientRect(),a=!!(n&&r&&r.style.display!=="none"&&i&&i.width>0&&i.height>0);return{id:o.id,kind:o.kind,text:o.text,visible:a,renderedFontPx:r&&Number.parseFloat(r.style.fontSize)||0,contrast:r?Number(r.dataset.qualityContrast??0):0,...a&&i?{screenBox:{x:i.x-t.x,y:i.y-t.y,width:i.width,height:i.height}}:{}}})}update(t,n,o,r,i,a){if(!this.labels.length)return;this.narrowStage=n>0&&n<Vp;let s=nc(r,i,{hasZoneLabels:this.labels.some(x=>x.kind==="zone")});this.forcedDense&&(s.add("row"),s.add("seat"));let c=[];for(let x of this.labels){if(!s.has(x.kind)&&!(x.kind==="seat"&&this.selectedSeatLabelIds.has(x.id)))continue;let S=x.kind==="seat"&&a&&this.selectedSeatLabelIds.has(x.id)?x.pinBase:void 0,w=S&&a?[S[0],S[1]+Or(Math.hypot(S[0]-a[0],S[1]-a[1],S[2]-a[2])),S[2]]:x.anchor,I=Ze(t,w,n,o);if(!I.visible)continue;let L=Cn.has(x.kind),O=this.sizeFor(x.kind),D=ic(x.text,O,!L)+(L?Dc*2:0);if(x.kind==="seat"&&x.seatWidthM!==void 0&&!this.selectedSeatLabelIds.has(x.id)&&cc(t,x.anchor,x.seatWidthM,n)<Math.max(22,D))continue;let A=oc(I,D/2,O/2+(L?Oc:4),n,o),E=a?Math.hypot(x.anchor[0]-a[0],x.anchor[1]-a[1],x.anchor[2]-a[2]):1;c.push({label:x,screen:A,focus:sc(A,E,n,o),halfWidth:D/2,...this.selectedSeatLabelIds.has(x.id)?{priority:1}:{}})}let u=tc(c.filter(x=>x.label.kind==="floor"),n),l=[...c.filter(x=>!Cn.has(x.label.kind)&&x.label.kind!=="floor"),...u],m=ac(n),h=c.filter(x=>x.label.kind==="seat"&&this.selectedSeatLabelIds.has(x.label.id)),d=yo(h,Zt.seat.x,Zt.seat.y,m.seat);this.placePinHeads(h.filter(x=>x.label.pinBase&&!d.includes(x)).map(x=>x.screen));let f=rc(l,Tc,kc).filter(x=>!d.some(S=>In(x,S,Tc,kc))),p=yo(c.filter(x=>x.label.kind==="row"),Zt.row.x,Zt.row.y,m.row,[...f,...d]),b=this.seatNumberRow!==void 0,y=yo(c.filter(x=>x.label.kind==="seat"&&!this.selectedSeatLabelIds.has(x.label.id)&&(!b||this.seatNumberRow!==null&&x.label.rowId===this.seatNumberRow)),Zt.seat.x,Zt.seat.y,b?Np:m.seat-d.length,[...f,...d,...p]),g=[...f,...p,...d,...y],M=new Set(g.map(x=>x.label.id));for(let{label:x,screen:S}of g){let I=this.nodeFor(x).style;I.display="";let L=!!x.pinBase&&this.selectedSeatLabelIds.has(x.id);I.transform=L?`translate(-50%, -100%) translate(${S.x.toFixed(1)}px, ${(S.y-An).toFixed(1)}px)`:`translate(-50%, -50%) translate(${S.x.toFixed(1)}px, ${S.y.toFixed(1)}px)`}let R=g.filter(({label:x})=>!Cn.has(x.kind)).sort((x,S)=>Bc[S.label.kind]-Bc[x.label.kind]||x.screen.depth-S.screen.depth||x.focus-S.focus).flatMap(({label:x})=>{let S=this.nodes.get(x.id);return S&&S.style.display!=="none"?[{node:S,box:S.getBoundingClientRect()}]:[]}),P=[];for(let{node:x,box:S}of R)P.some(I=>S.left<I.right+3&&S.right+3>I.left&&S.top<I.bottom+3&&S.bottom+3>I.top)?x.style.display="none":P.push(S);for(let[x,S]of this.nodes)M.has(x)||(S.style.display="none")}nodeFor(t){let n=this.nodes.get(t.id);if(!n){n=document.createElement("div");let p=n.style;p.position="absolute",p.left="0",p.top="0",p.whiteSpace="nowrap",p.textShadow="0 1px 3px rgba(0,0,0,0.85), 0 0 8px rgba(0,0,0,0.55)",p.display="none",this.root.appendChild(n),this.nodes.set(t.id,n)}let o=this.selectedSeatLabelIds.has(t.id),r=this.nodeAppearance.get(n);if(r&&r.text===t.text&&r.kind===t.kind&&r.color===t.color&&r.selected===o&&r.narrow===this.narrowStage)return n;if(this.nodeAppearance.set(n,{text:t.text,kind:t.kind,color:t.color,selected:o,narrow:this.narrowStage}),n.textContent=t.text,o){let p=document.createElement("span"),b=p.style;b.position="absolute",b.left="50%",b.bottom=`-${An}px`,b.transform="translateX(-50%)",b.borderLeft=`${An}px solid transparent`,b.borderRight=`${An}px solid transparent`,b.borderTop=`${An}px solid ${Rn}`,n.appendChild(p)}n.setAttribute("data-label-kind",t.kind),n.toggleAttribute("data-selected-seat",o);let i=Lc[t.kind],a=n.style;a.fontSize=`${this.sizeFor(t.kind)}px`,a.fontWeight=o?"800":i.weight,a.opacity=o?"1":String(i.opacity);let s=Cn.has(t.kind),c=!s,u=Wp(t.color??this.opts.ink,this.opts.backgroundRgb,!0),l=s?Yp(t.color??this.opts.ink,this.opts.backgroundRgb):u;a.color=o?Ec:l.ink,a.background=o?Rn:l.backing,a.border=o?`1px solid ${Rn}`:c?`1px solid ${u.border}`:"",a.borderRadius=o||c?"999px":`${Xp}px`;let m=this.narrowStage?Up:zp;a.padding=o||c?m:`${Oc}px ${Dc}px`,a.lineHeight=s?"1.1":"",a.boxShadow=o?"0 0 0 3px rgba(255,255,255,.28), 0 0 18px rgba(255,255,255,.55), 0 5px 14px rgba(0,0,0,.45)":c?"0 3px 10px rgba(0,0,0,.24)":"0 1px 4px rgba(0,0,0,.28)",a.textShadow=o?"none":"0 1px 3px rgba(0,0,0,0.85), 0 0 8px rgba(0,0,0,0.55)",a.letterSpacing=t.kind==="zone"||t.kind==="floor"?"0.08em":"0.02em";let h=this.opts.backgroundRgb??[.04,.06,.1],d=Nr(o?Ec:l.ink)??[1,1,1],f=Gr(o?Rn:l.backing,h);return n.dataset.qualityContrast=Vr(d,f).toFixed(3),a.textTransform=t.kind==="zone"||t.kind==="floor"?"uppercase":"",n}placePinHeads(t){for(;this.pinHeads.length<t.length;){let n=document.createElement("div");n.setAttribute("data-pin-head",""),n.setAttribute("aria-hidden","true");let o=n.style;o.position="absolute",o.left="0",o.top="0",o.width=`${_c}px`,o.height=`${_c}px`,o.borderRadius="50%",o.background=Rn,o.boxShadow="0 0 0 3px rgba(255,255,255,.28), 0 0 14px rgba(255,255,255,.55), 0 3px 8px rgba(0,0,0,.45)",o.pointerEvents="none",this.root.appendChild(n),this.pinHeads.push(n)}this.pinHeads.forEach((n,o)=>{let r=t[o];n.style.display=r?"":"none",r&&(n.style.transform=`translate(-50%, -100%) translate(${r.x.toFixed(1)}px, ${r.y.toFixed(1)}px)`)})}dispose(){this.pinHeads=[],this.root.remove(),this.nodes.clear()}};var Vc=1;var qp=new Set(["floor","zone","section","ga","booth","annotation"]);function $p(e){return e.every(t=>Number.isFinite(t))}function Zp(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function Nc(e){return e.length?Math.round(Math.min(...e)*100)/100:null}function Lt(e){return Math.round(e*1e4)/1e4}function Qp(e){if(e)return{box:{x:Lt(e.box.x),y:Lt(e.box.y),width:Lt(e.box.width),height:Lt(e.box.height)},horizontalFillRatio:Lt(e.horizontalFillRatio),verticalFillRatio:Lt(e.verticalFillRatio),visibleAreaRatio:Lt(e.visibleAreaRatio),clippedEdges:[...e.clippedEdges]}}function Qe(e,t,n){return n.length?{code:e,message:t,count:n.length,samples:n.slice(0,20)}:null}function vo(e){let t=e.labels.filter(s=>s.visible&&s.screenBox),n=t.filter(s=>qp.has(s.kind)),o=e.scene.floorCount>1?e.scene.floorCount:e.scene.zoneCount||e.scene.sectionCount,r=[];for(let s=0;s<n.length;s+=1)for(let c=0;c<s;c+=1)Zp(n[s].screenBox,n[c].screenBox)&&r.push({primaryId:n[s].id,primaryLabel:n[s].text,secondaryId:n[c].id});let i=[...e.camera.position,e.camera.distance,e.camera.verticalFovDeg],a=[Qe("webgl2-unavailable","The venue scene must render through WebGL2",e.context.webgl2?[]:[{primaryId:"renderer",primaryLabel:"WebGL2"}]),Qe("context-lost","The WebGL context must be live at capture",e.context.lost?[{primaryId:"renderer",primaryLabel:"context lost"}]:[]),Qe("frame-not-stable","The captured 3D frame must be rendered and parked",e.frame.rendered>0&&e.frame.idle?[]:[{primaryId:"renderer",primaryLabel:"unstable frame"}]),Qe("viewport-empty","The 3D viewport must have visible dimensions",e.viewport.width>1&&e.viewport.height>1?[]:[{primaryId:"viewport",primaryLabel:`${e.viewport.width}\xD7${e.viewport.height}`}]),Qe("camera-invalid","The capture camera must have a finite physical pose",$p(i)&&e.camera.distance>0&&e.camera.verticalFovDeg>0&&e.camera.verticalFovDeg<180?[]:[{primaryId:"camera",primaryLabel:"invalid pose"}]),Qe("authored-relief-not-visible","Authored 3D height or rake must produce visible screen-space relief",!e.scene.authoredRelief||e.scene.renderedVerticalSpanM>.05&&e.scene.projectedReliefPx>=2?[]:[{primaryId:"scene",primaryLabel:"authored relief",measured:e.scene.projectedReliefPx,minimum:2}]),Qe("hierarchy-label-missing","A venue with authored hierarchy must show at least one structural label",o===0||n.length>0?[]:[{primaryId:"labels",primaryLabel:`${o} expected hierarchy labels`}]),Qe("hierarchy-label-undersized","Visible 3D hierarchy labels must remain readable",n.filter(s=>s.renderedFontPx<11).map(s=>({primaryId:s.id,primaryLabel:s.text,measured:s.renderedFontPx,minimum:11}))),Qe("hierarchy-label-contrast-low","Visible 3D hierarchy labels must meet text contrast",n.filter(s=>s.contrast<4.5).map(s=>({primaryId:s.id,primaryLabel:s.text,measured:s.contrast,minimum:4.5}))),Qe("hierarchy-label-collision","Visible 3D hierarchy labels must not overlap",r)].filter(s=>!!s);return{version:1,state:"venue3d",passed:a.length===0,resolvedRules:["rendered-3d-webgl-context","rendered-3d-stable-frame","rendered-3d-camera-pose","rendered-3d-relief-projection","rendered-3d-label-size","rendered-3d-label-contrast","rendered-3d-label-collision"],viewport:e.viewport,context:e.context,frame:e.frame,camera:e.camera,scene:e.scene,composition:{visibleLabels:t.map(({id:s,kind:c,text:u})=>({id:s,kind:c,text:u})).sort((s,c)=>s.kind.localeCompare(c.kind)||s.id.localeCompare(c.id)),framing:Qp(e.framing)},metrics:{minimumHierarchyFontPx:Nc(n.map(s=>s.renderedFontPx)),minimumHierarchyContrast:Nc(n.map(s=>s.contrast)),projectedReliefPx:Math.round(e.scene.projectedReliefPx*100)/100},findings:a}}function Gc(e,t,n){e.fill(0);for(let o=0;o<Math.min(n,t.length);o++)e[t[o]]=1}var Se=require("ogl");var xt=require("ogl");var Mo=`
|
|
48
|
+
}`;function Lb(e){if(e>=1)return 1;if(e<.72){let n=e/.72;return 1-(1-n)*(1-n)}let t=(e-.72)/.28;return 1-.08*Math.sin(t*Math.PI)}function Yr(e){return Math.max(Pb,Math.min(Ib,e*wb))}function Qc(e,t){let n=new xt.Transform,o=_b(e),r=new Map,i=(a,s)=>{let c=new xt.Program(e,{vertex:Tb,fragment:kb,uniforms:{uSeat:{value:a},uHeight:{value:1},uLift:{value:0},uRingScale:{value:1},uColor:{value:t},uRingAlpha:{value:.85}},transparent:!0,depthTest:!0,depthWrite:!1,cullFace:!1}),l=new xt.Mesh(e,{geometry:o,program:c});return l.frustumCulled=!1,l.setParent(n),{mesh:l,program:c,seat:a,start:s}};return{root:n,setSeats(a,s,c){let l=new Set(a.slice(0,Zc).map(u=>u.id));for(let[u,m]of r)l.has(u)||(m.mesh.setParent(null),r.delete(u));for(let u of a.slice(0,Zc))r.has(u.id)||r.set(u.id,i(u.position,c?s:-1/0))},update(a,s,c,l=!1){let u=!1;for(let m of r.values()){let h=s[0]-m.seat[0],d=s[1]-m.seat[1],f=s[2]-m.seat[2],p=Math.hypot(h,d,f);m.mesh.visible=!c&&p>(l?Ab:Eb);let b=Yr(p),y=Math.max(0,Math.min(1,(a-m.start)/Cb));y<1&&(u=!0),m.program.uniforms.uHeight.value=b,m.program.uniforms.uRingScale.value=Math.min(b,Rb),m.program.uniforms.uLift.value=l?1:1-Lb(y),m.program.uniforms.uRingAlpha.value=.55+.4*(y<1?Math.sin(y*Math.PI):0)}return u},dispose(){for(let a of r.values())a.mesh.setParent(null);r.clear(),o.remove()}}}var Tn="#ffffff",Jc="#0b1220",kn=6,Fb=80,el=14,tl=88,nl=20,ol={floor:{size:14,weight:"700",opacity:.98},stage:{size:14,weight:"700",opacity:.98},zone:{size:15,weight:"600",opacity:.95},section:{size:12,weight:"500",opacity:.88},ga:{size:12,weight:"500",opacity:.88},booth:{size:11,weight:"500",opacity:.85},annotation:{size:11,weight:"400",opacity:.75},row:{size:11.5,weight:"700",opacity:.94},seat:{size:12.5,weight:"800",opacity:1}},Ob=640,Db=.8,Bb=11,Nb="3px 7px",Vb="2px 5px",rl="rgba(10,14,22,.62)",Gb="#f4f7fb",il=5,al=2,Hb=6,Ln=new Set(["row","seat"]),sl={stage:6,floor:5,zone:4,section:3,ga:3,booth:2,annotation:1},Jt={row:{x:66,y:20},seat:{x:52,y:22}},qr=pe,Kr=e=>Di(e);function $r(e,t){let n=Kr(e),o=Kr(t);return(Math.max(n,o)+.05)/(Math.min(n,o)+.05)}function Zr(e,t){let n=/rgba\((\d+),(\d+),(\d+),([\d.]+)\)/.exec(e.replace(/\s/g,""));if(!n)return t;let o=Math.max(0,Math.min(1,Number(n[4])));return[1,2,3].map(r=>Number(n[r])/255*o+t[r-1]*(1-o))}function zb(e,t=[.04,.06,.1],n=!0){let o=Kr(t)<.42,r=o?"#f4f7fb":"#0b1220",i=o?"rgba(8,12,22,.78)":"rgba(255,255,255,.84)",a=n?Zr(i,t):t,s=qr(e),c=n?7:4.5,l=s&&$r(s,a)>=c?e:r;return o?{ink:l,backing:i,border:"rgba(210,222,245,.24)"}:{ink:l,backing:i,border:"rgba(11,18,32,.22)"}}function Ub(e,t=[.04,.06,.1]){let n=Zr(rl,t),o=qr(e);return{ink:o&&$r(o,n)>=4.5?e:Gb,backing:rl}}var jb='ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',wo=class{constructor(t,n={}){this.nodes=new Map;this.labels=[];this.nodeAppearance=new WeakMap;this.forcedDense=!1;this.selectedSeatLabelIds=new Set;this.narrowStage=!1;this.seatNumberRow=void 0;this.pinHeads=[];this.opts=n,this.root=document.createElement("div"),this.root.setAttribute("data-view3d-labels","");let o=this.root.style;o.position="absolute",o.inset="0",o.pointerEvents="none",o.overflow="hidden",o.fontFamily=n.fontFamily||jb,t.appendChild(this.root)}setVisible(t){this.root.style.visibility=t?"":"hidden"}setLabels(t){this.labels=t;let n=new Set(t.map(o=>o.id));for(let[o,r]of this.nodes)n.has(o)||(r.remove(),this.nodes.delete(o))}setForcedDense(t){this.forcedDense=t}setSeatNumberRow(t){return t===this.seatNumberRow?!1:(this.seatNumberRow=t,!0)}setSelectedSeatIds(t){this.selectedSeatLabelIds=new Set(Array.from(t,n=>`seat:${n}`))}sizeFor(t){let n=ol[t].size;return!this.narrowStage||Ln.has(t)?n:Math.max(Bb,n*Db)}qualityEvidence(){let t=this.root.getBoundingClientRect(),n=this.root.style.visibility!=="hidden";return this.labels.map(o=>{let r=this.nodes.get(o.id),i=r?.getBoundingClientRect(),a=!!(n&&r&&r.style.display!=="none"&&i&&i.width>0&&i.height>0);return{id:o.id,kind:o.kind,text:o.text,visible:a,renderedFontPx:r&&Number.parseFloat(r.style.fontSize)||0,contrast:r?Number(r.dataset.qualityContrast??0):0,...a&&i?{screenBox:{x:i.x-t.x,y:i.y-t.y,width:i.width,height:i.height}}:{}}})}update(t,n,o,r,i,a){if(!this.labels.length)return;this.narrowStage=n>0&&n<Ob;let s=Ic(r,i,{hasZoneLabels:this.labels.some(x=>x.kind==="zone")});this.forcedDense&&(s.add("row"),s.add("seat"));let c=[];for(let x of this.labels){if(!s.has(x.kind)&&!(x.kind==="seat"&&this.selectedSeatLabelIds.has(x.id)))continue;let v=x.kind==="seat"&&a&&this.selectedSeatLabelIds.has(x.id)?x.pinBase:void 0,w=v&&a?[v[0],v[1]+Yr(Math.hypot(v[0]-a[0],v[1]-a[1],v[2]-a[2])),v[2]]:x.anchor,R=tt(t,w,n,o);if(!R.visible)continue;let T=Ln.has(x.kind),O=this.sizeFor(x.kind),C=Ec(x.text,O,!T)+(T?il*2:0);if(x.kind==="seat"&&x.seatWidthM!==void 0&&!this.selectedSeatLabelIds.has(x.id)&&Tc(t,x.anchor,x.seatWidthM,n)<Math.max(22,C))continue;let A=Rc(R,C/2,O/2+(T?al:4),n,o),_=a?Math.hypot(x.anchor[0]-a[0],x.anchor[1]-a[1],x.anchor[2]-a[2]):1;c.push({label:x,screen:A,focus:_c(A,_,n,o),halfWidth:C/2,...this.selectedSeatLabelIds.has(x.id)?{priority:1}:{}})}let l=Pc(c.filter(x=>x.label.kind==="floor"),n),u=[...c.filter(x=>!Ln.has(x.label.kind)&&x.label.kind!=="floor"),...l],m=Cc(n),h=c.filter(x=>x.label.kind==="seat"&&this.selectedSeatLabelIds.has(x.label.id)),d=Mo(h,Jt.seat.x,Jt.seat.y,m.seat);this.placePinHeads(h.filter(x=>x.label.pinBase&&!d.includes(x)).map(x=>x.screen));let f=Ac(u,tl,nl).filter(x=>!d.some(v=>_n(x,v,tl,nl))),p=Mo(c.filter(x=>x.label.kind==="row"),Jt.row.x,Jt.row.y,m.row,[...f,...d]),b=this.seatNumberRow!==void 0,y=Mo(c.filter(x=>x.label.kind==="seat"&&!this.selectedSeatLabelIds.has(x.label.id)&&(!b||this.seatNumberRow!==null&&x.label.rowId===this.seatNumberRow)),Jt.seat.x,Jt.seat.y,b?Fb:m.seat-d.length,[...f,...d,...p]),g=[...f,...p,...d,...y],M=new Set(g.map(x=>x.label.id));for(let{label:x,screen:v}of g){let R=this.nodeFor(x).style;R.display="";let T=!!x.pinBase&&this.selectedSeatLabelIds.has(x.id);R.transform=T?`translate(-50%, -100%) translate(${v.x.toFixed(1)}px, ${(v.y-kn).toFixed(1)}px)`:`translate(-50%, -50%) translate(${v.x.toFixed(1)}px, ${v.y.toFixed(1)}px)`}let I=g.filter(({label:x})=>!Ln.has(x.kind)).sort((x,v)=>sl[v.label.kind]-sl[x.label.kind]||x.screen.depth-v.screen.depth||x.focus-v.focus).flatMap(({label:x})=>{let v=this.nodes.get(x.id);return v&&v.style.display!=="none"?[{node:v,box:v.getBoundingClientRect()}]:[]}),S=[];for(let{node:x,box:v}of I)S.some(R=>v.left<R.right+3&&v.right+3>R.left&&v.top<R.bottom+3&&v.bottom+3>R.top)?x.style.display="none":S.push(v);for(let[x,v]of this.nodes)M.has(x)||(v.style.display="none")}nodeFor(t){let n=this.nodes.get(t.id);if(!n){n=document.createElement("div");let p=n.style;p.position="absolute",p.left="0",p.top="0",p.whiteSpace="nowrap",p.display="none",this.root.appendChild(n),this.nodes.set(t.id,n)}let o=this.selectedSeatLabelIds.has(t.id),r=this.nodeAppearance.get(n);if(r&&r.text===t.text&&r.kind===t.kind&&r.color===t.color&&r.selected===o&&r.narrow===this.narrowStage)return n;if(this.nodeAppearance.set(n,{text:t.text,kind:t.kind,color:t.color,selected:o,narrow:this.narrowStage}),n.textContent=t.text,o){let p=document.createElement("span"),b=p.style;b.position="absolute",b.left="50%",b.bottom=`-${kn}px`,b.transform="translateX(-50%)",b.borderLeft=`${kn}px solid transparent`,b.borderRight=`${kn}px solid transparent`,b.borderTop=`${kn}px solid ${Tn}`,n.appendChild(p)}n.setAttribute("data-label-kind",t.kind),n.toggleAttribute("data-selected-seat",o);let i=ol[t.kind],a=n.style;a.fontSize=`${this.sizeFor(t.kind)}px`,a.fontWeight=o?"800":i.weight,a.opacity=o?"1":String(i.opacity);let s=Ln.has(t.kind),c=!s,l=zb(t.color??this.opts.ink,this.opts.backgroundRgb,!0),u=s?Ub(t.color??this.opts.ink,this.opts.backgroundRgb):l;a.color=o?Jc:u.ink,a.background=o?Tn:u.backing,a.border=o?`1px solid ${Tn}`:c?`1px solid ${l.border}`:"",a.borderRadius=o||c?"999px":`${Hb}px`;let m=this.narrowStage?Vb:Nb;a.padding=o||c?m:`${al}px ${il}px`,a.lineHeight=s?"1.1":"",a.boxShadow=o?"0 0 0 3px rgba(255,255,255,.28), 0 0 18px rgba(255,255,255,.55), 0 5px 14px rgba(0,0,0,.45)":c?"0 3px 10px rgba(0,0,0,.24)":"0 1px 4px rgba(0,0,0,.28)",a.textShadow=o||c?"none":"0 1px 1px rgba(0,0,0,0.4)",a.letterSpacing=t.kind==="zone"||t.kind==="floor"?"0.08em":"0.02em";let h=this.opts.backgroundRgb??[.04,.06,.1],d=qr(o?Jc:u.ink)??[1,1,1],f=Zr(o?Tn:u.backing,h);return n.dataset.qualityContrast=$r(d,f).toFixed(3),a.textTransform=t.kind==="zone"||t.kind==="floor"?"uppercase":"",n}placePinHeads(t){for(;this.pinHeads.length<t.length;){let n=document.createElement("div");n.setAttribute("data-pin-head",""),n.setAttribute("aria-hidden","true");let o=n.style;o.position="absolute",o.left="0",o.top="0",o.width=`${el}px`,o.height=`${el}px`,o.borderRadius="50%",o.background=Tn,o.boxShadow="0 0 0 3px rgba(255,255,255,.28), 0 0 14px rgba(255,255,255,.55), 0 3px 8px rgba(0,0,0,.45)",o.pointerEvents="none",this.root.appendChild(n),this.pinHeads.push(n)}this.pinHeads.forEach((n,o)=>{let r=t[o];n.style.display=r?"":"none",r&&(n.style.transform=`translate(-50%, -100%) translate(${r.x.toFixed(1)}px, ${r.y.toFixed(1)}px)`)})}dispose(){this.pinHeads=[],this.root.remove(),this.nodes.clear()}};var ll=1;var Xb=new Set(["floor","stage","zone","section","ga","booth","annotation"]);function Wb(e){return e.every(t=>Number.isFinite(t))}function Yb(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function cl(e){return e.length?Math.round(Math.min(...e)*100)/100:null}function Ft(e){return Math.round(e*1e4)/1e4}function Kb(e){if(e)return{box:{x:Ft(e.box.x),y:Ft(e.box.y),width:Ft(e.box.width),height:Ft(e.box.height)},horizontalFillRatio:Ft(e.horizontalFillRatio),verticalFillRatio:Ft(e.verticalFillRatio),visibleAreaRatio:Ft(e.visibleAreaRatio),clippedEdges:[...e.clippedEdges]}}function nt(e,t,n){return n.length?{code:e,message:t,count:n.length,samples:n.slice(0,20)}:null}function Po(e){let t=e.labels.filter(s=>s.visible&&s.screenBox),n=t.filter(s=>Xb.has(s.kind)),o=e.scene.floorCount>1?e.scene.floorCount:e.scene.zoneCount||e.scene.sectionCount,r=[];for(let s=0;s<n.length;s+=1)for(let c=0;c<s;c+=1)Yb(n[s].screenBox,n[c].screenBox)&&r.push({primaryId:n[s].id,primaryLabel:n[s].text,secondaryId:n[c].id});let i=[...e.camera.position,e.camera.distance,e.camera.verticalFovDeg],a=[nt("webgl2-unavailable","The venue scene must render through WebGL2",e.context.webgl2?[]:[{primaryId:"renderer",primaryLabel:"WebGL2"}]),nt("context-lost","The WebGL context must be live at capture",e.context.lost?[{primaryId:"renderer",primaryLabel:"context lost"}]:[]),nt("frame-not-stable","The captured 3D frame must be rendered and parked",e.frame.rendered>0&&e.frame.idle?[]:[{primaryId:"renderer",primaryLabel:"unstable frame"}]),nt("viewport-empty","The 3D viewport must have visible dimensions",e.viewport.width>1&&e.viewport.height>1?[]:[{primaryId:"viewport",primaryLabel:`${e.viewport.width}\xD7${e.viewport.height}`}]),nt("camera-invalid","The capture camera must have a finite physical pose",Wb(i)&&e.camera.distance>0&&e.camera.verticalFovDeg>0&&e.camera.verticalFovDeg<180?[]:[{primaryId:"camera",primaryLabel:"invalid pose"}]),nt("authored-relief-not-visible","Authored 3D height or rake must produce visible screen-space relief",!e.scene.authoredRelief||e.scene.renderedVerticalSpanM>.05&&e.scene.projectedReliefPx>=2?[]:[{primaryId:"scene",primaryLabel:"authored relief",measured:e.scene.projectedReliefPx,minimum:2}]),nt("hierarchy-label-missing","A venue with authored hierarchy must show at least one structural label",o===0||n.length>0?[]:[{primaryId:"labels",primaryLabel:`${o} expected hierarchy labels`}]),nt("hierarchy-label-undersized","Visible 3D hierarchy labels must remain readable",n.filter(s=>s.renderedFontPx<11).map(s=>({primaryId:s.id,primaryLabel:s.text,measured:s.renderedFontPx,minimum:11}))),nt("hierarchy-label-contrast-low","Visible 3D hierarchy labels must meet text contrast",n.filter(s=>s.contrast<4.5).map(s=>({primaryId:s.id,primaryLabel:s.text,measured:s.contrast,minimum:4.5}))),nt("hierarchy-label-collision","Visible 3D hierarchy labels must not overlap",r)].filter(s=>!!s);return{version:1,state:"venue3d",passed:a.length===0,resolvedRules:["rendered-3d-webgl-context","rendered-3d-stable-frame","rendered-3d-camera-pose","rendered-3d-relief-projection","rendered-3d-label-size","rendered-3d-label-contrast","rendered-3d-label-collision"],viewport:e.viewport,context:e.context,frame:e.frame,camera:e.camera,scene:e.scene,composition:{visibleLabels:t.map(({id:s,kind:c,text:l})=>({id:s,kind:c,text:l})).sort((s,c)=>s.kind.localeCompare(c.kind)||s.id.localeCompare(c.id)),framing:Kb(e.framing)},metrics:{minimumHierarchyFontPx:cl(n.map(s=>s.renderedFontPx)),minimumHierarchyContrast:cl(n.map(s=>s.contrast)),projectedReliefPx:Math.round(e.scene.projectedReliefPx*100)/100},findings:a}}function ul(e,t,n){e.fill(0);for(let o=0;o<Math.min(n,t.length);o++)e[t[o]]=1}var Ie=require("ogl");var vt=require("ogl");var Io=`
|
|
49
49
|
float chairWeight(float depth) {
|
|
50
50
|
return 1.0 - smoothstep(uChairFull, uChairNone, depth);
|
|
51
|
-
}`,
|
|
51
|
+
}`,ml=`
|
|
52
52
|
float occupantWeight(float depth) {
|
|
53
|
-
float nearWeight = smoothstep(${
|
|
54
|
-
float farWeight = 1.0 - smoothstep(${
|
|
53
|
+
float nearWeight = smoothstep(${Qi.toFixed(1)}, ${Ji.toFixed(1)}, depth);
|
|
54
|
+
float farWeight = 1.0 - smoothstep(${$i.toFixed(1)}, ${Zi.toFixed(1)}, depth);
|
|
55
55
|
return nearWeight * farWeight;
|
|
56
|
-
}`,
|
|
56
|
+
}`,Qr=`
|
|
57
57
|
float glyphEq(float glyph, float expected) {
|
|
58
58
|
return 1.0 - step(0.25, abs(glyph - expected));
|
|
59
59
|
}
|
|
@@ -102,7 +102,7 @@ vec3 glyphChairPosition(vec3 p, float partId, float glyph) {
|
|
|
102
102
|
p.y += 0.16;
|
|
103
103
|
}
|
|
104
104
|
return p;
|
|
105
|
-
}`,
|
|
105
|
+
}`,qb=`#version 300 es
|
|
106
106
|
precision highp float;
|
|
107
107
|
in vec3 position;
|
|
108
108
|
in vec3 normal;
|
|
@@ -140,7 +140,13 @@ void main() {
|
|
|
140
140
|
vNormalWorld = normalize(mat3(modelMatrix) * normal);
|
|
141
141
|
vColor = color;
|
|
142
142
|
gl_Position = projectionMatrix * mv;
|
|
143
|
-
}`,
|
|
143
|
+
}`,fl=`
|
|
144
|
+
bool roomWallHidden(float material, vec3 normalWorld, vec3 posWorld, vec3 eye, vec2 roomCentre) {
|
|
145
|
+
if (abs(material - 6.0) > 0.5) return false;
|
|
146
|
+
vec3 n = normalize(normalWorld);
|
|
147
|
+
if (abs(n.y) > 0.5) return true;
|
|
148
|
+
return dot(n.xz, eye.xz - posWorld.xz) * dot(n.xz, roomCentre - posWorld.xz) <= 0.0;
|
|
149
|
+
}`,$b=`#version 300 es
|
|
144
150
|
precision highp float;
|
|
145
151
|
in vec3 vColor;
|
|
146
152
|
in vec3 vNormalWorld;
|
|
@@ -157,7 +163,10 @@ uniform float uSectionFilter;
|
|
|
157
163
|
uniform float uFocusFloor;
|
|
158
164
|
uniform sampler2D tVenueShadow;
|
|
159
165
|
uniform mat4 uShadowMatrix;
|
|
166
|
+
uniform vec3 cameraPosition;
|
|
167
|
+
uniform vec2 uRoomCentre;
|
|
160
168
|
out vec4 fragColor;
|
|
169
|
+
${fl}
|
|
161
170
|
// Stable world-space variation; no textures or per-frame random grain.
|
|
162
171
|
float turfHash(vec2 p) {
|
|
163
172
|
vec3 q = fract(vec3(p.xyx) * 0.1031);
|
|
@@ -196,6 +205,7 @@ float architecturalLight(vec3 normal) {
|
|
|
196
205
|
}
|
|
197
206
|
void main() {
|
|
198
207
|
if (vDim > 0.5) discard;
|
|
208
|
+
if (roomWallHidden(vMaterial, vNormalWorld, vPosWorld, cameraPosition, uRoomCentre)) discard;
|
|
199
209
|
// Row treads (material 3) and risers (material 2) are chart truth: the
|
|
200
210
|
// stepped deck IS the stand, at every distance. What must not survive at
|
|
201
211
|
// whole-venue scale is the risers' darker shade \u2014 hundreds of sub-pixel dark
|
|
@@ -246,7 +256,10 @@ void main() {
|
|
|
246
256
|
// of crushing to a single flat value.
|
|
247
257
|
vec3 fillDir = normalize(vec3(-uKeyDir.x, 0.25, -uKeyDir.z));
|
|
248
258
|
float fill = max(dot(N, fillDir), 0.0);
|
|
249
|
-
|
|
259
|
+
// More sun, less flat ambient: at 0.40-0.68 ambient against a 0.46 key every
|
|
260
|
+
// face read at nearly one value and venues looked flat beside a lit reference
|
|
261
|
+
// (3D Digital Venue comparison, 2026-09-24). Lit and turned faces now part.
|
|
262
|
+
vec3 base = vColorRung * (0.34 + 0.26 * hemi) * mix(0.72, 1.0, visibility) + vColorRung * key * 0.60 + vColorRung * fill * 0.10;
|
|
250
263
|
float fres = pow(1.0 - max(dot(normalize(vNormalView), V), 0.0), 3.0);
|
|
251
264
|
// Material 1 is a powered display and keeps its authored emission treatment.
|
|
252
265
|
// Every architectural material uses the venue roughness token; 0.78 maps to
|
|
@@ -280,8 +293,8 @@ void main() {
|
|
|
280
293
|
+ vec3(0.20, 0.10, 0.34) * focalHalo;
|
|
281
294
|
base = mix(base, display, poweredDisplay * verticalFace * 0.92);
|
|
282
295
|
fragColor = vec4(base, 1.0);
|
|
283
|
-
}`,
|
|
284
|
-
${
|
|
296
|
+
}`,dl=`
|
|
297
|
+
${Qr}
|
|
285
298
|
vec4 seatSurface(vec3 source, float radius) {
|
|
286
299
|
vec4 origin = modelViewMatrix * vec4(iOffset, 1.0);
|
|
287
300
|
if (iPhysicalSeat < 0.5) {
|
|
@@ -295,12 +308,12 @@ vec4 seatSurface(vec3 source, float radius) {
|
|
|
295
308
|
if (surface < 0.5) return origin;
|
|
296
309
|
vec3 p = glyphChairPosition(source, surface, iGlyph);
|
|
297
310
|
p.xz *= iChairWidth;
|
|
298
|
-
if (surface > 1.5) p.z -= max(p.y - ${ft.toFixed(2)}, 0.0) * ${
|
|
311
|
+
if (surface > 1.5) p.z -= max(p.y - ${ft.toFixed(2)}, 0.0) * ${un.toFixed(2)} * glyphBackRake(iGlyph);
|
|
299
312
|
float c = cos(iYaw), s = sin(iYaw);
|
|
300
313
|
vec3 rotated = vec3(p.x * c + p.z * s, p.y, -p.x * s + p.z * c);
|
|
301
314
|
return modelViewMatrix * vec4(iOffset + rotated, 1.0);
|
|
302
315
|
}
|
|
303
|
-
`,
|
|
316
|
+
`,Zb=`#version 300 es
|
|
304
317
|
precision highp float;
|
|
305
318
|
in float surface;
|
|
306
319
|
in float iYaw;
|
|
@@ -339,8 +352,8 @@ out float vSectionFade;
|
|
|
339
352
|
out float vDotWeight; // 1 = the dot IS this seat, 0 = the chair has taken over
|
|
340
353
|
out float vPhysicalSeat;
|
|
341
354
|
out float vPixelRadius;
|
|
342
|
-
${
|
|
343
|
-
${
|
|
355
|
+
${Io}
|
|
356
|
+
${dl}
|
|
344
357
|
void main() {
|
|
345
358
|
vec4 mv = modelViewMatrix * vec4(iOffset, 1.0);
|
|
346
359
|
float depth = max(-mv.z, 0.001);
|
|
@@ -361,7 +374,7 @@ void main() {
|
|
|
361
374
|
mv = seatSurface(position, r);
|
|
362
375
|
// Match the shell's non-uniform width/depth scale before its back rake.
|
|
363
376
|
vec3 n = vec3(normal.x / iChairWidth, normal.y, normal.z / iChairWidth);
|
|
364
|
-
if (surface > 1.5) n.y += n.z * ${
|
|
377
|
+
if (surface > 1.5) n.y += n.z * ${un.toFixed(2)} * glyphBackRake(iGlyph);
|
|
365
378
|
n = normalize(n);
|
|
366
379
|
vSeatNormal = vec3(n.x * cos(iYaw) + n.z * sin(iYaw), n.y, -n.x * sin(iYaw) + n.z * cos(iYaw));
|
|
367
380
|
vSeatHeight = position.y;
|
|
@@ -373,13 +386,13 @@ void main() {
|
|
|
373
386
|
vDim = (uFocusFloor < -0.5 || abs(iFloor - uFocusFloor) < 0.5) ? 0.0 : 1.0;
|
|
374
387
|
vSectionFade = (uFocusSection < -0.5 || abs(iSection - uFocusSection) < 0.5) ? 0.0 : 1.0;
|
|
375
388
|
gl_Position = projectionMatrix * mv;
|
|
376
|
-
}`,
|
|
389
|
+
}`,hl=`
|
|
377
390
|
float seatSilhouette(vec2 uv, float physical) {
|
|
378
391
|
// Solid furniture owns its silhouette in geometry. Only empty bays need
|
|
379
392
|
// a fragment mask; cutting physical faces would open holes in the volume.
|
|
380
393
|
return mix(max(abs(uv.x), abs(uv.y)), 0.0, physical);
|
|
381
394
|
}
|
|
382
|
-
`,
|
|
395
|
+
`,Qb=`#version 300 es
|
|
383
396
|
precision highp float;
|
|
384
397
|
in vec3 vSeatNormal;
|
|
385
398
|
in float vSeatHeight;
|
|
@@ -399,7 +412,7 @@ uniform float uSeatDetail; // 0 for venue/area overview; 1 in section/row/sea
|
|
|
399
412
|
uniform vec3 uFadeColor;
|
|
400
413
|
uniform float uRoughness;
|
|
401
414
|
out vec4 fragColor;
|
|
402
|
-
${
|
|
415
|
+
${hl}
|
|
403
416
|
void main() {
|
|
404
417
|
if (vDim > 0.5) discard;
|
|
405
418
|
// Same screen-door dissolve as the structure rung (uStructureDetail): the
|
|
@@ -464,7 +477,7 @@ void main() {
|
|
|
464
477
|
c = mix(c, mix(vec3(lum), vec3(0.93), 0.35), 0.45);
|
|
465
478
|
}
|
|
466
479
|
fragColor = vec4(c, alpha);
|
|
467
|
-
}`,
|
|
480
|
+
}`,Jb=`#version 300 es
|
|
468
481
|
precision highp float;
|
|
469
482
|
in vec3 position; // local: x/z in units of the seat radius, y in METRES
|
|
470
483
|
in vec3 normal;
|
|
@@ -500,9 +513,9 @@ out float vSectionFade;
|
|
|
500
513
|
out float vOccupant; // 1 = this vertex belongs to a person, not to the chair
|
|
501
514
|
out vec3 vOccupantTint;
|
|
502
515
|
out float vTaken; // 1 = sold or held: not for sale
|
|
503
|
-
${
|
|
504
|
-
${
|
|
505
|
-
${
|
|
516
|
+
${Io}
|
|
517
|
+
${ml}
|
|
518
|
+
${Qr}
|
|
506
519
|
void main() {
|
|
507
520
|
vec4 anchor = modelViewMatrix * vec4(iOffset, 1.0);
|
|
508
521
|
float viewDepth = -anchor.z;
|
|
@@ -588,7 +601,7 @@ void main() {
|
|
|
588
601
|
vDim = (uFocusFloor < -0.5 || abs(iFloor - uFocusFloor) < 0.5) ? 0.0 : 1.0;
|
|
589
602
|
vSectionFade = (uFocusSection < -0.5 || abs(iSection - uFocusSection) < 0.5) ? 0.0 : 1.0;
|
|
590
603
|
gl_Position = projectionMatrix * mv;
|
|
591
|
-
}`,
|
|
604
|
+
}`,ey=`#version 300 es
|
|
592
605
|
precision highp float;
|
|
593
606
|
in vec3 vColor;
|
|
594
607
|
in vec3 vNormalWorld;
|
|
@@ -642,7 +655,10 @@ void main() {
|
|
|
642
655
|
// Occupants rise above the 0.92 m chair back, so their ramp uses their own
|
|
643
656
|
// height or every head would clamp to full brightness and float.
|
|
644
657
|
float ao = mix(0.58, 1.0, clamp(vHeight / (vOccupant > 0.5 ? 1.30 : 0.92), 0.0, 1.0));
|
|
645
|
-
|
|
658
|
+
// Chairs follow the structure's balance (see SOLID_FRAG): more sun, less
|
|
659
|
+
// ambient, so seat pads, backs and arms separate instead of reading as one
|
|
660
|
+
// coloured mass.
|
|
661
|
+
vec3 base = tint * partShade * ao * (0.52 + 0.26 * hemi) + tint * key * 0.40 + tint * fill * 0.14;
|
|
646
662
|
float fres = pow(1.0 - max(dot(normalize(vNormalView), V), 0.0), 3.0);
|
|
647
663
|
// A restrained furniture rim keeps the low-poly edges from looking outlined.
|
|
648
664
|
// Occupant silhouettes retain their existing stronger separation.
|
|
@@ -663,25 +679,45 @@ void main() {
|
|
|
663
679
|
base = mix(base, mix(vec3(lum), vec3(0.93), 0.35), 0.45);
|
|
664
680
|
}
|
|
665
681
|
fragColor = vec4(base, 1.0);
|
|
666
|
-
}`,
|
|
682
|
+
}`,ty=`#version 300 es
|
|
667
683
|
precision highp float;
|
|
668
684
|
in vec2 position;
|
|
669
685
|
out vec2 vUv;
|
|
670
686
|
void main() {
|
|
671
687
|
vUv = position * 0.5 + 0.5;
|
|
672
688
|
gl_Position = vec4(position, 0.999, 1.0);
|
|
673
|
-
}`,
|
|
689
|
+
}`,ny=`#version 300 es
|
|
674
690
|
precision highp float;
|
|
675
691
|
in vec2 vUv;
|
|
676
692
|
uniform vec3 uTop;
|
|
677
693
|
uniform vec3 uBottom;
|
|
694
|
+
uniform float uSky; // 1 for an open-air venue, see SceneModel.outdoor
|
|
695
|
+
uniform vec3 uZenith;
|
|
696
|
+
uniform vec3 uHorizon;
|
|
697
|
+
uniform mat4 uInvViewProj;
|
|
678
698
|
out vec4 fragColor;
|
|
679
699
|
void main() {
|
|
680
700
|
vec3 col = mix(uBottom, uTop, vUv.y);
|
|
681
701
|
vec2 c = vUv - 0.5;
|
|
682
702
|
float vig = 1.0 - dot(c, c) * 0.16; // soft vignette
|
|
683
|
-
|
|
684
|
-
|
|
703
|
+
col *= vig;
|
|
704
|
+
// Above the horizon an open-air venue has a sky, not the chart's flat
|
|
705
|
+
// backdrop: from a seat, the stands used to meet a black void. Below the
|
|
706
|
+
// horizon (every overview) nothing changes.
|
|
707
|
+
if (uSky > 0.5) {
|
|
708
|
+
vec2 ndc = vUv * 2.0 - 1.0;
|
|
709
|
+
vec4 near = uInvViewProj * vec4(ndc, -1.0, 1.0);
|
|
710
|
+
vec4 far = uInvViewProj * vec4(ndc, 1.0, 1.0);
|
|
711
|
+
vec3 dir = normalize(far.xyz / far.w - near.xyz / near.w);
|
|
712
|
+
float up = dir.y;
|
|
713
|
+
vec3 sky = mix(uHorizon, uZenith, pow(clamp(up, 0.0, 1.0), 0.45));
|
|
714
|
+
// Reaching a little below the horizon too: from a low seat the far stands
|
|
715
|
+
// top out right at it, and a sliver of backdrop showed as a dark band.
|
|
716
|
+
// Every overview looks further down than this (at least ~24 degrees).
|
|
717
|
+
col = mix(col, sky, smoothstep(-0.22, 0.03, up));
|
|
718
|
+
}
|
|
719
|
+
fragColor = vec4(col, 1.0);
|
|
720
|
+
}`,oy=`#version 300 es
|
|
685
721
|
precision highp float;
|
|
686
722
|
in float surface;
|
|
687
723
|
in float iYaw;
|
|
@@ -709,8 +745,8 @@ out float vPhysicalSeat;
|
|
|
709
745
|
out float vDotWeight;
|
|
710
746
|
out float vHidden;
|
|
711
747
|
flat out vec3 vPick;
|
|
712
|
-
${
|
|
713
|
-
${
|
|
748
|
+
${Io}
|
|
749
|
+
${dl}
|
|
714
750
|
void main() {
|
|
715
751
|
int id = gl_InstanceID + 1; // 0 reserved for no-hit
|
|
716
752
|
vPick = vec3(float(id & 255), float((id >> 8) & 255), float((id >> 16) & 255)) / 255.0;
|
|
@@ -724,7 +760,7 @@ void main() {
|
|
|
724
760
|
vPhysicalSeat = iPhysicalSeat;
|
|
725
761
|
vHidden = (uFocusFloor > -0.5 && abs(iFloor - uFocusFloor) > 0.5) ? 1.0 : 0.0;
|
|
726
762
|
gl_Position = projectionMatrix * mv;
|
|
727
|
-
}`,
|
|
763
|
+
}`,ry=`#version 300 es
|
|
728
764
|
precision highp float;
|
|
729
765
|
in vec2 vUv;
|
|
730
766
|
in float vPhysicalSeat;
|
|
@@ -732,7 +768,7 @@ in float vDotWeight;
|
|
|
732
768
|
in float vHidden;
|
|
733
769
|
flat in vec3 vPick;
|
|
734
770
|
out vec4 fragColor;
|
|
735
|
-
${
|
|
771
|
+
${hl}
|
|
736
772
|
void main() {
|
|
737
773
|
if (vHidden > 0.5) discard;
|
|
738
774
|
if (vDotWeight <= 0.99) discard;
|
|
@@ -740,7 +776,7 @@ void main() {
|
|
|
740
776
|
float d = seatSilhouette(vUv, vPhysicalSeat);
|
|
741
777
|
if (d > 1.0) discard; // hit-mask matches chair/bay shape
|
|
742
778
|
fragColor = vec4(vPick, 1.0);
|
|
743
|
-
}`,
|
|
779
|
+
}`,iy=`#version 300 es
|
|
744
780
|
precision highp float;
|
|
745
781
|
in vec3 position;
|
|
746
782
|
in float part;
|
|
@@ -762,9 +798,9 @@ uniform float uFocusFloor;
|
|
|
762
798
|
flat out vec3 vPick;
|
|
763
799
|
out float vChairWeight;
|
|
764
800
|
out float vHidden;
|
|
765
|
-
${
|
|
766
|
-
${
|
|
767
|
-
${
|
|
801
|
+
${Io}
|
|
802
|
+
${ml}
|
|
803
|
+
${Qr}
|
|
768
804
|
void main() {
|
|
769
805
|
int id = int(iPickIndex + 0.5); // already global index + 1
|
|
770
806
|
vPick = vec3(float(id & 255), float((id >> 8) & 255), float((id >> 16) & 255)) / 255.0;
|
|
@@ -798,7 +834,7 @@ void main() {
|
|
|
798
834
|
float c = cos(iYaw), s = sin(iYaw);
|
|
799
835
|
vec3 rp = vec3(p.x * c + p.z * s, p.y, -p.x * s + p.z * c);
|
|
800
836
|
gl_Position = projectionMatrix * modelViewMatrix * vec4(iOffset + rp, 1.0);
|
|
801
|
-
}`,
|
|
837
|
+
}`,ay=`#version 300 es
|
|
802
838
|
precision highp float;
|
|
803
839
|
flat in vec3 vPick;
|
|
804
840
|
in float vHidden;
|
|
@@ -808,34 +844,54 @@ void main() {
|
|
|
808
844
|
if (vHidden > 0.5) discard;
|
|
809
845
|
if (vChairWeight < 0.01) discard;
|
|
810
846
|
fragColor = vec4(vPick, 1.0);
|
|
811
|
-
}`,
|
|
847
|
+
}`,sy=`#version 300 es
|
|
812
848
|
precision highp float;
|
|
813
849
|
in vec3 position;
|
|
850
|
+
in vec3 normal;
|
|
814
851
|
in float floorIndex;
|
|
852
|
+
in float materialIndex;
|
|
853
|
+
uniform mat4 modelMatrix;
|
|
815
854
|
uniform mat4 modelViewMatrix;
|
|
816
855
|
uniform mat4 projectionMatrix;
|
|
817
856
|
uniform float uFocusFloor;
|
|
818
857
|
out float vHidden;
|
|
858
|
+
out float vMaterial;
|
|
859
|
+
out vec3 vNormalWorld;
|
|
860
|
+
out vec3 vPosWorld;
|
|
819
861
|
void main() {
|
|
820
862
|
vHidden = (uFocusFloor > -0.5 && abs(floorIndex - uFocusFloor) > 0.5) ? 1.0 : 0.0;
|
|
863
|
+
vMaterial = materialIndex;
|
|
864
|
+
vNormalWorld = mat3(modelMatrix) * normal;
|
|
865
|
+
vPosWorld = (modelMatrix * vec4(position, 1.0)).xyz;
|
|
821
866
|
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
822
|
-
}`,
|
|
867
|
+
}`,cy=`#version 300 es
|
|
823
868
|
precision highp float;
|
|
824
869
|
in float vHidden;
|
|
870
|
+
in float vMaterial;
|
|
871
|
+
in vec3 vNormalWorld;
|
|
872
|
+
in vec3 vPosWorld;
|
|
873
|
+
uniform vec3 cameraPosition;
|
|
874
|
+
uniform vec2 uRoomCentre;
|
|
825
875
|
out vec4 fragColor;
|
|
876
|
+
${fl}
|
|
826
877
|
void main() {
|
|
827
878
|
if (vHidden > 0.5) discard;
|
|
879
|
+
if (roomWallHidden(vMaterial, vNormalWorld, vPosWorld, cameraPosition, uRoomCentre)) discard;
|
|
828
880
|
fragColor = vec4(0.0, 0.0, 0.0, 1.0);
|
|
829
|
-
}`;function
|
|
881
|
+
}`;function pl(e){return new vt.Program(e,{vertex:oy,fragment:ry,transparent:!1,depthTest:!0,depthWrite:!0,cullFace:!1,uniforms:{uSeatRadius:{value:at},uSeatScale:{value:1},uMinPixels:{value:Vt},uPixelToWorld:{value:.002},uChairFull:{value:hn},uChairNone:{value:Gt},uFocusFloor:{value:-1}}})}function bl(e){return new vt.Program(e,{vertex:iy,fragment:ay,transparent:!1,depthTest:!0,depthWrite:!0,cullFace:!1,uniforms:{uChairFull:{value:hn},uChairNone:{value:Gt},uBackRake:{value:un},uBackBase:{value:ft},uFocusFloor:{value:-1}}})}function yl(e){return new vt.Program(e,{vertex:sy,fragment:cy,transparent:!1,depthTest:!0,depthWrite:!0,cullFace:!1,uniforms:{uFocusFloor:{value:-1},uRoomCentre:{value:new Float32Array([0,0])}}})}function gl(e,t=.78,n=[.63,.66,.65]){return new vt.Program(e,{vertex:qb,fragment:$b,cullFace:!1,depthTest:!0,depthWrite:!0,uniforms:{uKeyDir:{value:new Float32Array([-.48,.78,.4])},uFocusFloor:{value:-1},uStructureDetail:{value:0},uDeckColor:{value:new Float32Array(n)},uSectionFilter:{value:0},uRoughness:{value:t},uRoomCentre:{value:new Float32Array([0,0])}}})}function xl(e){return new vt.Program(e,{vertex:Zb,fragment:Qb,transparent:!0,depthTest:!0,depthWrite:!0,cullFace:!1,uniforms:{uKeyDir:{value:new Float32Array([-.48,.78,.4])},uSeatRadius:{value:at},uSeatScale:{value:1},uMinPixels:{value:Vt},uPixelToWorld:{value:.002},uSeatFade:{value:0},uSeatDetail:{value:0},uFocusFloor:{value:-1},uFocusSection:{value:-1},uFadeColor:{value:new Float32Array([.32,.37,.43])},uChairFull:{value:hn},uChairNone:{value:Gt}}})}function vl(e,t=.78){return new vt.Program(e,{vertex:Jb,fragment:ey,transparent:!1,depthTest:!0,depthWrite:!0,cullFace:!1,uniforms:{uKeyDir:{value:new Float32Array([-.48,.78,.4])},uFadeColor:{value:new Float32Array([.32,.37,.43])},uChairFull:{value:hn},uChairNone:{value:Gt},uBackRake:{value:un},uBackBase:{value:ft},uFocusFloor:{value:-1},uFocusSection:{value:-1},uRoughness:{value:t}}})}function Ml(e,t,n,o){return new vt.Program(e,{vertex:ty,fragment:ny,depthTest:!1,depthWrite:!1,cullFace:!1,uniforms:{uTop:{value:new Float32Array(t)},uBottom:{value:new Float32Array(n)},uSky:{value:o?1:0},uZenith:{value:new Float32Array(o?.zenith??[0,0,0])},uHorizon:{value:new Float32Array(o?.horizon??[0,0,0])},uInvViewProj:{value:new Float32Array(16)}}})}var je=require("ogl");function Sl(e,t,n){let r=Math.max(3,n.radius*1.04),[i,a,s]=n.center,c=new je.Camera(e,{left:-r,right:r,bottom:-r,top:r,near:.1,far:r*6});c.position.set(i-r*1.44,a+r*2.34,s+r*1.2),c.lookAt([i,a,s]);let l=new je.RenderTarget(e,{width:1024,height:1024,depthTexture:!0,minFilter:e.NEAREST,magFilter:e.NEAREST}),u=new je.Program(e,{cullFace:!1,vertex:`#version 300 es
|
|
830
882
|
in vec3 position;
|
|
883
|
+
in float materialIndex;
|
|
831
884
|
uniform mat4 modelViewMatrix;
|
|
832
885
|
uniform mat4 projectionMatrix;
|
|
833
|
-
|
|
886
|
+
out float vMaterial;
|
|
887
|
+
void main() { vMaterial = materialIndex; gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); }`,fragment:`#version 300 es
|
|
834
888
|
precision highp float;
|
|
889
|
+
in float vMaterial;
|
|
835
890
|
out vec4 fragColor;
|
|
836
891
|
void main() {
|
|
892
|
+
if (abs(vMaterial - 6.0) < 0.5) discard;
|
|
837
893
|
fragColor = vec4(1.0);
|
|
838
|
-
}`}),m=new
|
|
894
|
+
}`}),m=new je.Transform,h=new je.Mesh(e,{geometry:t,program:u});h.frustumCulled=!1,h.setParent(m);let d=e.getParameter(e.COLOR_CLEAR_VALUE),f=e.isEnabled(e.DITHER);try{e.disable(e.DITHER),e.clearColor(1,1,1,1),e.renderer.render({scene:m,camera:c,target:l})}finally{f&&e.enable(e.DITHER),e.clearColor(d[0],d[1],d[2],d[3]),u.remove()}let p=new je.Mat4().multiply(c.projectionMatrix,c.viewMatrix);return{texture:l.depthTexture,matrix:p,dispose(){for(let b of l.textures)e.deleteTexture(b.texture);e.deleteTexture(l.depthTexture.texture),e.deleteFramebuffer(l.buffer),l.depthBuffer&&e.deleteRenderbuffer(l.depthBuffer)}}}var ly=.65,uy=new Set(["dimmed","sold"]),my=new Set(["dimmed","sold","held"]);function wl(e,t,n){let o=new Set,r=!1,i=Ce.indexOf("dimmed"),a=!1;for(let c=0;c<n.length;c+=1)if(n[c]===i){a=!0;break}let s=a?my:uy;for(let c of e){let l=t.get(c.sectionId);if(!l||!l.length){o.add(c.sectionId);continue}let u=!1;for(let m of l){let h=Ce[n[m]]??"available";if(!s.has(h)){u=!0;break}}u?o.add(c.sectionId):r=!0}return{lit:o,anyUnlit:r}}function Pl(e,t,n,o,r,i){let a=[];for(let s of e){let c=r===null||r.has(s.sectionId);if(o.get(s.sectionId)===c)continue;o.set(s.sectionId,c);let l=(s.start+s.count)*3;for(let u=s.start*3;u<l;u++)t[u]=c?n[u]:n[u]+(i[u%3]-n[u])*ly;a.push(s)}return a}var Il=Ce.indexOf("selected");function fy(e,t){return[0,1,2].map(n=>e[n]*.15+.75+t[n]*.1)}function Rl(e,t,n,o,r,i){for(let a=n;a<n+o;a++){let s=i&&t[a]===0,c=i&&t[a]===Il?fy([i[a*3],i[a*3+1],i[a*3+2]],r[Il]??r[0]):s?null:r[t[a]]??r[0];e[a*3]=c?c[0]:i[a*3],e[a*3+1]=c?c[1]:i[a*3+1],e[a*3+2]=c?c[2]:i[a*3+2]}}var dy=new Float32Array([-1,-1,3,-1,-1,3]);function Al(e,t){let n=new Ie.Transform,o=new Ie.Transform,r=new Ie.Geometry(e,{position:{size:2,data:dy}}),i=Ml(e,t.theme.background.top,t.theme.background.bottom,t.outdoor?t.theme.sky:null),a=new Ie.Mesh(e,{geometry:r,program:i});a.frustumCulled=!1,a.setParent(o);let s=new Ie.Geometry(e,{position:{size:3,data:t.solids.position},normal:{size:3,data:t.solids.normal},color:{size:3,data:t.solids.color},floorIndex:{size:1,data:t.solids.floor},materialIndex:{size:1,data:t.solids.material}}),c=Sl(e,s,t.renderBounds),l=gl(e,t.theme.materials.roughness,t.theme.structure.tierTop);l.uniforms.tVenueShadow={value:c.texture},l.uniforms.uShadowMatrix={value:c.matrix},t.room&&l.uniforms.uRoomCentre.value.set(t.room.centre);let u=new Ie.Mesh(e,{geometry:s,program:l});u.frustumCulled=!1,u.setParent(n);let m=xl(e),h=new Float32Array(t.seats.count*3),d=Ce.map(K=>t.theme.seatStates[K]),f=t.seats.iCategory.slice();for(let K=0;K<t.seats.count;K++){if(t.seats.iPhysicalSeat[K]<.5)continue;let oe=t.theme.materials.seat??Vi([f[K*3],f[K*3+1],f[K*3+2]]);f.set(oe,K*3)}Rl(h,t.seats.iState,0,t.seats.count,d,f);let p=Fi(),b=new Uint8Array(t.seats.count),y=new Ie.Geometry(e,{position:{size:3,data:p.position},normal:{size:3,data:p.normal},uv:{size:2,data:p.uv},index:{size:1,data:p.index},surface:{size:1,data:p.surface},iYaw:{size:1,data:t.seats.iYaw,instanced:1},iChairWidth:{size:1,data:t.seats.iChairWidth,instanced:1},iGlyph:{size:1,data:t.seats.iGlyph,instanced:1},iOffset:{size:3,data:t.seats.iPosition,instanced:1},iColor:{size:3,data:h,instanced:1},iMaxRadius:{size:1,data:t.seats.iMaxRadius,instanced:1},iHasChair:{size:1,data:b,type:e.UNSIGNED_BYTE,usage:e.DYNAMIC_DRAW,instanced:1},iPhysicalSeat:{size:1,data:t.seats.iPhysicalSeat,instanced:1},iRing:{size:3,data:t.seats.iRing,instanced:1},iFloor:{size:1,data:t.seats.iFloor,instanced:1},iSection:{size:1,data:t.seats.iSection,instanced:1}}),g=new Ie.Mesh(e,{geometry:y,program:m});g.frustumCulled=!1,t.seats.count>0&&g.setParent(n);let M=y.attributes.iColor,P=t.solids.color.slice(),I=t.theme.structure.ground,S=new Map(t.sectionSolidRanges.map(K=>[K.sectionId,!0])),x=Ti(),v=vl(e,t.theme.materials.roughness),w=Wn,R=new Float32Array(w*3),T=new Float32Array(w*3),O=new Float32Array(w),C=new Float32Array(w),A=new Float32Array(w),_=new Float32Array(w*3),L=new Float32Array(w),N=new Float32Array(w),k=new Float32Array(w),F=new Float32Array(w),H=new Float32Array(w),B=new Ie.Geometry(e,{position:{size:3,data:x.position},normal:{size:3,data:x.normal},part:{size:1,data:x.part},index:{data:x.index},iOffset:{size:3,data:R,instanced:1},iColor:{size:3,data:T,instanced:1},iRadius:{size:1,data:O,instanced:1},iYaw:{size:1,data:C,instanced:1},iGlyph:{size:1,data:A,instanced:1},iRing:{size:3,data:_,instanced:1},iFloor:{size:1,data:L,instanced:1},iSection:{size:1,data:N,instanced:1},iPhysicalSeat:{size:1,data:k,instanced:1},iSeed:{size:1,data:H,instanced:1},iPickIndex:{size:1,data:F,instanced:1}}),D=new Ie.Mesh(e,{geometry:B,program:v});D.frustumCulled=!1;let G=0,j=!1,V=!1,z=null,q=null,$=null,re=new Int32Array(0),Q=()=>{let K=t.seats;for(let oe=0;oe<G;oe++){let ee=re[oe];H[oe]=fa(K.iState[ee],ee),T[oe*3]=h[ee*3],T[oe*3+1]=h[ee*3+1],T[oe*3+2]=h[ee*3+2]}B.attributes.iColor.needsUpdate=!0,B.attributes.iSeed.needsUpdate=!0},W={main:n,background:o,backgroundProgram:i,seatProgram:m,solidProgram:l,chairProgram:v,seatGeometry:y,chairGeometry:B,solidGeometry:s,drawCalls:3,setNearSeats(K,oe){let ee=Math.min(oe,w,K.length);if(ul(b,K,ee),y.attributes.iHasChair.needsUpdate=!0,re=K,G=ee,ee===0){D.parent&&D.setParent(null),B.instancedCount=0,W.drawCalls=3+(j?1:0);return}let le=t.seats;for(let J=0;J<ee;J++){let ce=K[J];R[J*3]=le.iPosition[ce*3],R[J*3+1]=le.iPosition[ce*3+1],R[J*3+2]=le.iPosition[ce*3+2],O[J]=le.iChairWidth[ce],C[J]=le.iYaw[ce],A[J]=le.iGlyph[ce],_[J*3]=le.iRing[ce*3],_[J*3+1]=le.iRing[ce*3+1],_[J*3+2]=le.iRing[ce*3+2],L[J]=le.iFloor[ce],N[J]=le.iSection[ce],k[J]=le.iPhysicalSeat[ce],F[J]=ce+1}Q(),B.attributes.iOffset.needsUpdate=!0,B.attributes.iRadius.needsUpdate=!0,B.attributes.iYaw.needsUpdate=!0,B.attributes.iGlyph.needsUpdate=!0,B.attributes.iRing.needsUpdate=!0,B.attributes.iFloor.needsUpdate=!0,B.attributes.iSection.needsUpdate=!0,B.attributes.iPhysicalSeat.needsUpdate=!0,B.attributes.iSeed.needsUpdate=!0,B.attributes.iPickIndex.needsUpdate=!0,B.instancedCount=ee,D.parent||D.setParent(n),W.drawCalls=4+(j?1:0)},nearSeatCount(){return G},setSectionShellLit(K){l.uniforms.uSectionFilter.value=K===null?0:1;let oe=Pl(t.sectionSolidRanges,t.solids.color,P,S,K,I);if(!oe.length)return;let ee=s.attributes.color,le=ee.buffer;if(!le){ee.needsUpdate=!0;return}e.bindBuffer(e.ARRAY_BUFFER,le);for(let J of oe){let ce=t.solids.color.subarray(J.start*3,(J.start+J.count)*3);e.bufferSubData(e.ARRAY_BUFFER,J.start*3*Float32Array.BYTES_PER_ELEMENT,ce)}},uploadSeatStateRuns(K){if(!K.length)return;G&&Q();for(let ee of K)Rl(h,t.seats.iState,ee.start,ee.length,d,f);let oe=M.buffer;if(!oe){M.needsUpdate=!0;return}e.bindBuffer(e.ARRAY_BUFFER,oe);for(let ee of K){let le=h.subarray(ee.start*3,(ee.start+ee.length)*3);e.bufferSubData(e.ARRAY_BUFFER,ee.start*3*Float32Array.BYTES_PER_ELEMENT,le)}},dispose(){V=!0,c.dispose(),r.remove(),i.remove(),s.remove(),l.remove(),y.remove(),m.remove(),B.remove(),v.remove(),z?.remove(),q?.remove(),$?.texture&&e.deleteTexture($.texture)}},Y=t.productionElements.find(K=>K.contentImageUrl&&K.contentPlane);if(Y?.contentImageUrl&&Y.contentPlane?.length===4&&typeof Image<"u"){let K=new Image;K.crossOrigin="anonymous",K.onload=()=>{if(V)return;let oe=Y.contentPlane;z=new Ie.Geometry(e,{position:{size:3,data:new Float32Array(oe.flat())},uv:{size:2,data:new Float32Array([0,1,1,1,0,0,1,0])},floorIndex:{size:1,data:new Float32Array(4).fill(Y.floorIndex)},index:{data:new Uint16Array([0,1,2,2,1,3])}}),$=new Ie.Texture(e,{image:K,generateMipmaps:!0,wrapS:e.CLAMP_TO_EDGE,wrapT:e.CLAMP_TO_EDGE,flipY:!1}),q=new Ie.Program(e,{vertex:`#version 300 es
|
|
839
895
|
precision highp float;
|
|
840
896
|
in vec3 position; in vec2 uv; in float floorIndex;
|
|
841
897
|
uniform mat4 modelViewMatrix; uniform mat4 projectionMatrix; uniform float uFocusFloor;
|
|
@@ -843,4 +899,4 @@ void main() {
|
|
|
843
899
|
void main(){ vUv=uv; vDim=(uFocusFloor < -0.5 || abs(floorIndex-uFocusFloor)<0.5)?0.0:1.0; gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0); }`,fragment:`#version 300 es
|
|
844
900
|
precision highp float;
|
|
845
901
|
in vec2 vUv; in float vDim; uniform sampler2D uImage; out vec4 fragColor;
|
|
846
|
-
void main(){ if(vDim>0.5) discard; vec4 c=texture(uImage,vUv); if(c.a<0.01) discard; fragColor=c; }`,uniforms:{uImage:{value:J},uFocusFloor:{value:-1}},transparent:!1,depthTest:!0,depthWrite:!0,cullFace:!1});let ee=new Se.Mesh(e,{geometry:z,program:K});ee.frustumCulled=!1,ee.setParent(n),Q.screenProgram=K,j=!0,Q.drawCalls=3+(G?1:0)+1},$.src=te.contentImageUrl}return Q}var Je=require("ogl");function gb(e,t,n){let o=e+(t<<8)+(n<<16);return o===0?-1:o-1}function ol(e,t,n,o,r,i){let a=-1,s=1/0;for(let c=0;c<n;c++)for(let u=0;u<t;u++){let l=(c*t+u)*4,m=gb(e[l],e[l+1],e[l+2]);if(m<0||m>=i)continue;let h=u-o,d=c-r,f=h*h+d*d;f<s&&(s=f,a=m)}return a}function rl(e,t,n,o,r,i){let a=e-n.left,s=t-n.top,c=Math.round(a*o),u=Math.round((n.height-s)*o);return{x:Math.max(0,Math.min(r-1,c)),y:Math.max(0,Math.min(i-1,u))}}var xb=["uSeatRadius","uSeatScale","uMinPixels","uPixelToWorld"],So=class{constructor(t,n,o,r,i){this.seatScene=new Je.Transform;this.chairScene=new Je.Transform;this.solidScene=new Je.Transform;this.target=null;this.restoreClear=[0,0,0];this.renderer=t,this.gl=t.gl,this.maxIndex=i,this.seatProg=jc(this.gl),this.chairProg=Xc(this.gl),this.depthProg=Wc(this.gl);let a=new Je.Mesh(this.gl,{geometry:n,program:this.seatProg});a.frustumCulled=!1,a.setParent(this.seatScene);let s=new Je.Mesh(this.gl,{geometry:o,program:this.chairProg});s.frustumCulled=!1,s.setParent(this.chairScene);let c=new Je.Mesh(this.gl,{geometry:r,program:this.depthProg});c.frustumCulled=!1,c.setParent(this.solidScene)}setRestoreClear(t){this.restoreClear=[t[0],t[1],t[2]]}syncFromSeatProgram(t){for(let o of xb)this.seatProg.uniforms[o].value=t.uniforms[o].value;let n=t.uniforms.uFocusFloor.value;this.seatProg.uniforms.uFocusFloor.value=n,this.chairProg.uniforms.uFocusFloor.value=n,this.depthProg.uniforms.uFocusFloor.value=n}ensureTarget(){let t=this.gl.drawingBufferWidth,n=this.gl.drawingBufferHeight;return this.target&&(this.target.width!==t||this.target.height!==n)&&this.destroyTarget(),this.target||(this.target=new Je.RenderTarget(this.gl,{width:t,height:n,depth:!0})),this.target}destroyTarget(){if(!this.target)return;let t=this.gl;this.target.buffer&&t.deleteFramebuffer(this.target.buffer);for(let n of this.target.textures??[])n.texture&&t.deleteTexture(n.texture);this.target.depthBuffer&&t.deleteRenderbuffer(this.target.depthBuffer),this.target=null}pick(t,n,o,r){let i=this.gl,a=this.ensureTarget(),s=i.drawingBufferWidth,c=i.drawingBufferHeight,u=Math.max(0,n-r),l=Math.max(0,o-r),m=Math.max(1,Math.min(s,n+r+1)-u),h=Math.max(1,Math.min(c,o+r+1)-l);i.enable(i.SCISSOR_TEST),i.scissor(u,l,m,h);let[d,f,p]=this.restoreClear;i.clearColor(0,0,0,1),this.renderer.render({scene:this.solidScene,camera:t,target:a,clear:!0}),this.renderer.render({scene:this.seatScene,camera:t,target:a,clear:!1}),this.renderer.render({scene:this.chairScene,camera:t,target:a,clear:!1}),i.clearColor(d,f,p,1),i.disable(i.SCISSOR_TEST);let b=new Uint8Array(m*h*4);return this.renderer.bindFramebuffer(a),i.readPixels(u,l,m,h,i.RGBA,i.UNSIGNED_BYTE,b),this.renderer.bindFramebuffer(),ol(b,m,h,n-u,o-l,this.maxIndex)}dispose(){this.destroyTarget(),this.seatProg.remove(),this.chairProg.remove(),this.depthProg.remove()}};function il(e,t){let n=[];for(let o of t)e.has(o.seatId)?e.set(o.seatId,ln(o.state)):n.push(o);return n}function al(e,t,n){let o=new Set;for(let a of t)(e.has(a)||n(a)!==void 0)&&o.add(a);let r=new Map(e),i=[];for(let[a,s]of e)o.has(a)||(i.push({seatId:a,state:Re[s]??"available"}),r.delete(a));for(let a of o){if(r.has(a))continue;let s=n(a);s!==void 0&&(r.set(a,s),i.push({seatId:a,state:"selected"}))}return{updates:i,next:r}}var vt=require("ogl");function vb(e,t){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function sl(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2]]}function Mb(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function cl(e){let t=Math.hypot(e[0],e[1],e[2]);return t>1e-6?[e[0]/t,e[1]/t,e[2]/t]:[0,0,0]}function zr(e){let t=Math.max(0,Math.min(1,e));return t*t*t*(t*(t*6-15)+10)}function Ur(e,t){return Math.max(0,Math.min(1,e+t))}function ll(e,t){let n=e.length;if(n===0)return[0,0,0];if(n===1)return[...e[0]];let o=Math.max(0,Math.min(1,t)),r=n-1,i=Math.floor(o*r);i>=r&&(i=r-1);let a=o*r-i,s=e[Math.max(0,i-1)],c=e[i],u=e[i+1],l=e[Math.min(n-1,i+2)],m=a*a,h=m*a,d=[0,0,0];for(let f=0;f<3;f++)d[f]=.5*(2*c[f]+(-s[f]+u[f])*a+(2*s[f]-5*c[f]+4*u[f]-l[f])*m+(-s[f]+3*c[f]-3*u[f]+l[f])*h);return d}function jr(e,t,n,o,r){let i=cl(vb(t,n));i[0]===0&&i[1]===0&&i[2]===0&&(i=[0,0,1]);let a=sl(sl(t,Mb(i,2.5)),[0,1.5,0]),s=[t[0]-o[0],0,t[2]-o[2]],c=cl(s);c[0]===0&&c[2]===0&&(c=[i[0],0,i[2]]);let u=Math.max(1,r),l=[o[0]+c[0]*u*1.3,o[1]+u*.75,o[2]+c[2]*u*1.3];return{waypoints:[e,l,a],finalPos:a}}function Xr(e,t,n=35,o=28){let r=zr(t),i=ll(e,r),a=zr(Math.max(0,Math.min(1,(t-.66)/.34)));return{pos:i,fov:n+(o-n)*a,eased:r}}function dl(e,t,n){let o=e.position.clone(),r=new vt.Quat().copy(e.quaternion);e.position.set(t[0],t[1],t[2]),e.lookAt(new vt.Vec3(n[0],n[1],n[2]));let i=new vt.Quat().copy(e.quaternion);return e.position.copy(o),e.quaternion.copy(r),i}var wo=class{constructor(t){this.active=!1;this.waypoints=[];this.startQuat=new vt.Quat;this.endQuat=new vt.Quat;this.outQuat=new vt.Quat;this.startTime=0;this.duration=2500;this.endFov=28;this.resolveFn=null;this.camera=t}start(t,n,o,r=2500,i=28){return this.settle(),this.waypoints=t,this.startQuat.copy(n),this.endQuat.copy(o),this.duration=r,this.endFov=i,this.startTime=performance.now(),this.active=!0,new Promise(a=>{this.resolveFn=a})}update(t){if(!this.active)return!1;let n=Math.min(1,(t-this.startTime)/this.duration),{pos:o,fov:r,eased:i}=Xr(this.waypoints,n,35,this.endFov);return this.camera.position.set(o[0],o[1],o[2]),this.outQuat.copy(this.startQuat).slerp(this.endQuat,Ur(i,.15)),this.camera.quaternion.copy(this.outQuat),this.camera.fov=r,this.camera.updateProjectionMatrix(),n>=1?(this.settle(),!1):!0}cancel(){this.settle()}settle(){this.active=!1;let t=this.resolveFn;this.resolveFn=null,t&&t()}};var hl=Xo,Sb=.12,wb=.25,Pb=1.5;function pl(e,t,n=0,o,r){let i=[t.x*C,n+Pb,t.y*C],a=r?[r[0],r[1],r[2]]:i,s=e[1],c=Number.isFinite(s)?s+hl:Number.isFinite(o)?n+o:n+hl,u=i[0]-e[0],l=i[2]-e[2],m=Math.hypot(u,l),h=m>.001?Math.min(Sb,m*wb):0,d=m>.001?u/m:0,f=m>.001?l/m:0;return{eye:[e[0]+d*h,c,e[2]+f*h],focal:a}}var Mt=Math.PI/180,Ib=45,Wr=80,Po=70,Rb=1,Ab=.99;function Cb(e,t){if(!(e<Rb))return Wr;if(!(Number.isFinite(t)&&t>0))return Po;let n=2*Math.atan(t/(2*Io*Ab)/Math.max(.05,e))/Mt;return Math.max(Po,Math.min(Wr,n))}var Eb=.25,Io=1,_b=.25,Tb=12*Mt,kb=.2,Lb=1.5,bl=.8,yl=6,wl=1.9,Fb=2/3,Db=.12,Ob=.9,Bb=1.2,Nb=2,Pl=.05,Vb=6;function Il(e,t,n=0){if(!e.length)return{min:[t[0]-6,n,t[2]-6],max:[t[0]+6,Math.max(n+bl,t[1]),t[2]+6]};let o=1/0,r=-1/0,i=1/0,a=-1/0,s=n;for(let f of e)o=Math.min(o,f.cx-f.halfX),r=Math.max(r,f.cx+f.halfX),i=Math.min(i,f.cz-f.halfZ),a=Math.max(a,f.cz+f.halfZ),s=Math.max(s,f.y);let c=r-o,u=a-i,l=Math.max(c,Math.min(u,yl))/2,m=Math.max(u,Math.min(c,yl))/2,h=(o+r)/2,d=(i+a)/2;return{min:[h-l,n,d-m],max:[h+l,Math.max(n+bl,s),d+m]}}function Gb(e){return{min:[e.min[0],e.min[1],e.min[2]],max:[e.max[0],e.max[1]+wl,e.max[2]]}}function Yr(e){let t=e.max[1];return[(e.min[0]+e.max[0])/2,Math.max(e.min[1]+Lb,t+kb,t+wl*Fb),(e.min[2]+e.max[2])/2]}function Rl(e,t){let n=e[0]-t[0],o=e[2]-t[2],r=Math.hypot(n,o);return r<.001?{x:0,z:1}:{x:n/r,z:o/r}}function gl(e,t,n){let o=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2],a=Math.hypot(o,r,i)||1;o/=a,r/=a,i/=a;let s=-i,c=o,u=Math.hypot(s,c);if(u<1e-6)return 1/0;s/=u,c/=u;let l=1/0,m=-1/0;for(let h=0;h<8;h++){let d=(h&1?n.max[0]:n.min[0])-e[0],f=(h&2?n.max[1]:n.min[1])-e[1],p=(h&4?n.max[2]:n.min[2])-e[2],b=Math.max(Pl,d*o+f*r+p*i),y=(d*s+p*c)/b;y<l&&(l=y),y>m&&(m=y)}return m-l}function xl(e,t,n){let o=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2],a=Math.hypot(o,r,i)||1;o/=a,r/=a,i/=a;let s=-i,c=o,u=Math.hypot(s,c);if(u<1e-6)return 1/0;s/=u,c/=u;let l=-c*r,m=c*o-s*i,h=s*r,d=1/0,f=-1/0;for(let p=0;p<8;p++){let b=(p&1?n.max[0]:n.min[0])-e[0],y=(p&2?n.max[1]:n.min[1])-e[1],g=(p&4?n.max[2]:n.min[2])-e[2],M=Math.max(Pl,b*o+y*r+g*i),v=(b*l+y*m+g*h)/M;v<d&&(d=v),v>f&&(f=v)}return f-d}function Ro(e,t){return Math.tan(e*Mt/2)*Math.max(.05,t)}function vl(e,t,n){let o=Cb(n,e),r=c=>Math.max(Ib,Math.min(o,c)),i=c=>2*Math.atan(c)/Mt,a=Number.isFinite(e)&&e>0?r(i(e/(2*Eb)/Math.max(.05,n))):o;if(!(Number.isFinite(t)&&t>0))return a;let s=Math.min(a,r(i(t/(2*Db))));return e/(2*Ro(s,n))>Io?a:s}function Al(e,t,n,o={}){let r=Yr(t),i=[e[0],e[1],e[2]],a=0,s=0,c=f=>{if(!(f>0))return;let p=Rl(i,r);i[0]+=p.x*f,i[2]+=p.z*f,s+=f},u=o.preserveEye?0:t.max[1]+_b-i[1];u>0&&(i[1]+=u,a=u,c(u/Math.tan(Tb)));let l=Gb(t),m=gl(i,r,t),h=vl(m,xl(i,r,l),n),d=m/(2*Ro(h,n));for(let f=0;!o.preserveEye&&f<Vb&&d>Io;f++){let p=Math.max(1,Math.hypot(i[0]-r[0],i[2]-r[2])),b=Number.isFinite(d)?d/Io:2;c(Math.min(60,p*(Math.min(4,b)-1)+.5)),m=gl(i,r,t),h=vl(m,xl(i,r,l),n),d=m/(2*Ro(h,n))}return{eye:i,focal:r,fov:h,raisedM:a,pulledBackM:s,stageFrameWidth:d}}function Hb(e,t,n){let o=Math.tan(t*Mt/2),r=Ro(t,n);return Math.max(1,e/Math.max(.05,Math.min(o,r)))}var zb=.7,Ml=.5,Ub=.8;function Sl(e,t,n){let o=[t[0]-e[0],t[1]-e[1],t[2]-e[2]],r=[n[0]-e[0],n[1]-e[1],n[2]-e[2]],i=o[0]*r[0]+o[1]*r[1]+o[2]*r[2],a=Math.hypot(o[0],o[1],o[2])*Math.hypot(r[0],r[1],r[2])||1;return Math.acos(Math.max(-1,Math.min(1,i/a)))/Mt}function jb(e,t,n){let o=u=>{let l=Math.hypot(u[0],u[1],u[2])||1;return[u[0]/l,u[1]/l,u[2]/l]},r=[t[0]-e[0],t[1]-e[1],t[2]-e[2]],i=Math.hypot(r[0],r[1],r[2]),a=o(r),s=o([n[0]-e[0],n[1]-e[1],n[2]-e[2]]),c=o([0,1,2].map(u=>a[u]*(1-Ml)+s[u]*Ml));return[e[0]+c[0]*i,e[1]+c[1]*i,e[2]+c[2]*i]}function Cl(e,t){let{aspect:n,venue:o}=t,r=e.focal,i=Rl(e.eye,r),a=p=>(p[0]-r[0])*i.x+(p[2]-r[2])*i.z,s=[{name:"seat",eye:e.eye,focal:r,fov:e.fov}],c=Nb*(t.rowDepthM??Ob),u=[e.eye[0]+i.x*c,e.eye[1]+Bb,e.eye[2]+i.z*c],l=[e.eye[0],e.eye[1]-zb,e.eye[2]],m=jb(u,r,l);s.push({name:"row",eye:u,focal:m,fov:Math.min(Wr,Math.max(e.fov,2*Math.max(Sl(u,m,l),Sl(u,m,r))/Ub))});let h=(p,b,y,g)=>{let M=Hb(y,e.fov,n)*1.08,v=M*Math.sin(g*Mt),R=Number.isFinite(t.seatingTopY)?t.seatingTopY+2:-1/0,P=Math.max(v,R-b[1]),x=M*Math.cos(g*Mt);return{name:p,eye:[b[0]+i.x*x,b[1]+P,b[2]+i.z*x],focal:b,fov:e.fov}};t.section&&t.section.radius>0&&s.push(h("section",t.section.center,t.section.radius,35)),s.push(h("venue",o.center,Math.max(1,o.radius),40));let d=[],f=-1/0;for(let p of s){let b=a(p.eye);d.length&&b<=f+.5||(d.push(p),f=b)}return d}var kl=require("ogl"),_n=Math.PI/180,Kr=320,El=70*_n,Xb=32*_n,Wb=24*_n,_l=.0026,Yb=.22,Kb=.006,qb=180,$b=900,Zb=1100,Qb=4,ke=(e,t,n)=>Math.max(t,Math.min(n,e)),Tl=e=>e<.5?4*e*e*e:1-Math.pow(-2*e+2,3)/2;function Ll(e){let{canvas:t,camera:n}=e,o=[],r=!1,i=0,a=0,s=0,c=0,u=0,l=0,m=Kr,h=null,d=()=>{h&&(clearTimeout(h),h=null)},f=!1,p=[0,0],b=0,y=!1,g=null,M=null,v=new Map,R=!1,P=0,x=0,S=0,w=0,I=()=>r&&o.length?o[ke(Math.round(i),0,o.length-1)].name:null,L=()=>{let F=I();F!==g&&(g=F,e.onStopChange?.(F))},O=()=>{if(!r||!o.length)return;let F=o[ke(Math.floor(i),0,o.length-1)],G=o[ke(Math.ceil(i),0,o.length-1)],j=ke(i-Math.floor(i),0,1),N=(le,re)=>le+(re-le)*j,z=[N(F.eye[0],G.eye[0]),N(F.eye[1],G.eye[1]),N(F.eye[2],G.eye[2])],K=[N(F.focal[0],G.focal[0]),N(F.focal[1],G.focal[1]),N(F.focal[2],G.focal[2])],J=K[0]-z[0],Y=K[1]-z[1],W=K[2]-z[2],Q=Math.hypot(J,Y,W)||1,te=Math.atan2(J,W),$=Math.asin(ke(Y/Q,-1,1)),ne=te+a,ee=ke($+s,-80*_n,80*_n),q=Math.cos(ee)*Q;J=Math.sin(ne)*q,Y=Math.sin(ee)*Q,W=Math.cos(ne)*q,n.position.set(z[0],z[1],z[2]),n.fov=N(F.fov,G.fov),n.updateProjectionMatrix(),n.lookAt(new kl.Vec3(z[0]+J,z[1]+Y,z[2]+W)),e.onApplied?.()},D=()=>{if(!r||!o.length)return;let F=ke(Math.round(i),0,o.length-1);if(e.reducedMotion()){f=!1,i=F,O(),L(),e.requestRender();return}if(Math.abs(F-i)<.001){f=!1,L();return}c=i,u=F,l=performance.now(),m=Kr,f=!0,e.requestRender()},A=F=>{!r||o.length<2||(d(),f=!1,i=ke(i+F,0,o.length-1),O(),L(),e.requestRender())},E=(F,G)=>{r&&(d(),f=!1,y=!1,a=ke(a-F*_l,-El,El),s=ke(s-G*_l,-Wb,Xb),O(),e.requestRender())},T=F=>{r&&(v.set(F.pointerId,{x:F.clientX,y:F.clientY}),v.size===1?(R=!0,w=0,P=F.clientX,x=F.clientY):v.size===2&&(R=!1,S=V()))},V=()=>{let F=[...v.values()];return F.length<2?0:Math.hypot(F[0].x-F[1].x,F[0].y-F[1].y)},_=F=>{if(!r||!v.has(F.pointerId))return;if(v.set(F.pointerId,{x:F.clientX,y:F.clientY}),v.size>=2){let N=V();S>0&&A((S-N)*Kb),S=N;return}if(!R)return;let G=F.clientX-P,j=F.clientY-x;P=F.clientX,x=F.clientY,w+=Math.abs(G)+Math.abs(j),!(w<=Qb)&&E(G,j)},k=F=>{v.delete(F.pointerId)&&(v.size<2&&(S=0),v.size===0&&(R=!1,D()))},H=F=>{if(!r)return;F.preventDefault();let G=F.deltaMode===1?16:F.deltaMode===2?100:1,j=ke(F.deltaY*G/100,-2,2);A(j*Yb),M&&clearTimeout(M),M=setTimeout(()=>{M=null,D()},qb)},B=()=>{d(),r&&(r=!1,f=!1,y=!1,o=[],v.clear(),R=!1,M&&(clearTimeout(M),M=null),g!==null&&(g=null,e.onStopChange?.(null)))};return t.addEventListener("pointerdown",T),t.addEventListener("pointermove",_),t.addEventListener("pointerup",k),t.addEventListener("pointercancel",k),t.addEventListener("wheel",H,{passive:!1}),{get active(){return r},enter(F,G=0){if(F.length<2){B();return}d(),o=F,r=!0,i=e.reducedMotion()?0:ke(G,0,F.length-1),i>0&&(h=setTimeout(()=>{h=null,r&&(c=i,u=0,l=performance.now(),m=Zb,f=!0,e.requestRender())},$b)),a=0,s=0,f=!1,y=!1,g=null,O(),L(),e.requestRender()},exit:B,recentre(){return r?Math.abs(a)<1e-4&&Math.abs(s)<1e-4?!0:e.reducedMotion()?(y=!1,a=0,s=0,O(),e.requestRender(),!0):(p=[a,s],b=performance.now(),y=!0,e.requestRender(),!0):!1},update(F){if(!r)return!1;let G=!1;if(y){let j=ke((F-b)/Kr,0,1),N=1-Tl(j);a=p[0]*N,s=p[1]*N,j>=1?(y=!1,a=0,s=0):G=!0}if(f){let j=ke((F-l)/m,0,1);i=c+(u-c)*Tl(j),j>=1?(f=!1,i=u,L()):G=!0}return O(),G},currentStop:I,dispose(){B(),t.removeEventListener("pointerdown",T),t.removeEventListener("pointermove",_),t.removeEventListener("pointerup",k),t.removeEventListener("pointercancel",k),t.removeEventListener("wheel",H)}}}function Fl(e){return e.flying?"cinematic":e.panoramaMounted?"panorama":e.seatViewActive?"seatView":"orbit"}var Qr=null;function Yl(){return Qr??=Promise.resolve().then(()=>(Wl(),Xl)).catch(e=>{throw Qr=null,e}),Qr}var Kl=()=>typeof performance<"u"&&performance.now?performance.now():Date.now(),Lo=class{constructor(t){this.orbitLatched=!1;this.panoramaOpenedAt=0;this.cb=t}emit(t,n){if(this.cb)try{this.cb(t,n)}catch{}}opened(t,n,o,r){this.emit("3d_opened",{seats:t,hasHeights:n,...o===void 0?{}:{buildMs:Math.round(o)},...r===void 0?{}:{prepSource:r}})}orbitEngaged(){this.orbitLatched||(this.orbitLatched=!0,this.emit("3d_orbit_engaged"))}seatPicked(t,n){this.emit("3d_seat_picked",{seatId:t,sectionId:n})}cinematicPlayed(t){this.emit("3d_cinematic_played",{durationMs:t,reducedMotion:!1})}cinematicSkipped(){this.emit("3d_cinematic_skipped",{reducedMotion:!0})}cinematicCancelled(){this.emit("3d_cinematic_cancelled")}panoramaOpened(){this.panoramaOpenedAt=Kl(),this.emit("3d_panorama_opened")}panoramaClosed(){let t=this.panoramaOpenedAt?Math.round(Kl()-this.panoramaOpenedAt):0;this.panoramaOpenedAt=0,this.emit("3d_panorama_closed",{viewMs:t})}panoramaFailed(t,n){this.emit("3d_panorama_failed",{seatId:t,phase:n})}panoramaFallback(t){this.emit("3d_panorama_fallback",{seatId:t})}contextLost(){this.emit("3d_context_lost")}contextRestored(){this.emit("3d_context_restored")}};function ql(e){let t=e.style.position;return getComputedStyle(e).position!=="static"?()=>{}:(e.style.position="relative",()=>{e.style.position==="relative"&&(e.style.position=t)})}function $l(e){let{container:t,model:n,opts:o,expandedSeatById:r,seatIdsByRow:i,isNarrow:a}=e,s=null,c=()=>{if(!s)return;let m=a();Object.assign(s.style,m?{left:"12px",right:"12px",bottom:"70px",transform:"none",justifyContent:"center"}:{left:"50%",right:"auto",bottom:"18px",transform:"translateX(-50%)",justifyContent:"initial"})},u=()=>{s?.remove(),s=null};return{show:(m,h,d=!1)=>{if(u(),e.isDisposed())return null;let f=document.createElement("div");f.setAttribute("role","group"),Object.assign(f.style,{position:"absolute",display:"flex",flexDirection:"column",alignItems:"center",gap:"6px",zIndex:"4"});let p=o.chrome?.caption!==!1,b=o.chrome?.seatStepper!==!1;if(!p&&!b)return null;let y=r.get(m),g=y?.sectionId?n.sections.find(I=>I.id===y.sectionId):void 0,M=y?.label??m;f.setAttribute("aria-label",`Explore views near ${g?.label?`${g.label}, `:""}seat ${M}`);let v=document.createElement("span");v.textContent=o.seatViewCaption?.(m)??["Live 3D seat view",g?.label,M].filter(Boolean).join(" \xB7 "),Object.assign(v.style,{maxWidth:"min(70vw, 560px)",padding:"5px 10px",borderRadius:"999px",overflow:"hidden",color:"#d9e3f5",background:"rgba(12,18,32,0.72)",font:"600 11px/1.2 inherit",textOverflow:"ellipsis",whiteSpace:"nowrap",backdropFilter:"blur(6px)"}),p&&f.appendChild(v);let R=document.createElement("div");Object.assign(R.style,{display:"flex",alignItems:"center",justifyContent:"center",gap:"6px"}),f.appendChild(R);let P=y?.rowId?i.get(y.rowId):void 0,x=P?.indexOf(m)??-1,S=x>=0?[P?.[x-1],P?.[x+1]]:[void 0,void 0],w=(I,L,O,D=!1)=>{let A=document.createElement("button");A.type="button",A.textContent=I,A.setAttribute("aria-label",L),Object.assign(A.style,{minHeight:"44px",padding:D?"10px 16px":"10px",borderRadius:"999px",background:"rgba(12,18,32,0.78)",color:"#eef1f8",border:"1px solid rgba(150,165,205,0.4)",backdropFilter:"blur(6px)",font:"600 13px/1 inherit",cursor:"pointer",whiteSpace:"nowrap"}),D||(A.style.minWidth="44px"),D&&(A.dataset.panoramaTrigger=""),A.addEventListener("click",O),R.appendChild(A)};if(b&&S[0]){let I=r.get(S[0])?.label??S[0];w("\u2039",`View previous seat ${I}`,()=>{e.flyToSeat(S[0])})}if(b&&o.getSeatView){let I=o.seatViewActionLabel?.(m)??"Open 360\xB0 panorama";w(d?`\u21BB Retry ${I}`:`\u25C9 ${I}`,`${d?"Retry":I} from seat ${M}`,()=>{if(e.isDisposed()||h!==e.flightGen()){u();return}u(),e.openPanorama(m,400,h)},!0)}if(b&&S[1]){let I=r.get(S[1])?.label??S[1];w("\u203A",`View next seat ${I}`,()=>{e.flyToSeat(S[1])})}return!R.childElementCount&&!p?null:(t.appendChild(f),s=f,c(),f)},remove:u,layout:c}}var dy={rotate:"Drag to rotate the venue",move:"Drag to move the venue",zoomIn:"Zoom in",zoomOut:"Zoom out",fitView:"Show whole venue"};function Zl(e){let{container:t,orbit:n,isNarrow:o}=e,r={...dy,...e.labels??{}},i=(M,v)=>{M.setAttribute("aria-label",v),M.title=v},a=document.createElement("div"),s=!1;a.className="sl-3d-navigation-controls",Object.assign(a.style,{position:"absolute",right:"14px",bottom:"14px",display:"flex",zIndex:"4",flexDirection:"column",alignItems:"flex-end",gap:"7px"});let c=document.createElement("div");c.setAttribute("role","group"),c.setAttribute("aria-label","3D drag mode"),Object.assign(c.style,{display:"flex",flexDirection:"column",gap:"6px",alignItems:"flex-end"});let u=document.createElement("div");u.setAttribute("role","group"),u.setAttribute("aria-label","3D view controls"),Object.assign(u.style,{display:"flex",flexDirection:"column",gap:"6px",alignItems:"flex-end"});let l=document.createElement("button");l.type="button",l.textContent="\u21BB",i(l,r.rotate);let m=document.createElement("button");m.type="button",m.textContent="\u2725",i(m,r.move);let h=document.createElement("button");h.type="button",h.textContent="\u2212",i(h,r.zoomOut);let d=document.createElement("button");d.type="button",d.textContent="+",i(d,r.zoomIn);for(let M of[l,m,h,d])M.className="sl-3d-icon-control",Object.assign(M.style,{width:"44px",minWidth:"44px",minHeight:"44px",padding:"9px",border:"1px solid rgba(150,165,205,0.35)",borderRadius:"999px",color:"#c9d4ea",background:"rgba(12,18,32,0.82)",font:"600 17px/1 inherit",backdropFilter:"blur(6px)",cursor:"pointer",whiteSpace:"nowrap"});c.append(l,m),u.append(d,h);let f=M=>{n.setPrimaryDragMode(M);let v=M==="orbit";l.setAttribute("aria-pressed",String(v)),m.setAttribute("aria-pressed",String(!v)),l.style.background=v?"rgba(96,110,150,0.68)":"rgba(12,18,32,0.82)",m.style.background=v?"rgba(12,18,32,0.82)":"rgba(96,110,150,0.68)",a.title=v?`${r.rotate} \xB7 ${r.move} with Shift`:`${r.move} \xB7 ${r.rotate} with Shift`};l.addEventListener("click",()=>f("orbit")),m.addEventListener("click",()=>f("pan"));let p=()=>{let{atMin:M,atMax:v}=n.dollyLimitState();d.disabled!==M&&(d.disabled=M),h.disabled!==v&&(h.disabled=v)};h.addEventListener("click",()=>{n.zoomBy(un),p()}),d.addEventListener("click",()=>{n.zoomBy(Bt),p()}),a.append(c,u),f("orbit"),t.appendChild(a);let b=e.enabled!==!1,y=()=>{let M=o();a.style.display=s||!b?"none":"flex",a.style.right=M?"12px":"14px",a.style.bottom=M?"calc(env(safe-area-inset-bottom, 0px) + 76px)":"14px",c.style.display=M?"none":"flex",d.style.display=M?"none":"",h.style.display=M?"none":""};return y(),{element:a,utilityControls:u,setNavigationMode:f,syncZoomLimits:p,setSeatViewLocked:M=>{s=M,n.setInteractionEnabled(!M),y()},seatViewLocked:()=>s,layout:y}}var hy=12;function py(e,t){if(!e)return!1;let n=e.x-t[0],o=e.y-t[1],r=e.z-t[2];return Math.hypot(n,o,r)>hy}var by=.5,yy=12;function gy(e,t,n){return!(e>0)||!(n>0)?0:by*n/(2*e*Math.tan(t*Math.PI/360))}function Ql(e){let{glctx:t,orbit:n,model:o,seats:r,opts:i,cinematic:a,analytics:s,seatIdByIndex:c,sectionIdBySeatId:u,tapSlop:l,tapMs:m,cancelFlight:h,focusSectionCamera:d,setSelection:f,ensureSeatView:p}=e,b=0,y=0,g=0,M=-1,v=!1,R=!1,P=O=>{e.seatViewLocked()||M===-1&&(M=O.pointerId,b=O.clientX,y=O.clientY,g=performance.now(),v=!1,R=a.active,a.active&&(s.cinematicCancelled(),h(),i.onViewTargetChange?.(null)))},x=O=>{O.pointerId===M&&Math.hypot(O.clientX-b,O.clientY-y)>l&&(v=!0)},S=(O,D,A,E,T)=>{let V=t.canvas.getBoundingClientRect(),_=t.canvas.clientWidth||V.width||1,k=t.canvas.clientHeight||V.height||1,H=O-V.left,B=D-V.top,F=E*E,G=-1,j=F,N=1/0;for(let z of r){if(A&&z.sectionId!==A)continue;let K=o.seats.idToIndex.get(z.id);if(K===void 0)continue;if(T){let $=Math.round(o.seats.iState[K]??0);if($!==0&&$!==3)continue}let J=K*3,Y=Ze(n.camera.projectionViewMatrix,[o.seats.iPosition[J],o.seats.iPosition[J+1]+.55,o.seats.iPosition[J+2]],_,k);if(!Y.visible)continue;let W=Y.x-H,Q=Y.y-B,te=W*W+Q*Q;(te<j||Math.abs(te-j)<1&&Y.depth<N)&&(G=K,j=te,N=Y.depth)}return G},w=(O,D)=>{let A=e.gpu(),E=e.pick();if(!A||!E)return-1;E.syncFromSeatProgram(A.seatProgram);let T=t.canvas.getBoundingClientRect(),V=t.renderer.dpr,{x:_,y:k}=rl(O,D,T,V,t.gl.drawingBufferWidth,t.gl.drawingBufferHeight),H=Math.max(2,Math.round(8*V));return E.pick(n.camera,_,k,H)},I=O=>{let D=n.camera?.position;if(!D)return!1;let A=O*3,E=Math.hypot(D.x-o.seats.iPosition[A],D.y-o.seats.iPosition[A+1],D.z-o.seats.iPosition[A+2]),T=t.canvas.clientHeight||t.canvas.getBoundingClientRect().height;return gy(E,n.fovY,T)>=yy};return{onDown:P,onMove:x,onUp:O=>{if(O.pointerId!==M)return;let D=!v&&performance.now()-g<m;if(M=-1,R){R=!1;return}let A=e.gpu(),E=e.pick();if(!D||!A||!E)return;let T=w(O.clientX,O.clientY),V=T>=0&&I(T),_=!1;if(e.focusedSectionId()&&T>=0){let B=c[T],F=B?u.get(B):void 0;if(F&&F!==e.focusedSectionId()&&d(F,{keepCamera:V})){if(!V)return;_=!0}}if(e.focusedSectionId()&&T<0&&(T=S(O.clientX,O.clientY,e.focusedSectionId(),44,!1)),e.focusedSectionId()&&T<0){let B=S(O.clientX,O.clientY,null,72,!1),F=B>=0?c[B]:void 0,G=F?u.get(F):void 0;if(G&&G!==e.focusedSectionId()&&d(G))return}if(!e.focusedSectionId()){T<0&&(T=S(O.clientX,O.clientY,null,42,!1));let B=T>=0?c[T]:void 0,F=B?u.get(B):void 0;if(F&&d(F,{keepCamera:V})){if(!V)return;_=!0}}if(T<0||T>=c.length){e.selection().size&&(f([]),i.onViewTargetChange?.(null));return}let k=c[T],H=Re[Math.round(o.seats.iState[T]??0)]??"available";if(H!=="available"&&H!=="selected"){i.onSeatInspect?.(k,H);return}if(e.selection().has(k)&&e.selection().size===1){f([]),i.onViewTargetChange?.(null),i.onSeatPick?.(k);return}if(f([k]),p(k),s.seatPicked(k,u.get(k)),i.onSeatPick?.(k),e.focusedSectionId()&&!_){let B=T*3,F=[o.seats.iPosition[B],o.seats.iPosition[B+1],o.seats.iPosition[B+2]];py(n.camera?.position,F)&&e.focusSeatCamera(k)}}}}var Fo=class{constructor(t,n){this.minX=0;this.minZ=0;this.cell=1;this.cols=1;this.rows=1;this.cellStart=null;this.cellItems=null;this.iPosition=t,this.count=n}ensureGrid(){if(this.cellStart||this.count===0)return;let t=this.iPosition,n=1/0,o=1/0,r=-1/0,i=-1/0;for(let d=0;d<this.count;d++){let f=t[d*3],p=t[d*3+2];f<n&&(n=f),f>r&&(r=f),p<o&&(o=p),p>i&&(i=p)}let a=Math.max(r-n,.001),s=Math.max(i-o,.001);this.cell=Math.max(Math.sqrt(a*s*4/this.count),.25),this.cols=Math.max(1,Math.ceil(a/this.cell)+1),this.rows=Math.max(1,Math.ceil(s/this.cell)+1),this.minX=n,this.minZ=o;let c=this.cols*this.rows,u=new Int32Array(c+1),l=d=>{let f=Math.min(this.cols-1,Math.max(0,Math.floor((t[d*3]-n)/this.cell)));return Math.min(this.rows-1,Math.max(0,Math.floor((t[d*3+2]-o)/this.cell)))*this.cols+f};for(let d=0;d<this.count;d++)u[l(d)+1]++;for(let d=0;d<c;d++)u[d+1]+=u[d];let m=new Int32Array(this.count),h=u.slice(0,c);for(let d=0;d<this.count;d++)m[h[l(d)]++]=d;this.cellStart=u,this.cellItems=m}gather(t,n,o,r,i){this.ensureGrid();let a=this.cellStart,s=this.cellItems;if(!a||!s)return 0;let c=r.length,u=o*o,l=Math.floor((t-this.minX)/this.cell),m=Math.floor((n-this.minZ)/this.cell),h=Math.ceil(o/this.cell)+1,d=this.iPosition,f=0;for(let p=0;p<=h&&f<c;p++){let b=m-p,y=m+p,g=l-p,M=l+p;for(let v=b;v<=y&&f<c;v++){if(v<0||v>=this.rows)continue;let R=v===b||v===y;for(let P=g;P<=M&&f<c;P++){if(!R&&P!==g&&P!==M){P=M-1;continue}if(P<0||P>=this.cols)continue;let x=v*this.cols+P;for(let S=a[x],w=a[x+1];S<w&&f<c;S++){let I=s[S],L=d[I*3]-t,O=d[I*3+2]-n,D=i===void 0?0:d[I*3+1]-i;L*L+D*D+O*O<=u&&(r[f++]=I)}}}}return f}};var Do=class{constructor(t){this.ctx=t;this.detailVisible=!1;this.seatDetailMix=0;this.structureDetailMix=0;this.nearBuf=new Int32Array(Hn);this.lastGatherX=1/0;this.lastGatherZ=1/0;this.lastGatherY=1/0;this.nearIndex=new Fo(t.model.seats.iPosition,t.model.seats.count)}forceRegather(){this.lastGatherX=1/0}setDetailEnabled(t){let n=this.ctx.gpu();t||(this.detailVisible=!1),this.lastGatherX=1/0,this.lastGatherZ=1/0,!t&&n?.nearSeatCount()&&n.setNearSeats(this.nearBuf,0)}update(t){let{model:n}=this.ctx,o=this.ctx.gpu();if(!o)return;if(!t){o.nearSeatCount()&&o.setNearSeats(this.nearBuf,0);return}let r=this.ctx.orbit().camera.position;if(Math.hypot(r.x-this.lastGatherX,r.y-this.lastGatherY,r.z-this.lastGatherZ)<Jo)return;if(this.lastGatherX=r.x,this.lastGatherY=r.y,this.lastGatherZ=r.z,Math.hypot(r.x-n.bounds.center[0],r.y-n.bounds.center[1],r.z-n.bounds.center[2])-n.bounds.radius>Qo){o.nearSeatCount()&&o.setNearSeats(this.nearBuf,0);return}let s=this.nearIndex.gather(r.x,r.z,Qo,this.nearBuf,r.y);s===0&&o.nearSeatCount()===0||o.setNearSeats(this.nearBuf,s)}ease(t,n,o){let r=1-Math.exp(-t*9),i=1-Math.exp(-t*20);this.seatDetailMix+=(n-this.seatDetailMix)*(n>this.seatDetailMix?r:i),this.structureDetailMix+=(o-this.structureDetailMix)*(o>this.structureDetailMix?r:i),Math.abs(n-this.seatDetailMix)<.01&&(this.seatDetailMix=n),Math.abs(o-this.structureDetailMix)<.01&&(this.structureDetailMix=o)}};function Jl(e){let t=Math.max(5,e.radius),n=e.focalWorld[0]-e.center[0],o=e.focalWorld[2]-e.center[2],r=Math.hypot(n,o);if(r<t*.12)return{center:e.center,radius:t,polarDeg:48};let i=Math.min(r*.25,t*.2);return{center:[e.center[0]+n/r*i,e.center[1],e.center[2]+o/r*i],radius:t+i,polarDeg:50}}var Oo=require("ogl");function eu(){let e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg");t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("width","18"),t.setAttribute("height","18"),t.setAttribute("aria-hidden","true"),t.setAttribute("focusable","false"),t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","2"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round");let n=document.createElementNS(e,"path");return n.setAttribute("d","M8 3H5a2 2 0 0 0-2 2v3M16 3h3a2 2 0 0 0 2 2v3M8 21H5a2 2 0 0 0-2-2v-3M16 21h3a2 2 0 0 0 2-2v-3"),t.appendChild(n),t}function ou(e){let{container:t,model:n,opts:o,orbit:r,cinematic:i,analytics:a,loop:s,labelOverlay:c,stageAzimuth:u,overviewFraming:l}=e,m=0,h=-1,d=(x,S,w=28)=>{r.camera.position.set(x[0],x[1],x[2]),r.camera.lookAt(new Oo.Vec3(S[0],S[1],S[2])),r.camera.fov=w,r.camera.updateProjectionMatrix()},f=document.createElement("button");f.className="sl-3d-overview-control sl-3d-icon-control",f.type="button",f.replaceChildren(eu());let p=o.navLabels?.fitView??"Show whole venue";f.setAttribute("aria-label",p),f.title=p,Object.assign(f.style,{width:"44px",minWidth:"44px",minHeight:"44px",padding:"9px",borderRadius:"999px",background:"rgba(12,18,32,0.72)",color:"#c9d4ea",border:"1px solid rgba(150,165,205,0.35)",backdropFilter:"blur(6px)",font:"600 11px/1 inherit",cursor:"pointer",whiteSpace:"nowrap"});let b=()=>{f.firstElementChild||f.replaceChildren(eu())};b();let y=x=>{h=x;let S=e.gpu();S&&(S.seatProgram.uniforms.uFocusFloor.value=x,S.solidProgram.uniforms.uFocusFloor.value=x,S.chairProgram.uniforms.uFocusFloor.value=x),e.showSectionSeatLabels(null)},g=()=>{if(e.isDisposed())return;o.onViewTargetChange?.(null),o.onSectionFocusChange?.(null),e.panorama()&&(e.panorama().dispose(),e.setPanorama(null),a.panoramaClosed()),e.setPanoramaSphereVisible(!1),e.panoramaLoadAbort()?.abort(),e.setPanoramaLoadAbort(null),e.restorePanoramaLayer(),f.style.display="",c.setVisible(!0),e.setFrozen(!1);let x=h>=0?n.floors[h]:null;if(e.setNearFieldDetailEnabled(!!x),e.setSeatViewLocked(!1),M(),e.removeArriveChip(),e.setNavigationMode("orbit"),x){let S=x.focalWorld[0]-x.center[0],w=x.focalWorld[2]-x.center[2],I=Math.hypot(S,w)>x.radius*.12?Math.atan2(S,w):u,L={center:x.center,radius:x.radius,box:x.box},O={polarDeg:58,margin:1.12};e.reducedMotion()?r.frame(L,!1,I,!1,O):r.frameSoft(L,I,!1,O)}else e.reducedMotion()?r.frame(n.bounds,!1,u,o.portraitOverviewCrop===!0,l):r.frameSoft(n.bounds,u,o.portraitOverviewCrop===!0,l);e.showSectionSeatLabels(null),s.requestRender()},M=()=>{m++,e.setSeatStepping(!1),e.panoramaLoadAbort()?.abort(),e.setPanoramaLoadAbort(null),i.active&&(i.cancel(),r.resumeAfterFlight(n.focalWorld))},v=x=>{if(e.isDisposed()||!e.gpu())return Promise.resolve();let S=n.seats.idToIndex.get(x);if(S===void 0)return Promise.resolve();e.setNearFieldDetailEnabled(!0),o.onViewTargetChange?.(x),e.panorama()&&(e.panorama().dispose(),e.setPanorama(null),e.setPanoramaSphereVisible(!1),f.style.display="",e.restorePanoramaLayer()),e.panoramaLoadAbort()?.abort(),e.setPanoramaLoadAbort(null),e.setFrozen(!1);let w=e.inSeatView()&&o.arriveAtSeatEye===!0;e.setSeatStepping(w),e.setSeatViewLocked(!1);let I=++m;w?e.showArriveChip(x,I):e.removeArriveChip();let{eye:L,focal:O}=e.resolvedSeatViewPose(x,S),D=o.arriveAtSeatEye?e.seatViewArrival(x,S):null,A=D&&D.stops.length>1&&D.stops[1].name==="row"?D.stops[1]:null,E=D?D.focal:O,T=[r.camera.position.x,r.camera.position.y,r.camera.position.z],V=jr(T,D?.eye??L,E,n.bounds.center,n.bounds.radius),_=A?A.eye:D?D.eye:o.arriveAtSeatEye?L:V.finalPos,k=D?D.fov:o.arriveAtSeatEye?t.clientWidth/Math.max(1,t.clientHeight)<.7?Po:65:28,H=[V.waypoints[0],V.waypoints[1],_];if(c.setVisible(!1),e.reducedMotion())return e.setSeatStepping(!1),d(_,E,k),s.requestRender(),a.cinematicSkipped(),e.isDisposed()||r.syncFromCamera(),e.setSeatViewLocked(o.arriveAtSeatEye===!0),D&&e.enterSeatView(D.stops),e.showArriveChip(x,I),Promise.resolve();let B=new Oo.Quat().copy(r.camera.quaternion),F=dl(r.camera,_,E);s.requestRender();let G=w?700:2500;return i.start(H,B,F,G,k).then(()=>{e.isDisposed()||I!==m||(e.setSeatStepping(!1),a.cinematicPlayed(G),r.resumeAfterFlight(E),e.setSeatViewLocked(o.arriveAtSeatEye===!0),D&&e.enterSeatView(D.stops,A?1:0),s.requestRender(),e.showArriveChip(x,I))})},R=(x,S)=>{let w=n.sections.find(I=>I.id===x);if(!w||w.seatCount===0)return!1;if(e.setNearFieldDetailEnabled(!0),e.setSeatStepping(!1),e.setSeatViewLocked(!1),i.cancel(),e.removeArriveChip(),n.floors.length>1&&h!==w.floorIndex&&y(w.floorIndex),e.setNavigationMode("pan"),e.panorama()||c.setVisible(!0),e.showSectionSeatLabels(x),!S?.keepCamera){let I=Jl(w),L={polarDeg:I.polarDeg,margin:1.12};e.reducedMotion()?r.frame({center:I.center,radius:I.radius},!1,r.currentAzimuth,!1,L):r.glideTo({center:I.center,radius:I.radius},L)}return o.onSectionFocusChange?.(x),s.requestRender(),!0},P=x=>{if(e.isDisposed()||!e.gpu())return!1;let S=n.seats.idToIndex.get(x);if(S===void 0)return!1;let w=S*3,I=[n.seats.iPosition[w],n.seats.iPosition[w+1]+.55,n.seats.iPosition[w+2]];return e.reducedMotion()?r.frame({center:I,radius:tu},!1,void 0,!1,nu):r.frameSoft({center:I,radius:tu},void 0,!1,nu),s.requestRender(),!0};return f.addEventListener("click",g),{overviewChip:f,layoutOverviewChip:b,flightGen:()=>m,focusedFloor:()=>h,applyFloorFocus:y,placeCameraFinal:d,cancelFlight:M,focusOverview:g,flyToSeat:v,focusSectionCamera:R,focusSeatCamera:P}}var tu=4.5,nu={polarDeg:48,margin:1.25};function kn(e,t){let{doc:n,report:o}=bo(e),r=o.confident&&(o.sections.length>0||!!o.looseRowBlocks);if(!r&&!o.roles?.length)return null;if(!r){let c=new Map(o.roles.map(d=>[d.id,d.role])),u=d=>d.map(f=>f.type==="shape"&&c.has(f.id)?{...f,role:c.get(f.id)}:f),l=e.floors?.map(d=>({...d,objects:u(d.objects)})),m=new Float64Array(t.length).fill(Number.NaN),h=new Float64Array(t.length*2).fill(Number.NaN);return t.forEach((d,f)=>{d.eyeHeightM!==void 0&&(m[f]=d.eyeHeightM),d.focalPoint&&(h[f*2]=d.focalPoint.x,h[f*2+1]=d.focalPoint.y)}),{doc:{...e,objects:l?.[0]?.objects??u(e.objects),...l?{floors:l}:{}},report:o,eyeHeightM:m,focal:h}}let i=new Map(zt(n).map(c=>[c.id,c])),a=new Float64Array(t.length).fill(Number.NaN),s=new Float64Array(t.length*2).fill(Number.NaN);return t.forEach((c,u)=>{let l=i.get(c.id)??c;l.eyeHeightM!==void 0&&(a[u]=l.eyeHeightM),l.focalPoint&&(s[u*2]=l.focalPoint.x,s[u*2+1]=l.focalPoint.y)}),{doc:n,report:o,eyeHeightM:a,focal:s}}function Jr(e,t){return e.map((n,o)=>{let r=t.eyeHeightM[o],i=t.focal[o*2],a=t.focal[o*2+1],s={...n};return Number.isNaN(r)?delete s.eyeHeightM:s.eyeHeightM=r,Number.isNaN(i)?delete s.focalPoint:s.focalPoint={x:i,y:a},s})}function ru(e){let t=e.estimate===!1?null:kn(e.doc,e.seats);return t?{input:{...e,doc:t.doc,seats:Jr(e.seats,t)},estimate:t}:{input:e}}function ei(e,t,n,o,r,i,a,s,c=.5){let u=-1,l=s*s,m=1/0;for(let h=0;h<t;h++){let d=h*3,f=Ze(n,[e[d],e[d+1]+c,e[d+2]],o,r);if(!f.visible)continue;let p=f.x-i,b=f.y-a,y=p*p+b*b;(y<l-4||y<l+4&&f.depth<m)&&(u=h,l=Math.min(l,y),m=f.depth)}return u}var vy={};function iu(e){let t=performance.now(),{input:n,estimate:o}=ru(e);return{model:$t(n),buildMs:performance.now()-t,source:"main",...o?{estimate:o}:{}}}function xy(e){let t=zt(e.doc);return{...iu({...e,seats:t}),seats:t}}function au(e,t,n){if(typeof Worker>"u")return Promise.resolve(t());let o;try{o=new Worker(new URL("./scene/scene.worker.js",vy.url),{type:"module"})}catch{return Promise.resolve(t())}return new Promise(r=>{let i=!1,a=u=>{i||(i=!0,clearTimeout(c),o.terminate(),r(u))},s=()=>a(t()),c=window.setTimeout(s,15e3);o.onerror=s,o.onmessage=u=>{let l=n(u.data);l?a(l):s()},o.postMessage(e)})}function su(e){return au(e,()=>iu(e),({model:t,buildMs:n,estimate:o})=>({model:t,buildMs:n,source:"worker",...o?{estimate:o}:{}}))}function cu(e){return au(e,()=>xy(e),({model:t,buildMs:n,seats:o,estimate:r})=>o?{model:t,buildMs:n,seats:o,source:"worker",...r?{estimate:r}:{}}:null)}var My=40,Sy=48,wy=Math.PI/180,Py=6,Iy=500;function Ry(e,t,n={}){let o=performance.now(),r=t.prepared?t.prepared.estimate:t.estimate===!1?null:kn(t.doc,t.seats);r&&(t={...t,doc:r.doc,seats:Jr(t.seats,r)});let i=t.prepared?.model??$t(t),a=new Lo(n.onAnalytics),s=new Array(i.seats.count);for(let[U,X]of i.seats.idToIndex)s[X]=U;let c=new Map(t.seats.map(U=>[U.id,U])),u=new Map;for(let U of t.seats){if(!U.rowId)continue;let X=u.get(U.rowId);X?X.push(U.id):u.set(U.rowId,[U.id])}let l=new Map;t.seats.forEach((U,X)=>{l.set(U.id,i.seatSectionIds?.[X]??U.sectionId)});let m=new Map;for(let[U,X]of i.seats.idToIndex){let Z=l.get(U);if(!Z)continue;let ie=m.get(Z);ie?ie.push(X):m.set(Z,[X])}let h=()=>{if(!f||!i.sectionSolidRanges.length)return;let{lit:U,anyUnlit:X}=Qc(i.sectionSolidRanges,m,i.seats.iState);f.setSectionShellLit(X?U:null)},d=t.doc.floors?.some(X=>(X.baseHeightM??0)>0)?!0:(t.doc.floors?.flatMap(X=>X.objects)??t.doc.objects).some(X=>X.type==="section"&&((X.height??0)>0||(X.rake??0)>0)),f=null,p=null,b=null,y=!1,g=!1,M=!1,v=new Map,R=null,P=null,x=null,S=new Map,w=null,I=()=>{x===null&&(x=e.style.zIndex,e.style.zIndex="20")},L=()=>{x!==null&&(e.style.zIndex==="20"&&(e.style.zIndex=x),x=null)},O=!1,D=()=>O?Ee.focusedFloor():-1,A=()=>{f=nl(_.gl,i),p?.dispose(),p=Cc(_.gl,[1,1,1]),ct(!1),h(),$(),b=new So(_.renderer,f.seatGeometry,f.chairGeometry,f.solidGeometry,i.seats.count),_.setClearColor(i.theme.background.top),b.setRestoreClear(i.theme.background.top),f.seatProgram.uniforms.uSeatRadius.value=nt*i.theme.seatScale,f.seatProgram.uniforms.uFocusFloor.value=D(),f.solidProgram.uniforms.uFocusFloor.value=D(),f.chairProgram.uniforms.uFocusFloor.value=D(),f.screenProgram&&(f.screenProgram.uniforms.uFocusFloor.value=D()),T.forceRegather()},E=!1,T=new Do({model:i,orbit:()=>k,gpu:()=>f}),V=U=>T.setDetailEnabled(U),_=new Nn(e,{onContextLost:()=>{M||a.contextLost(),y=!0,re.stop(),f=null,b=null},onContextRestored:()=>{A(),y=!1,M||a.contextRestored(),re.requestRender()}}),k=new Vn(_.gl,_.canvas,()=>re.requestRender(),()=>a.orbitEngaged());k.setAspect(_.aspect);let H=(t.doc.floors?.flatMap(U=>U.objects)??t.doc.objects).some(U=>U.type==="section"&&U.physical3dProvenance?.surfaceKind?.status==="inferred"),B=(()=>{if(Number.isFinite(n.overviewAzimuthDeg))return n.overviewAzimuthDeg*Math.PI/180;if(!(H&&i.stages.length===0))return fi(i.focalWorld,i.seats.iPosition,i.bounds)})(),F=(t.doc.floors?.flatMap(U=>U.objects)??t.doc.objects).some(U=>U.type==="shape"&&U.stageKind?.startsWith("pitch-")),G=i.floors.length>1?{polarDeg:48,margin:1.1}:{polarDeg:F?36:48,margin:1.05},j=typeof window<"u"&&!!window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;k.frame(i.bounds,!j&&n.skipInitialOverviewAnimation!==!0,B,n.portraitOverviewCrop===!0,G);let N=new wo(k.camera),z=ql(e),K=new xo(e,{fontFamily:t.doc.theme?.fontFamily,ink:t.doc.theme?.textColor,backgroundRgb:i.theme.background.top}),J=i.labels,Y=()=>ec(J,i.floors.length,D());K.setLabels(Y());let W=null,Q=()=>[...v.keys()].flatMap(U=>{let X=i.seats.idToIndex.get(U),Z=X===void 0?void 0:t.seats[X];if(X===void 0||Z?.id!==U)return[];let ie=X*3;return[{id:`seat:${U}`,kind:"seat",seatWidthM:i.seats.iChairWidth[X]*2,text:Z.displayLabel||Z.label,anchor:[i.seats.iPosition[ie],i.seats.iPosition[ie+1]+1.05,i.seats.iPosition[ie+2]],pinBase:Ce(ie)}]}),te=-1,$=()=>{f&&(te=W?i.sections.findIndex(U=>U.id===W):-1,f.seatProgram.uniforms.uFocusSection.value=te,f.chairProgram.uniforms.uFocusSection.value=te)},ne=U=>{if(W=U,$(),K.setForcedDense(!!U),!U){let ce=Q(),_e=new Set(ce.map(Me=>Me.id));K.setLabels([...Y().filter(Me=>!_e.has(Me.id)),...ce]);return}let X=t.seats.filter(ce=>l.get(ce.id)===U),Z=new Set(X.map(ce=>ce.id)),ie=new Set(X.map(ce=>ce.rowId)),ue=new Set(v.keys()),ge=new Set(X.filter(ce=>ue.has(ce.id)).map(ce=>ce.id)),ye=Y().filter(ce=>ce.kind!=="row"&&ce.kind!=="seat"||(ce.kind==="row"?ie.has(ce.id.slice(4)):Z.has(ce.id.slice(5))));if(i.seatCount<=6e3&&ge.size===0){K.setLabels(ye);return}let Ie=X,It=new Set(Ie.map(ce=>`seat:${ce.id}`)),Rt=Ie.flatMap(ce=>{let _e=i.seats.idToIndex.get(ce.id);if(_e===void 0)return[];let Me=_e*3;return[{id:`seat:${ce.id}`,kind:"seat",seatWidthM:i.seats.iChairWidth[_e]*2,rowId:ce.rowId,text:ue.has(ce.id)?ce.displayLabel||ce.label:Lr(ce.displayLabel||ce.label),anchor:[i.seats.iPosition[Me],i.seats.iPosition[Me+1]+(ue.has(ce.id)?1.05:.55),i.seats.iPosition[Me+2]],...ue.has(ce.id)?{pinBase:Ce(Me)}:{}}]});K.setLabels([...ye.filter(ce=>!It.has(ce.id)),...Rt])};A();let ee=null,q=null,le=U=>{if(y||!f||g)return!1;let X=Fl({flying:N.active,panoramaMounted:R!==null,seatViewActive:ee?.active===!0}),Z=X==="orbit"?te:-1;f.seatProgram.uniforms.uFocusSection.value=Z,f.chairProgram.uniforms.uFocusSection.value=Z;let ie=X==="cinematic"?N.update(performance.now()):X==="seatView"?ee.update(performance.now()):X==="orbit"?k.update():!1;q?.syncZoomLimits();let ue=D()>=0?i.floors[D()]:null,ge=ue?.radius??i.bounds.radius,ye=Bi(k.currentDistance,ge),Ie=E?{center:[k.camera.position.x,k.camera.position.y,k.camera.position.z],radius:520}:i.clipBounds??i.renderBounds;k.updateClipping(Ie);let It=ue?.center??i.renderBounds.center,Rt=ue?.radius??i.renderBounds.radius,ce=(ze,Ue)=>Math.hypot(k.camera.position.x-ze[0],k.camera.position.y-ze[1],k.camera.position.z-ze[2])<=Ue*(T.detailVisible?1.8:1.55),_e=ce(It,Rt);if(!_e&&W){let ze=i.sections.find(Ue=>Ue.id===W);ze&&(_e=ce(ze.center,Math.max(12,ze.radius*2)))}T.detailVisible=_e;let Me=f.seatProgram.uniforms;Me.uSeatScale.value=ye.scale,Me.uSeatFade.value=ye.fade;let Fn=!!ue&&Ni(ue.seatCount,_.canvas.clientWidth||1,_.canvas.clientHeight||1),Dn=Vi(i.seats.count,ge,k.currentDistance,k.camera.fov,_.canvas.clientHeight||1),tn=T.detailVisible||Fn||Dn?1:0,nn=T.detailVisible||D()>=0||i.floors.length>1?1:0;T.ease(U,tn,nn),Me.uSeatDetail.value=T.seatDetailMix;let On=tn===0&&T.seatDetailMix<.01;f.seatGeometry.setDrawRange(On?Wo:0,On?xi:Wo),f.solidProgram.uniforms.uStructureDetail.value=T.structureDetailMix,Me.uMinPixels.value=ye.minPixels,Me.uPixelToWorld.value=2*Math.tan(k.camera.fov*wy/2)/Math.max(1,_.pixelHeight),T.update(T.detailVisible),_.renderer.render({scene:f.background,clear:!0}),_.renderer.render({scene:f.main,camera:k.camera,clear:!1});let on=p?p.update(performance.now(),[k.camera.position.x,k.camera.position.y,k.camera.position.z],R!==null,X==="seatView"):!1;return p&&_.renderer.render({scene:p.root,camera:k.camera,clear:!1}),K.update(k.camera.projectionViewMatrix,_.canvas.clientWidth||1,_.canvas.clientHeight||1,k.currentDistance,ge,[k.camera.position.x,k.camera.position.y,k.camera.position.z]),ie||on||T.seatDetailMix!==tn||T.structureDetailMix!==nn},re=new Gn(le),Le=typeof ResizeObserver<"u"?new ResizeObserver(()=>Uo.resize()):null;Le?.observe(e),k.setZoomPointResolver((U,X)=>{let Z=_.canvas.getBoundingClientRect(),ie=_.canvas.clientWidth||Z.width,ue=_.canvas.clientHeight||Z.height;if(!(ie>0)||!(ue>0))return null;k.camera.updateMatrixWorld();let ge=ei(i.seats.iPosition,i.seats.count,k.camera.projectionViewMatrix,ie,ue,U-Z.left,X-Z.top,My);if(ge<0)return null;let ye=ge*3;return[i.seats.iPosition[ye],i.seats.iPosition[ye+1]+.5,i.seats.iPosition[ye+2]]});function Ce(U){return[i.seats.iPosition[U],i.seats.iPosition[U+1]+.5,i.seats.iPosition[U+2]]}K.setSeatNumberRow(null);let we=null,ve=0,tt=()=>{ve=0;let U=null;if(we&&!ee?.active&&!N.active){let X=_.canvas.getBoundingClientRect(),Z=_.canvas.clientWidth||X.width,ie=_.canvas.clientHeight||X.height;if(Z>0&&ie>0){let ue=ei(i.seats.iPosition,i.seats.count,k.camera.projectionViewMatrix,Z,ie,we.x-X.left,we.y-X.top,Sy);U=ue>=0?t.seats[ue]?.rowId??null:null}}K.setSeatNumberRow(U)&&re.requestRender()},st=U=>{we={x:U.clientX,y:U.clientY},ve||(ve=requestAnimationFrame(tt))},wt=U=>{U.pointerType==="mouse"&&(we=null,ve||(ve=requestAnimationFrame(tt)))};_.canvas.addEventListener("pointermove",st),_.canvas.addEventListener("pointerdown",st),_.canvas.addEventListener("pointerleave",wt);function ct(U){if(!p)return;let X=[];for(let Z of v.keys()){let ie=i.seats.idToIndex.get(Z);if(ie===void 0)continue;let ue=ie*3;X.push({id:Z,position:Ce(ue)})}p.setSeats(X,performance.now(),U)}let Ft=U=>{let X=ue=>{let ge=i.seats.idToIndex.get(ue);return ge===void 0?void 0:i.seats.iState[ge]},{updates:Z,next:ie}=al(v,U,X);if(v=ie,K.setSelectedSeatIds(v.keys()),ct(!lt()),re.requestRender(),ne(W),Z.length){let ue=rr(i.seats,Z);f&&f.uploadSeatStateRuns(ue),h(),re.requestRender()}},lt=()=>w!==null?w:typeof window<"u"&&!!window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,lu=8,ti=U=>{if(!n.getSeatView)return null;let X=S.get(U);if(!X)for(X=Promise.resolve(n.getSeatView(U)),S.set(U,X),X.catch(()=>{S.get(U)===X&&S.delete(U)});S.size>lu;){let Z=S.keys().next().value;if(Z===void 0)break;S.delete(Z)}return X},ni=Il(i.stages,i.focalWorld,i.bounds.groundY??0),uu=Yr(ni),Bo=(U,X)=>{let Z=c.get(U),ie=Math.max(0,Math.round(i.seats.iFloor[X]??0)),ue=t.doc.floors?.[ie],ge=i.floors[ie],ye=ue?.focalPoint??t.doc.focalPoint,Ie=ge?{x:ge.focalWorld[0]/C,y:ge.focalWorld[2]/C}:ye,It=Z?.focalPoint?{x:Z.focalPoint.x+Ie.x-ye.x,y:Z.focalPoint.y+Ie.y-ye.y}:Ie,Rt=[i.seats.iPosition[X*3],i.seats.iPosition[X*3+1],i.seats.iPosition[X*3+2]];return pl(Rt,It,ue?.baseHeightM??0,Z?.eyeHeightM,uu)},oi=()=>(e.clientWidth||_.canvas.clientWidth)<=520,No=null,ri=null,mu=async(U,X,Z)=>{if(!n.getSeatView||M||Z!==Ee.flightGen())return;let ie;try{ie=await Yl()}catch{if(a.panoramaFailed(U,"mount"),!M&&Z===Ee.flightGen()){let ue=Go(U,Z,!0);requestAnimationFrame(()=>ue?.querySelector("[data-panorama-trigger]")?.focus())}return}if(!(M||Z!==Ee.flightGen()||!No))return ri??=ie.createOpenPanorama(No),ri(U,X,Z)},Vo=$l({container:e,model:i,opts:n,expandedSeatById:c,seatIdsByRow:u,isNarrow:oi,isDisposed:()=>M,flightGen:()=>Ee.flightGen(),flyToSeat:U=>ci(U),openPanorama:(U,X,Z)=>mu(U,X,Z)}),Go=Vo.show,Ho=Vo.remove,fu=Vo.layout,Pt=Zl({container:e,orbit:k,isNarrow:oi,enabled:n.chrome?.controlDock!==!1,...n.navLabels?{labels:n.navLabels}:{}});q=Pt;let du=Pt.element,Jt=Pt.setNavigationMode,hu=Pt.layout,pu=Pt.utilityControls,en=null,ii=!1,Ln=U=>{Pt.setSeatViewLocked(U),U||ee?.exit()};ee=Ll({canvas:_.canvas,camera:k.camera,requestRender:()=>re.requestRender(),reducedMotion:lt,onStopChange:U=>{let X=U??(ii?"seat":null);en=X;try{n.onSeatViewStopChange?.(X)}catch{}},onApplied:()=>{M||k.syncFromCamera()}});let ai=i.sections.reduce((U,X)=>X.seatCount>0&&X.box?Math.max(U,X.box.max[1]):U,-1/0),bu=(U,X)=>{let{eye:Z}=Bo(U,X),ie=(e.clientWidth||_.canvas.clientWidth||1)/Math.max(1,e.clientHeight||_.canvas.clientHeight||1),ue=Al(Z,ni,ie,{preserveEye:!0});if(n.seatViewStops===!1)return{...ue,stops:[]};let ge=l.get(U),ye=ge?i.sections.find(Ie=>Ie.id===ge):void 0;return{...ue,stops:Cl(ue,{aspect:ie,seatingTopY:Number.isFinite(ai)?ai:i.bounds.box.max[1],section:ye&&ye.seatCount>0?{center:ye.center,radius:ye.radius}:null,venue:{center:i.bounds.center,radius:i.bounds.radius}})}},Ee=ou({container:e,model:i,opts:n,orbit:k,cinematic:N,analytics:a,loop:re,labelOverlay:K,stageAzimuth:B,overviewFraming:G,gpu:()=>f,isDisposed:()=>M,panorama:()=>R,setPanorama:U=>{R=U},setPanoramaSphereVisible:U=>{E=U},panoramaLoadAbort:()=>P,setPanoramaLoadAbort:U=>{P=U},setFrozen:U=>{g=U},restorePanoramaLayer:L,reducedMotion:lt,resolvedSeatViewPose:Bo,showSectionSeatLabels:ne,setNearFieldDetailEnabled:V,setSeatViewLocked:Ln,setNavigationMode:Jt,showArriveChip:Go,removeArriveChip:Ho,inSeatView:()=>en!==null,setSeatStepping:U=>{ii=U},seatViewArrival:(U,X)=>n.arriveAtSeatEye?bu(U,X):null,enterSeatView:(U,X)=>ee?.enter(U,X)});O=!0;let zo=Ee.overviewChip,yu=Ee.layoutOverviewChip,gu=Ee.applyFloorFocus,xu=Ee.focusOverview,si=Ee.cancelFlight,ci=Ee.flyToSeat,li=Ee.focusSectionCamera;pu.appendChild(zo),No={container:e,model:i,opts:n,analytics:a,orbit:k,loop:re,seatsById:c,ensureSeatView:ti,resolvedSeatViewPose:Bo,gpu:()=>f,gl:_.gl,isContextLost:()=>y,isDisposed:()=>M,flightGen:()=>Ee.flightGen(),setPanorama:U=>{R=U},getLoadAbort:()=>P,setLoadAbort:U=>{P=U},setPanoramaSphereVisible:U=>{E=U,U&&ee?.exit()},setFrozen:U=>{g=U},raisePanoramaLayer:I,restorePanoramaLayer:L,getOverviewChip:()=>zo,labelOverlay:K,reducedMotion:lt,removeArriveChip:Ho,showArriveChip:Go};let ut=Ql({glctx:_,orbit:k,model:i,seats:t.seats,opts:n,cinematic:N,analytics:a,seatIdByIndex:s,sectionIdBySeatId:l,tapSlop:Py,tapMs:Iy,gpu:()=>f,pick:()=>b,seatViewLocked:()=>Pt.seatViewLocked(),focusedSectionId:()=>W,selection:()=>v,cancelFlight:si,focusSectionCamera:li,focusSeatCamera:Ee.focusSeatCamera,setSelection:Ft,ensureSeatView:ti});_.canvas.addEventListener("pointerdown",ut.onDown),_.canvas.addEventListener("pointermove",ut.onMove),_.canvas.addEventListener("pointerup",ut.onUp),_.canvas.addEventListener("pointercancel",ut.onUp),re.requestRender();let Uo={setAvailability(U){let X=il(v,U),Z=rr(i.seats,X);Z.length&&f&&f.uploadSeatStateRuns(Z),h(),re.requestRender()},setSelection:Ft,setNavigationMode:Jt,zoomIn(){k.zoomBy(Bt),re.requestRender()},zoomOut(){k.zoomBy(un),re.requestRender()},flyToSeat:ci,focusOverview:xu,seatViewStop:()=>en,recentreSeatView:()=>ee?.recentre()??!1,resize(){let{width:U,height:X}=_.resize();k.setAspect(U/Math.max(1,X)),fu(),hu(),yu(),re.requestRender()},stats(){return{...re.stats(),drawCalls:f?f.drawCalls:0,fallbackTriangles:f?f.seatGeometry.drawRange.count/3*i.seats.count:0,seatCount:i.seatCount}},captureImage(U=1280){if(y||!f||typeof document>"u")return null;le(0);let X=_.canvas,Z=Math.min(1,U/Math.max(X.width,X.height,1)),ie=document.createElement("canvas");ie.width=Math.max(1,Math.round(X.width*Z)),ie.height=Math.max(1,Math.round(X.height*Z));let ue=ie.getContext("2d");return ue?(ue.drawImage(X,0,0,ie.width,ie.height),ie.toDataURL("image/jpeg",.82)):null},getQualityEvidence(){let U=re.stats(),X=_.canvas.clientWidth||1,Z=_.canvas.clientHeight||1,ie=i.bounds.center,ue=Ze(k.camera.projectionViewMatrix,[ie[0],i.bounds.box.min[1],ie[2]],X,Z),ge=Ze(k.camera.projectionViewMatrix,[ie[0],i.bounds.box.max[1],ie[2]],X,Z),ye=i.bounds.box,Ie=[ye.min[0],ye.max[0]].flatMap(ce=>[ye.min[1],ye.max[1]].flatMap(_e=>[ye.min[2],ye.max[2]].map(Me=>Ze(k.camera.projectionViewMatrix,[ce,_e,Me],X,Z)))).filter(ce=>Number.isFinite(ce.x)&&Number.isFinite(ce.y)&&Number.isFinite(ce.depth)),It=Ie.length?(()=>{let ce=Math.min(...Ie.map(Ue=>Ue.x)),_e=Math.max(...Ie.map(Ue=>Ue.x)),Me=Math.min(...Ie.map(Ue=>Ue.y)),Fn=Math.max(...Ie.map(Ue=>Ue.y)),Dn=Math.max(0,ce),tn=Math.min(X,_e),nn=Math.max(0,Me),On=Math.min(Z,Fn),on=Math.max(0,tn-Dn),ze=Math.max(0,On-nn);return{box:{x:Dn,y:nn,width:on,height:ze},horizontalFillRatio:on/X,verticalFillRatio:ze/Z,visibleAreaRatio:on*ze/(X*Z),clippedEdges:[...Me<0?["top"]:[],..._e>X?["right"]:[],...Fn>Z?["bottom"]:[],...ce<0?["left"]:[]]}})():void 0,Rt=String(_.gl.getParameter(_.gl.VERSION)??"");return{viewport:{width:X,height:Z},context:{webgl2:/webgl\s*2/i.test(Rt),lost:y},frame:{rendered:U.rendered,idle:U.idle},camera:{position:[k.camera.position.x,k.camera.position.y,k.camera.position.z],distance:k.currentDistance,verticalFovDeg:k.fovY},scene:{seatCount:i.seatCount,floorCount:i.floors.length,zoneCount:i.zones.length,sectionCount:i.sections.length,authoredRelief:d,renderedVerticalSpanM:Math.max(0,i.bounds.box.max[1]-i.bounds.box.min[1]),projectedReliefPx:ue.visible&&ge.visible?Math.abs(ue.y-ge.y):0},labels:K.qualityEvidence(),framing:It,...en?{seatView:{fovDeg:k.camera.fov,stop:en}}:{}}},getQualityReport(){return vo(Uo.getQualityEvidence())},loseContextForTest(){_.simulateContextLossCycle()},floors(){return i.floors},focusFloor(U){if(U!==null&&!i.floors.some(Z=>Z.index===U))return!1;let X=U??-1;if(V(U!==null),Ln(!1),gu(X),Jt("orbit"),U===null)N.cancel(),lt()?k.frame(i.bounds,!1,B,n.portraitOverviewCrop===!0,G):k.frameSoft(i.bounds,B,n.portraitOverviewCrop===!0,G);else{let Z=i.floors[U];if(Z.seatCount>0){N.cancel();let ie=Z.focalWorld[0]-Z.center[0],ue=Z.focalWorld[2]-Z.center[2],ge=Math.hypot(ie,ue)>Z.radius*.12?Math.atan2(ie,ue):B;k.frame({center:Z.center,radius:Z.radius,box:Z.box},!1,ge,!1,{polarDeg:58,margin:1.12})}}return re.requestRender(),!0},zones(){return i.zones},focusZone(U){let X=i.zones.find(ge=>ge.id===U);if(!X||X.seatCount===0)return!1;V(!1),Ln(!1),N.cancel(),Jt("orbit"),ne(null),n.onSectionFocusChange?.(null);let Z=X.focalWorld[0]-X.center[0],ie=X.focalWorld[2]-X.center[2],ue=Math.hypot(Z,ie)>X.radius*.12?Math.atan2(Z,ie):void 0;return k.frame({center:X.center,radius:X.radius*1.25},!1,ue),re.requestRender(),!0},sections(){return i.sections},focusSection(U){return li(U)},rows(U){return U?i.rows.filter(X=>X.sectionId===U):i.rows},seatsInRow(U){return t.seats.filter(X=>X.rowId===U).map(X=>({id:X.id,label:X.displayLabel||X.label}))},focusRow(U){let X=i.rows.find(Z=>Z.id===U);return!X||X.seatCount===0?!1:(V(!0),Ln(!1),N.cancel(),Jt("pan"),X.sectionId&&(ne(X.sectionId),n.onSectionFocusChange?.(X.sectionId)),k.frame({center:X.center,radius:Math.max(2.5,X.radius*.65)}),re.requestRender(),!0)},setReducedMotionForTest(U){w=U},dispose(){M=!0,Ho(),zo.remove(),du.remove(),si(),ee?.dispose(),re.stop(),K.dispose(),Le?.disconnect(),R&&(R.dispose(),R=null),L(),z(),_.canvas.removeEventListener("pointerdown",ut.onDown),_.canvas.removeEventListener("pointermove",ut.onMove),_.canvas.removeEventListener("pointerup",ut.onUp),_.canvas.removeEventListener("pointercancel",ut.onUp),_.canvas.removeEventListener("pointermove",st),_.canvas.removeEventListener("pointerdown",st),_.canvas.removeEventListener("pointerleave",wt),ve&&cancelAnimationFrame(ve),k.dispose(),b&&b.dispose(),f&&f.dispose(),f=null,p?.dispose(),p=null,b=null,_.dispose()}};return a.opened(i.seatCount,d,t.prepared?.buildMs??performance.now()-o,t.prepared?.source??"inline"),Uo}0&&(module.exports={VENUE3D_QUALITY_REPORT_VERSION,autoVenue3d,buildSceneModel,estimateVenue3D,inspectVenue3DQualityEvidence,mountVenue3D,prepareVenue3D,prepareVenue3DFromChart});
|
|
902
|
+
void main(){ if(vDim>0.5) discard; vec4 c=texture(uImage,vUv); if(c.a<0.01) discard; fragColor=c; }`,uniforms:{uImage:{value:$},uFocusFloor:{value:-1}},transparent:!1,depthTest:!0,depthWrite:!0,cullFace:!1});let ee=new Ie.Mesh(e,{geometry:z,program:q});ee.frustumCulled=!1,ee.setParent(n),W.screenProgram=q,j=!0,W.drawCalls=3+(G?1:0)+1},K.src=Y.contentImageUrl}return W}var ot=require("ogl");function hy(e,t,n){let o=e+(t<<8)+(n<<16);return o===0?-1:o-1}function El(e,t,n,o,r,i){let a=-1,s=1/0;for(let c=0;c<n;c++)for(let l=0;l<t;l++){let u=(c*t+l)*4,m=hy(e[u],e[u+1],e[u+2]);if(m<0||m>=i)continue;let h=l-o,d=c-r,f=h*h+d*d;f<s&&(s=f,a=m)}return a}function Cl(e,t,n,o,r,i){let a=e-n.left,s=t-n.top,c=Math.round(a*o),l=Math.round((n.height-s)*o);return{x:Math.max(0,Math.min(r-1,c)),y:Math.max(0,Math.min(i-1,l))}}var py=["uSeatRadius","uSeatScale","uMinPixels","uPixelToWorld"],Ro=class{constructor(t,n,o,r,i){this.seatScene=new ot.Transform;this.chairScene=new ot.Transform;this.solidScene=new ot.Transform;this.target=null;this.restoreClear=[0,0,0];this.renderer=t,this.gl=t.gl,this.maxIndex=i,this.seatProg=pl(this.gl),this.chairProg=bl(this.gl),this.depthProg=yl(this.gl);let a=new ot.Mesh(this.gl,{geometry:n,program:this.seatProg});a.frustumCulled=!1,a.setParent(this.seatScene);let s=new ot.Mesh(this.gl,{geometry:o,program:this.chairProg});s.frustumCulled=!1,s.setParent(this.chairScene);let c=new ot.Mesh(this.gl,{geometry:r,program:this.depthProg});c.frustumCulled=!1,c.setParent(this.solidScene)}setRoomCentre(t){this.depthProg.uniforms.uRoomCentre.value.set(t??[0,0])}setRestoreClear(t){this.restoreClear=[t[0],t[1],t[2]]}syncFromSeatProgram(t){for(let o of py)this.seatProg.uniforms[o].value=t.uniforms[o].value;let n=t.uniforms.uFocusFloor.value;this.seatProg.uniforms.uFocusFloor.value=n,this.chairProg.uniforms.uFocusFloor.value=n,this.depthProg.uniforms.uFocusFloor.value=n}ensureTarget(){let t=this.gl.drawingBufferWidth,n=this.gl.drawingBufferHeight;return this.target&&(this.target.width!==t||this.target.height!==n)&&this.destroyTarget(),this.target||(this.target=new ot.RenderTarget(this.gl,{width:t,height:n,depth:!0})),this.target}destroyTarget(){if(!this.target)return;let t=this.gl;this.target.buffer&&t.deleteFramebuffer(this.target.buffer);for(let n of this.target.textures??[])n.texture&&t.deleteTexture(n.texture);this.target.depthBuffer&&t.deleteRenderbuffer(this.target.depthBuffer),this.target=null}pick(t,n,o,r){let i=this.gl,a=this.ensureTarget(),s=i.drawingBufferWidth,c=i.drawingBufferHeight,l=Math.max(0,n-r),u=Math.max(0,o-r),m=Math.max(1,Math.min(s,n+r+1)-l),h=Math.max(1,Math.min(c,o+r+1)-u);i.enable(i.SCISSOR_TEST),i.scissor(l,u,m,h);let[d,f,p]=this.restoreClear;i.clearColor(0,0,0,1),this.renderer.render({scene:this.solidScene,camera:t,target:a,clear:!0}),this.renderer.render({scene:this.seatScene,camera:t,target:a,clear:!1}),this.renderer.render({scene:this.chairScene,camera:t,target:a,clear:!1}),i.clearColor(d,f,p,1),i.disable(i.SCISSOR_TEST);let b=new Uint8Array(m*h*4);return this.renderer.bindFramebuffer(a),i.readPixels(l,u,m,h,i.RGBA,i.UNSIGNED_BYTE,b),this.renderer.bindFramebuffer(),El(b,m,h,n-l,o-u,this.maxIndex)}dispose(){this.destroyTarget(),this.seatProg.remove(),this.chairProg.remove(),this.depthProg.remove()}};function _l(e,t){let n=[];for(let o of t)e.has(o.seatId)?e.set(o.seatId,fn(o.state)):n.push(o);return n}function Tl(e,t,n){let o=new Set;for(let a of t)(e.has(a)||n(a)!==void 0)&&o.add(a);let r=new Map(e),i=[];for(let[a,s]of e)o.has(a)||(i.push({seatId:a,state:Ce[s]??"available"}),r.delete(a));for(let a of o){if(r.has(a))continue;let s=n(a);s!==void 0&&(r.set(a,s),i.push({seatId:a,state:"selected"}))}return{updates:i,next:r}}var Mt=require("ogl");function by(e,t){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function kl(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2]]}function yy(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function Ll(e){let t=Math.hypot(e[0],e[1],e[2]);return t>1e-6?[e[0]/t,e[1]/t,e[2]/t]:[0,0,0]}function Jr(e){let t=Math.max(0,Math.min(1,e));return t*t*t*(t*(t*6-15)+10)}function ei(e,t){return Math.max(0,Math.min(1,e+t))}function Fl(e,t){let n=e.length;if(n===0)return[0,0,0];if(n===1)return[...e[0]];let o=Math.max(0,Math.min(1,t)),r=n-1,i=Math.floor(o*r);i>=r&&(i=r-1);let a=o*r-i,s=e[Math.max(0,i-1)],c=e[i],l=e[i+1],u=e[Math.min(n-1,i+2)],m=a*a,h=m*a,d=[0,0,0];for(let f=0;f<3;f++)d[f]=.5*(2*c[f]+(-s[f]+l[f])*a+(2*s[f]-5*c[f]+4*l[f]-u[f])*m+(-s[f]+3*c[f]-3*l[f]+u[f])*h);return d}function ti(e,t,n,o,r){let i=Ll(by(t,n));i[0]===0&&i[1]===0&&i[2]===0&&(i=[0,0,1]);let a=kl(kl(t,yy(i,2.5)),[0,1.5,0]),s=[t[0]-o[0],0,t[2]-o[2]],c=Ll(s);c[0]===0&&c[2]===0&&(c=[i[0],0,i[2]]);let l=Math.max(1,r),u=[o[0]+c[0]*l*1.3,o[1]+l*.75,o[2]+c[2]*l*1.3];return{waypoints:[e,u,a],finalPos:a}}function ni(e,t,n=35,o=28){let r=Jr(t),i=Fl(e,r),a=Jr(Math.max(0,Math.min(1,(t-.66)/.34)));return{pos:i,fov:n+(o-n)*a,eased:r}}function Nl(e,t,n){let o=e.position.clone(),r=new Mt.Quat().copy(e.quaternion);e.position.set(t[0],t[1],t[2]),e.lookAt(new Mt.Vec3(n[0],n[1],n[2]));let i=new Mt.Quat().copy(e.quaternion);return e.position.copy(o),e.quaternion.copy(r),i}var Ao=class{constructor(t){this.active=!1;this.waypoints=[];this.startQuat=new Mt.Quat;this.endQuat=new Mt.Quat;this.outQuat=new Mt.Quat;this.startTime=0;this.duration=2500;this.endFov=28;this.resolveFn=null;this.camera=t}start(t,n,o,r=2500,i=28){return this.settle(),this.waypoints=t,this.startQuat.copy(n),this.endQuat.copy(o),this.duration=r,this.endFov=i,this.startTime=performance.now(),this.active=!0,new Promise(a=>{this.resolveFn=a})}update(t){if(!this.active)return!1;let n=Math.min(1,(t-this.startTime)/this.duration),{pos:o,fov:r,eased:i}=ni(this.waypoints,n,35,this.endFov);return this.camera.position.set(o[0],o[1],o[2]),this.outQuat.copy(this.startQuat).slerp(this.endQuat,ei(i,.15)),this.camera.quaternion.copy(this.outQuat),this.camera.fov=r,this.camera.updateProjectionMatrix(),n>=1?(this.settle(),!1):!0}cancel(){this.settle()}settle(){this.active=!1;let t=this.resolveFn;this.resolveFn=null,t&&t()}};var Vl=$o,gy=.12,xy=.25,vy=1.5;function Gl(e,t,n=0,o,r){let i=[t.x*E,n+vy,t.y*E],a=r?[r[0],r[1],r[2]]:i,s=e[1],c=Number.isFinite(s)?s+Vl:Number.isFinite(o)?n+o:n+Vl,l=i[0]-e[0],u=i[2]-e[2],m=Math.hypot(l,u),h=m>.001?Math.min(gy,m*xy):0,d=m>.001?l/m:0,f=m>.001?u/m:0;return{eye:[e[0]+d*h,c,e[2]+f*h],focal:a}}var St=Math.PI/180,My=45,oi=80,Eo=70,Sy=1,wy=.99;function Py(e,t){if(!(e<Sy))return oi;if(!(Number.isFinite(t)&&t>0))return Eo;let n=2*Math.atan(t/(2*Co*wy)/Math.max(.05,e))/St;return Math.max(Eo,Math.min(oi,n))}var Iy=.25,Co=1,Ry=.25,Ay=12*St,Ey=.2,Cy=1.5,Hl=.8,zl=6,Kl=1.9,_y=2/3,Ty=.12,ky=.9,Ly=1.2,Fy=2,ql=.05,Oy=6;function $l(e,t,n=0){if(!e.length)return{min:[t[0]-6,n,t[2]-6],max:[t[0]+6,Math.max(n+Hl,t[1]),t[2]+6]};let o=1/0,r=-1/0,i=1/0,a=-1/0,s=n;for(let f of e)o=Math.min(o,f.cx-f.halfX),r=Math.max(r,f.cx+f.halfX),i=Math.min(i,f.cz-f.halfZ),a=Math.max(a,f.cz+f.halfZ),s=Math.max(s,f.y);let c=r-o,l=a-i,u=Math.max(c,Math.min(l,zl))/2,m=Math.max(l,Math.min(c,zl))/2,h=(o+r)/2,d=(i+a)/2;return{min:[h-u,n,d-m],max:[h+u,Math.max(n+Hl,s),d+m]}}function Dy(e){return{min:[e.min[0],e.min[1],e.min[2]],max:[e.max[0],e.max[1]+Kl,e.max[2]]}}function ri(e){let t=e.max[1];return[(e.min[0]+e.max[0])/2,Math.max(e.min[1]+Cy,t+Ey,t+Kl*_y),(e.min[2]+e.max[2])/2]}function Zl(e,t){let n=e[0]-t[0],o=e[2]-t[2],r=Math.hypot(n,o);return r<.001?{x:0,z:1}:{x:n/r,z:o/r}}function Ul(e,t,n){let o=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2],a=Math.hypot(o,r,i)||1;o/=a,r/=a,i/=a;let s=-i,c=o,l=Math.hypot(s,c);if(l<1e-6)return 1/0;s/=l,c/=l;let u=1/0,m=-1/0;for(let h=0;h<8;h++){let d=(h&1?n.max[0]:n.min[0])-e[0],f=(h&2?n.max[1]:n.min[1])-e[1],p=(h&4?n.max[2]:n.min[2])-e[2],b=Math.max(ql,d*o+f*r+p*i),y=(d*s+p*c)/b;y<u&&(u=y),y>m&&(m=y)}return m-u}function jl(e,t,n){let o=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2],a=Math.hypot(o,r,i)||1;o/=a,r/=a,i/=a;let s=-i,c=o,l=Math.hypot(s,c);if(l<1e-6)return 1/0;s/=l,c/=l;let u=-c*r,m=c*o-s*i,h=s*r,d=1/0,f=-1/0;for(let p=0;p<8;p++){let b=(p&1?n.max[0]:n.min[0])-e[0],y=(p&2?n.max[1]:n.min[1])-e[1],g=(p&4?n.max[2]:n.min[2])-e[2],M=Math.max(ql,b*o+y*r+g*i),P=(b*u+y*m+g*h)/M;P<d&&(d=P),P>f&&(f=P)}return f-d}function _o(e,t){return Math.tan(e*St/2)*Math.max(.05,t)}function Xl(e,t,n){let o=Py(n,e),r=c=>Math.max(My,Math.min(o,c)),i=c=>2*Math.atan(c)/St,a=Number.isFinite(e)&&e>0?r(i(e/(2*Iy)/Math.max(.05,n))):o;if(!(Number.isFinite(t)&&t>0))return a;let s=Math.min(a,r(i(t/(2*Ty))));return e/(2*_o(s,n))>Co?a:s}function Ql(e,t,n,o={}){let r=ri(t),i=[e[0],e[1],e[2]],a=0,s=0,c=f=>{if(!(f>0))return;let p=Zl(i,r);i[0]+=p.x*f,i[2]+=p.z*f,s+=f},l=o.preserveEye?0:t.max[1]+Ry-i[1];l>0&&(i[1]+=l,a=l,c(l/Math.tan(Ay)));let u=Dy(t),m=Ul(i,r,t),h=Xl(m,jl(i,r,u),n),d=m/(2*_o(h,n));for(let f=0;!o.preserveEye&&f<Oy&&d>Co;f++){let p=Math.max(1,Math.hypot(i[0]-r[0],i[2]-r[2])),b=Number.isFinite(d)?d/Co:2;c(Math.min(60,p*(Math.min(4,b)-1)+.5)),m=Ul(i,r,t),h=Xl(m,jl(i,r,u),n),d=m/(2*_o(h,n))}return{eye:i,focal:r,fov:h,raisedM:a,pulledBackM:s,stageFrameWidth:d}}function By(e,t,n){let o=Math.tan(t*St/2),r=_o(t,n);return Math.max(1,e/Math.max(.05,Math.min(o,r)))}var Ny=.7,Wl=.5,Vy=.8;function Yl(e,t,n){let o=[t[0]-e[0],t[1]-e[1],t[2]-e[2]],r=[n[0]-e[0],n[1]-e[1],n[2]-e[2]],i=o[0]*r[0]+o[1]*r[1]+o[2]*r[2],a=Math.hypot(o[0],o[1],o[2])*Math.hypot(r[0],r[1],r[2])||1;return Math.acos(Math.max(-1,Math.min(1,i/a)))/St}function Gy(e,t,n){let o=l=>{let u=Math.hypot(l[0],l[1],l[2])||1;return[l[0]/u,l[1]/u,l[2]/u]},r=[t[0]-e[0],t[1]-e[1],t[2]-e[2]],i=Math.hypot(r[0],r[1],r[2]),a=o(r),s=o([n[0]-e[0],n[1]-e[1],n[2]-e[2]]),c=o([0,1,2].map(l=>a[l]*(1-Wl)+s[l]*Wl));return[e[0]+c[0]*i,e[1]+c[1]*i,e[2]+c[2]*i]}function Jl(e,t){let{aspect:n,venue:o}=t,r=e.focal,i=Zl(e.eye,r),a=p=>(p[0]-r[0])*i.x+(p[2]-r[2])*i.z,s=[{name:"seat",eye:e.eye,focal:r,fov:e.fov}],c=Fy*(t.rowDepthM??ky),l=[e.eye[0]+i.x*c,e.eye[1]+Ly,e.eye[2]+i.z*c],u=[e.eye[0],e.eye[1]-Ny,e.eye[2]],m=Gy(l,r,u);s.push({name:"row",eye:l,focal:m,fov:Math.min(oi,Math.max(e.fov,2*Math.max(Yl(l,m,u),Yl(l,m,r))/Vy))});let h=(p,b,y,g)=>{let M=By(y,e.fov,n)*1.08,P=M*Math.sin(g*St),I=Number.isFinite(t.seatingTopY)?t.seatingTopY+2:-1/0,S=Math.max(P,I-b[1]),x=M*Math.cos(g*St);return{name:p,eye:[b[0]+i.x*x,b[1]+S,b[2]+i.z*x],focal:b,fov:e.fov}};t.section&&t.section.radius>0&&s.push(h("section",t.section.center,t.section.radius,35)),s.push(h("venue",o.center,Math.max(1,o.radius),40));let d=[],f=-1/0;for(let p of s){let b=a(p.eye);d.length&&b<=f+.5||(d.push(p),f=b)}return d}var ou=require("ogl"),On=Math.PI/180,ii=320,eu=70*On,Hy=32*On,zy=24*On,tu=.0026,Uy=.22,jy=.006,Xy=180,Wy=900,Yy=1100,Ky=4,Fe=(e,t,n)=>Math.max(t,Math.min(n,e)),nu=e=>e<.5?4*e*e*e:1-Math.pow(-2*e+2,3)/2;function ru(e){let{canvas:t,camera:n}=e,o=[],r=!1,i=0,a=0,s=0,c=0,l=0,u=0,m=ii,h=null,d=()=>{h&&(clearTimeout(h),h=null)},f=!1,p=[0,0],b=0,y=!1,g=null,M=null,P=new Map,I=!1,S=0,x=0,v=0,w=0,R=()=>r&&o.length?o[Fe(Math.round(i),0,o.length-1)].name:null,T=()=>{let D=R();D!==g&&(g=D,e.onStopChange?.(D))},O=()=>{if(!r||!o.length)return;let D=o[Fe(Math.floor(i),0,o.length-1)],G=o[Fe(Math.ceil(i),0,o.length-1)],j=Fe(i-Math.floor(i),0,1),V=(J,ce)=>J+(ce-J)*j,z=[V(D.eye[0],G.eye[0]),V(D.eye[1],G.eye[1]),V(D.eye[2],G.eye[2])],q=[V(D.focal[0],G.focal[0]),V(D.focal[1],G.focal[1]),V(D.focal[2],G.focal[2])],$=q[0]-z[0],re=q[1]-z[1],Q=q[2]-z[2],W=Math.hypot($,re,Q)||1,Y=Math.atan2($,Q),K=Math.asin(Fe(re/W,-1,1)),oe=Y+a,ee=Fe(K+s,-80*On,80*On),le=Math.cos(ee)*W;$=Math.sin(oe)*le,re=Math.sin(ee)*W,Q=Math.cos(oe)*le,n.position.set(z[0],z[1],z[2]),n.fov=V(D.fov,G.fov),n.updateProjectionMatrix(),n.lookAt(new ou.Vec3(z[0]+$,z[1]+re,z[2]+Q)),e.onApplied?.()},C=()=>{if(!r||!o.length)return;let D=Fe(Math.round(i),0,o.length-1);if(e.reducedMotion()){f=!1,i=D,O(),T(),e.requestRender();return}if(Math.abs(D-i)<.001){f=!1,T();return}c=i,l=D,u=performance.now(),m=ii,f=!0,e.requestRender()},A=D=>{!r||o.length<2||(d(),f=!1,i=Fe(i+D,0,o.length-1),O(),T(),e.requestRender())},_=(D,G)=>{r&&(d(),f=!1,y=!1,a=Fe(a-D*tu,-eu,eu),s=Fe(s-G*tu,-zy,Hy),O(),e.requestRender())},L=D=>{r&&(P.set(D.pointerId,{x:D.clientX,y:D.clientY}),P.size===1?(I=!0,w=0,S=D.clientX,x=D.clientY):P.size===2&&(I=!1,v=N()))},N=()=>{let D=[...P.values()];return D.length<2?0:Math.hypot(D[0].x-D[1].x,D[0].y-D[1].y)},k=D=>{if(!r||!P.has(D.pointerId))return;if(P.set(D.pointerId,{x:D.clientX,y:D.clientY}),P.size>=2){let V=N();v>0&&A((v-V)*jy),v=V;return}if(!I)return;let G=D.clientX-S,j=D.clientY-x;S=D.clientX,x=D.clientY,w+=Math.abs(G)+Math.abs(j),!(w<=Ky)&&_(G,j)},F=D=>{P.delete(D.pointerId)&&(P.size<2&&(v=0),P.size===0&&(I=!1,C()))},H=D=>{if(!r)return;D.preventDefault();let G=D.deltaMode===1?16:D.deltaMode===2?100:1,j=Fe(D.deltaY*G/100,-2,2);A(j*Uy),M&&clearTimeout(M),M=setTimeout(()=>{M=null,C()},Xy)},B=()=>{d(),r&&(r=!1,f=!1,y=!1,o=[],P.clear(),I=!1,M&&(clearTimeout(M),M=null),g!==null&&(g=null,e.onStopChange?.(null)))};return t.addEventListener("pointerdown",L),t.addEventListener("pointermove",k),t.addEventListener("pointerup",F),t.addEventListener("pointercancel",F),t.addEventListener("wheel",H,{passive:!1}),{get active(){return r},enter(D,G=0){if(D.length<2){B();return}d(),o=D,r=!0,i=e.reducedMotion()?0:Fe(G,0,D.length-1),i>0&&(h=setTimeout(()=>{h=null,r&&(c=i,l=0,u=performance.now(),m=Yy,f=!0,e.requestRender())},Wy)),a=0,s=0,f=!1,y=!1,g=null,O(),T(),e.requestRender()},exit:B,recentre(){return r?Math.abs(a)<1e-4&&Math.abs(s)<1e-4?!0:e.reducedMotion()?(y=!1,a=0,s=0,O(),e.requestRender(),!0):(p=[a,s],b=performance.now(),y=!0,e.requestRender(),!0):!1},update(D){if(!r)return!1;let G=!1;if(y){let j=Fe((D-b)/ii,0,1),V=1-nu(j);a=p[0]*V,s=p[1]*V,j>=1?(y=!1,a=0,s=0):G=!0}if(f){let j=Fe((D-u)/m,0,1);i=c+(l-c)*nu(j),j>=1?(f=!1,i=l,T()):G=!0}return O(),G},currentStop:R,dispose(){B(),t.removeEventListener("pointerdown",L),t.removeEventListener("pointermove",k),t.removeEventListener("pointerup",F),t.removeEventListener("pointercancel",F),t.removeEventListener("wheel",H)}}}function iu(e){return e.flying?"cinematic":e.panoramaMounted?"panorama":e.seatViewActive?"seatView":"orbit"}var li=null;function gu(){return li??=Promise.resolve().then(()=>(yu(),bu)).catch(e=>{throw li=null,e}),li}var xu=()=>typeof performance<"u"&&performance.now?performance.now():Date.now(),Bo=class{constructor(t){this.orbitLatched=!1;this.panoramaOpenedAt=0;this.cb=t}emit(t,n){if(this.cb)try{this.cb(t,n)}catch{}}opened(t,n,o,r){this.emit("3d_opened",{seats:t,hasHeights:n,...o===void 0?{}:{buildMs:Math.round(o)},...r===void 0?{}:{prepSource:r}})}orbitEngaged(){this.orbitLatched||(this.orbitLatched=!0,this.emit("3d_orbit_engaged"))}seatPicked(t,n){this.emit("3d_seat_picked",{seatId:t,sectionId:n})}cinematicPlayed(t){this.emit("3d_cinematic_played",{durationMs:t,reducedMotion:!1})}cinematicSkipped(){this.emit("3d_cinematic_skipped",{reducedMotion:!0})}cinematicCancelled(){this.emit("3d_cinematic_cancelled")}panoramaOpened(){this.panoramaOpenedAt=xu(),this.emit("3d_panorama_opened")}panoramaClosed(){let t=this.panoramaOpenedAt?Math.round(xu()-this.panoramaOpenedAt):0;this.panoramaOpenedAt=0,this.emit("3d_panorama_closed",{viewMs:t})}panoramaFailed(t,n){this.emit("3d_panorama_failed",{seatId:t,phase:n})}panoramaFallback(t){this.emit("3d_panorama_fallback",{seatId:t})}contextLost(){this.emit("3d_context_lost")}contextRestored(){this.emit("3d_context_restored")}};function vu(e){let t=e.style.position;return getComputedStyle(e).position!=="static"?()=>{}:(e.style.position="relative",()=>{e.style.position==="relative"&&(e.style.position=t)})}function Mu(e){let{container:t,model:n,opts:o,expandedSeatById:r,seatIdsByRow:i,isNarrow:a}=e,s=null,c=()=>{if(!s)return;let m=a();Object.assign(s.style,m?{left:"12px",right:"12px",bottom:"70px",transform:"none",justifyContent:"center"}:{left:"50%",right:"auto",bottom:"18px",transform:"translateX(-50%)",justifyContent:"initial"})},l=()=>{s?.remove(),s=null};return{show:(m,h,d=!1)=>{if(l(),e.isDisposed())return null;let f=document.createElement("div");f.setAttribute("role","group"),Object.assign(f.style,{position:"absolute",display:"flex",flexDirection:"column",alignItems:"center",gap:"6px",zIndex:"4"});let p=o.chrome?.caption!==!1,b=o.chrome?.seatStepper!==!1;if(!p&&!b)return null;let y=r.get(m),g=y?.sectionId?n.sections.find(R=>R.id===y.sectionId):void 0,M=y?.label??m;f.setAttribute("aria-label",`Explore views near ${g?.label?`${g.label}, `:""}seat ${M}`);let P=document.createElement("span");P.textContent=o.seatViewCaption?.(m)??["Live 3D seat view",g?.label,M].filter(Boolean).join(" \xB7 "),Object.assign(P.style,{maxWidth:"min(70vw, 560px)",padding:"5px 10px",borderRadius:"999px",overflow:"hidden",color:"#d9e3f5",background:"rgba(12,18,32,0.72)",font:"600 11px/1.2 inherit",textOverflow:"ellipsis",whiteSpace:"nowrap",backdropFilter:"blur(6px)"}),p&&f.appendChild(P);let I=document.createElement("div");Object.assign(I.style,{display:"flex",alignItems:"center",justifyContent:"center",gap:"6px"}),f.appendChild(I);let S=y?.rowId?i.get(y.rowId):void 0,x=S?.indexOf(m)??-1,v=x>=0?[S?.[x-1],S?.[x+1]]:[void 0,void 0],w=(R,T,O,C=!1)=>{let A=document.createElement("button");A.type="button",A.textContent=R,A.setAttribute("aria-label",T),Object.assign(A.style,{minHeight:"44px",padding:C?"10px 16px":"10px",borderRadius:"999px",background:"rgba(12,18,32,0.78)",color:"#eef1f8",border:"1px solid rgba(150,165,205,0.4)",backdropFilter:"blur(6px)",font:"600 13px/1 inherit",cursor:"pointer",whiteSpace:"nowrap"}),C||(A.style.minWidth="44px"),C&&(A.dataset.panoramaTrigger=""),A.addEventListener("click",O),I.appendChild(A)};if(b&&v[0]){let R=r.get(v[0])?.label??v[0];w("\u2039",`View previous seat ${R}`,()=>{e.flyToSeat(v[0])})}if(b&&o.getSeatView){let R=o.seatViewActionLabel?.(m)??"Open 360\xB0 panorama";w(d?`\u21BB Retry ${R}`:`\u25C9 ${R}`,`${d?"Retry":R} from seat ${M}`,()=>{if(e.isDisposed()||h!==e.flightGen()){l();return}l(),e.openPanorama(m,400,h)},!0)}if(b&&v[1]){let R=r.get(v[1])?.label??v[1];w("\u203A",`View next seat ${R}`,()=>{e.flyToSeat(v[1])})}return!I.childElementCount&&!p?null:(t.appendChild(f),s=f,c(),f)},remove:l,layout:c}}var l0={rotate:"Drag to rotate the venue",move:"Drag to move the venue",zoomIn:"Zoom in",zoomOut:"Zoom out",fitView:"Show whole venue"};function Su(e){let{container:t,orbit:n,isNarrow:o}=e,r={...l0,...e.labels??{}},i=(M,P)=>{M.setAttribute("aria-label",P),M.title=P},a=document.createElement("div"),s=!1;a.className="sl-3d-navigation-controls",Object.assign(a.style,{position:"absolute",right:"14px",bottom:"14px",display:"flex",zIndex:"4",flexDirection:"column",alignItems:"flex-end",gap:"7px"});let c=document.createElement("div");c.setAttribute("role","group"),c.setAttribute("aria-label","3D drag mode"),Object.assign(c.style,{display:"flex",flexDirection:"column",gap:"6px",alignItems:"flex-end"});let l=document.createElement("div");l.setAttribute("role","group"),l.setAttribute("aria-label","3D view controls"),Object.assign(l.style,{display:"flex",flexDirection:"column",gap:"6px",alignItems:"flex-end"});let u=document.createElement("button");u.type="button",u.textContent="\u21BB",i(u,r.rotate);let m=document.createElement("button");m.type="button",m.textContent="\u2725",i(m,r.move);let h=document.createElement("button");h.type="button",h.textContent="\u2212",i(h,r.zoomOut);let d=document.createElement("button");d.type="button",d.textContent="+",i(d,r.zoomIn);for(let M of[u,m,h,d])M.className="sl-3d-icon-control",Object.assign(M.style,{width:"44px",minWidth:"44px",minHeight:"44px",padding:"9px",border:"1px solid rgba(150,165,205,0.35)",borderRadius:"999px",color:"#c9d4ea",background:"rgba(12,18,32,0.82)",font:"600 17px/1 inherit",backdropFilter:"blur(6px)",cursor:"pointer",whiteSpace:"nowrap"});c.append(u,m),l.append(d,h);let f=M=>{n.setPrimaryDragMode(M);let P=M==="orbit";u.setAttribute("aria-pressed",String(P)),m.setAttribute("aria-pressed",String(!P)),u.style.background=P?"rgba(96,110,150,0.68)":"rgba(12,18,32,0.82)",m.style.background=P?"rgba(12,18,32,0.82)":"rgba(96,110,150,0.68)",a.title=P?`${r.rotate} \xB7 ${r.move} with Shift`:`${r.move} \xB7 ${r.rotate} with Shift`};u.addEventListener("click",()=>f("orbit")),m.addEventListener("click",()=>f("pan"));let p=()=>{let{atMin:M,atMax:P}=n.dollyLimitState();d.disabled!==M&&(d.disabled=M),h.disabled!==P&&(h.disabled=P)};h.addEventListener("click",()=>{n.zoomBy(dn),p()}),d.addEventListener("click",()=>{n.zoomBy(Nt),p()}),a.append(c,l),f("orbit"),t.appendChild(a);let b=e.enabled!==!1,y=()=>{let M=o();a.style.display=s||!b?"none":"flex",a.style.right=M?"12px":"14px",a.style.bottom=M?"calc(env(safe-area-inset-bottom, 0px) + 76px)":"14px",c.style.display=M?"none":"flex",d.style.display=M?"none":"",h.style.display=M?"none":""};return y(),{element:a,utilityControls:l,setNavigationMode:f,syncZoomLimits:p,setSeatViewLocked:M=>{s=M,n.setInteractionEnabled(!M),y()},seatViewLocked:()=>s,layout:y}}var u0=12;function m0(e,t){if(!e)return!1;let n=e.x-t[0],o=e.y-t[1],r=e.z-t[2];return Math.hypot(n,o,r)>u0}var f0=.5,d0=12;function h0(e,t,n){return!(e>0)||!(n>0)?0:f0*n/(2*e*Math.tan(t*Math.PI/360))}function wu(e){let{glctx:t,orbit:n,model:o,seats:r,opts:i,cinematic:a,analytics:s,seatIdByIndex:c,sectionIdBySeatId:l,tapSlop:u,tapMs:m,cancelFlight:h,focusSectionCamera:d,setSelection:f,ensureSeatView:p}=e,b=0,y=0,g=0,M=-1,P=!1,I=!1,S=O=>{e.seatViewLocked()||M===-1&&(M=O.pointerId,b=O.clientX,y=O.clientY,g=performance.now(),P=!1,I=a.active,a.active&&(s.cinematicCancelled(),h(),i.onViewTargetChange?.(null)))},x=O=>{O.pointerId===M&&Math.hypot(O.clientX-b,O.clientY-y)>u&&(P=!0)},v=(O,C,A,_,L)=>{let N=t.canvas.getBoundingClientRect(),k=t.canvas.clientWidth||N.width||1,F=t.canvas.clientHeight||N.height||1,H=O-N.left,B=C-N.top,D=_*_,G=-1,j=D,V=1/0;for(let z of r){if(A&&z.sectionId!==A)continue;let q=o.seats.idToIndex.get(z.id);if(q===void 0)continue;if(L){let K=Math.round(o.seats.iState[q]??0);if(K!==0&&K!==3)continue}let $=q*3,re=tt(n.camera.projectionViewMatrix,[o.seats.iPosition[$],o.seats.iPosition[$+1]+.55,o.seats.iPosition[$+2]],k,F);if(!re.visible)continue;let Q=re.x-H,W=re.y-B,Y=Q*Q+W*W;(Y<j||Math.abs(Y-j)<1&&re.depth<V)&&(G=q,j=Y,V=re.depth)}return G},w=(O,C)=>{let A=e.gpu(),_=e.pick();if(!A||!_)return-1;_.syncFromSeatProgram(A.seatProgram);let L=t.canvas.getBoundingClientRect(),N=t.renderer.dpr,{x:k,y:F}=Cl(O,C,L,N,t.gl.drawingBufferWidth,t.gl.drawingBufferHeight),H=Math.max(2,Math.round(8*N));return _.pick(n.camera,k,F,H)},R=O=>{let C=n.camera?.position;if(!C)return!1;let A=O*3,_=Math.hypot(C.x-o.seats.iPosition[A],C.y-o.seats.iPosition[A+1],C.z-o.seats.iPosition[A+2]),L=t.canvas.clientHeight||t.canvas.getBoundingClientRect().height;return h0(_,n.fovY,L)>=d0};return{onDown:S,onMove:x,onUp:O=>{if(O.pointerId!==M)return;let C=!P&&performance.now()-g<m;if(M=-1,I){I=!1;return}let A=e.gpu(),_=e.pick();if(!C||!A||!_)return;let L=w(O.clientX,O.clientY),N=L>=0&&R(L),k=!1;if(e.focusedSectionId()&&L>=0){let B=c[L],D=B?l.get(B):void 0;if(D&&D!==e.focusedSectionId()&&d(D,{keepCamera:N})){if(!N)return;k=!0}}if(e.focusedSectionId()&&L<0&&(L=v(O.clientX,O.clientY,e.focusedSectionId(),44,!1)),e.focusedSectionId()&&L<0){let B=v(O.clientX,O.clientY,null,72,!1),D=B>=0?c[B]:void 0,G=D?l.get(D):void 0;if(G&&G!==e.focusedSectionId()&&d(G))return}if(!e.focusedSectionId()){L<0&&(L=v(O.clientX,O.clientY,null,42,!1));let B=L>=0?c[L]:void 0,D=B?l.get(B):void 0;if(D&&d(D,{keepCamera:N})){if(!N)return;k=!0}}if(L<0||L>=c.length){e.selection().size&&(f([]),i.onViewTargetChange?.(null));return}let F=c[L],H=Ce[Math.round(o.seats.iState[L]??0)]??"available";if(H!=="available"&&H!=="selected"){i.onSeatInspect?.(F,H);return}if(e.selection().has(F)&&e.selection().size===1){f([]),i.onViewTargetChange?.(null),i.onSeatPick?.(F);return}if(f([F]),p(F),s.seatPicked(F,l.get(F)),i.onSeatPick?.(F),e.focusedSectionId()&&!k){let B=L*3,D=[o.seats.iPosition[B],o.seats.iPosition[B+1],o.seats.iPosition[B+2]];m0(n.camera?.position,D)&&e.focusSeatCamera(F)}}}}var No=class{constructor(t,n){this.minX=0;this.minZ=0;this.cell=1;this.cols=1;this.rows=1;this.cellStart=null;this.cellItems=null;this.iPosition=t,this.count=n}ensureGrid(){if(this.cellStart||this.count===0)return;let t=this.iPosition,n=1/0,o=1/0,r=-1/0,i=-1/0;for(let d=0;d<this.count;d++){let f=t[d*3],p=t[d*3+2];f<n&&(n=f),f>r&&(r=f),p<o&&(o=p),p>i&&(i=p)}let a=Math.max(r-n,.001),s=Math.max(i-o,.001);this.cell=Math.max(Math.sqrt(a*s*4/this.count),.25),this.cols=Math.max(1,Math.ceil(a/this.cell)+1),this.rows=Math.max(1,Math.ceil(s/this.cell)+1),this.minX=n,this.minZ=o;let c=this.cols*this.rows,l=new Int32Array(c+1),u=d=>{let f=Math.min(this.cols-1,Math.max(0,Math.floor((t[d*3]-n)/this.cell)));return Math.min(this.rows-1,Math.max(0,Math.floor((t[d*3+2]-o)/this.cell)))*this.cols+f};for(let d=0;d<this.count;d++)l[u(d)+1]++;for(let d=0;d<c;d++)l[d+1]+=l[d];let m=new Int32Array(this.count),h=l.slice(0,c);for(let d=0;d<this.count;d++)m[h[u(d)]++]=d;this.cellStart=l,this.cellItems=m}gather(t,n,o,r,i){this.ensureGrid();let a=this.cellStart,s=this.cellItems;if(!a||!s)return 0;let c=r.length,l=o*o,u=Math.floor((t-this.minX)/this.cell),m=Math.floor((n-this.minZ)/this.cell),h=Math.ceil(o/this.cell)+1,d=this.iPosition,f=0;for(let p=0;p<=h&&f<c;p++){let b=m-p,y=m+p,g=u-p,M=u+p;for(let P=b;P<=y&&f<c;P++){if(P<0||P>=this.rows)continue;let I=P===b||P===y;for(let S=g;S<=M&&f<c;S++){if(!I&&S!==g&&S!==M){S=M-1;continue}if(S<0||S>=this.cols)continue;let x=P*this.cols+S;for(let v=a[x],w=a[x+1];v<w&&f<c;v++){let R=s[v],T=d[R*3]-t,O=d[R*3+2]-n,C=i===void 0?0:d[R*3+1]-i;T*T+C*C+O*O<=l&&(r[f++]=R)}}}}return f}};var Vo=class{constructor(t){this.ctx=t;this.detailVisible=!1;this.seatDetailMix=0;this.structureDetailMix=0;this.nearBuf=new Int32Array(Wn);this.lastGatherX=1/0;this.lastGatherZ=1/0;this.lastGatherY=1/0;this.nearIndex=new No(t.model.seats.iPosition,t.model.seats.count)}forceRegather(){this.lastGatherX=1/0}setDetailEnabled(t){let n=this.ctx.gpu();t||(this.detailVisible=!1),this.lastGatherX=1/0,this.lastGatherZ=1/0,!t&&n?.nearSeatCount()&&n.setNearSeats(this.nearBuf,0)}update(t){let{model:n}=this.ctx,o=this.ctx.gpu();if(!o)return;if(!t){o.nearSeatCount()&&o.setNearSeats(this.nearBuf,0);return}let r=this.ctx.orbit().camera.position;if(Math.hypot(r.x-this.lastGatherX,r.y-this.lastGatherY,r.z-this.lastGatherZ)<rr)return;if(this.lastGatherX=r.x,this.lastGatherY=r.y,this.lastGatherZ=r.z,Math.hypot(r.x-n.bounds.center[0],r.y-n.bounds.center[1],r.z-n.bounds.center[2])-n.bounds.radius>or){o.nearSeatCount()&&o.setNearSeats(this.nearBuf,0);return}let s=this.nearIndex.gather(r.x,r.z,or,this.nearBuf,r.y);s===0&&o.nearSeatCount()===0||o.setNearSeats(this.nearBuf,s)}ease(t,n,o){let r=1-Math.exp(-t*9),i=1-Math.exp(-t*20);this.seatDetailMix+=(n-this.seatDetailMix)*(n>this.seatDetailMix?r:i),this.structureDetailMix+=(o-this.structureDetailMix)*(o>this.structureDetailMix?r:i),Math.abs(n-this.seatDetailMix)<.01&&(this.seatDetailMix=n),Math.abs(o-this.structureDetailMix)<.01&&(this.structureDetailMix=o)}};function Pu(e){let t=Math.max(5,e.radius),n=e.focalWorld[0]-e.center[0],o=e.focalWorld[2]-e.center[2],r=Math.hypot(n,o);if(r<t*.12)return{center:e.center,radius:t,polarDeg:48};let i=Math.min(r*.25,t*.2);return{center:[e.center[0]+n/r*i,e.center[1],e.center[2]+o/r*i],radius:t+i,polarDeg:50}}var Go=require("ogl");function Iu(){let e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg");t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("width","18"),t.setAttribute("height","18"),t.setAttribute("aria-hidden","true"),t.setAttribute("focusable","false"),t.setAttribute("fill","none"),t.setAttribute("stroke","currentColor"),t.setAttribute("stroke-width","2"),t.setAttribute("stroke-linecap","round"),t.setAttribute("stroke-linejoin","round");let n=document.createElementNS(e,"path");return n.setAttribute("d","M8 3H5a2 2 0 0 0-2 2v3M16 3h3a2 2 0 0 0 2 2v3M8 21H5a2 2 0 0 0-2-2v-3M16 21h3a2 2 0 0 0 2-2v-3"),t.appendChild(n),t}function Eu(e){let{container:t,model:n,opts:o,orbit:r,cinematic:i,analytics:a,loop:s,labelOverlay:c,stageAzimuth:l,overviewFraming:u}=e,m=0,h=-1,d=(x,v,w=28)=>{r.camera.position.set(x[0],x[1],x[2]),r.camera.lookAt(new Go.Vec3(v[0],v[1],v[2])),r.camera.fov=w,r.camera.updateProjectionMatrix()},f=document.createElement("button");f.className="sl-3d-overview-control sl-3d-icon-control",f.type="button",f.replaceChildren(Iu());let p=o.navLabels?.fitView??"Show whole venue";f.setAttribute("aria-label",p),f.title=p,Object.assign(f.style,{width:"44px",minWidth:"44px",minHeight:"44px",padding:"9px",borderRadius:"999px",background:"rgba(12,18,32,0.72)",color:"#c9d4ea",border:"1px solid rgba(150,165,205,0.35)",backdropFilter:"blur(6px)",font:"600 11px/1 inherit",cursor:"pointer",whiteSpace:"nowrap"});let b=()=>{f.firstElementChild||f.replaceChildren(Iu())};b();let y=x=>{h=x;let v=e.gpu();v&&(v.seatProgram.uniforms.uFocusFloor.value=x,v.solidProgram.uniforms.uFocusFloor.value=x,v.chairProgram.uniforms.uFocusFloor.value=x),e.showSectionSeatLabels(null)},g=()=>{if(e.isDisposed())return;o.onViewTargetChange?.(null),o.onSectionFocusChange?.(null),e.panorama()&&(e.panorama().dispose(),e.setPanorama(null),a.panoramaClosed()),e.setPanoramaSphereVisible(!1),e.panoramaLoadAbort()?.abort(),e.setPanoramaLoadAbort(null),e.restorePanoramaLayer(),f.style.display="",c.setVisible(!0),e.setFrozen(!1);let x=h>=0?n.floors[h]:null;if(e.setNearFieldDetailEnabled(!!x),e.setSeatViewLocked(!1),M(),e.removeArriveChip(),e.setNavigationMode("orbit"),x){let v=x.focalWorld[0]-x.center[0],w=x.focalWorld[2]-x.center[2],R=Math.hypot(v,w)>x.radius*.12?Math.atan2(v,w):l,T={center:x.center,radius:x.radius,box:x.box},O={polarDeg:58,margin:1.12};e.reducedMotion()?r.frame(T,!1,R,!1,O):r.frameSoft(T,R,!1,O)}else e.reducedMotion()?r.frame(n.bounds,!1,l,o.portraitOverviewCrop===!0,u):r.frameSoft(n.bounds,l,o.portraitOverviewCrop===!0,u);e.showSectionSeatLabels(null),s.requestRender()},M=()=>{m++,e.setSeatStepping(!1),e.panoramaLoadAbort()?.abort(),e.setPanoramaLoadAbort(null),i.active&&(i.cancel(),r.resumeAfterFlight(n.focalWorld))},P=x=>{if(e.isDisposed()||!e.gpu())return Promise.resolve();let v=n.seats.idToIndex.get(x);if(v===void 0)return Promise.resolve();e.setNearFieldDetailEnabled(!0),o.onViewTargetChange?.(x),e.panorama()&&(e.panorama().dispose(),e.setPanorama(null),e.setPanoramaSphereVisible(!1),f.style.display="",e.restorePanoramaLayer()),e.panoramaLoadAbort()?.abort(),e.setPanoramaLoadAbort(null),e.setFrozen(!1);let w=e.inSeatView()&&o.arriveAtSeatEye===!0;e.setSeatStepping(w),e.setSeatViewLocked(!1);let R=++m;w?e.showArriveChip(x,R):e.removeArriveChip();let{eye:T,focal:O}=e.resolvedSeatViewPose(x,v),C=o.arriveAtSeatEye?e.seatViewArrival(x,v):null,A=C&&C.stops.length>1&&C.stops[1].name==="row"?C.stops[1]:null,_=C?C.focal:O,L=[r.camera.position.x,r.camera.position.y,r.camera.position.z],N=ti(L,C?.eye??T,_,n.bounds.center,n.bounds.radius),k=A?A.eye:C?C.eye:o.arriveAtSeatEye?T:N.finalPos,F=C?C.fov:o.arriveAtSeatEye?t.clientWidth/Math.max(1,t.clientHeight)<.7?Eo:65:28,H=[N.waypoints[0],N.waypoints[1],k];if(c.setVisible(!1),e.reducedMotion())return e.setSeatStepping(!1),d(k,_,F),s.requestRender(),a.cinematicSkipped(),e.isDisposed()||r.syncFromCamera(),e.setSeatViewLocked(o.arriveAtSeatEye===!0),C&&e.enterSeatView(C.stops),e.showArriveChip(x,R),Promise.resolve();let B=new Go.Quat().copy(r.camera.quaternion),D=Nl(r.camera,k,_);s.requestRender();let G=w?700:2500;return i.start(H,B,D,G,F).then(()=>{e.isDisposed()||R!==m||(e.setSeatStepping(!1),a.cinematicPlayed(G),r.resumeAfterFlight(_),e.setSeatViewLocked(o.arriveAtSeatEye===!0),C&&e.enterSeatView(C.stops,A?1:0),s.requestRender(),e.showArriveChip(x,R))})},I=(x,v)=>{let w=n.sections.find(R=>R.id===x);if(!w||w.seatCount===0)return!1;if(e.setNearFieldDetailEnabled(!0),e.setSeatStepping(!1),e.setSeatViewLocked(!1),i.cancel(),e.removeArriveChip(),n.floors.length>1&&h!==w.floorIndex&&y(w.floorIndex),e.setNavigationMode("pan"),e.panorama()||c.setVisible(!0),e.showSectionSeatLabels(x),!v?.keepCamera){let R=Pu(w),T={polarDeg:R.polarDeg,margin:1.12};e.reducedMotion()?r.frame({center:R.center,radius:R.radius},!1,r.currentAzimuth,!1,T):r.glideTo({center:R.center,radius:R.radius},T)}return o.onSectionFocusChange?.(x),s.requestRender(),!0},S=x=>{if(e.isDisposed()||!e.gpu())return!1;let v=n.seats.idToIndex.get(x);if(v===void 0)return!1;let w=v*3,R=[n.seats.iPosition[w],n.seats.iPosition[w+1]+.55,n.seats.iPosition[w+2]];return e.reducedMotion()?r.frame({center:R,radius:Ru},!1,void 0,!1,Au):r.frameSoft({center:R,radius:Ru},void 0,!1,Au),s.requestRender(),!0};return f.addEventListener("click",g),{overviewChip:f,layoutOverviewChip:b,flightGen:()=>m,focusedFloor:()=>h,applyFloorFocus:y,placeCameraFinal:d,cancelFlight:M,focusOverview:g,flyToSeat:P,focusSectionCamera:I,focusSeatCamera:S}}var Ru=4.5,Au={polarDeg:48,margin:1.25};function Bn(e,t){let{doc:n,report:o}=vo(e),r=o.confident&&(o.sections.length>0||!!o.looseRowBlocks);if(!r&&!o.roles?.length)return null;if(!r){let c=new Map(o.roles.map(d=>[d.id,d.role])),l=d=>d.map(f=>f.type==="shape"&&c.has(f.id)?{...f,role:c.get(f.id)}:f),u=e.floors?.map(d=>({...d,objects:l(d.objects)})),m=new Float64Array(t.length).fill(Number.NaN),h=new Float64Array(t.length*2).fill(Number.NaN);return t.forEach((d,f)=>{d.eyeHeightM!==void 0&&(m[f]=d.eyeHeightM),d.focalPoint&&(h[f*2]=d.focalPoint.x,h[f*2+1]=d.focalPoint.y)}),{doc:{...e,objects:u?.[0]?.objects??l(e.objects),...u?{floors:u}:{}},report:o,eyeHeightM:m,focal:h}}let i=new Map(Ut(n).map(c=>[c.id,c])),a=new Float64Array(t.length).fill(Number.NaN),s=new Float64Array(t.length*2).fill(Number.NaN);return t.forEach((c,l)=>{let u=i.get(c.id)??c;u.eyeHeightM!==void 0&&(a[l]=u.eyeHeightM),u.focalPoint&&(s[l*2]=u.focalPoint.x,s[l*2+1]=u.focalPoint.y)}),{doc:n,report:o,eyeHeightM:a,focal:s}}function ui(e,t){return e.map((n,o)=>{let r=t.eyeHeightM[o],i=t.focal[o*2],a=t.focal[o*2+1],s={...n};return Number.isNaN(r)?delete s.eyeHeightM:s.eyeHeightM=r,Number.isNaN(i)?delete s.focalPoint:s.focalPoint={x:i,y:a},s})}function Cu(e){let t=e.estimate===!1?null:Bn(e.doc,e.seats);return t?{input:{...e,doc:t.doc,seats:ui(e.seats,t)},estimate:t}:{input:e}}function mi(e,t,n,o,r,i,a,s,c=.5){let l=-1,u=s*s,m=1/0;for(let h=0;h<t;h++){let d=h*3,f=tt(n,[e[d],e[d+1]+c,e[d+2]],o,r);if(!f.visible)continue;let p=f.x-i,b=f.y-a,y=p*p+b*b;(y<u-4||y<u+4&&f.depth<m)&&(l=h,u=Math.min(u,y),m=f.depth)}return l}var b0={};function _u(e){let t=performance.now(),{input:n,estimate:o}=Cu(e);return{model:Qt(n),buildMs:performance.now()-t,source:"main",...o?{estimate:o}:{}}}function p0(e){let t=Ut(e.doc);return{..._u({...e,seats:t}),seats:t}}function Tu(e,t,n){if(typeof Worker>"u")return Promise.resolve(t());let o;try{o=new Worker(new URL("./scene/scene.worker.js",b0.url),{type:"module"})}catch{return Promise.resolve(t())}return new Promise(r=>{let i=!1,a=l=>{i||(i=!0,clearTimeout(c),o.terminate(),r(l))},s=()=>a(t()),c=window.setTimeout(s,15e3);o.onerror=s,o.onmessage=l=>{let u=n(l.data);u?a(u):s()},o.postMessage(e)})}function ku(e){return Tu(e,()=>_u(e),({model:t,buildMs:n,estimate:o})=>({model:t,buildMs:n,source:"worker",...o?{estimate:o}:{}}))}function Lu(e){return Tu(e,()=>p0(e),({model:t,buildMs:n,seats:o,estimate:r})=>o?{model:t,buildMs:n,seats:o,source:"worker",...r?{estimate:r}:{}}:null)}var y0=40,g0=48,x0=Math.PI/180,v0=6,M0=500;function S0(e,t,n={}){let o=performance.now(),r=t.prepared?t.prepared.estimate:t.estimate===!1?null:Bn(t.doc,t.seats);r&&(t={...t,doc:r.doc,seats:ui(t.seats,r)});let i=t.prepared?.model??Qt(t),a=new Bo(n.onAnalytics),s=new Array(i.seats.count);for(let[U,X]of i.seats.idToIndex)s[X]=U;let c=new Map(t.seats.map(U=>[U.id,U])),l=new Map;for(let U of t.seats){if(!U.rowId)continue;let X=l.get(U.rowId);X?X.push(U.id):l.set(U.rowId,[U.id])}let u=new Map;t.seats.forEach((U,X)=>{u.set(U.id,i.seatSectionIds?.[X]??U.sectionId)});let m=new Map;for(let[U,X]of i.seats.idToIndex){let Z=u.get(U);if(!Z)continue;let se=m.get(Z);se?se.push(X):m.set(Z,[X])}let h=()=>{if(!f||!i.sectionSolidRanges.length)return;let{lit:U,anyUnlit:X}=wl(i.sectionSolidRanges,m,i.seats.iState);f.setSectionShellLit(X?U:null)},d=t.doc.floors?.some(X=>(X.baseHeightM??0)>0)?!0:(t.doc.floors?.flatMap(X=>X.objects)??t.doc.objects).some(X=>X.type==="section"&&((X.height??0)>0||(X.rake??0)>0)),f=null,p=null,b=null,y=!1,g=!1,M=!1,P=new Map,I=null,S=null,x=null,v=new Map,w=null,R=()=>{x===null&&(x=e.style.zIndex,e.style.zIndex="20")},T=()=>{x!==null&&(e.style.zIndex==="20"&&(e.style.zIndex=x),x=null)},O=!1,C=()=>O?Te.focusedFloor():-1,A=()=>{f=Al(k.gl,i),p?.dispose(),p=Qc(k.gl,[1,1,1]),fi(!1),h(),oe(),b=new Ro(k.renderer,f.seatGeometry,f.chairGeometry,f.solidGeometry,i.seats.count),k.setClearColor(i.theme.background.top),b.setRestoreClear(i.theme.background.top),b.setRoomCentre(i.room?.centre),f.seatProgram.uniforms.uSeatRadius.value=at*i.theme.seatScale,f.seatProgram.uniforms.uFocusFloor.value=C(),f.solidProgram.uniforms.uFocusFloor.value=C(),f.chairProgram.uniforms.uFocusFloor.value=C(),f.screenProgram&&(f.screenProgram.uniforms.uFocusFloor.value=C()),L.forceRegather()},_=!1,L=new Vo({model:i,orbit:()=>F,gpu:()=>f}),N=U=>L.setDetailEnabled(U),k=new Un(e,{onContextLost:()=>{M||a.contextLost(),y=!0,me.stop(),f=null,b=null},onContextRestored:()=>{A(),y=!1,M||a.contextRestored(),me.requestRender()}}),F=new jn(k.gl,k.canvas,()=>me.requestRender(),()=>a.orbitEngaged());F.setAspect(k.aspect);let H=(t.doc.floors?.flatMap(U=>U.objects)??t.doc.objects).some(U=>U.type==="section"&&U.physical3dProvenance?.surfaceKind?.status==="inferred"),B=(()=>{if(Number.isFinite(n.overviewAzimuthDeg))return n.overviewAzimuthDeg*Math.PI/180;if(!(H&&i.stages.length===0))return Ii(i.focalWorld,i.seats.iPosition,i.bounds)})(),D=(t.doc.floors?.flatMap(U=>U.objects)??t.doc.objects).some(U=>U.type==="shape"&&U.stageKind?.startsWith("pitch-")),G=i.floors.length>1?{polarDeg:48,margin:1.1}:{polarDeg:D?36:48,margin:1.05},j=typeof window<"u"&&!!window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;F.frame(i.bounds,!j&&n.skipInitialOverviewAnimation!==!0,B,n.portraitOverviewCrop===!0,G);let V=new Ao(F.camera),z=vu(e),q=Ri(e,i),$=new wo(e,{fontFamily:t.doc.theme?.fontFamily,ink:t.doc.theme?.textColor,backgroundRgb:i.theme.background.top}),re=i.labels,Q=()=>wc(re,i.floors.length,C());$.setLabels(Q());let W=null,Y=()=>[...P.keys()].flatMap(U=>{let X=i.seats.idToIndex.get(U),Z=X===void 0?void 0:t.seats[X];if(X===void 0||Z?.id!==U)return[];let se=X*3;return[{id:`seat:${U}`,kind:"seat",seatWidthM:i.seats.iChairWidth[X]*2,text:Z.displayLabel||Z.label,anchor:[i.seats.iPosition[se],i.seats.iPosition[se+1]+1.05,i.seats.iPosition[se+2]],pinBase:Xe(se)}]}),K=-1,oe=()=>{f&&(K=W?i.sections.findIndex(U=>U.id===W):-1,f.seatProgram.uniforms.uFocusSection.value=K,f.chairProgram.uniforms.uFocusSection.value=K)},ee=U=>{if(W=U,oe(),$.setForcedDense(!!U),!U){let ue=Y(),ke=new Set(ue.map(we=>we.id));$.setLabels([...Q().filter(we=>!ke.has(we.id)),...ue]);return}let X=t.seats.filter(ue=>u.get(ue.id)===U),Z=new Set(X.map(ue=>ue.id)),se=new Set(X.map(ue=>ue.rowId)),de=new Set(P.keys()),ve=new Set(X.filter(ue=>de.has(ue.id)).map(ue=>ue.id)),xe=Q().filter(ue=>ue.kind!=="row"&&ue.kind!=="seat"||(ue.kind==="row"?se.has(ue.id.slice(4)):Z.has(ue.id.slice(5))));if(i.seatCount<=6e3&&ve.size===0){$.setLabels(xe);return}let Ee=X,Rt=new Set(Ee.map(ue=>`seat:${ue.id}`)),At=Ee.flatMap(ue=>{let ke=i.seats.idToIndex.get(ue.id);if(ke===void 0)return[];let we=ke*3;return[{id:`seat:${ue.id}`,kind:"seat",seatWidthM:i.seats.iChairWidth[ke]*2,rowId:ue.rowId,text:de.has(ue.id)?ue.displayLabel||ue.label:jr(ue.displayLabel||ue.label),anchor:[i.seats.iPosition[we],i.seats.iPosition[we+1]+(de.has(ue.id)?1.05:.55),i.seats.iPosition[we+2]],...de.has(ue.id)?{pinBase:Xe(we)}:{}}]});$.setLabels([...xe.filter(ue=>!Rt.has(ue.id)),...At])};A();let le=null,J=null,ce=new Fu.Mat4,Oe=U=>{if(y||!f||g)return!1;let X=iu({flying:V.active,panoramaMounted:I!==null,seatViewActive:le?.active===!0}),Z=X==="orbit"?K:-1;f.seatProgram.uniforms.uFocusSection.value=Z,f.chairProgram.uniforms.uFocusSection.value=Z;let se=X==="cinematic"?V.update(performance.now()):X==="seatView"?le.update(performance.now()):X==="orbit"?F.update():!1;J?.syncZoomLimits();let de=C()>=0?i.floors[C()]:null,ve=de?.radius??i.bounds.radius,xe=ea(F.currentDistance,ve),Ee=_?{center:[F.camera.position.x,F.camera.position.y,F.camera.position.z],radius:520}:i.clipBounds??i.renderBounds;F.updateClipping(Ee);let Rt=de?.center??i.renderBounds.center,At=de?.radius??i.renderBounds.radius,ue=(Pe,Ko)=>Math.hypot(F.camera.position.x-Pe[0],F.camera.position.y-Pe[1],F.camera.position.z-Pe[2])<=Ko*(L.detailVisible?1.8:1.55),ke=ue(Rt,At);if(!ke&&W){let Pe=i.sections.find(Ko=>Ko.id===W);Pe&&(ke=ue(Pe.center,Math.max(12,Pe.radius*2)))}L.detailVisible=ke;let we=f.seatProgram.uniforms;we.uSeatScale.value=xe.scale,we.uSeatFade.value=xe.fade;let Vn=!!de&&ta(de.seatCount,k.canvas.clientWidth||1,k.canvas.clientHeight||1),Gn=na(i.seats.count,ve,F.currentDistance,F.camera.fov,k.canvas.clientHeight||1),rn=L.detailVisible||Vn||Gn?1:0,an=L.detailVisible||C()>=0||i.floors.length>1?1:0;L.ease(U,rn,an),we.uSeatDetail.value=L.seatDetailMix;let Hn=rn===0&&L.seatDetailMix<.01;f.seatGeometry.setDrawRange(Hn?Zo:0,Hn?Li:Zo),f.solidProgram.uniforms.uStructureDetail.value=L.structureDetailMix,we.uMinPixels.value=xe.minPixels,we.uPixelToWorld.value=2*Math.tan(F.camera.fov*x0/2)/Math.max(1,k.pixelHeight),L.update(L.detailVisible),i.outdoor&&(ce.copy(F.camera.projectionViewMatrix).inverse(),f.backgroundProgram.uniforms.uInvViewProj.value.set(ce)),k.renderer.render({scene:f.background,clear:!0}),k.renderer.render({scene:f.main,camera:F.camera,clear:!1});let sn=p?p.update(performance.now(),[F.camera.position.x,F.camera.position.y,F.camera.position.z],I!==null,X==="seatView"):!1;if(p&&k.renderer.render({scene:p.root,camera:F.camera,clear:!1}),q){let Pe=F.camera.worldMatrix;q.update(X==="seatView"?[F.camera.position.x,F.camera.position.y,F.camera.position.z]:null,[-Pe[8],-Pe[9],-Pe[10]])}$.update(F.camera.projectionViewMatrix,k.canvas.clientWidth||1,k.canvas.clientHeight||1,F.currentDistance,ve,[F.camera.position.x,F.camera.position.y,F.camera.position.z]);let Ot=se||sn||L.seatDetailMix!==rn||L.structureDetailMix!==an;return te(!Ot),Ot},te=Ki(e),me=new Xn(Oe),Se=typeof ResizeObserver<"u"?new ResizeObserver(()=>Yo.resize()):null;Se?.observe(e),F.setZoomPointResolver((U,X)=>{let Z=k.canvas.getBoundingClientRect(),se=k.canvas.clientWidth||Z.width,de=k.canvas.clientHeight||Z.height;if(!(se>0)||!(de>0))return null;F.camera.updateMatrixWorld();let ve=mi(i.seats.iPosition,i.seats.count,F.camera.projectionViewMatrix,se,de,U-Z.left,X-Z.top,y0);if(ve<0)return null;let xe=ve*3;return[i.seats.iPosition[xe],i.seats.iPosition[xe+1]+.5,i.seats.iPosition[xe+2]]});function Xe(U){return[i.seats.iPosition[U],i.seats.iPosition[U+1]+.5,i.seats.iPosition[U+2]]}$.setSeatNumberRow(null);let De=null,Ae=0,We=()=>{Ae=0;let U=null;if(De&&!le?.active&&!V.active){let X=k.canvas.getBoundingClientRect(),Z=k.canvas.clientWidth||X.width,se=k.canvas.clientHeight||X.height;if(Z>0&&se>0){let de=mi(i.seats.iPosition,i.seats.count,F.camera.projectionViewMatrix,Z,se,De.x-X.left,De.y-X.top,g0);U=de>=0?t.seats[de]?.rowId??null:null}}$.setSeatNumberRow(U)&&me.requestRender()},Ze=U=>{De={x:U.clientX,y:U.clientY},Ae||(Ae=requestAnimationFrame(We))},Pt=U=>{U.pointerType==="mouse"&&(De=null,Ae||(Ae=requestAnimationFrame(We)))};k.canvas.addEventListener("pointermove",Ze),k.canvas.addEventListener("pointerdown",Ze),k.canvas.addEventListener("pointerleave",Pt);function fi(U){if(!p)return;let X=[];for(let Z of P.keys()){let se=i.seats.idToIndex.get(Z);if(se===void 0)continue;let de=se*3;X.push({id:Z,position:Xe(de)})}p.setSeats(X,performance.now(),U)}let di=U=>{let X=de=>{let ve=i.seats.idToIndex.get(de);return ve===void 0?void 0:i.seats.iState[ve]},{updates:Z,next:se}=Tl(P,U,X);if(P=se,$.setSelectedSeatIds(P.keys()),fi(!tn()),me.requestRender(),ee(W),Z.length){let de=lr(i.seats,Z);f&&f.uploadSeatStateRuns(de),h(),me.requestRender()}},tn=()=>w!==null?w:typeof window<"u"&&!!window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,Ou=8,hi=U=>{if(!n.getSeatView)return null;let X=v.get(U);if(!X)for(X=Promise.resolve(n.getSeatView(U)),v.set(U,X),X.catch(()=>{v.get(U)===X&&v.delete(U)});v.size>Ou;){let Z=v.keys().next().value;if(Z===void 0)break;v.delete(Z)}return X},pi=$l(i.stages,i.focalWorld,i.bounds.groundY??0),Du=ri(pi),Ho=(U,X)=>{let Z=c.get(U),se=Math.max(0,Math.round(i.seats.iFloor[X]??0)),de=t.doc.floors?.[se],ve=i.floors[se],xe=de?.focalPoint??t.doc.focalPoint,Ee=ve?{x:ve.focalWorld[0]/E,y:ve.focalWorld[2]/E}:xe,Rt=Z?.focalPoint?{x:Z.focalPoint.x+Ee.x-xe.x,y:Z.focalPoint.y+Ee.y-xe.y}:Ee,At=[i.seats.iPosition[X*3],i.seats.iPosition[X*3+1],i.seats.iPosition[X*3+2]];return Gl(At,Rt,de?.baseHeightM??0,Z?.eyeHeightM,Du)},bi=()=>(e.clientWidth||k.canvas.clientWidth)<=520,zo=null,yi=null,Bu=async(U,X,Z)=>{if(!n.getSeatView||M||Z!==Te.flightGen())return;let se;try{se=await gu()}catch{if(a.panoramaFailed(U,"mount"),!M&&Z===Te.flightGen()){let de=jo(U,Z,!0);requestAnimationFrame(()=>de?.querySelector("[data-panorama-trigger]")?.focus())}return}if(!(M||Z!==Te.flightGen()||!zo))return yi??=se.createOpenPanorama(zo),yi(U,X,Z)},Uo=Mu({container:e,model:i,opts:n,expandedSeatById:c,seatIdsByRow:l,isNarrow:bi,isDisposed:()=>M,flightGen:()=>Te.flightGen(),flyToSeat:U=>Mi(U),openPanorama:(U,X,Z)=>Bu(U,X,Z)}),jo=Uo.show,Xo=Uo.remove,Nu=Uo.layout,It=Su({container:e,orbit:F,isNarrow:bi,enabled:n.chrome?.controlDock!==!1,...n.navLabels?{labels:n.navLabels}:{}});J=It;let Vu=It.element,nn=It.setNavigationMode,Gu=It.layout,Hu=It.utilityControls,on=null,gi=!1,Nn=U=>{It.setSeatViewLocked(U),U||le?.exit()};le=ru({canvas:k.canvas,camera:F.camera,requestRender:()=>me.requestRender(),reducedMotion:tn,onStopChange:U=>{let X=U??(gi?"seat":null);on=X;try{n.onSeatViewStopChange?.(X)}catch{}},onApplied:()=>{M||F.syncFromCamera()}});let xi=i.sections.reduce((U,X)=>X.seatCount>0&&X.box?Math.max(U,X.box.max[1]):U,-1/0),zu=(U,X)=>{let{eye:Z}=Ho(U,X),se=(e.clientWidth||k.canvas.clientWidth||1)/Math.max(1,e.clientHeight||k.canvas.clientHeight||1),de=Ql(Z,pi,se,{preserveEye:!0});if(n.seatViewStops===!1)return{...de,stops:[]};let ve=u.get(U),xe=ve?i.sections.find(Ee=>Ee.id===ve):void 0;return{...de,stops:Jl(de,{aspect:se,seatingTopY:Number.isFinite(xi)?xi:i.bounds.box.max[1],section:xe&&xe.seatCount>0?{center:xe.center,radius:xe.radius}:null,venue:{center:i.bounds.center,radius:i.bounds.radius}})}},Te=Eu({container:e,model:i,opts:n,orbit:F,cinematic:V,analytics:a,loop:me,labelOverlay:$,stageAzimuth:B,overviewFraming:G,gpu:()=>f,isDisposed:()=>M,panorama:()=>I,setPanorama:U=>{I=U},setPanoramaSphereVisible:U=>{_=U},panoramaLoadAbort:()=>S,setPanoramaLoadAbort:U=>{S=U},setFrozen:U=>{g=U},restorePanoramaLayer:T,reducedMotion:tn,resolvedSeatViewPose:Ho,showSectionSeatLabels:ee,setNearFieldDetailEnabled:N,setSeatViewLocked:Nn,setNavigationMode:nn,showArriveChip:jo,removeArriveChip:Xo,inSeatView:()=>on!==null,setSeatStepping:U=>{gi=U},seatViewArrival:(U,X)=>n.arriveAtSeatEye?zu(U,X):null,enterSeatView:(U,X)=>le?.enter(U,X)});O=!0;let Wo=Te.overviewChip,Uu=Te.layoutOverviewChip,ju=Te.applyFloorFocus,Xu=Te.focusOverview,vi=Te.cancelFlight,Mi=Te.flyToSeat,Si=Te.focusSectionCamera;Hu.appendChild(Wo),zo={container:e,model:i,opts:n,analytics:a,orbit:F,loop:me,seatsById:c,ensureSeatView:hi,resolvedSeatViewPose:Ho,gpu:()=>f,gl:k.gl,isContextLost:()=>y,isDisposed:()=>M,flightGen:()=>Te.flightGen(),setPanorama:U=>{I=U},getLoadAbort:()=>S,setLoadAbort:U=>{S=U},setPanoramaSphereVisible:U=>{_=U,U&&le?.exit()},setFrozen:U=>{g=U},raisePanoramaLayer:R,restorePanoramaLayer:T,getOverviewChip:()=>Wo,labelOverlay:$,reducedMotion:tn,removeArriveChip:Xo,showArriveChip:jo};let mt=wu({glctx:k,orbit:F,model:i,seats:t.seats,opts:n,cinematic:V,analytics:a,seatIdByIndex:s,sectionIdBySeatId:u,tapSlop:v0,tapMs:M0,gpu:()=>f,pick:()=>b,seatViewLocked:()=>It.seatViewLocked(),focusedSectionId:()=>W,selection:()=>P,cancelFlight:vi,focusSectionCamera:Si,focusSeatCamera:Te.focusSeatCamera,setSelection:di,ensureSeatView:hi});k.canvas.addEventListener("pointerdown",mt.onDown),k.canvas.addEventListener("pointermove",mt.onMove),k.canvas.addEventListener("pointerup",mt.onUp),k.canvas.addEventListener("pointercancel",mt.onUp),me.requestRender();let Yo={setAvailability(U){let X=_l(P,U),Z=lr(i.seats,X);Z.length&&f&&f.uploadSeatStateRuns(Z),h(),me.requestRender()},setSelection:di,setNavigationMode:nn,zoomIn(){F.zoomBy(Nt),me.requestRender()},zoomOut(){F.zoomBy(dn),me.requestRender()},flyToSeat:Mi,focusOverview:Xu,seatViewStop:()=>on,recentreSeatView:()=>le?.recentre()??!1,resize(){let{width:U,height:X}=k.resize();F.setAspect(U/Math.max(1,X)),Nu(),Gu(),Uu(),me.requestRender()},stats(){return{...me.stats(),drawCalls:f?f.drawCalls:0,fallbackTriangles:f?f.seatGeometry.drawRange.count/3*i.seats.count:0,seatCount:i.seatCount}},captureImage(U=1280){if(y||!f||typeof document>"u")return null;Oe(0);let X=k.canvas,Z=Math.min(1,U/Math.max(X.width,X.height,1)),se=document.createElement("canvas");se.width=Math.max(1,Math.round(X.width*Z)),se.height=Math.max(1,Math.round(X.height*Z));let de=se.getContext("2d");return de?(de.drawImage(X,0,0,se.width,se.height),se.toDataURL("image/jpeg",.82)):null},getQualityEvidence(){let U=me.stats(),X=k.canvas.clientWidth||1,Z=k.canvas.clientHeight||1,se=i.bounds.center,de=tt(F.camera.projectionViewMatrix,[se[0],i.bounds.box.min[1],se[2]],X,Z),ve=tt(F.camera.projectionViewMatrix,[se[0],i.bounds.box.max[1],se[2]],X,Z),xe=i.bounds.box,Ee=[xe.min[0],xe.max[0]].flatMap(ue=>[xe.min[1],xe.max[1]].flatMap(ke=>[xe.min[2],xe.max[2]].map(we=>tt(F.camera.projectionViewMatrix,[ue,ke,we],X,Z)))).filter(ue=>Number.isFinite(ue.x)&&Number.isFinite(ue.y)&&Number.isFinite(ue.depth)),Rt=Ee.length?(()=>{let ue=Math.min(...Ee.map(Pe=>Pe.x)),ke=Math.max(...Ee.map(Pe=>Pe.x)),we=Math.min(...Ee.map(Pe=>Pe.y)),Vn=Math.max(...Ee.map(Pe=>Pe.y)),Gn=Math.max(0,ue),rn=Math.min(X,ke),an=Math.max(0,we),Hn=Math.min(Z,Vn),sn=Math.max(0,rn-Gn),Ot=Math.max(0,Hn-an);return{box:{x:Gn,y:an,width:sn,height:Ot},horizontalFillRatio:sn/X,verticalFillRatio:Ot/Z,visibleAreaRatio:sn*Ot/(X*Z),clippedEdges:[...we<0?["top"]:[],...ke>X?["right"]:[],...Vn>Z?["bottom"]:[],...ue<0?["left"]:[]]}})():void 0,At=String(k.gl.getParameter(k.gl.VERSION)??"");return{viewport:{width:X,height:Z},context:{webgl2:/webgl\s*2/i.test(At),lost:y},frame:{rendered:U.rendered,idle:U.idle},camera:{position:[F.camera.position.x,F.camera.position.y,F.camera.position.z],distance:F.currentDistance,verticalFovDeg:F.fovY},scene:{seatCount:i.seatCount,floorCount:i.floors.length,zoneCount:i.zones.length,sectionCount:i.sections.length,authoredRelief:d,renderedVerticalSpanM:Math.max(0,i.bounds.box.max[1]-i.bounds.box.min[1]),projectedReliefPx:de.visible&&ve.visible?Math.abs(de.y-ve.y):0},labels:$.qualityEvidence(),framing:Rt,...on?{seatView:{fovDeg:F.camera.fov,stop:on}}:{}}},getQualityReport(){return Po(Yo.getQualityEvidence())},loseContextForTest(){k.simulateContextLossCycle()},floors(){return i.floors},focusFloor(U){if(U!==null&&!i.floors.some(Z=>Z.index===U))return!1;let X=U??-1;if(N(U!==null),Nn(!1),ju(X),nn("orbit"),U===null)V.cancel(),tn()?F.frame(i.bounds,!1,B,n.portraitOverviewCrop===!0,G):F.frameSoft(i.bounds,B,n.portraitOverviewCrop===!0,G);else{let Z=i.floors[U];if(Z.seatCount>0){V.cancel();let se=Z.focalWorld[0]-Z.center[0],de=Z.focalWorld[2]-Z.center[2],ve=Math.hypot(se,de)>Z.radius*.12?Math.atan2(se,de):B;F.frame({center:Z.center,radius:Z.radius,box:Z.box},!1,ve,!1,{polarDeg:58,margin:1.12})}}return me.requestRender(),!0},zones(){return i.zones},focusZone(U){let X=i.zones.find(ve=>ve.id===U);if(!X||X.seatCount===0)return!1;N(!1),Nn(!1),V.cancel(),nn("orbit"),ee(null),n.onSectionFocusChange?.(null);let Z=X.focalWorld[0]-X.center[0],se=X.focalWorld[2]-X.center[2],de=Math.hypot(Z,se)>X.radius*.12?Math.atan2(Z,se):void 0;return F.frame({center:X.center,radius:X.radius*1.25},!1,de),me.requestRender(),!0},sections(){return i.sections},focusSection(U){return Si(U)},rows(U){return U?i.rows.filter(X=>X.sectionId===U):i.rows},seatsInRow(U){return t.seats.filter(X=>X.rowId===U).map(X=>({id:X.id,label:X.displayLabel||X.label}))},focusRow(U){let X=i.rows.find(Z=>Z.id===U);return!X||X.seatCount===0?!1:(N(!0),Nn(!1),V.cancel(),nn("pan"),X.sectionId&&(ee(X.sectionId),n.onSectionFocusChange?.(X.sectionId)),F.frame({center:X.center,radius:Math.max(2.5,X.radius*.65)}),me.requestRender(),!0)},setReducedMotionForTest(U){w=U},dispose(){M=!0,q?.dispose(),te(!1),Xo(),Wo.remove(),Vu.remove(),vi(),le?.dispose(),me.stop(),$.dispose(),Se?.disconnect(),I&&(I.dispose(),I=null),T(),z(),k.canvas.removeEventListener("pointerdown",mt.onDown),k.canvas.removeEventListener("pointermove",mt.onMove),k.canvas.removeEventListener("pointerup",mt.onUp),k.canvas.removeEventListener("pointercancel",mt.onUp),k.canvas.removeEventListener("pointermove",Ze),k.canvas.removeEventListener("pointerdown",Ze),k.canvas.removeEventListener("pointerleave",Pt),Ae&&cancelAnimationFrame(Ae),F.dispose(),b&&b.dispose(),f&&f.dispose(),f=null,p?.dispose(),p=null,b=null,k.dispose()}};return a.opened(i.seatCount,d,t.prepared?.buildMs??performance.now()-o,t.prepared?.source??"inline"),Yo}0&&(module.exports={VENUE3D_QUALITY_REPORT_VERSION,autoVenue3d,buildSceneModel,estimateVenue3D,inspectVenue3DQualityEvidence,mountVenue3D,prepareVenue3D,prepareVenue3DFromChart});
|