@seatlayer/core 0.97.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.
Files changed (80) hide show
  1. package/dist/{categoryInventory-4XH7dMDH.d.ts → categoryInventory-DdJdJ4Og.d.ts} +1 -1
  2. package/dist/{categoryInventory-C-bfH2av.d.cts → categoryInventory-DuOez0-4.d.cts} +1 -1
  3. package/dist/{chunk-M5VINTGE.js → chunk-23OTKCJU.js} +1 -1
  4. package/dist/{chunk-CUACREZL.js → chunk-CTIGUXXK.js} +1 -1
  5. package/dist/{chunk-P4C24CIZ.js → chunk-D723OZEY.js} +1 -1
  6. package/dist/chunk-FYJJSWEM.js +1 -0
  7. package/dist/chunk-GLGXP5I7.js +1 -0
  8. package/dist/{chunk-FLMKHAUT.js → chunk-HO4MFTVX.js} +1 -1
  9. package/dist/chunk-HYEZPOZU.js +1 -0
  10. package/dist/chunk-K22SISYC.js +1 -0
  11. package/dist/{chunk-YPESNMTC.js → chunk-KFVUBZMK.js} +1 -1
  12. package/dist/{chunk-OLGPAFXW.js → chunk-L34T3APU.js} +1 -1
  13. package/dist/{chunk-IW7QZIMF.js → chunk-N4J4CT6P.js} +1 -1
  14. package/dist/{chunk-2P72QUJR.js → chunk-UIMDB6GZ.js} +1 -1
  15. package/dist/chunk-UISTXRO5.js +1 -0
  16. package/dist/{chunk-ASIIXY5M.js → chunk-VWT44HBR.js} +1 -1
  17. package/dist/core/chart-ops/index.cjs +1 -1
  18. package/dist/core/chart-ops/index.d.cts +6 -4
  19. package/dist/core/chart-ops/index.d.ts +6 -4
  20. package/dist/core/chart-ops/index.js +1 -1
  21. package/dist/core/inventory/index.cjs +1 -1
  22. package/dist/core/inventory/index.d.cts +4 -4
  23. package/dist/core/inventory/index.d.ts +4 -4
  24. package/dist/core/inventory/index.js +1 -1
  25. package/dist/core/layout/index.cjs +1 -1
  26. package/dist/core/layout/index.d.cts +5 -5
  27. package/dist/core/layout/index.d.ts +5 -5
  28. package/dist/core/layout/index.js +1 -1
  29. package/dist/core/quality/index.d.cts +3 -3
  30. package/dist/core/quality/index.d.ts +3 -3
  31. package/dist/core/quality/index.js +1 -1
  32. package/dist/core/render-assets/index.d.cts +2 -2
  33. package/dist/core/render-assets/index.d.ts +2 -2
  34. package/dist/core/seatConfidence.d.cts +1 -1
  35. package/dist/core/seatConfidence.d.ts +1 -1
  36. package/dist/core/sections/index.cjs +1 -1
  37. package/dist/core/sections/index.d.cts +5 -5
  38. package/dist/core/sections/index.d.ts +5 -5
  39. package/dist/core/sections/index.js +1 -1
  40. package/dist/{eventConfigurations-BEyHDxBT.d.ts → eventConfigurations-BISNREZL.d.ts} +1 -1
  41. package/dist/{eventConfigurations-BE0rFmbQ.d.cts → eventConfigurations-DYn5XP3J.d.cts} +1 -1
  42. package/dist/index.cjs +1 -1
  43. package/dist/index.d.cts +13 -13
  44. package/dist/index.d.ts +13 -13
  45. package/dist/index.js +1 -1
  46. package/dist/{labeling-HWSKKrX8.d.ts → labeling-CzuSxAkr.d.ts} +1 -1
  47. package/dist/{labeling-SURRJh5u.d.cts → labeling-owTTG6e0.d.cts} +1 -1
  48. package/dist/{openPanorama-6FMXAJ6O.js → openPanorama-VD6PE3YZ.js} +2 -2
  49. package/dist/{renderedQuality-CZNfpB1H.d.ts → renderedQuality-BMSbVkwu.d.ts} +1 -1
  50. package/dist/{renderedQuality-QWHMvOej.d.cts → renderedQuality-Bl1Kq_XO.d.cts} +1 -1
  51. package/dist/{renderer-DEnthjgs.d.cts → renderer-Ccv8ZDZS.d.cts} +1 -1
  52. package/dist/{renderer-CuXYGgR3.d.ts → renderer-njHDbIqI.d.ts} +1 -1
  53. package/dist/{seatTypeIcons-BAyWebjw.d.cts → seatTypeIcons-QwEebl3k.d.cts} +1 -1
  54. package/dist/{seatTypeIcons-CqLiEH9C.d.ts → seatTypeIcons-dy3XQVWN.d.ts} +1 -1
  55. package/dist/{sections-DOk8zxm5.d.ts → sections-C8VTe6BN.d.ts} +1 -1
  56. package/dist/{sections-BlCiPWJJ.d.cts → sections-DSIfnBJY.d.cts} +1 -1
  57. package/dist/{segmentedRowModel-BbHdWqJy.d.cts → segmentedRowModel-CDvvJJ4-.d.cts} +1 -1
  58. package/dist/{segmentedRowModel-oVUtwW87.d.ts → segmentedRowModel-I8eYUQft.d.ts} +1 -1
  59. package/dist/{tableSizing-ExOrUwtX.d.ts → tableSizing-BLtQ-KV0.d.ts} +20 -13
  60. package/dist/{tableSizing-DaEXRHYs.d.cts → tableSizing-CB8g2Fs0.d.cts} +20 -13
  61. package/dist/{ticketRestrictions-BvG_INSV.d.cts → ticketRestrictions-BvlWLw10.d.cts} +2 -2
  62. package/dist/{ticketRestrictions-BHUMet7N.d.ts → ticketRestrictions-DUjN2bZn.d.ts} +2 -2
  63. package/dist/{types-BbqhOJ5L.d.ts → types-DWx32xXH.d.cts} +10 -1
  64. package/dist/{types-BbqhOJ5L.d.cts → types-DWx32xXH.d.ts} +10 -1
  65. package/dist/view3d/crossfade/panorama.cjs +1 -1
  66. package/dist/view3d/crossfade/panorama.d.cts +1 -1
  67. package/dist/view3d/crossfade/panorama.d.ts +1 -1
  68. package/dist/view3d/crossfade/panorama.js +1 -1
  69. package/dist/view3d/index.cjs +144 -46
  70. package/dist/view3d/index.d.cts +27 -4
  71. package/dist/view3d/index.d.ts +27 -4
  72. package/dist/view3d/index.js +142 -44
  73. package/dist/view3d/scene/scene.worker.cjs +1 -1
  74. package/dist/view3d/scene/scene.worker.js +1 -1
  75. package/package.json +1 -1
  76. package/dist/chunk-NGZXKXOY.js +0 -1
  77. package/dist/chunk-QEPYNCBJ.js +0 -1
  78. package/dist/chunk-SPM2LMKI.js +0 -1
  79. package/dist/chunk-VAI2VDQR.js +0 -1
  80. package/dist/chunk-Z43H6AWN.js +0 -1
@@ -1 +1 @@
1
- "use strict";var Mi=Object.create;var Ln=Object.defineProperty;var Si=Object.getOwnPropertyDescriptor;var Ii=Object.getOwnPropertyNames;var Pi=Object.getPrototypeOf,Ri=Object.prototype.hasOwnProperty;var wi=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ii(t))!Ri.call(e,r)&&r!==n&&Ln(e,r,{get:()=>t[r],enumerable:!(o=Si(t,r))||o.enumerable});return e};var Fe=(e,t,n)=>(n=e!=null?Mi(Pi(e)):{},wi(t||!e||!e.__esModule?Ln(n,"default",{value:e,enumerable:!0}):n,e));var eu=Math.PI/180;function Wt(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 it(e){return e.length?Wt(e):null}function On(e,t){let n=1-t,o=n*n*n,r=3*n*n*t,s=3*n*t*t,i=t*t*t;return{x:o*e.start.x+r*e.control1.x+s*e.control2.x+i*e.end.x,y:o*e.start.y+r*e.control1.y+s*e.control2.y+i*e.end.y}}function Bn(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[On(e,.5)];let o=Array.from({length:n+1},(f,u)=>On(e,u/n)),r=new Float64Array(o.length);for(let f=1;f<o.length;f+=1){let u=o[f].x-o[f-1].x,l=o[f].y-o[f-1].y;r[f]=r[f-1]+Math.hypot(u,l)}let s=r[r.length-1];if(s<=1e-9)return Array.from({length:t},()=>({...e.start}));let i=[],a=1;for(let f=0;f<t;f+=1){let u=s*f/(t-1);for(;a<r.length-1&&r[a]<u;)a+=1;let l=r[a-1],c=r[a],h=c===l?0:(u-l)/(c-l);i.push({x:o[a-1].x+(o[a].x-o[a-1].x)*h,y:o[a-1].y+(o[a].y-o[a-1].y)*h})}return i}function Fn(e,t,n){return Math.max(t,Math.min(n,e))}function Dn(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 s=r.slice().sort((h,m)=>h.segmentedRow.componentIndex-m.segmentedRow.componentIndex),i=s[0]?.segmentedRow?.componentCount??0,a=s[0]?.segmentedRow;if(!a||!(i>=2&&s.length===i&&a?.boundaryBefore==="start"&&s.every((h,m)=>h.segmentedRow?.kind==="segmented-row-v1"&&h.segmentedRow.groupId===o&&h.segmentedRow.componentCount===i&&h.segmentedRow.componentIndex===m&&h.segmentedRow.repeatLabelOnComponents===a.repeatLabelOnComponents&&(m===0?h.segmentedRow.boundaryBefore==="start":h.segmentedRow.boundaryBefore!=="start")&&h.segmentedRow.displayLabel===a.displayLabel)))continue;let u=s.reduce((h,m)=>h+m.seatCount,0),l=0,c=0;for(let h of s)h.segmentedRow.boundaryBefore==="break"&&(l+=1),t.set(h.id,{groupId:o,adjacencyOffset:l,displayOffset:c,displayLabel:a.displayLabel,totalSeats:u,canonical:s[0],viewFromSeatUrl:a.viewFromSeatUrl,viewFromSeatMeta:a.viewFromSeatMeta,confidenceEvidence:a.confidenceEvidence}),l+=h.seatCount,c+=h.seatCount}return t}var vi="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var Ei="abcdefghijklmnopqrstuvwxyz";function Ci(e,t){let n=t.length,o=e+1,r="";for(;o>0;){o-=1;let s=o%n;r=t[s]+r,o=Math.floor(o/n)}return r}function Zt(e,t=!1){let n=t?Ei:vi;return Ci(Math.max(0,Math.floor(e)-1),n)}var Ai=[[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 Nn(e){if(!Number.isFinite(e)||e<=0)return String(e);let t=Math.floor(e),n="";for(let[o,r]of Ai)for(;t>=o;)n+=r,t-=o;return n}function _i(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 xt(e,t){let n=e.seatLabelStart??1,o=e.seatNumbering?.direction??"ltr",r=e.seatNumbering?.step??1,s=e.seatNumbering?.scheme??"decimal",i=e.seatNumbering?.prefix??"",a=e.seatNumbering?.endAt,f=e.seatCount;if(s==="updown"||s==="updown-descending"){let m=Math.ceil(f/2),d=s==="updown"?t<m?n+2*t:n-1+2*(f-t):t<m?n+2*(m-1-t):n+1+2*(t-m);return`${i}${d}`}let u=s==="odd"||s==="even"?2:r,l=a!=null&&Number.isFinite(a)?a-(f-1)*u:n,c=o==="center"?_i(f)[t]:o==="rtl"?f-1-t:t,h;switch(s){case"odd":{let m=l%2===1?l:l+1;h=String(m+c*2);break}case"even":{let m=l%2===0?l:l+1;h=String(m+c*2);break}case"roman":h=Nn(l+c*r);break;case"letters-upper":h=Zt(l+c*r,!1);break;case"letters-lower":h=Zt(l+c*r,!0);break;default:h=String(l+c*r);break}return`${i}${h}`}function ki(e){return{...e.canonical,seatCount:e.totalSeats,label:e.displayLabel,displayLabel:e.displayLabel}}function Gn(e,t,n){return n?.label??`${e.seatLabelBase??e.label}-${xt(e,t)}`}function $t(e,t,n,o){if(o?.displayLabel)return o.displayLabel;if(e.seatDisplayLabelMode==="number")return xt(e,t);if(!n)return`${e.displayLabel||e.label}-${xt(e,t)}`;let r=ki(n),s=n.displayOffset+t;return`${n.displayLabel}-${xt(r,s)}`}var J=.02291666666666667,ge=1/J,Ti=58,Li=Ti*J;var Oi=3,jn=0,Qt=120,Bi=0,Fi=45,Di=7,Ee=1.2;function qt(e,t,n,o){return Number.isFinite(e)?Math.max(t,Math.min(n,e)):o}function Ni(e){return!Number.isFinite(e)||!Number.isInteger(e)||e<0?0:e<=Di?e:Oi}function De(e,t={}){let n=qt(t.floorBaseHeightM,jn,Qt,0),o=Math.min(Qt,n+Ni(e.elevation)*Li),r=e.height===void 0?o:qt(e.height,jn,Qt,o),s=qt(e.rake,Bi,Fi,0);return{height:r,rake:s}}function Hn(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 We(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 s=e[r],i=e[r+1],a=i.x-s.x,f=i.y-s.y,u=a*a+f*f,l=u>1e-12?((t-s.x)*a+(n-s.y)*f)/u:0;l<0?l=0:l>1&&(l=1);let c=t-(s.x+l*a),h=n-(s.y+l*f);if(Math.abs(c)>=o||Math.abs(h)>=o)continue;let m=Math.hypot(c,h);m<o&&(o=m)}return o}function Gi(e){let t=0,n=0;for(let s of e)t+=s.x,n+=s.y;let o=e.length||1;t/=o,n/=o;let r=0;for(let s of e){let i=Math.hypot(s.x-t,s.y-n);i>r&&(r=i)}return{cx:t,cy:n,r}}function Xn(e,t){return Math.hypot(e.cx-t.cx,e.cy-t.cy)-e.r-t.r}function Jt(e,t){let n=1/0;for(let o of Hn(e)){let r=We(t,o.x,o.y);r<n&&(n=r)}for(let o of Hn(t)){let r=We(e,o.x,o.y);r<n&&(n=r)}return n}function ji(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,s=e[0];for(let l of e){let c=Math.hypot(l.x-n,l.y-o);c>r&&(r=c,s=l)}let i=s.x-n,a=s.y-o,f=Math.hypot(i,a);f>1e-9?(i/=f,a/=f):(i=1,a=0);let u=e.map((l,c)=>({p:l,i:c,t:(l.x-n)*i+(l.y-o)*a})).sort((l,c)=>l.t-c.t);return{pts:u.map(l=>l.p),seatIndices:u.map(l=>t[l.i])}}function en(e){let t=e.length;if(t<3)return null;let n=0,o=0;for(let x of e)n+=x.x,o+=x.y;n/=t,o/=t;let r=0,s=0,i=0,a=0,f=0,u=0,l=0;for(let x of e){let M=x.x-n,I=x.y-o;r+=M*M,i+=I*I,s+=M*I,a+=M*M*M,f+=I*I*I,u+=M*I*I,l+=I*M*M}let c=r*i-s*s;if(Math.abs(c)<1e-9)return null;let h=(a+u)/2,m=(f+l)/2,d=(h*i-m*s)/c,p=(m*r-h*s)/c,b=d+n,y=p+o;return!Number.isFinite(b)||!Number.isFinite(y)?null:{cx:b,cy:y}}var Hi=.15;function Xi(e){if(e.length<2)return null;let t=e.map(x=>{let M=0,I=0;for(let w of x.pts)M+=w.x,I+=w.y;return{x:M/x.pts.length,y:I/x.pts.length}}),n=0,o=0;for(let x of t)n+=x.x,o+=x.y;n/=t.length,o/=t.length;let r=0,s=0,i=0;for(let x of t){let M=x.x-n,I=x.y-o;r+=M*M,s+=M*I,i+=I*I}let a=r+i,f=r*i-s*s,u=a/2+Math.sqrt(Math.max(0,a*a/4-f)),l,c;Math.abs(s)>1e-12?(l=u-i,c=s):r>=i?(l=1,c=0):(l=0,c=1);let h=Math.hypot(l,c);if(!(h>1e-12))return null;l/=h,c/=h;let m=1/0,d=-1/0,p=[];for(let x of e){let M=1/0,I=-1/0;for(let w of x.pts){let g=w.x*l+w.y*c;g<M&&(M=g),g>I&&(I=g),g<m&&(m=g),g>d&&(d=g)}p.push(I-M)}let b=d-m;return b>1e-9?(p.sort((x,M)=>x-M),p[Math.min(p.length-1,Math.floor(p.length*.9))]/b<=Ui?{x:l,y:c}:null):null}var Ui=.35;function gt(e,t,n,o){let r=new Map;for(let g of n){let R=t[g],P=R.rowId||`__seat-${g}`,S=r.get(P);S||(S={pts:[],idx:[]},r.set(P,S)),S.pts.push({x:R.x,y:R.y}),S.idx.push(g)}if(!r.size)return{sectionId:e,rows:[],blockCount:0};let s=[];for(let[g,R]of r){let P=ji(R.pts,R.idx),S=0;for(let E of P.pts)S+=Math.hypot(E.x-o.x,E.y-o.y);s.push({id:g,pts:P.pts,seatIndices:P.seatIndices,blockId:-1,ordinal:0,blockDepth:0,focalDistance:S/P.pts.length})}let i=s.map(g=>Gi(g.pts)),a=s.length<=256?s.length*(s.length-1)/2:0,f=a?new Float64Array(a):null;f?.fill(Number.NaN);let u=f?new Map(s.map((g,R)=>[g,R])):null,l=(g,R)=>(g>R&&([g,R]=[R,g]),g*(2*s.length-g-1)/2+(R-g-1)),c=(g,R)=>{if(!f)return Jt(s[g].pts,s[R].pts);let P=l(g,R),S=f[P];if(!Number.isNaN(S))return S;let E=Jt(s[g].pts,s[R].pts);return f[P]=E,E},h=(g,R)=>u?c(u.get(g),u.get(R)):Jt(g.pts,R.pts),m=[];for(let g=0;g<s.length;g++){let R=1/0;for(let P=0;P<s.length;P++){if(g===P||Xn(i[g],i[P])>=R)continue;let S=c(g,P);S<R&&(R=S)}Number.isFinite(R)&&m.push(R)}m.sort((g,R)=>g-R);let d=m.length?m[Math.floor(m.length/2)]:1,p=Math.max(d*1.8,1e-6),b=s.map(()=>[]);for(let g=0;g<s.length;g++)for(let R=g+1;R<s.length;R++)Xn(i[g],i[R])>p||c(g,R)<=p&&(b[g].push(R),b[R].push(g));let y=0;for(let g=0;g<s.length;g++){if(s[g].blockId!==-1)continue;let R=y++,P=[g];for(s[g].blockId=R;P.length;){let S=P.pop();for(let E of b[S])s[E].blockId===-1&&(s[E].blockId=R,P.push(E))}}let x=new Map;for(let g of s){let R=x.get(g.blockId)??[];R.push(g),x.set(g.blockId,R)}let M=[];for(let g of s){if(g.pts.length<4)continue;let R=en(g.pts);R&&(!Number.isFinite(R.cx)||!Number.isFinite(R.cy)||M.push({x:R.cx,y:R.cy}))}let I=M.length>=2?(()=>{let g=M.map(S=>S.x).sort((S,E)=>S-E),R=M.map(S=>S.y).sort((S,E)=>S-E),P=Math.floor(M.length/2);return{cx:g[P],cy:R[P]}})():null;if(I){let g=O=>Math.hypot(O.x-I.cx,O.y-I.cy),R=1/0,P=-1/0,S=[];for(let O of s){let k=1/0,C=-1/0;for(let A of O.pts){let L=g(A);L<k&&(k=L),L>C&&(C=L)}S.push(C-k),k<R&&(R=k),C>P&&(P=C)}let E=P-R;S.sort((O,k)=>O-k);let _=S[Math.min(S.length-1,Math.floor(S.length*.9))];if(E>1e-9&&_/E<=Hi){let O=s.map(D=>{let V=0;for(let U of D.pts)V+=g(U);return{row:D,radius:V/D.pts.length}}),k=0,C=0;for(let D of O)k+=D.radius,C+=D.row.focalDistance;k/=O.length,C/=O.length;let A=0;for(let D of O)A+=(D.radius-k)*(D.row.focalDistance-C);if(A<0)for(let D of O)D.radius=-D.radius;let F=1/0;for(let D of O)D.radius<F&&(F=D.radius);O.sort((D,V)=>D.radius-V.radius);let T=-1,B=-1/0,N=E/Math.max(1,O.length)*.5,H=[];for(let D of O)D.radius-B>N&&(T++,B=D.radius),D.row.ordinal=T,D.row.blockDepth=D.radius-F,H.push(D.row);return{sectionId:e,rows:H,blockCount:y}}}let w=[];for(let[,g]of x){let R=Xi(g);if(R){let P=E=>{let _=0;for(let O of E.pts)_+=O.x*R.x+O.y*R.y;return _/E.pts.length};g.sort((E,_)=>P(E)-P(_)),g.length>=2&&g[0].focalDistance>g[g.length-1].focalDistance&&g.reverse();let S=0;for(let E=0;E<g.length;E++)E>0&&(S+=h(g[E-1],g[E])),g[E].ordinal=E,g[E].blockDepth=S,w.push(g[E])}else{let P=1/0;for(let S of g)S.focalDistance<P&&(P=S.focalDistance);g.sort((S,E)=>S.focalDistance-E.focalDistance);for(let S=0;S<g.length;S++)g[S].ordinal=S,g[S].blockDepth=Math.max(0,g[S].focalDistance-P),w.push(g[S])}}return{sectionId:e,rows:w,blockCount:y}}var Vi=/^\d{4}-\d{2}-\d{2}$/;function Yi(e){let t=Date.parse(e);return Number.isFinite(t)?Vi.test(e)?t+864e5:t:null}function Ki(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=Yi(e.validUntil);return n===null?!1:(t instanceof Date?t.getTime():t)<n}function zi(e,t,n){return!(e.eventConfigurationId&&e.eventConfigurationId!==t||e.eventConfigurationVersion!==void 0&&e.eventConfigurationVersion!==n)}function Wi(e){return e.status!=="draft"&&e.status!=="retracted"}function Zi(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 Un(e,t={}){return!!e&&Wi(e)&&zi(e,t.activeConfigurationId,t.activeConfigurationVersion)&&Zi(e,t.activeBasisSha256)&&Ki(e,t.now)}var $i=new Set(["pitch-football","rink-hockey","track-athletics","oval-cricket","pitch-rugby","diamond-baseball","court-basketball","court-tennis","ring-boxing"]),Qi=new Set(["pitch-football","track-athletics","oval-cricket","pitch-rugby","diamond-baseball"]);function Xe(e){return!!e&&$i.has(e)}function Kn(e){return!!e&&Qi.has(e)}var Mt=1.1,qi={"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}},Ji={"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 es=Math.PI*2;function ts(e,t,n,o,r,s){return{x:r+e*n-t*o,y:s+e*o+t*n}}function Vn(e,t){let n=Math.max(0,e-t),o=[],r=20;for(let s=0;s<=r;s++){let i=-Math.PI/2+s/r*Math.PI;o.push({x:n+t*Math.cos(i),y:t*Math.sin(i)})}for(let s=0;s<=r;s++){let i=Math.PI/2+s/r*Math.PI;o.push({x:-n+t*Math.cos(i),y:t*Math.sin(i)})}return o}var Yn=(()=>{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)),s=r+70,i=[],a=Math.atan2(o.y-r,o.x),f=Math.atan2(o.y-r,-o.x);for(let u=0;u<=24;u++){let l=a+(f-a)*u/24;i.push({x:s*Math.cos(l),y:r+s*Math.sin(l)})}return{half:70,home:t,backstop:n,fence:i}})();var St="#f1f5f9";function st(e){return Xe(e)}function Ne(e,t,n,o,r=32){let s=[];for(let i=0;i<r;i++){let a=i/r*es;s.push({x:e+n*Math.cos(a),y:t+o*Math.sin(a)})}return s}function Te(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 ns(e){let{kind:t,cx:n,cy:o,width:r,height:s}=e,i=(e.rotation??0)*Math.PI/180,a=Math.cos(i),f=Math.sin(i),u=r/2,l=s/2,c=[],h=qi[t],m=p=>h?p/h.width*r:0,d=p=>h?p/h.height*s:0;switch(t){case"pitch-football":{c.push({points:[{x:0,y:-l},{x:0,y:l}],closed:!1}),c.push({points:Ne(0,0,m(9.15),d(9.15)),closed:!0});for(let p of[-1,1])c.push({points:Te(p*(u-m(16.5)/2),0,m(16.5)/2,d(40.32)/2),closed:!0}),c.push({points:Te(p*(u-m(5.5)/2),0,m(5.5)/2,d(18.32)/2),closed:!0});break}case"rink-hockey":{c.push({points:[{x:0,y:-l},{x:0,y:l}],closed:!1,ink:"#d63b3b"});for(let p of[-1,1]){c.push({points:[{x:p*m(7.5),y:-l},{x:p*m(7.5),y:l}],closed:!1,ink:"#2f6ecb"}),c.push({points:[{x:p*(u-m(4)),y:-d(11)},{x:p*(u-m(4)),y:d(11)}],closed:!1,ink:"#d63b3b"});for(let b of[-1,1])c.push({points:Ne(p*m(20.5),b*d(7),m(4.5),d(4.5)),closed:!0,ink:"#2f6ecb"})}c.push({points:Ne(0,0,m(4.5),d(4.5)),closed:!0,ink:"#2f6ecb"});break}case"track-athletics":{let b=l-d(1.22)*8;b>0&&c.push({points:Vn(u-m(1.22)*8,b),closed:!0,fill:"#2f7d4f"});for(let y=1;y<8;y++){let x=d(1.22)*y,M=l-x;if(M<=0)break;c.push({points:Vn(u-m(1.22)*y,M),closed:!0})}break}case"oval-cricket":{c.push({points:Ne(0,0,m(27.4),d(27.4+20.12/2),40),closed:!0}),c.push({points:Te(0,0,m(3.05)/2,d(20.12)/2),closed:!0,ink:"#d8cfae"});break}case"pitch-rugby":{let p=b=>({points:[{x:m(b),y:-l},{x:m(b),y:l}],closed:!1});c.push(p(0));for(let b of[-1,1]){c.push(p(b*50),p(b*28));for(let y=-35;y<35;y+=4)c.push({points:[{x:m(b*10),y:d(y)},{x:m(b*10),y:d(Math.min(35,y+2))}],closed:!1})}break}case"diamond-baseball":{let p=(L,F)=>({x:m(L),y:d(F)}),{home:b}=Yn,y=27.43,x=y/Math.SQRT2,M={x:b.x+x,y:b.y-x},I={x:b.x,y:b.y-2*x},w={x:b.x-x,y:b.y-x},g={x:b.x,y:b.y-18.44},R="#b98a59",P=Ji["diamond-baseball"],S=38.94,E=[p(b.x,b.y)],_=Math.atan2(b.y-S/Math.SQRT2-g.y,S/Math.SQRT2),O=Math.PI-_;for(let L=0;L<=16;L++){let F=_-(_+Math.PI*2-O)%(Math.PI*2)*(L/16);E.push(p(g.x+29*Math.cos(F),g.y+29*Math.sin(F)))}c.push({points:E,closed:!0,fill:R,ink:R});let k={x:b.x,y:b.y-x},C=[{x:b.x,y:b.y},M,I,w].map(L=>p(k.x+(L.x-k.x)*.84,k.y+(L.y-k.y)*.84));c.push({points:C,closed:!0,fill:P,ink:P}),c.push({points:Ne(m(g.x),d(g.y),m(2.74),d(2.74),20),closed:!0,fill:R,ink:R}),c.push({points:Ne(m(b.x),d(b.y),m(3.96),d(3.96),20),closed:!0,fill:R,ink:R});let A=Yn.fence;c.push({points:[p(b.x,b.y),p(A[0].x,A[0].y)],closed:!1}),c.push({points:[p(b.x,b.y),p(A[A.length-1].x,A[A.length-1].y)],closed:!1});for(let L of[M,I,w])c.push({points:Te(m(L.x),d(L.y),m(.3),d(.3)),closed:!0,fill:St});break}case"court-basketball":{c.push({points:Te(0,0,m(14),d(7.5)),closed:!0}),c.push({points:[{x:0,y:-d(7.5)},{x:0,y:d(7.5)}],closed:!1}),c.push({points:Ne(0,0,m(1.8),d(1.8),24),closed:!0});for(let p of[-1,1]){let b=p*14,y=p*(14-5.8),x=p*(14-1.575);c.push({points:Te(m((b+y)/2),0,m(2.9),d(2.45)),closed:!0,fill:"#2f5d8a"}),c.push({points:Ne(m(y),0,m(1.8),d(1.8),24),closed:!0});let M=Math.sqrt(6.75*6.75-6.6*6.6),I=[{x:m(b),y:-d(6.6)}],w=Math.atan2(-6.6,-p*M),g=2*Math.atan2(6.6,M);for(let R=0;R<=16;R++){let P=w-p*g*(R/16);I.push({x:m(x+6.75*Math.cos(P)),y:d(6.75*Math.sin(P))})}I.push({x:m(b),y:d(6.6)}),c.push({points:I,closed:!1})}break}case"court-tennis":{c.push({points:Te(0,0,m(11.885),d(5.485)),closed:!0,fill:"#2b5f99"});for(let p of[-1,1])c.push({points:[{x:-m(11.885),y:p*d(4.115)},{x:m(11.885),y:p*d(4.115)}],closed:!1}),c.push({points:[{x:p*m(6.4),y:-d(4.115)},{x:p*m(6.4),y:d(4.115)}],closed:!1});c.push({points:[{x:-m(6.4),y:0},{x:m(6.4),y:0}],closed:!1}),c.push({points:[{x:0,y:-d(6.4)},{x:0,y:d(6.4)}],closed:!1,ink:"#d1d5db"});break}case"ring-boxing":{c.push({points:Te(0,0,m(3.05),d(3.05)),closed:!0});let y=[[-1,-1,"#c53030"],[1,1,"#2b6cb0"],[1,-1,"#e2e8f0"],[-1,1,"#e2e8f0"]];for(let[x,M,I]of y)c.push({points:Te(x*m(3.05),M*d(3.05),m(.3),d(.3)),closed:!0,fill:I,ink:I});break}default:return[]}return c.map(p=>({...p,points:p.points.map(b=>ts(b.x,b.y,a,f,n,o))}))}function zn(e){if(e.role!=="stage"||!st(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),s=Math.max(...n),i=Math.min(...o),a=Math.max(...o),f=Math.max(1,s-r),u=Math.max(1,a-i);t={cx:r+f/2,cy:i+u/2,width:f,height:u}}return t?ns({kind:e.stageKind,...t}):[]}var os=/^data:image\/(?:png|jpe?g|webp|gif|avif);base64,[a-z0-9+/]+={0,2}$/i,rs=/[\s"'<>`\\]/;function is(e){if(typeof e!="string"||!e||e.length>2e6||e!==e.trim())return!1;if(e.startsWith("data:"))return os.test(e);if(rs.test(e))return!1;try{let t=new URL(e);return t.protocol==="https:"&&!t.username&&!t.password}catch{return!1}}function Wn(e){let t=e.trim();return is(t)?t:null}var tn="seatlayer.event-configuration/1";var Ze=100,ss=120,as=2e5,cs=1e4,ls=/^[a-f0-9]{64}$/,us=new Set(["stage","screen","barrier","camera_platform","sound_desk","rigging_truss"]);function at(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ue(e,t){return typeof e=="string"&&e.length>=1&&e.length<=t&&e.normalize("NFKC").trim()===e}function fs(e){return typeof e=="number"&&Number.isInteger(e)&&e>0}function Zn(e){return!Array.isArray(e)||e.length>as||!e.every(t=>Ue(t,Ze))?null:[...new Set(e)].sort()}function ms(e){return!at(e)||!Ue(e.chartId,Ze)||!Ue(e.version,Ze)||e.sha256!==void 0&&(typeof e.sha256!="string"||!ls.test(e.sha256))?null:{chartId:e.chartId,version:e.version,...typeof e.sha256=="string"?{sha256:e.sha256}:{}}}function nn(e,t,n){return typeof e=="number"&&Number.isFinite(e)&&e>=t&&e<=n}function hs(e){return at(e)?e.mode==="none"||e.mode==="opaque"?e.opacity===void 0?{mode:e.mode}:null:e.mode==="partial"&&nn(e.opacity,.01,.99)?{mode:"partial",opacity:e.opacity}:null:null}function ds(e,t){if(e===void 0)return;if(!Array.isArray(e)||e.length>cs)return null;let n=new Set(t),o=new Set,r=new Set,s=0,i=[];for(let a of e){if(!at(a)||!Ue(a.id,Ze)||!Ue(a.objectId,Ze)||!n.has(a.objectId)||!us.has(String(a.kind))||!nn(a.heightM,.05,50)||a.baseElevationM!==void 0&&!nn(a.baseElevationM,-10,100))return null;let f=hs(a.occlusion);if(!f||o.has(a.id)||r.has(a.objectId))return null;let u=a.contentImageUrl===void 0?void 0:typeof a.contentImageUrl=="string"?Wn(a.contentImageUrl):null;if(a.contentImageUrl!==void 0&&(!u||a.kind!=="screen"||++s>1))return null;o.add(a.id),r.add(a.objectId),i.push({id:a.id,objectId:a.objectId,kind:a.kind,heightM:a.heightM,...a.baseElevationM!==void 0?{baseElevationM:a.baseElevationM}:{},occlusion:f,...u?{contentImageUrl:u}:{}})}return i.sort((a,f)=>a.id.localeCompare(f.id))}function ps(e){let t=[];if(!at(e))return{issues:[{code:"invalid_export",path:"configuration",message:"Configuration must be an object"}]};e.schema!==tn&&t.push({code:"unsupported_schema",path:"configuration.schema",message:`Configuration schema must be ${tn}`}),Ue(e.id,Ze)||t.push({code:"invalid_id",path:"configuration.id",message:"Configuration id must contain 1 to 100 normalized characters"}),Ue(e.label,ss)||t.push({code:"invalid_label",path:"configuration.label",message:"Configuration label must contain 1 to 120 normalized characters"}),fs(e.version)||t.push({code:"invalid_version",path:"configuration.version",message:"Configuration version must be a positive integer"});let n=ms(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=at(e.overlay)?e.overlay:null,r=Zn(o?.objectIds),s=Zn(o?.productionKillSeatIds),i=r?ds(o?.productionElements,r):null;return(!o||!r||!s)&&t.push({code:"invalid_overlay",path:"configuration.overlay",message:"Overlay ids must be bounded arrays of normalized stable ids"}),i===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||!s||i===null?{issues:t}:{issues:t,value:{schema:tn,id:e.id,label:e.label,version:e.version,baseVenue:n,overlay:{objectIds:r,productionKillSeatIds:s,...i!==void 0?{productionElements:i}:{}}}}}function $n(e){let t=ps(e);return t.value?{ok:!0,value:t.value}:{ok:!1,issues:t.issues}}function bs(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 ys(e,t,n){let o=n*Math.PI/180,r=Math.cos(o),s=Math.sin(o),i=e.x-t.x,a=e.y-t.y;return{x:t.x+i*r-a*s,y:t.y+i*s+a*r}}function Qn(e){let t=bs(e);if(!t||t.length<2)return null;let n=e.rotation??0,o=Math.abs(n)<1e-6?t:t.map(f=>ys(f,{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,s=1/0,i=-1/0,a=-1/0;for(let f of o)r=Math.min(r,f.x),s=Math.min(s,f.y),i=Math.max(i,f.x),a=Math.max(a,f.y);return!Number.isFinite(r)||i-r<1e-6||a-s<1e-6?null:{minX:r,minY:s,maxX:i,maxY:a}}var xs=5,gs=3,Ms=.92,Ss=1.9,Is=2,Ps=.6,Rs=1,ws=.06;function vs(e){return e.heightM!==void 0?e.heightM:e.stageKind==="ring-boxing"?Mt:st(e.stageKind)?ws:Rs}function qn(e){let t=1/0,n=1/0,o=-1/0,r=-1/0,s=-1/0;for(let i of to(e)){let a=i.baseHeightM??0;for(let f of i.objects){if(f.type!=="shape"||f.role!=="stage")continue;let u=Qn(f);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),s=Math.max(s,a+vs(f)))}}return!Number.isFinite(t)||!Number.isFinite(s)?null:{minX:t,minY:n,maxX:o,maxY:r,deckTopM:s}}function Es(e,t,n,o){let r=1/0,s=1/0,i=-1/0,a=-1/0;for(let m of e)Number.isFinite(m.eyeHeightM)&&(r=Math.min(r,m.x),i=Math.max(i,m.x),s=Math.min(s,m.y),a=Math.max(a,m.y));if(!Number.isFinite(r))return null;let f=r*t,u=s*t,l=Math.max(1,Math.ceil((i-r)*t/n)+1),c=Math.max(1,Math.ceil((a-s)*t/n)+1),h=new Float64Array(l*c).fill(-1/0);for(let m of e){if(!Number.isFinite(m.eyeHeightM))continue;let d=m.eyeHeightM-Ee,p=Math.min(l-1,Math.max(0,Math.floor((m.x*t-f)/n))),y=Math.min(c-1,Math.max(0,Math.floor((m.y*t-u)/n)))*l+p,x=d+o;x>h[y]&&(h[y]=x)}return{cellM:n,minX:f,minY:u,cols:l,rows:c,top:h}}function Cs(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 Jn(e,t,n={}){let o=new Map;if(!t||!e.length)return o;let r=n.metresPerChartUnit??J,s=n.cellM??Ps,i=n.chairBackM??Ms,a=n.selfRowSkipM??Is,f=n.clearThreshold??.9,u=n.partialThreshold??.25,l=Math.max(1,n.columns??xs),c=Math.max(1,n.rows??gs),h=Es(e,r,s,i);if(!h)return o;let m=(t.maxX-t.minX)*r,d=(t.maxY-t.minY)*r,p=m>=d,b=(t.minX+t.maxX)/2*r,y=(t.minY+t.maxY)/2*r,x=[];for(let I=0;I<l;I++){let w=(I+.5)/l-.5,g=p?b+w*m:b,R=p?y:y+w*d;for(let P=0;P<c;P++){let S=t.deckTopM+(c===1?0:P/(c-1)*Ss);x.push({x:g,y:R,z:S})}}let M=s/2;for(let I of e){if(!Number.isFinite(I.eyeHeightM))continue;let w=I.x*r,g=I.y*r,R=I.eyeHeightM,P=0,S=1/0;for(let _ of x){let O=_.x-w,k=_.y-g,C=Math.hypot(O,k);if(!(C>a)){P++;continue}let A=O/C,L=k/C,F=0;for(let T=a;T<C;T+=M){let B=Cs(h,w+A*T,g+L*T);if(!(!Number.isFinite(B)||B>=R)&&B>R+(_.z-R)*T/C){F=T;break}}F?S=Math.min(S,F):P++}let E=P/x.length;E>=f||o.set(I.id,{seatId:I.id,mark:E<u?"obstructedView":"restrictedView",visibleFraction:E,totalRays:x.length,atDistanceM:Number.isFinite(S)?S:0})}return o}function eo(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 s=o.commercial;s?.restrictedView!==void 0||s?.obstructedView!==void 0||(o.commercial={...s,[r.mark]:!0},n++)}return n}function on(e){return e?e.accessibility?.length?e.wheelchairSpaceType&&!e.accessibility.includes("wheelchair")?["wheelchair",...e.accessibility]:e.accessibility:e.wheelchairSpaceType?["wheelchair"]:e.accessible?["wheelchair"]:[]:[]}var Pt=Math.PI/180;var ct=16;function rn(e,t,n,o){let r=n*Pt,s=Math.cos(r),i=Math.sin(r);return{x:o.x+e*s-t*i,y:o.y+e*i+t*s}}function so(e){let{seatCount:t,seatSpacing:n,curve:o,rotation:r,origin:s}=e,i=[];if(e.path)return Bn(e.path,t);if(t<=1)return t===1&&i.push({x:s.x,y:s.y}),i;if(o===0){for(let u=0;u<t;u++)i.push(rn(u*n,0,r,s));return i}let a=o/(t-1)*Pt,f=n/(2*Math.sin(Math.abs(a)/2));for(let u=0;u<t;u++){let l=u*a,c=f*Math.sin(l),h=-f+f*Math.cos(l);i.push(rn(c,h,r,s))}return i}function ao(e){let t=new Map;if(e.overrides)for(let n of e.overrides)t.set(n.index,n);return t}function As(e,t){let n=ao(e);return so(e).map((o,r)=>{let s=n.get(r),i=on(s),a=Gn(e,r,s),f={...e.commercial,...s?.commercial};return{index:r,x:o.x+(s?.dx??0),y:o.y+(s?.dy??0),label:a,displayLabel:$t(e,r,t,s),categoryKey:s?.categoryKey??e.categoryKey,skipped:!!s?.skip,accessible:i.length>0,accessibility:i,wheelchairSpaceType:s?.wheelchairSpaceType,commercial:Object.values(f).some(u=>u!==void 0&&u!==!1&&u!=="")?f:void 0,glyph:s?.glyph,viewUrl:s?.viewFromSeatUrl??e.viewFromSeatUrl,viewMeta:s?.viewFromSeatUrl?s.viewFromSeatMeta:e.viewFromSeatMeta,labelStyle:s?.labelStyle??e.seatLabelStyle}})}function _s(e){let t=[];for(let n of As(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 ks(e){if(e.seatCountsBySide)return{...e.seatCountsBySide};let t=e.sides&&e.sides.length?e.sides:["top","bottom"],n=["top","bottom","left","right"].filter(s=>t.includes(s)),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 s=0;s<r;s++)o[n[s%n.length]]+=1;return o}function Ts(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,c,h,m)=>{let d=o.get(l),p=on(d),b=d?.label??`${e.label}-${l+1}`,y=e.displayLabel??e.label;return{index:l,label:b,displayLabel:d?.displayLabel??`${y}-${l+1}`,x:c+(d?.dx??0),y:h+(d?.dy??0),categoryKey:d?.categoryKey??e.categoryKey,skipped:!!d?.skip,accessible:p.length>0,accessibility:p,wheelchairSpaceType:d?.wheelchairSpaceType,commercial:d?.commercial,glyph:d?.glyph,viewUrl:d?.viewFromSeatUrl,viewMeta:d?.viewFromSeatUrl?d.viewFromSeatMeta:void 0,labelStyle:d?.labelStyle,...m?{side:m}:{}}};if(e.shape==="round"){let l=(e.radius??40)+ct,c=e.rotation*Pt,h=Math.max(0,Math.min(360,e.seatArc??360));if(h>=360||n===1){for(let b=0;b<n;b++){let y=c+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 m=h*Pt,d=(2*Math.PI-m)/2,p=c+d;for(let b=0;b<n;b++){let y=p+b/(n-1)*m;t.push(r(b,e.center.x+l*Math.cos(y),e.center.y+l*Math.sin(y)))}return t}let s=e.width??80,i=e.height??50,a=ks(e),f=["top","bottom","left","right"],u=0;for(let l of f){let c=a[l];for(let h=0;h<c;h++){let m,d;l==="top"?(m=-s/2+(h+.5)*s/c,d=-i/2-ct):l==="bottom"?(m=-s/2+(h+.5)*s/c,d=i/2+ct):l==="left"?(m=-s/2-ct,d=-i/2+(h+.5)*i/c):(m=s/2+ct,d=-i/2+(h+.5)*i/c);let p=rn(m,d,e.rotation,e.center);t.push(r(u++,p.x,p.y,l))}}return t}function Ls(e){return Ts(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 Os(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 no(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let s=t[o].x,i=t[o].y,a=t[r].x,f=t[r].y;i>e.y!=f>e.y&&e.x<(a-s)*(e.y-i)/(f-i)+s&&(n=!n)}return n}function Bs(e,t){return t.some((n,o)=>{let r=t[(o+1)%t.length],s=(e.y-n.y)*(r.x-n.x)-(e.x-n.x)*(r.y-n.y);if(Math.abs(s)>1e-7)return!1;let i=(e.x-n.x)*(r.x-n.x)+(e.y-n.y)*(r.y-n.y),a=(r.x-n.x)**2+(r.y-n.y)**2;return i>=-1e-7&&i<=a+1e-7})}function sn(e){return Array.isArray(e)?e.filter(t=>Array.isArray(t)&&t.length>=3):[]}function me(e,t,n){return no(e,t)&&!sn(n).some(o=>no(e,o)||Bs(e,o))}function It(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 co(e){switch(e.type){case"row":{let t=so(e),n=ao(e),o=0,r=0,s=0;for(let i=0;i<t.length;i++){let a=n.get(i);a?.skip||(o+=t[i].x+(a?.dx??0),r+=t[i].y+(a?.dy??0),s++)}return s?{x:o/s,y:r/s}:{x:e.origin.x,y:e.origin.y}}case"table":case"booth":return{x:e.center.x,y:e.center.y};case"gaArea":return It(e.points);case"section":return It(e.outline);case"text":return{x:e.position.x,y:e.position.y};case"shape":return e.points&&e.points.length?It(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 oo(e,t){return e.length===t.length&&e.every((n,o)=>n.x===t[o].x&&n.y===t[o].y)}function Fs(e,t){if(e.type!=="gaArea"||!oo(e.points,t.outline))return!1;let n=sn(e.holes),o=sn(t.holes);return n.length===o.length&&n.every((r,s)=>oo(r,o[s]))}function Ds(e,t,n=e.filter(r=>r.type==="section"),o=co(t)){let r="referenceInventorySource"in t?t.referenceInventorySource?.logicalSectionId:void 0;return(r?n.find(i=>(i.logicalSectionId??i.id)===r&&(Fs(t,i)||me(o,i.outline,i.holes))):void 0)??n.find(i=>me(o,i.outline,i.holes))}function to(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 ro(e,t,n,o,r,s,i,a,f){let u=[],l=e.filter(p=>p.type==="section"),c=Dn(e),h=p=>!p?.eventConfigurationId||p.eventConfigurationId===o&&(p.eventConfigurationVersion===void 0||p.eventConfigurationVersion===f),m=p=>Un(p,{activeConfigurationId:o,activeConfigurationVersion:f,activeBasisSha256:r,now:a}),d=(p,b)=>m(p)?{...p,coverage:b}:void 0;for(let p of e){let b=[];if(p.type==="row"?b=_s(p):p.type==="table"?b=Ls(p):p.type==="booth"&&(b=Os(p)),!b.length)continue;for(let w of b)w.viewUrl&&!h(w.viewMeta)&&(w.viewUrl=void 0,w.viewMeta=void 0);if(p.type==="row"){let w=c.get(p.id);if(w){let g=new Map((p.overrides??[]).map(R=>[R.index,R]));for(let R of b){let P=Number(R.id.slice(R.id.lastIndexOf(":")+1));if(!Number.isInteger(P))continue;R.logicalRowId=w.groupId,R.logicalSeatIndex=w.adjacencyOffset+P,g.get(P)?.displayLabel||(R.displayLabel=$t(p,P,w)),!R.viewUrl&&w.viewFromSeatUrl&&h(w.viewFromSeatMeta)&&(R.viewUrl=w.viewFromSeatUrl,R.viewMeta=w.viewFromSeatMeta);let S=g.get(P)?.confidenceEvidence;R.confidenceEvidence=d(S,"exact-seat")??d(p.confidenceEvidence,"row-representative")??d(w.confidenceEvidence,"row-representative")}}}let y=Ds(e,p,l,p.type==="row"?It(b):co(p)),x=y?.viewFromSeatUrl,I=(y?.zone?t?.find(w=>w.id===y.zone):void 0)?.focalPoint??n;for(let w of b){if(!w.confidenceEvidence){let g=Number(w.id.slice(w.id.lastIndexOf(":")+1)),R=(p.type==="row"||p.type==="table")&&Number.isInteger(g)?p.overrides?.find(P=>P.index===g)?.confidenceEvidence:void 0;w.confidenceEvidence=d(R,"exact-seat")??(p.type==="row"?d(p.confidenceEvidence,"row-representative"):void 0)}w.confidenceEvidence??=d(y?.confidenceEvidence,"section-representative")??(i?d(i.evidence,i.coverage):void 0),!w.viewUrl&&x&&h(y?.viewFromSeatMeta)&&(w.viewUrl=x,w.viewMeta=y?.viewFromSeatMeta),!w.viewUrl&&s&&h(s.meta)&&(w.viewUrl=s.url,w.viewMeta=s.meta),y&&(w.sectionId=y.logicalSectionId??y.id),y?.zone&&(w.zoneId=y.zone),I&&(w.focalPoint={...I})}u.push(...b)}return u}function $e(e,t={}){if(e.floors?.length){let o=[];for(let r of e.floors){let s=r.focalPoint??e.focalPoint,i=r.viewFromSeatUrl?{url:r.viewFromSeatUrl,meta:r.viewFromSeatMeta}:e.viewFromSeatUrl?{url:e.viewFromSeatUrl,meta:e.viewFromSeatMeta}:void 0,a=r.confidenceEvidence?{evidence:r.confidenceEvidence,coverage:"floor-representative"}:e.confidenceEvidence?{evidence:e.confidenceEvidence,coverage:"venue-representative"}:void 0,f=ro(r.objects,e.zones,s,e.eventConfigurationId,e.confidenceBasisSha256,i,a,t.now,t.eventConfigurationVersion??e.eventConfigurationVersion);t.resolveEyeHeights!==!1&&io(r.objects,r.focalPoint??e.focalPoint,r.baseHeightM??0,f);for(let u of f)u.floorId=r.id;for(let u of f)o.push(u)}return o}let n=ro(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&&io(e.objects,e.focalPoint,t.floorBaseHeightM??0,n),Ns(e,n,t)}function Ns(e,t,n){return!n.deriveRestrictedView||e.derivedRestrictedView===!1||n.resolveEyeHeights===!1||eo(t,Jn(t,qn(e))),t}function io(e,t,n,o){let r=e.filter(c=>c.type==="section"),s=n>0||r.some(c=>c.height!==void 0||c.rake!==void 0||(c.elevation??0)>0);if(!r.length||!s||!t){for(let c of o)c.eyeHeightM=n+Ee;return}let i=new Array(o.length),a=new Map;for(let c of r)a.has(c.id)||a.set(c.id,c);let f=new Map,u=new Map;for(let c=0;c<o.length;c++){let h=o[c],d=(h.sectionId?a.get(h.sectionId)??r.find(b=>b.logicalSectionId===h.sectionId&&me({x:h.x,y:h.y},b.outline,b.holes)):void 0)??r.find(b=>me({x:h.x,y:h.y},b.outline,b.holes))??null;if(i[c]=d,!d)continue;f.has(d.id)||f.set(d.id,De(d,{floorBaseHeightM:n}));let p=u.get(d.id);p?p.push(c):u.set(d.id,[c])}let l=new Array(o.length).fill(void 0);for(let[c,h]of u){let m=f.get(c);if(!m)continue;let d=m.rake>0?Math.tan(m.rake*Math.PI/180):0,p=gt(c,o,h,t);for(let b of p.rows){let y=b.blockDepth*J*d,x=m.height+y;for(let M of b.seatIndices)l[M]=x}}for(let c=0;c<o.length;c++){let h=o[c],m=i[c];if(!m){h.eyeHeightM=n+Ee;continue}let d=f.get(m.id);h.eyeHeightM=(l[c]??d.height)+Ee}}var uo=Fe(require("earcut"),1),an=Fe(require("polygon-clipping"),1);function de(e){let t=0;for(let n=0,o=e.length;n<o;n+=1){let r=e[n],s=e[(n+1)%o];t+=r.x*s.y-s.x*r.y}return t/2}function pe(e,t,n){let o=!1;for(let r=0,s=e.length-1;r<e.length;s=r++){let i=e[r],a=e[s];i.y>n!=a.y>n&&t<(a.x-i.x)*(n-i.y)/(a.y-i.y)+i.x&&(o=!o)}return o}var v=J,Gs=.002;function js(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]),s=Math.hypot(e[0]-n[0],e[1]-n[1],e[2]-n[2]),i=Math.max(o,r,s);if(i<1e-9)return!0;let a=(o+r+s)/2;return 2*Math.sqrt(Math.max(0,a*(a-o)*(a-r)*(a-s)))/i<Gs}var Ve=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)}},vt=class{constructor(){this.pos=new Ve;this.nor=new Ve;this.col=new Ve;this.flr=new Ve;this.mat=new Ve;this.currentFloor=0;this.currentMaterial=0}setFloor(t){this.currentFloor=t}setMaterial(t){this.currentMaterial=t}tri(t,n,o,r,s,i=s,a=s){js(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(s[0],s[1],s[2]),this.col.push3(i[0],i[1],i[2]),this.col.push3(a[0],a[1],a[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,s,i,a,f=a,u=a){[...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(s[0],s[1],s[2]),this.nor.push3(i[0],i[1],i[2]),this.col.push3(a[0],a[1],a[2]),this.col.push3(f[0],f[1],f[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 Hs(e,t,n){let o=t[0]-e[0],r=t[1]-e[1],s=t[2]-e[2],i=n[0]-e[0],a=n[1]-e[1],f=n[2]-e[2],u=r*f-s*a,l=s*i-o*f,c=o*a-r*i,h=Math.hypot(u,l,c)||1;return u/=h,l/=h,c/=h,[u,l,c]}function Xs(e,t){let n=[...e],o=[];for(let i of e)o.push(i.x,i.y);let r=[];if(t){for(let i of t)if(!(i.length<3)){r.push(n.length);for(let a of i)n.push(a),o.push(a.x,a.y)}}let s=(0,uo.default)(o,r.length?r:void 0,2);return{pts:n,tris:s}}function Ce(e){return de(e)<0?[...e].reverse():e}var Us=3;function Vs(e,t,n,o){let r=o(e),s=o(t),i=o(n),a=(m,d,p,b)=>Math.abs(o({x:(m.x+d.x)/2,y:(m.y+d.y)/2})-(p+b)/2),f=(e.x+t.x+n.x)/3,u=(e.y+t.y+n.y)/3,l=(r+s+i)/3,c=Math.max(a(e,t,r,s),a(t,n,s,i),a(n,e,i,r),Math.abs(o({x:f,y:u})-l)),h=(m,d,p)=>{let b=Math.abs(o({x:(m+f)/2,y:(d+u)/2})-(p+l)/2);b>c&&(c=b)};return h((e.x+t.x)/2,(e.y+t.y)/2,(r+s)/2),h((t.x+n.x)/2,(t.y+n.y)/2,(s+i)/2),h((n.x+e.x)/2,(n.y+e.y)/2,(i+r)/2),c}function lt(e,t,n,o,r){if(r<=0)return Vs(e,t,n,o);let s={x:(e.x+t.x)/2,y:(e.y+t.y)/2},i={x:(t.x+n.x)/2,y:(t.y+n.y)/2},a={x:(n.x+e.x)/2,y:(n.y+e.y)/2};return Math.max(lt(e,s,a,o,r-1),lt(s,t,i,o,r-1),lt(a,i,n,o,r-1),lt(s,i,a,o,r-1))}function ut(e,t,n,o,r,s,i,a){if(i>0){let h={x:(t.x+n.x)/2,y:(t.y+n.y)/2},m={x:(n.x+o.x)/2,y:(n.y+o.y)/2},d={x:(o.x+t.x)/2,y:(o.y+t.y)/2};ut(e,t,h,d,r,s,i-1,a),ut(e,h,n,m,r,s,i-1,a),ut(e,d,m,o,r,s,i-1,a),ut(e,h,m,d,r,s,i-1,a);return}let f=[t.x*v,r(t),t.y*v],u=[n.x*v,r(n),n.y*v],l=[o.x*v,r(o),o.y*v];if(a){e.triN(f,u,l,a(t),a(n),a(o),s);return}let c=Hs(f,u,l);c[1]<0&&(c=[-c[0],-c[1],-c[2]]),e.tri(f,u,l,c,s)}var Ys=8;function lo(e,t,n){if(!Number.isFinite(n))return e;let o=[],r=(s,i,a,f,u)=>{if(u>0){let l={x:(s.x+i.x)/2,y:(s.y+i.y)/2},c=t(l);if(Math.abs(c-(a+f)/2)>n){r(s,l,a,c,u-1),r(l,i,c,f,u-1);return}}o.push(s)};for(let s=0;s<e.length;s++){let i=e[s],a=e[(s+1)%e.length];r(i,a,t(i),t(a),Ys)}return o}function Rt(e,t){if(e.length<3)return e;let n=[];for(let r of e){let s=n[n.length-1];s&&Math.hypot(r.x-s.x,r.y-s.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 s=o.length?o[o.length-1]:n[(r-1+n.length)%n.length],i=n[r],a=n[(r+1)%n.length],f=a.x-s.x,u=a.y-s.y,l=Math.hypot(f,u);l>t&&Math.abs((i.x-s.x)*u-(i.y-s.y)*f)/l<t||o.push(i)}return o.length>=3?o:n}var wt=.001*ge*.1;function W(e,t,n,o,r,s,i,a,f=1/0,u){if(!t||t.length<3||(f===void 0&&(f=1/0),Math.abs(de(t))<1e-4))return;let l=Rt(lo(Rt(Ce(t),wt),o,f),wt),c=n?.map(g=>Rt(lo(Rt(Ce(g),wt),o,f),wt)).filter(g=>g.length>=3&&Math.abs(de(g))>=1e-4),{pts:h,tris:m}=Xs(l,c),d=[s[0]*a.top,s[1]*a.top,s[2]*a.top],p=[s[0]*a.bottomCap,s[1]*a.bottomCap,s[2]*a.bottomCap],b=[i[0]*a.top,i[1]*a.top,i[2]*a.top],y=[i[0]*a.wallBottom,i[1]*a.wallBottom,i[2]*a.wallBottom],x=0;if(Number.isFinite(f))for(;x<Us;x++){let g=0;for(let R=0;R<m.length;R+=3){let P=lt(h[m[R]],h[m[R+1]],h[m[R+2]],o,x);P>g&&(g=P)}if(g<=f)break}for(let g=0;g<m.length;g+=3){let R=h[m[g]],P=h[m[g+1]],S=h[m[g+2]];ut(e,R,P,S,o,d,x,u);let E=[R.x*v,r,R.y*v],_=[P.x*v,r,P.y*v],O=[S.x*v,r,S.y*v];e.tri(E,O,_,[0,-1,0],p)}let M=g=>{if(x<=0)return g;let R=1<<x,P=[];for(let S=0;S<g.length;S++){let E=g[S],_=g[(S+1)%g.length];for(let O=0;O<R;O++){let k=O/R;P.push({x:E.x+(_.x-E.x)*k,y:E.y+(_.y-E.y)*k})}}return P},I=Wt(l),w=[{ring:M(l),flip:!1}];if(c)for(let g of c)g.length>=3&&w.push({ring:M(g),flip:!0});for(let{ring:g,flip:R}of w)for(let P=0;P<g.length;P++){let S=g[P],E=g[(P+1)%g.length],_=(E.x-S.x)*v,k=(E.y-S.y)*v,C=-_,A=Math.hypot(k,C)||1;k/=A,C/=A;let L=(S.x+E.x)/2-I.x,F=(S.y+E.y)/2-I.y,T=k*L+C*F;R&&(T=-T),T<0&&(k=-k,C=-C);let B=[k,0,C],N=[S.x*v,o(S),S.y*v],H=[E.x*v,o(E),E.y*v],D=[S.x*v,r,S.y*v],V=[E.x*v,r,E.y*v];e.tri(N,H,V,B,b,b,y),e.tri(N,V,D,B,b,y,y)}}function fo(e){let t=0;for(let f of e)t+=f.count;let n=new Float32Array(t*3),o=new Float32Array(t*3),r=new Float32Array(t*3),s=new Float32Array(t),i=new Float32Array(t),a=0;for(let f of e)n.set(f.position,a*3),o.set(f.normal,a*3),r.set(f.color,a*3),s.set(f.floor,a),i.set(f.material,a),a+=f.count;return{position:n,normal:o,color:r,floor:s,material:i,count:t}}function Ie(e,t,n=2.5){if(t<=0||e.length<3)return e;let o=Ce(e),r=o.length,s=[];for(let a=0;a<r;a++){let f=o[a],u=o[(a+1)%r],l=u.x-f.x,c=u.y-f.y,h=Math.hypot(l,c)||1;s.push({x:c/h,y:-l/h})}let i=[];for(let a=0;a<r;a++){let f=o[a],u=s[(a-1+r)%r],l=s[a],c=u.x+l.x,h=u.y+l.y,m=Math.hypot(c,h),d=()=>{i.push([f.x+u.x*t,f.y+u.y*t]),i.push([f.x+l.x*t,f.y+l.y*t])};if(m<1e-9){d();continue}c/=m,h/=m;let p=c*u.x+h*u.y,b=1/Math.max(p,1e-6);if(!Number.isFinite(b)||b>n){d();continue}i.push([f.x+c*t*b,f.y+h*t*b])}if(i.length<3)return e;try{let a=an.default.union([[...i,i[0]]]),f=null,u=-1/0;for(let c of a){let h=Math.abs(de(c[0].map(([m,d])=>({x:m,y:d}))));h>u&&(u=h,f=c[0])}if(!f)return e;let l=f.map(([c,h])=>({x:c,y:h}));if(l.length>1){let c=l[0],h=l[l.length-1];Math.abs(c.x-h.x)<1e-9&&Math.abs(c.y-h.y)<1e-9&&l.pop()}return l.length>=3?l:e}catch{return e}}function Ye(e,t,n=2.5){if(e.length<3)return[];if(t<=0)return e;let o=Ce(e),r=o.length,s=[];for(let f=0;f<r;f++){let u=o[f],l=o[(f+1)%r],c=Math.hypot(l.x-u.x,l.y-u.y)||1;s.push({x:-(l.y-u.y)/c,y:(l.x-u.x)/c})}let i=[],a=[];for(let f=0;f<r;f++){let u=o[f],l=s[(f-1+r)%r],c=s[f],h=l.x+c.x,m=l.y+c.y,d=Math.hypot(h,m),p=d<1e-9?1/0:1/Math.max(h/d*l.x+m/d*l.y,1e-6);if(!Number.isFinite(p)||p>n){i.push({x:u.x+l.x*t,y:u.y+l.y*t},{x:u.x+c.x*t,y:u.y+c.y*t}),a.push(f,f);continue}h/=d,m/=d,i.push({x:u.x+h*t*p,y:u.y+m*t*p}),a.push(f)}for(let f=0;f<i.length;f++){let u=(f+1)%i.length,l=a[f],c=a[u];if(c!==(l+1)%r)continue;let h=o[l],m=o[c];if((i[u].x-i[f].x)*(m.x-h.x)+(i[u].y-i[f].y)*(m.y-h.y)<=0)return[]}try{let f=an.default.intersection([[...i.map(d=>[d.x,d.y]),[i[0].x,i[0].y]]],[[...o.map(d=>[d.x,d.y]),[o[0].x,o[0].y]]]),u=null,l=0;for(let d of f){let p=Math.abs(de(d[0].map(([b,y])=>({x:b,y}))));p>l&&(l=p,u=d[0])}if(!u)return[];let c=u.map(([d,p])=>({x:d,y:p})),h=c[0],m=c[c.length-1];return c.length>1&&Math.abs(h.x-m.x)<1e-9&&Math.abs(h.y-m.y)<1e-9&&c.pop(),c.length>=3?Ce(c):[]}catch{return[]}}function Et(e,t,n,o,r=28){let s=[];for(let i=0;i<r;i++){let a=i/r*Math.PI*2;s.push({x:e+n*Math.cos(a),y:t+o*Math.sin(a)})}return s}function ft(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 mt=3,Ke=.38,ht=.24;function Ks(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)*v,s=(n.y-t.y)*v,i=(o.x-t.x)*v,a=(o.y-t.y)*v,f=2*(r*a-s*i);if(Math.abs(f)<1e-7)return null;let u=r*r+s*s,l=i*i+a*a,c=(u*a-l*s)/f+t.x*v,h=(r*l-i*u)/f+t.y*v,m=Math.hypot(t.x*v-c,t.y*v-h);return m<1||m>200||!Number.isFinite(m)||e.some(d=>Math.abs(Math.hypot(d.x*v-c,d.y*v-h)-m)>.03)?null:{x:c,z:h,radius:m}}function mo(e){let t=[],n=new Map,o=(f,u)=>`${Math.floor(f/mt)},${Math.floor(u/mt)}`;for(let f of e)for(let u of f.rows){for(let c of u.pts){let h=c.x*v,m=c.y*v,d=o(h,m),p=n.get(d)??[];p.push({x:h,z:m,y:u.y,floor:f.floorIndex}),n.set(d,p)}if(u.patch||u.pts.length<2)continue;let l=Ks(u.pts);for(let c of[0,u.pts.length-1]){let h=u.pts[c],m=u.pts[c===0?1:c-1],d=h.x-m.x,p=h.y-m.y,b=Math.hypot(d,p);b<1e-6||t.push({sectionId:f.sectionId,floorIndex:f.floorIndex,curve:l,row:u,point:h,x:h.x*v,z:h.y*v,dx:d/b,dz:p/b})}}let r=new Map;t.forEach((f,u)=>{let l=o(f.x,f.z),c=r.get(l)??[];c.push(u),r.set(l,c)});let s=(f,u)=>{let l=Math.floor(f/mt),c=Math.floor(u/mt);return[-1,0,1].flatMap(h=>[-1,0,1].map(m=>`${l+h},${c+m}`))},i=new Map;t.forEach((f,u)=>{let l=-1,c=1/0,h=!1;for(let m of s(f.x,f.z))for(let d of r.get(m)??[]){let p=t[d];if(f.sectionId===p.sectionId&&f.row.blockId===p.row.blockId||f.floorIndex!==p.floorIndex||Math.abs(f.row.y-p.row.y)>.05)continue;let b=p.x-f.x,y=p.z-f.z,x=Math.hypot(b,y);if(x<Ke*2+.45||x>mt)continue;let M=f.curve&&p.curve&&Math.hypot(f.curve.x-p.curve.x,f.curve.z-p.curve.z)<=.05&&Math.abs(f.curve.radius-p.curve.radius)<=.05,I=Math.min((b*f.dx+y*f.dz)/x,(-b*p.dx-y*p.dz)/x);(M?I<.8:I<.98)||!M&&(Math.abs(b*f.dz-y*f.dx)>.15||Math.abs(b*p.dz-y*p.dx)>.15)||(x<c-.02?(l=d,c=x,h=!1):Math.abs(x-c)<=.02&&(h=!0))}l>=0&&!h&&i.set(u,l)});let a=[];for(let[f,u]of i){if(f>=u||i.get(u)!==f)continue;let l=t[f],c=t[u],h=Math.hypot(c.x-l.x,c.z-l.z),m=(c.x-l.x)/h,d=(c.z-l.z)/h,p=!1;for(let y of s((l.x+c.x)/2,(l.z+c.z)/2))for(let x of n.get(y)??[]){if(x.floor!==l.floorIndex||Math.abs(x.y-l.row.y)>.75)continue;let M=(x.x-l.x)*m+(x.z-l.z)*d,I=Math.abs((x.x-l.x)*d-(x.z-l.z)*m);M>.01&&M<h-.01&&I<ht+Ke&&(p=!0)}if(p)continue;let b=(y,x)=>({x:(l.x+m*y-d*x)/v,y:(l.z+d*y+m*x)/v});a.push({sections:[l.sectionId,c.sectionId],blocks:[l.row.blockId,c.row.blockId],floorIndex:l.floorIndex,ends:[l.point,c.point],clearWidthM:h-2*Ke,heightM:(l.row.y+c.row.y)/2,outline:[b(Ke,-ht),b(h-Ke,-ht),b(h-Ke,ht),b(Ke,ht)]})}return a}var zs=/^#?([\da-f]{3}|[\da-f]{6})$/i;function ho(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 Ws(e){let t=zs.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 oe(e){let t=Ws(e);return t?[t[0]/255,t[1]/255,t[2]/255]:null}function Zs(e){return .2126*e[0]+.7152*e[1]+.0722*e[2]}function re(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 Ae(e,t){let n=Zs(e);return re(e,[n,n,n],t)}function po({r:e,g:t,b:n}){let o=e/255,r=t/255,s=n/255,i=Math.max(o,r,s),a=Math.min(o,r,s),f=(i+a)/2;if(i===a)return{h:0,s:0,l:f};let u=i-a,l=f>.5?u/(2-i-a):u/(i+a),c;return i===o?c=((r-s)/u+(r<s?6:0))/6:i===r?c=((s-o)/u+2)/6:c=((o-r)/u+4)/6,{h:c,s:l,l:f}}var Ct=["available","held","sold","selected","dimmed"];function bo(e){let t=Ct.indexOf(e);return t<0?0:t}var yo={available:[.24,.82,.52],held:[.95,.66,.22],sold:[.34,.39,.45],selected:[.24,.74,1],dimmed:[.28,.32,.37]};var cn={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]},ln={top:[.05,.06,.08],bottom:[.1,.12,.15]};function z(e,t){return[Math.min(1,e[0]*t),Math.min(1,e[1]*t),Math.min(1,e[2]*t)]}var $s=.15,Qs=1.6;function xo(e){return Fn(e??1,$s,Qs)}var qs=.15,Js=.9,ea=1.76;function ta(){return{background:{top:[...ln.top],bottom:[...ln.bottom]},structure:cn,seatStates:{...yo},seatScale:1,materials:{seat:null,shell:null,roughness:.78}}}function na(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 go(e){let t=ta();e??={};let n=oe(e.background);if(n){t.background={top:z(n,Js),bottom:z(n,ea)};let a={};for(let[u,l]of Object.entries(cn))a[u]=re(l,n,qs);n[0]*.2126+n[1]*.7152+n[2]*.0722>.55&&(a.ground=z(n,.86)),t.structure=a}let o=oe(e.selectionColor)??oe(e.accent);o&&(t.seatStates={...t.seatStates,selected:o});let r=e.seatScale;typeof r=="number"&&Number.isFinite(r)&&(t.seatScale=xo(r));let s=Object.fromEntries(Object.entries(e.venue3d??{}).filter(([,a])=>a!=null)),i={...na(n),...s};if(i){let a=oe(i.deck),f=oe(i.fascia);a&&(t.structure={...t.structure,tierTop:a,gaTop:a}),f&&(t.structure={...t.structure,tierWall:f,gaWall:f}),t.materials.seat=oe(i.seat),t.materials.shell=oe(i.shell),typeof i.roughness=="number"&&Number.isFinite(i.roughness)&&(t.materials.roughness=Math.min(1,Math.max(0,i.roughness)))}return t}function Mo(e,t){let n=[];for(let o of t)n.push(...e.seatStates[o]);return n}var oa=[{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"}],Zu=new Map(oa.map(e=>[e.key,e]));var ra={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 So(e){let t=e?.[0];return t&&ra[t]||"#3b82f6"}var ia=[{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"}],$u=new Map(ia.map(e=>[e.key,e]));var sa=["reference-focal","bar","entrance","exit","restroom","screen","sound","concession","coat","wall","rail","suite","obstruction"],Qu=new Set(sa);var Po=[{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}}],Ro=Po.map(e=>e.key),aa=new Map(Po.map(e=>[e.key,e]));function Io(e){return typeof e=="string"&&aa.has(e)}function wo(e,t){return Io(e)?e:Io(t?.seatGlyph)?t.seatGlyph:"circle"}var ue={pedestal:0,pad:1,back:2,arm:3,footrest:4,leg:5,body:10,head:11},ca=.44,la=.15,ua=.3,fa=.24;function vo(e){return e===void 0||!Number.isFinite(e)||e<=0?fa:Math.min(ua,Math.max(la,e*ca))}var ma=.05,Eo=.45,ha=Eo+ma,da=.92;var nf=[{part:ue.pedestal,min:[-.3,0,-.3],max:[.3,.36,.3]},{part:ue.pad,min:[-1,.36,-.95],max:[1,Eo,1]},{part:ue.back,min:[-1,ha,-1],max:[1,da,-.72]},{part:ue.arm,min:[-1,.44,-.82],max:[-.78,.65,.78]},{part:ue.arm,min:[.78,.44,-.82],max:[1,.65,.78]},{part:ue.footrest,min:[-.9,.18,.78],max:[.9,.31,1.34]},{part:ue.leg,min:[-.82,0,-.7],max:[-.62,.37,-.48]},{part:ue.leg,min:[.62,0,-.7],max:[.82,.37,-.48]},{part:ue.leg,min:[-.82,0,.48],max:[-.62,.37,.7]},{part:ue.leg,min:[.62,0,.48],max:[.82,.37,.7]}],of=[{part:ue.body,min:[-.52,.39,-.08],max:[-.08,.55,.82]},{part:ue.body,min:[.08,.39,-.08],max:[.52,.55,.82]},{part:ue.body,min:[-.47,.05,.58],max:[-.13,.43,.82]},{part:ue.body,min:[.13,.05,.58],max:[.47,.43,.82]},{part:ue.head,min:[-.16,1.04,-.33],max:[.16,1.1,-.13]}];function Co(e,t,n,o){let r=new Float32Array(t),s=u=>e[u*3],i=u=>e[u*3+2],a=0,f=(u,l)=>{let c=l-u;for(let h=u;h<l;h++){let[m,d]=o(h),p=m-s(h),b=d-i(h);if(c>=2){let y=Math.max(u,h-1),x=Math.min(l-1,h+1),M=s(x)-s(y),I=i(x)-i(y),w=Math.hypot(M,I);if(w>1e-6){let g=-I/w,R=M/w;g*p+R*b<0&&(g=-g,R=-R),p=g,b=R}}r[h]=p===0&&b===0?0:Math.atan2(p,b)}};for(let u=1;u<=t;u++)(u===t||n(u)!==n(a))&&(f(a,u),a=u);return r}var At=.22;var pa=.42;function ba(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,s=-1/0,i=-1/0;for(let d of e)d.x<o&&(o=d.x),d.y<r&&(r=d.y),d.x>s&&(s=d.x),d.y>i&&(i=d.y);let a=Math.max(s-o,1e-6),f=Math.max(i-r,1e-6),u=Math.max(Math.sqrt(a*f/t),1e-6),l=Math.max(1,Math.ceil(a/u)+1),c=Math.max(1,Math.ceil(f/u)+1),h=new Map,m=(d,p)=>{let b=Math.min(l-1,Math.max(0,Math.floor((d-o)/u)));return Math.min(c-1,Math.max(0,Math.floor((p-r)/u)))*l+b};for(let d=0;d<t;d++){let p=m(e[d].x,e[d].y),b=h.get(p);b?b.push(d):h.set(p,[d])}for(let d=0;d<t;d++){let p=e[d],b=Math.min(l-1,Math.max(0,Math.floor((p.x-o)/u))),y=Math.min(c-1,Math.max(0,Math.floor((p.y-r)/u))),x=1/0;for(let M=1;M<=4;M++){for(let I=y-M;I<=y+M;I++)if(!(I<0||I>=c))for(let w=b-M;w<=b+M;w++){if(w<0||w>=l||M>1&&Math.abs(I-y)<M&&Math.abs(w-b)<M)continue;let g=h.get(I*l+w);if(g)for(let R of g){if(R===d)continue;let P=Math.hypot(e[R].x-p.x,e[R].y-p.y);P<x&&(x=P)}}if(Number.isFinite(x)&&x<=M*u)break}n[d]=x}return n}function ya(e){let t=e.eyeHeightM;return Number.isFinite(t)?Math.max(0,t-Ee):0}function Ao(e,t,n,o,r,s){let i=e.length,a=new Float32Array(i*3),f=new Float32Array(i),u=new Float32Array(i*3),l=new Float32Array(i),c=new Float32Array(i),h=new Float32Array(i),m=new Float32Array(i),d=new Float32Array(i*3),p=new Map,b=ba(e);for(let y=0;y<i;y++){let x=e[y],I=(n?.seatPitchU(y)??b[y])*v;l[y]=Number.isFinite(I)?Math.max(.06,Math.min(At,I*pa)):At,c[y]=vo(Number.isFinite(I)?I:void 0);let w=wo(x.glyph,{seatGlyph:s?.get(x.categoryKey)});h[y]=Ro.indexOf(w),m[y]=x.wheelchairSpaceType==="no-seat"?0:1,a[y*3]=x.x*v,a[y*3+1]=n?n.seatDeckY(y):ya(x),a[y*3+2]=x.y*v,f[y]=bo(t?t(x):"available");let g=oe(r?.get(x.categoryKey)??"#6e7bff")??[.43,.48,1];if(u[y*3]=g[0],u[y*3+1]=g[1],u[y*3+2]=g[2],x.accessibility?.length){let R=oe(So(x.accessibility));R&&(d[y*3]=R[0],d[y*3+1]=R[1],d[y*3+2]=R[2])}p.set(x.id,y)}return{count:i,iPosition:a,iState:f,iCategory:u,iMaxRadius:l,iRing:d,idToIndex:p,iChairWidth:c,iGlyph:h,iPhysicalSeat:m,iFloor:o??new Float32Array(i),iSection:new Float32Array(i).fill(-1),iYaw:new Float32Array(i)}}function xa(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,s=Math.hypot(o,r);return s<1e-9?[0,0]:[o/s,r/s]}}}function ga(e,t){if(!e.length)return null;let n=0,o=0,r=0;for(let m of e)n+=m.x,o+=m.y,r+=Math.hypot(m.x-t.x,m.y-t.y);let s=e.length;n/=s,o/=s,r/=s;let i=e[0],a=-1;for(let m of e){let d=Math.hypot(m.x-n,m.y-o);d>a&&(a=d,i=m)}let f=i.x-n,u=i.y-o,l=Math.hypot(f,u);l>1e-9?(f/=l,u/=l):(f=1,u=0);let c=[...e].sort((m,d)=>(m.x-n)*f+(m.y-o)*u-((d.x-n)*f+(d.y-o)*u)),h=0;for(let m of c){let d=Math.hypot(m.x-n,m.y-o);d>h&&(h=d)}return{pts:c,cx:n,cy:o,radius:h,depth:r}}function _o(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 s=0;s+1<o.length;s++){let i=o[s],a=o[s+1],f=a.x-i.x,u=a.y-i.y,l=f*f+u*u,c=l>1e-12?((t-i.x)*f+(n-i.y)*u)/l:0;c<0?c=0:c>1&&(c=1);let h=Math.hypot(t-(i.x+c*f),n-(i.y+c*u));h<r&&(r=h)}return r}var _t=8;function Ma(e,t,n){let o=new Array(_t).fill(1/0),r=new Array(_t).fill(-1);for(let l=0;l<e.length;l++){let c=e[l],h=Math.hypot(t-c.cx,n-c.cy)-c.radius;for(let m=0;m<_t;m++)if(h<o[m]){for(let d=_t-1;d>m;d--)o[d]=o[d-1],r[d]=r[d-1];o[m]=h,r[m]=l;break}}let s=new Array(3).fill(1/0),i=new Array(3).fill(-1);for(let l of r){if(l<0)continue;let c=_o(e[l],t,n);for(let h=0;h<3;h++)if(c<s[h]){for(let m=2;m>h;m--)s[m]=s[m-1],i[m]=i[m-1];s[h]=c,i[h]=l;break}}if(i[0]<0)return 0;if(s[0]<1e-6)return e[i[0]].depth;let a=s[0]*2.2,f=0,u=0;for(let l=0;l<3;l++){let c=i[l];if(c<0||s[l]>a)continue;let h=1/(s[l]*s[l]);f+=h*e[c].depth,u+=h}return u>0?f/u:e[i[0]].depth}function Sa(e){let t=(o,r)=>Ma(e,o,r),n=(o,r)=>{let s=1/0,i=-1;for(let a=0;a<e.length;a++){let f=e[a];if(Math.hypot(o-f.cx,r-f.cy)-f.radius>=s)continue;let u=_o(f,o,r);u<s&&(s=u,i=a)}return i};return{kind:"rows",rowCount:e.length,rows:e,nearestRow:n,depthAt:t,gradientAt:(o,r)=>{let s=(t(o+.5,r)-t(o-.5,r))/1,i=(t(o,r+.5)-t(o,r-.5))/(2*.5),a=Math.hypot(s,i);return a<1e-9?[0,0]:[s/a,i/a]}}}function ko(e,t){let n=[];for(let o of e){let r=ga(o.points,t);r&&n.push(r)}return n.length<2?xa(t):(n.sort((o,r)=>o.depth-r.depth),Sa(n))}var mn=Fe(require("polygon-clipping"),1);var Bo=Fe(require("earcut"),1);var Ia=.58,To=.01,Me=At*1.5*ge,Pa=.5,Ra=.6;function wa(e,t){let n=e.length,o=[];for(let i=0;i<n;i++){let a=e[Math.max(0,i-1)],f=e[Math.min(n-1,i+1)],u=f.x-a.x,l=f.y-a.y,c=Math.hypot(u,l);if(c<1e-9){o.push([0,0]);continue}u/=c,l/=c,o.push([-l,u])}let r=0;for(let i=0;i<n;i++)r+=(e[i].x-t.x)*o[i][0]+(e[i].y-t.y)*o[i][1];return r<0?o.map(([i,a])=>[-i,-a]):o}function va(e,t){if(e.length<2||t<=0)return[...e];let n=[...e],o=(i,a)=>{let f=a.x-i.x,u=a.y-i.y,l=Math.hypot(f,u)||1;return{x:f/l,y:u/l}},r=o(n[1],n[0]),s=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+s.x*t,y:n[n.length-1].y+s.y*t}),n}var Lo=Math.PI/12;function Ea(e){if(e.length<3)return[...e];let t=[...e].sort((s,i)=>s.x-i.x||s.y-i.y),n=(s,i,a)=>(i.x-s.x)*(a.y-s.y)-(i.y-s.y)*(a.x-s.x),o=s=>{let i=[];for(let a of s){for(;i.length>=2&&n(i[i.length-2],i[i.length-1],a)<=0;)i.pop();i.push(a)}return i.pop(),i},r=[...o(t),...o([...t].reverse())];return r.length>=3?r:[...e]}function Fo(e,t){if(!e.length||!(t>0))return[];let n=Ea(e),o=(a,f,u,l)=>{let c=u-f;for(;c<0;)c+=Math.PI*2;for(;c>Math.PI*2;)c-=Math.PI*2;let h=Math.max(1,Math.ceil(c/Lo)),m=t/Math.cos(c/h/2);for(let d=0;d<=h;d++){let p=f+c*d/h;l.push({x:a.x+Math.cos(p)*m,y:a.y+Math.sin(p)*m})}};if(n.length<3){let a=0,f=0;for(let m of n)a+=m.x,f+=m.y;a/=n.length||1,f/=n.length||1;let u=0;for(let m of n)u=Math.max(u,Math.hypot(m.x-a,m.y-f));let l=[],c=Math.max(3,Math.ceil(Math.PI*2/Lo)),h=(u+t)/Math.cos(Math.PI/c);for(let m=0;m<c;m++){let d=m/c*Math.PI*2;l.push({x:a+Math.cos(d)*h,y:f+Math.sin(d)*h})}return l}let r=n.length,s=[];for(let a=0;a<r;a++){let f=n[a],u=n[(a+1)%r];s.push(Math.atan2(-(u.x-f.x),u.y-f.y))}let i=[];for(let a=0;a<r;a++)o(n[a],s[(a+r-1)%r],s[a],i);return Ho(i)}function Ca(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 s=e[r],i=e[r+1],a=i.x-s.x,f=i.y-s.y,u=a*a+f*f,l=u>1e-12?((t-s.x)*a+(n-s.y)*f)/u:0;l<0?l=0:l>1&&(l=1);let c=Math.hypot(t-(s.x+l*a),n-(s.y+l*f));c<o&&(o=c)}return o}function kt(e){let t=e.map(r=>{let s=0,i=0;for(let u of r.pts)s+=u.x,i+=u.y;let a=r.pts.length||1;s/=a,i/=a;let f=0;for(let u of r.pts){let l=Math.hypot(u.x-s,u.y-i);l>f&&(f=l)}return{cx:s,cy:i,rad:f}}),n=r=>{let s=r.length;return s<=2?[...r]:[r[Math.floor(s*.25)],r[Math.floor(s*.5)],r[Math.floor(s*.75)]]},o=[];for(let r=0;r<e.length;r++){let s=n(e[r].pts),i=[],a=1/0,f=null;for(let l of s){let c=1/0;for(let h=0;h<e.length;h++){if(h===r||Math.abs(e[h].y-e[r].y)<.001)continue;let m=t[h],d=Math.hypot(l.x-m.cx,l.y-m.cy)-m.rad;if(d>=c&&d>=a)continue;let p=Ca(e[h].pts,l.x,l.y);p<c&&(c=p),e[h].depth<e[r].depth&&p<a&&(a=p,f=e[h].y)}Number.isFinite(c)&&c>0&&i.push(c)}i.sort((l,c)=>l-c);let u=i.length?i[Math.floor(i.length/2)]:1;o.push({pitch:u,belowY:f})}return o}function Do(e,t,n,o){let r=e[t],s=r.pts.length>=2?[...r.pts]:r.pts.length===1?(()=>{let l=r.pts[0],c=l.x-o.x,h=l.y-o.y,m=Math.hypot(c,h)||1;c/=m,h/=m;let d=Math.max(n[t].pitch,.001)*.5;return[{x:l.x+h*d,y:l.y-c*d},{x:l.x-h*d,y:l.y+c*d}]})():[];if(s.length<2)return null;let i=0,a=0;for(let l=1;l<s.length;l++){let c=Math.hypot(s[l].x-s[l-1].x,s[l].y-s[l-1].y);c>1e-6&&(i+=c,a++)}let f=a>0?i/a:0,u=va(s,Math.max(f*Ra,Me));return{pts:u,nrm:wa(u,o),front:Math.max(n[t].pitch*Ia,Me),back:Math.max(n[t].pitch*Pa,Me)}}var Qe=1.5,No=.3;function un(e,t){if(e.length<3)return e;let n=e[0],o=e[e.length-1],r=o.x-n.x,s=o.y-n.y,i=Math.hypot(r,s),a=-1,f=-1;for(let c=1;c<e.length-1;c++){let h=e[c],m=i>1e-12?Math.abs((h.x-n.x)*s-(h.y-n.y)*r)/i:Math.hypot(h.x-n.x,h.y-n.y);m>a&&(a=m,f=c)}if(a<=t||f<0)return[n,o];let u=un(e.slice(0,f+1),t),l=un(e.slice(f),t);return[...u.slice(0,-1),...l]}function Go(e,t){if(e.length<4)return e;let n=un([...e,e[0]],t);return n.pop(),n.length>=3?n:e}function Aa(e){let t=e.map((o,r)=>{let s=e[(r+1)%e.length];return{a:o,b:s,i:r,minX:Math.min(o.x,s.x),maxX:Math.max(o.x,s.x),minY:Math.min(o.y,s.y),maxY:Math.max(o.y,s.y)}}).sort((o,r)=>o.minX-r.minX),n=(o,r,s)=>(r.x-o.x)*(s.y-o.y)-(r.y-o.y)*(s.x-o.x);for(let o=0;o<t.length;o++){let r=t[o];for(let s=o+1;s<t.length&&t[s].minX<=r.maxX;s++){let i=t[s];if(!(Math.abs(r.i-i.i)===1||Math.abs(r.i-i.i)===e.length-1||r.maxY<i.minY||i.maxY<r.minY)&&n(r.a,r.b,i.a)*n(r.a,r.b,i.b)<=0&&n(i.a,i.b,r.a)*n(i.a,i.b,r.b)<=0)return!0}}return!1}function jo(e,t,n){if(e.length<2)return[];let o=n??kt(e),r=new Map;for(let i=0;i<e.length;i++){let a=r.get(e[i].blockId);a?a.push(i):r.set(e[i].blockId,[i])}let s=[];for(let[,i]of r){let a=[];for(let x of i){let M=e[x].patch;M&&M.length>=3?s.push({outline:[...M],holes:[],topY:e[x].y}):a.push(x)}if(!a.length)continue;a.sort((x,M)=>e[x].depth-e[M].depth);let u=a.map(x=>Do(e,x,o,t)).filter(x=>x!==null);if(!u.length)continue;let l=(x,M)=>({x:x.pts[M].x-x.nrm[M][0]*(x.front+Qe),y:x.pts[M].y-x.nrm[M][1]*(x.front+Qe)}),c=(x,M)=>({x:x.pts[M].x+x.nrm[M][0]*(x.back+Qe),y:x.pts[M].y+x.nrm[M][1]*(x.back+Qe)}),h=u[0],m=u[u.length-1],d=[];for(let x=0;x<h.pts.length;x++)d.push(l(h,x));for(let x of u)d.push(c(x,x.pts.length-1));for(let x=m.pts.length-1;x>=0;x--)d.push(c(m,x));for(let x=u.length-1;x>=0;x--)d.push(l(u[x],0));let p=Ho(d),b=1/0;for(let x of a)e[x].y<b&&(b=e[x].y);if(!Number.isFinite(b))continue;if(p.length>=3&&Math.abs(de(p))>1e-6&&u.every(x=>{let M=x.pts[Math.floor(x.pts.length/2)];return pe(p,M.x,M.y)})&&!Aa(p)){s.push({outline:Go(p,No),holes:[],topY:b});continue}for(let x of _a(u))s.push({outline:x,holes:[],topY:b})}return s}function _a(e){let t=[];for(let n of e){let o=[],r=[],s=n.front+Qe,i=n.back+Qe;for(let f=0;f<n.pts.length;f++){let u=n.pts[f],l=n.nrm[f];o.push([u.x-l[0]*s,u.y-l[1]*s]),r.push([u.x+l[0]*i,u.y+l[1]*i])}let a=[...o,...r.reverse()];a.length<3||(a.push(a[0]),t.push([a]))}if(!t.length)return[];try{let n=mn.default.union(t[0],...t.slice(1)),o=[];for(let r of n){if(!r.length||r[0].length<4)continue;let s=r[0].map(([f,u])=>({x:f,y:u})),i=s[0],a=s[s.length-1];s.length>1&&Math.abs(i.x-a.x)<1e-9&&Math.abs(i.y-a.y)<1e-9&&s.pop(),s.length>=3&&o.push(Go(s,No))}return o}catch{return[]}}function Ho(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 fn=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(!pe(n,r.x,r.y)){o=!1;break}if(o)return!0}return!1}};function Oo(e,t,n,o,r,s){if(o.length<3)return;if(n.containsAll(o)){let u=[0,1,0],l=o[0];for(let c=1;c+1<o.length;c++){let h=o[c],m=o[c+1];e.tri([l.x*v,r,l.y*v],[h.x*v,r,h.y*v],[m.x*v,r,m.y*v],u,s)}return}let i=o.map(u=>[u.x,u.y]);i.push(i[0]);let a;try{a=mn.default.intersection([i],t)}catch{return}let f=[0,1,0];for(let u of a){if(!u.length||u[0].length<4)continue;let l=u[0],c=[],h=[];for(let d=0;d<l.length-1;d++)c.push(l[d][0],l[d][1]),h.push([l[d][0],l[d][1]]);if(h.length<3)continue;let m=(0,Bo.default)(c,void 0,2);for(let d=0;d<m.length;d+=3){let p=h[m[d]],b=h[m[d+1]],y=h[m[d+2]];e.tri([p[0]*v,r,p[1]*v],[b[0]*v,r,b[1]*v],[y[0]*v,r,y[1]*v],f,s)}}}function Xo(e,t,n,o,r,s,i){if(t.length<2)return;let a=i??kt(t),f=[0,1,0],u=s&&s.length>=3?[[...s.map(m=>[m.x,m.y]),[s[0].x,s[0].y]]]:null,l=s&&s.length>=3?new fn([[...s]]):null,c=m=>{e.setMaterial(2),m(),e.setMaterial(0)},h=m=>{e.setMaterial(3),m(),e.setMaterial(0)};for(let m=0;m<t.length;m++){let d=t[m];if(d.patch&&d.patch.length>=3){let w=[...d.patch],g=a[m].belowY??o;if(h(()=>{if(u&&l)Oo(e,u,l,w,d.y,r.tread);else{let R=w[0];for(let P=1;P+1<w.length;P++){let S=w[P],E=w[P+1];e.tri([R.x*v,d.y,R.y*v],[S.x*v,d.y,S.y*v],[E.x*v,d.y,E.y*v],f,r.tread)}}}),d.y>g+To){let R=0,P=0;for(let S of w)R+=S.x,P+=S.y;R/=w.length,P/=w.length,c(()=>{for(let S=0;S<w.length;S++){let E=w[S],_=w[(S+1)%w.length],O=_.x-E.x,k=_.y-E.y,C=Math.hypot(O,k);if(C<1e-6)continue;let A=k/C,L=-O/C;(E.x-R)*A+(E.y-P)*L<0&&(A=-A,L=-L);let F=[A,0,L],T=[E.x*v,d.y,E.y*v],B=[_.x*v,d.y,_.y*v],N=[E.x*v,g,E.y*v],H=[_.x*v,g,_.y*v];e.tri(T,B,H,F,r.riser),e.tri(T,H,N,F,r.riser)}})}continue}let p=Do(t,m,a,n);if(!p)continue;let{pts:b,nrm:y,front:x,back:M}=p,I=a[m].belowY??o;for(let w=0;w+1<b.length;w++){let g=b[w],R=b[w+1],P=y[w],S=y[w+1];if(Math.hypot(R.x-g.x,R.y-g.y)<1e-6||P[0]===0&&P[1]===0||S[0]===0&&S[1]===0)continue;let E=[(g.x-P[0]*x)*v,d.y,(g.y-P[1]*x)*v],_=[(R.x-S[0]*x)*v,d.y,(R.y-S[1]*x)*v],O=[(g.x+P[0]*M)*v,d.y,(g.y+P[1]*M)*v],k=[(R.x+S[0]*M)*v,d.y,(R.y+S[1]*M)*v];if(h(()=>{u&&l?Oo(e,u,l,[{x:g.x-P[0]*x,y:g.y-P[1]*x},{x:R.x-S[0]*x,y:R.y-S[1]*x},{x:R.x+S[0]*M,y:R.y+S[1]*M},{x:g.x+P[0]*M,y:g.y+P[1]*M}],d.y,r.tread):(e.tri(E,_,k,f,r.tread),e.tri(E,k,O,f,r.tread))}),d.y>I+To){let C=[E[0],I,E[2]],A=[_[0],I,_[2]],L=[-P[0],0,-P[1]];c(()=>{e.tri(E,_,A,L,r.riser),e.tri(E,A,C,L,r.riser)})}}}}function Uo(e){let t=1/0,n=1/0,o=-1/0,r=-1/0,s=!1;for(let i of e)!Number.isFinite(i.x)||!Number.isFinite(i.y)||(s=!0,i.x<t&&(t=i.x),i.y<n&&(n=i.y),i.x>o&&(o=i.x),i.y>r&&(r=i.y));return s?{minX:t,minY:n,maxX:o,maxY:r}:null}function qe(e,t){return e.minX<=t.maxX&&t.minX<=e.maxX&&e.minY<=t.maxY&&t.minY<=e.maxY}var hn=Fe(require("polygon-clipping"),1);function ka(e,t){let n=e.eventConfigurationIds;return!n?.length||!!t&&n.includes(t)}function Vo(e,t){return e.filter(n=>n.type!=="shape"||ka(n,t))}function Yo(e,t){let n=e.focalPoint??{x:0,y:0};return e.floors?.length?e.floors.map((o,r)=>({objects:Vo(o.objects,t),focal:{x:(o.focalPoint??n).x,y:(o.focalPoint??n).y},baseHeightM:o.baseHeightM??0,index:r})):[{objects:Vo(e.objects,t),focal:n,baseHeightM:0,index:0}]}var Ta={minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};function Le(e){return Uo(e)??Ta}function Ko(e,t){let n=Ie(e.outline,Me),o=Le(n),r=t.filter(i=>i!==e&&i.outline&&i.outline.length>=3&&qe(o,Le(i.outline)));if(!r.length)return[n];let s=i=>{let a=i.map(f=>[f.x,f.y]);return a.push(a[0]),a};try{let i=hn.default.difference([s(n)],...r.map(f=>[s(f.outline)])),a=[];for(let f of i){if(!f.length)continue;let u=f[0].map(([l,c])=>({x:l,y:c}));if(u.length>1){let l=u[0],c=u[u.length-1];Math.abs(l.x-c.x)<1e-9&&Math.abs(l.y-c.y)<1e-9&&u.pop()}u.length>=3&&a.push(u)}return a.length?a:[n]}catch{return[n]}}function zo(e,t){if(!t.length)return e;let n=s=>{let i=s.map(a=>[a.x,a.y]);return i.push(i[0]),i},o=t.map(s=>[n(s)]),r=[];for(let s of e){let i;try{i=hn.default.intersection([n(s.outline)],o.flat())}catch{r.push(s);continue}for(let a of i){if(!a.length)continue;let f=a[0].map(([u,l])=>({x:u,y:l}));if(f.length>1){let u=f[0],l=f[f.length-1];Math.abs(u.x-l.x)<1e-9&&Math.abs(u.y-l.y)<1e-9&&f.pop()}f.length>=3&&r.push({outline:f,holes:[],topY:s.topY})}}return r.length?r:e}var Ge=.06,La=.05,Zo=.05,Wo=.15,dn=25;function $o(e,t,n){let o=new Map,r=new Array(t.length).fill(null),s=new Float64Array(t.length),i=new Array(t.length).fill(void 0),a=new Array(t.length).fill(void 0),f=new Map,u=[],l=new Set;for(let h=0;h<e.length;h+=1){let m=e[h];for(let d of m.objects){if(d.type==="table"&&l.add(d.id),d.type!=="section"||!d.outline||d.outline.length<3)continue;let p=Ie(d.outline,Me);f.set(d.id,{section:d,unit:m,frontU:1/0,hasSeats:!1,rows:new Map,seatIndices:[]}),u.push({id:d.id,floorIndex:h,box:Le(p),section:d,unit:m,outline:p})}}let c=new Map;for(let h of u){let m=c.get(h.floorIndex);m?m.push(h):c.set(h.floorIndex,[h])}for(let h=0;h<t.length;h++){let m=t[h],d=n?c.get(n[h])??[]:u,p=m.sectionId?d.find(y=>y.id===m.sectionId)??d.find(y=>y.section.logicalSectionId===m.sectionId&&me({x:m.x,y:m.y},y.outline,y.section.holes)):void 0,b=p?[p]:d;for(let y of b){if(n&&y.floorIndex!==n[h]||!p&&(m.x<y.box.minX||m.x>y.box.maxX||m.y<y.box.minY||m.y>y.box.maxY||!me({x:m.x,y:m.y},y.outline,y.section.holes)))continue;r[h]=y.id;let x=f.get(y.id);x.hasSeats=!0;let M=m.focalPoint??y.unit.focal,I=Math.hypot(m.x-M.x,m.y-M.y);I<x.frontU&&(x.frontU=I),x.seatIndices.push(h);let w=m.rowId||`__seat-${h}`,g=x.rows.get(w);g?g.push({x:m.x,y:m.y}):x.rows.set(w,[{x:m.x,y:m.y}]);break}}for(let[h,m]of f){let d=De(m.section,{floorBaseHeightM:m.unit.baseHeightM}),p=m.unit.baseHeightM,b=d.rake>0?Math.tan(d.rake*Math.PI/180):0,y=d.rake<=.01&&d.height<=p+.001,x=m.section.surfaceKind,M=x==="flat"?!0:x==="rakedRows"&&d.rake>.01?!1:y,I=m.hasSeats?gt(h,t,m.seatIndices,m.unit.focal):{sectionId:h,rows:[],blockCount:0},g=I.rows.length<2?ko([...m.rows.values()].map(T=>({points:T})),m.unit.focal):null,R=1/0;if(g){if(m.hasSeats)for(let T of m.rows.values())for(let B of T){let N=g.depthAt(B.x,B.y);N<R&&(R=N)}if(!m.hasSeats||!Number.isFinite(R)){R=1/0;for(let T of m.section.outline){let B=g.depthAt(T.x,T.y);B<R&&(R=B)}}}let P=p+La,S=Math.max(P,d.height),E=T=>{let B=Math.max(0,T-R)*J,N=Math.min(B*b,dn);return Math.max(P,d.height+N)},_=T=>{let B=Math.max(0,T)*J,N=Math.min(B*b,dn);return Math.max(P,d.height+N)},O=M?[]:I.rows.map(T=>({pts:T.pts,y:_(T.blockDepth),depth:T.blockDepth,blockId:T.blockId,...l.has(T.id)?{patch:Fo(T.pts,Me)}:{}})),k=O.length?O[0].y:S,C=O.map(T=>{let B=T.patch&&T.patch.length>=3?T.patch:T.pts,N=0,H=0;for(let U of B)N+=U.x,H+=U.y;let D=B.length||1;N/=D,H/=D;let V=0;for(let U of B){let Z=Math.hypot(U.x-N,U.y-H);Z>V&&(V=Z)}return{cx:N,cy:H,rad:V}}),A=M?()=>S:O.length>=2?(T,B)=>{let N=1/0,H=k;for(let D=0;D<O.length;D++){let V=C[D];if(Math.hypot(T-V.cx,B-V.cy)-V.rad>=N)continue;let U=O[D].patch,Z=U&&U.length>=3?pe(U,T,B)?0:We(U,T,B):We(O[D].pts,T,B);Z<N&&(N=Z,H=O[D].y)}return H}:(T,B)=>g?E(g.depthAt(T,B)):S,L=[0,1,0],F=O.length>=2||M?()=>L:(T,B)=>{if(!g)return L;let N=g.depthAt(T,B);if(N<=R)return L;let H=(N-R)*J;if(H*b>=dn||d.height+H*b<=P)return L;let[D,V]=g.gradientAt(T,B);if(D===0&&V===0)return L;let U=1/Math.hypot(b,1);return[-D*b*U,U,-V*b*U]};if(!M)for(let T of I.rows){let B=_(T.blockDepth);for(let N of T.seatIndices)i[N]=B}for(let T of I.rows){let B=[];for(let U=1;U<T.pts.length;U++){let Z=Math.hypot(T.pts[U].x-T.pts[U-1].x,T.pts[U].y-T.pts[U-1].y);Z>1e-6&&B.push(Z)}B.sort((U,Z)=>U-Z);let N=B.length?B[Math.floor(B.length/2)]:1/0,H=1/0,D=T.pts[Math.floor(T.pts.length/2)];if(D)for(let U of I.rows){if(U===T||U.blockId!==T.blockId)continue;let Z=We(U.pts,D.x,D.y);Z>1e-6&&Z<H&&(H=Z)}let V=Math.min(N,Math.max(H,N*.5));if(Number.isFinite(V)&&V>0)for(let U of T.seatIndices)a[U]=V}o.set(h,{sectionId:h,deckAt:A,normalAt:F,flat:M,bottomY:p,rowLevels:O,landingY:k})}for(let h=0;h<t.length;h++){let m=r[h],d=t[h];if(m){let y=i[h];s[h]=(y??o.get(m).deckAt(d.x,d.y))+Wo;continue}let p=d.eyeHeightM,b=Number.isFinite(p)?Math.max(0,p-Ee):0;s[h]=d.kind==="booth"?b+Ge+Wo:b}return{bySection:o,seatOwner:r,seatDeckY:h=>s[h],seatPitchU:h=>a[h]}}var K={top:1,wallBottom:.58,bottomCap:.4};function je(e,t){if(!e)return t;let n=z(Ae(e,.4),.62);return re(t,n,.22)}function Qo(e,t){return e?re(t,z(Ae(e,.08),.9),.82):t}function qo(e,t){let n=new Map;for(let s of e.categories??[])n.set(s.key,s.color);let o=new Map;for(let s of t){if(!s.sectionId)continue;let i=o.get(s.sectionId);i||(i=new Map,o.set(s.sectionId,i)),i.set(s.categoryKey,(i.get(s.categoryKey)??0)+1)}let r=new Map;for(let[s,i]of o){let a=0,f=0,u=0,l=0;for(let[c,h]of i){let m=oe(n.get(c));m&&(a+=m[0]*h,f+=m[1]*h,u+=m[2]*h,l+=h)}l>0&&r.set(s,[a/l,f/l,u/l])}return r}function Jo(e,t){return oe(e.color)??t.get(e.logicalSectionId??e.id)??null}var er=Fe(require("polygon-clipping"),1);function Oa(e,t){return e===void 0||t===void 0?!0:Math.abs(e-t)<.001}var Tt=class{constructor(){this.rings=[];this.boxes=[];this.levels=[]}subtract(t,n){let o=t.map(f=>[f.x,f.y]);if(o.length<3)return[];o.push(o[0]);let r=Le(t),s=this.rings.filter((f,u)=>qe(r,this.boxes[u])&&Oa(n,this.levels[u])),i=[[o]];if(s.length)try{i=er.default.difference([o],...s).map(u=>u.map(l=>l.map(([c,h])=>[c,h])))}catch{i=[[o]]}this.rings.push([o]),this.boxes.push(r),this.levels.push(n);let a=[];for(let f of i){if(!f.length)continue;let u=f[0].map(([l,c])=>({x:l,y:c}));if(u.length>1){let l=u[0],c=u[u.length-1];Math.abs(l.x-c.x)<1e-9&&Math.abs(l.y-c.y)<1e-9&&u.pop()}u.length>=3&&a.push(u)}return a}};function Lt(e,t){if(!t)return e;let n=1/0,o=-1/0,r=1/0,s=-1/0;for(let c of e)n=Math.min(n,c.x),o=Math.max(o,c.x),r=Math.min(r,c.y),s=Math.max(s,c.y);let i=(n+o)/2,a=(r+s)/2,f=t*Math.PI/180,u=Math.cos(f),l=Math.sin(f);return e.map(c=>{let h=c.x-i,m=c.y-a;return{x:i+h*u-m*l,y:a+h*l+m*u}})}function ae(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=ft(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=Et(n,o,e.width/2,e.height/2)}return t?Lt(t,e.rotation):null}function Pe(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"&&st(e.stageKind)?{kind:"stage",heightM:e.stageKind==="ring-boxing"?Mt:.06}:n[t]??{kind:"plate",heightM:.25};return{...o,heightM:e.heightM??o.heightM}}var Ba=.08,Fa=30,Da=.015;function Na(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let s=t[o],i=t[r];s.y>e.y!=i.y>e.y&&e.x<(i.x-s.x)*(e.y-s.y)/(i.y-s.y)+s.x&&(n=!n)}return n}function tr(e,t){let n=ae(e)??(e.points?.length?Lt(e.points,e.rotation):null),o=Pe(e),s=!e.role&&o.kind==="plate"&&e.heightM===void 0&&!!n&&Math.abs(de(n))*J**2>=Fa?Da:o.heightM;if(!n)return{topOffsetM:s,supportOffsetM:0};if(o.kind!=="plate"&&o.kind!=="stage")return{topOffsetM:s,supportOffsetM:0};let i=1/0,a=1/0,f=-1/0,u=-1/0;for(let m of n)i=Math.min(i,m.x),a=Math.min(a,m.y),f=Math.max(f,m.x),u=Math.max(u,m.y);let l=s,c=0,h=1e-6*Math.max(1,f-i,u-a);for(let m of t)f>m.minX&&i<m.maxX&&u>m.minY&&a<m.maxY&&l<=m.topOffsetM+1e-6&&(l=m.topOffsetM+Ba),i>=m.minX-h&&f<=m.maxX+h&&a>=m.minY-h&&u<=m.maxY+h&&(!m.poly||n.every(b=>Na(b,m.poly)||Ga(b,m.poly,h)))&&(c=Math.max(c,m.topOffsetM));return e.fill&&e.fill!=="none"&&e.fill!=="transparent"&&t.push({minX:i,minY:a,maxX:f,maxY:u,topOffsetM:l,poly:n}),{topOffsetM:l,supportOffsetM:Math.min(c,l)}}function Ga(e,t,n){for(let o=0,r=t.length-1;o<t.length;r=o++){let s=t[r],i=t[o],a=i.x-s.x,f=i.y-s.y,u=a*a+f*f,l=u?Math.max(0,Math.min(1,((e.x-s.x)*a+(e.y-s.y)*f)/u)):0;if(Math.hypot(e.x-(s.x+l*a),e.y-(s.y+l*f))<=n)return!0}return!1}function He(e,t,n){return{x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}}function be(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 fe(e,t,n){return[He(e[0],e[1],t),He(e[0],e[1],n),He(e[3],e[2],n),He(e[3],e[2],t)]}function dt(e,t,n){return[He(e[0],e[3],t),He(e[1],e[2],t),He(e[1],e[2],n),He(e[0],e[3],n)]}function ee(e,t,n,o,r,s){W(e,t,void 0,()=>n,o,r,s,K)}function Je(e,t,n){if(e.length!==4||n<=t)return null;let o=be(e),r=Math.hypot(o[1].x-o[0].x,o[1].y-o[0].y)*v,s=Math.hypot(o[3].x-o[0].x,o[3].y-o[0].y)*v;if(r<1e-6||s<1e-6)return null;let i=Math.min(.22/r,.16),a=Math.min(.28,(n-t)*.13),f=Math.min(.065/s,.2);return{quad:o,side:i,face:f,opening:fe(o,i,1-i),openingTop:n-a}}function pn(e,t,n){if(e.length!==4||n-t<=.2)return null;let o=be(e),r=Math.hypot(o[1].x-o[0].x,o[1].y-o[0].y)*v;if(r<=1e-6)return null;let s=Math.min(.14,(n-t)*.08,r*.08),i=s/r,a=fe(o,i,1-i);return{quad:o,side:i,trim:s,inner:a,panel:dt(a,.15,.85),bottom:t+s,top:n-s}}function nr(e,t,n,o){let r=pn(e,t,n);if(!r)return;let{panel:s}=r,i=(x,M)=>({x:(x.x+M.x)/2,y:(x.y+M.y)/2}),a=i(s[0],s[1]),f=i(s[3],s[2]),u=Math.hypot(a.x-o.x,a.y-o.y)<=Math.hypot(f.x-o.x,f.y-o.y),[l,c]=u?[s[0],s[1]]:[s[3],s[2]],h=u?{x:a.x-f.x,y:a.y-f.y}:{x:f.x-a.x,y:f.y-a.y},m=Math.hypot(h.x,h.y);if(m<1e-6)return;-(c.y-l.y)*h.x+(c.x-l.x)*h.y<0&&([l,c]=[c,l]);let d=Math.min(.006,m*v*.05),p=h.x/m*d,b=h.y/m*d,y=(x,M)=>[x.x*v+p,M,x.y*v+b];return[y(l,r.bottom),y(c,r.bottom),y(l,r.top),y(c,r.top)]}var or=Fe(require("polygon-clipping"),1);function Oe(e,t,n,o,r,s,i,a={}){let f=Le(t),u=a.ao??K,l=r.flatMap(p=>{if(p.role!=="entrance"&&p.role!=="exit")return[];let b=ae(p);if(!b||b.length!==4||!qe(f,Le(b)))return[];let y=a.portalBase??n,x=Je(b,y,y+Pe(p).heightM);if(!x)return[];let M=Math.min(o,x.openingTop);return M<=n?[]:[{poly:x.opening,height:M}]});if(!l.length)return!1;let c=p=>p.map(b=>[b.x,b.y]),h=[c(t),...(a.holes??[]).map(c)],m=[n,...new Set(l.map(p=>p.height)),o].sort((p,b)=>p-b),d=[];try{for(let p=1;p<m.length;p++){let b=m[p-1],y=m[p];if(y-b<1e-6)continue;let x=l.filter(I=>I.height>b+1e-6).map(I=>[c(I.poly)]),M=x.length?or.default.difference(h,...x):[h];d.push({low:b,high:y,polys:M})}}catch{return!1}for(let p of d)for(let b of p.polys){let[y,...x]=b.map(I=>I.map(([w,g])=>({x:w,y:g}))),M=I=>u.wallBottom+(u.top-u.wallBottom)*(I-n)/(o-n);W(e,y,x,()=>p.high,p.low,s,i,{...u,top:M(p.high),wallBottom:M(p.low)})}return!0}function rr(e,t,n,o,r,s,i){let a=o-n;if(a<=0)return;let f=a<1.5?[[n,o,1]]:[[n,n+Math.min(.9,a*.18),.82],[n+Math.min(.9,a*.18),o-.1,1],[o-.1,o,1.1]],u=l=>K.wallBottom+(K.top-K.wallBottom)*(l-n)/a;for(let[l,c,h]of f){let m={...K,top:u(c),wallBottom:u(l)},d=z(s,h),p=z(i,h);Oe(e,t,l,c,r,d,p,{portalBase:n,ao:m})||W(e,t,void 0,()=>c,l,d,p,m)}}function pt(e,t,n){let o=oe(t.stroke?.color),r=t.stroke?.width??0;if(!o||!Number.isFinite(r)||r<=0)return;let s=t.kind==="line"||t.kind==="polyline",i=s?Lt(t.points??[],t.rotation):ae(t);if(!i||i.length<2)return;let a=s?i.length-1:i.length,f=r*.5;for(let u=0;u<a;u++){let l=i[u],c=i[(u+1)%i.length],h=Math.hypot(c.x-l.x,c.y-l.y);if(h<1e-6)continue;let m=-(c.y-l.y)/h*f,d=(c.x-l.x)/h*f,p=[(l.x+m)*v,n,(l.y+d)*v],b=[(c.x+m)*v,n,(c.y+d)*v],y=[(c.x-m)*v,n,(c.y-d)*v],x=[(l.x-m)*v,n,(l.y-d)*v];e.tri(p,b,y,[0,1,0],o),e.tri(p,y,x,[0,1,0],o)}}function ir(e){return e==="bar"||e==="concession"||e==="coat"||e==="restroom"}var et=(e,t,n)=>({x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n});function Ot(e,t,n,o){let[r,s,i,a]=t?e:[e[3],e[2],e[1],e[0]];return[et(r,a,n),et(s,i,n),et(s,i,o),et(r,a,o)]}function sr(e,t,n,o,r,s,i,a,f=!1){if(n.length!==4||r-o<.4)return!1;let u=P=>f?Math.min(P,r):P,l=be(n),c=Math.hypot(l[3].x-l[0].x,l[3].y-l[0].y)*v;if(c<.4)return!1;let h=et(l[0],l[1],.5),m=et(l[3],l[2],.5),d=Math.hypot(h.x-a.x,h.y-a.y)<=Math.hypot(m.x-a.x,m.y-a.y),p=re(i,[.92,.9,.86],.35),b=z(s,.72),y=r-o;if(t==="restroom"){let P=Math.min(.18,y*.08);return ee(e,l,r-P,o,i,s),ee(e,l,r,r-P,p,p),!0}let x=o+Math.min(1.1,y),M=t==="coat"?1:Math.min(.5,.75/c),I=Ot(l,d,0,M);if(ee(e,I,x-.05,o,b,s),ee(e,I,x,x-.05,p,p),t==="coat"||c<1.2)return!0;if(t==="bar"){let P=Ot(l,d,Math.max(M+.2,1-.45/c),1),S=u(o+Math.max(Math.min(2.2,y*2),x-o+.6));return ee(e,P,S,o,i,b),!0}let w=Ot(l,d,Math.max(M+.25,.55),1),g=u(o+Math.max(2.6,x-o+1.4));if(g-.14<=x)return!0;ee(e,w,g-.14,o,i,s),ee(e,l,g,g-.14,p,b);let R=Math.min(.08,.1/Math.max(.1,Math.hypot(l[1].x-l[0].x,l[1].y-l[0].y)*v));for(let[P,S]of[[0,R],[1-R,1]])ee(e,Ot(fe(l,P,S),d,0,Math.min(.08,.1/c)),g-.14,x,b,b);return!0}var ja=[.12,.38,.16],Ha=[.72,.62,.45],Xa=[.88,.93,.96],ar=[.95,.95,.94],Ua=[.66,.29,.22],bn={length:20.12,width:3.05},Va=.14,Ya=9.76,Be=[.93,.94,.95],Bt=[.1,.11,.13],Ka=[.45,.85,1.25],za=1.45,cr=.012,lr=.004,Wa=1.07,Za=.15;function nt(e,t,n,o,r,s){e.setMaterial(s),W(e,t,n?[n.slice().reverse()]:void 0,()=>o,o-.004,r,r,K)}var ur=(e,t)=>Ye(e,t/v);function fr(e,t,n){let o=t.x-e.x,r=t.y-e.y,s=Math.hypot(o,r);if(s<1e-9)return null;let i=-r/s*n,a=o/s*n;return[{x:e.x+i,y:e.y+a},{x:t.x+i,y:t.y+a},{x:t.x-i,y:t.y-a},{x:e.x-i,y:e.y-a}]}function $a(e,t,n,o){let r=t.map(s=>[s.x*v,n,s.y*v]);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 Ft(e,t,n,o,r,s){let i=n/v,a=[{x:t.x-i,y:t.y-i},{x:t.x+i,y:t.y-i},{x:t.x+i,y:t.y+i},{x:t.x-i,y:t.y+i}];W(e,a,void 0,()=>r,o,s,z(s,.85),K)}function tt(e,t,n,o,r,s,i){let a=fr(t,n,o/v);a&&W(e,a,void 0,()=>s,r,i,z(i,.85),K)}function Dt(e){let t=be(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,s={x:(t[1].x-t[0].x)/o,y:(t[1].y-t[0].y)/o},i={x:(t[3].x-t[0].x)/r,y:(t[3].y-t[0].y)/r};return{at:(f,u)=>({x:n.x+(s.x*f+i.x*u)/v,y:n.y+(s.y*f+i.y*u)/v}),lengthM:o*v,widthM:r*v}}function mr(e,t,n){let o=zn(t);if(!o.length)return;let r=1/0,s=-1/0,i=1/0,a=-1/0;for(let M of t.points??[])r=Math.min(r,M.x),s=Math.max(s,M.x),i=Math.min(i,M.y),a=Math.max(a,M.y);let f=(t.rotation??0)*Math.PI/180,u=Math.cos(f),l=Math.sin(f),c=(r+s)/2,h=(i+a)/2,m=M=>f?{x:c+(M.x-c)*u-(M.y-h)*l,y:h+(M.x-c)*l+(M.y-h)*u}:M,d=Math.min(s-r,a-i)*v,p=Math.max(.04,Math.min(.3,d*.004))/v,b=0;e.setMaterial(0);for(let M of o){if(!M.fill)continue;let I=M.points.map(m);nt(e,I,null,n+cr+b*lr,oe(M.fill)??Be,0),b++}let y=o.filter(M=>!(M.fill&&M.ink===M.fill)),x=[...new Set(y.map(M=>M.ink??St))];for(let M of x){let I=n+cr+b++*lr,w=oe(M)??Be;for(let g of y){if((g.ink??St)!==M)continue;let R=g.points.map(m),P=g.closed?R.length:R.length-1;for(let S=0;S<P;S++){let E=fr(R[S],R[(S+1)%R.length],p);E&&$a(e,E,I,w)}}}}function hr(e,t,n,o,r){if(t.length<3)return!1;let s=o+.006,i=r??ja;if(n==="oval-cricket"){let a=t.reduce((w,g)=>w+g.x,0)/t.length,f=t.reduce((w,g)=>w+g.y,0)/t.length,u=w=>t.map(g=>({x:a+(g.x-a)*w,y:f+(g.y-f)*w})),l=8;for(let w=0;w<l;w++){let g=u(1-w/l),R=w===l-1?null:u(1-(w+1)/l);nt(e,g,R,s,z(i,w%2?1.04:.96),4)}let c=t[0];for(let w of t)Math.hypot(w.x-a,w.y-f)>Math.hypot(c.x-a,c.y-f)&&(c=w);let h=Math.hypot(c.x-a,c.y-f)||1,m=(c.x-a)/h,d=(c.y-f)/h,p=-d,b=m,y=Math.min(1,2*h*v*Va/bn.length),x=bn.length*y/2/v,M=bn.width*y/2/v,I=[[-x,-M],[x,-M],[x,M],[-x,M]].map(([w,g])=>({x:a+m*w+p*g,y:f+d*w+b*g}));return nt(e,I,null,s+.004,Ha,0),e.setMaterial(0),!0}if(n==="rink-hockey"){let a=ur(t,Za);return nt(e,a,null,s,Xa,0),e.setMaterial(0),W(e,t,[a.slice().reverse()],()=>o+Wa,o,ar,z(ar,.9),K),!0}if(n==="ring-boxing"&&t.length===4){let{at:a}=Dt(t),f=[a(-3.05,-3.05),a(3.05,-3.05),a(3.05,3.05),a(-3.05,3.05)],u=[[.77,.19,.19],Be,[.17,.42,.69],Be];e.setMaterial(0),f.forEach((l,c)=>Ft(e,l,.07,o,o+za,u[c]));for(let l of Ka)for(let c=0;c<4;c++)tt(e,f[c],f[(c+1)%4],.025,o+l-.025,o+l+.025,Be);return!0}if(n==="court-tennis"&&t.length===4){let{at:a}=Dt(t);e.setMaterial(0),tt(e,a(0,-6.4),a(0,6.4),.015,o,o+.95,Bt),tt(e,a(0,-6.4),a(0,6.4),.03,o+.95,o+1,Be);for(let f of[-1,1])Ft(e,a(0,f*6.4),.05,o,o+1.07,Bt);return!0}if(n==="court-basketball"&&t.length===4){let{at:a,lengthM:f}=Dt(t),u=Math.min(14,f/2-.5);e.setMaterial(0);for(let l of[-1,1]){let c=a(l*(u+1.2),0),h=a(l*(u-1.2),0);Ft(e,c,.12,o,o+3.4,Bt),tt(e,c,h,.06,o+3.25,o+3.4,Bt),tt(e,a(l*(u-1.2),-.9),a(l*(u-1.2),.9),.03,o+2.9,o+3.95,Be)}return!0}if(n==="pitch-rugby"&&t.length===4){let{at:a,lengthM:f}=Dt(t),u=f*(50/120);e.setMaterial(0);for(let l of[-1,1]){for(let c of[-2.8,2.8])Ft(e,a(l*u,c),.07,o,o+12,Be);tt(e,a(l*u,-2.8),a(l*u,2.8),.06,o+2.94,o+3.06,Be)}return!0}if(n==="track-athletics"){let a=ur(t,Ya);return a.length<3?!1:(nt(e,t,a,s,Ua,0),nt(e,a,null,s,i,4),e.setMaterial(0),!0)}return!1}var Qa=.012,jt=2.4,qa=1,Ja=.75,ec=.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 s=(r??0)*Math.PI/180,i=Math.cos(s),a=Math.sin(s),f=n/2,u=o/2;return[[-f,-u],[f,-u],[f,u],[-f,u]].map(([l,c])=>({x:t.x+l*i-c*a,y:t.y+l*a+c*i}))}function gr(e,t,n,o,r,s,i=!1){let a=_e(t);if(a){if(i){let f=je(o,r.boothTop),u=Ce([...a]);W(e,Ie(u,tc/v),[u.slice().reverse()],()=>n+.03,n,f,z(f,.8),K);return}if(!(!t.points&&s&&oc(e,a,n,o,s))){if(!t.points&&s&&a.length===4){nc(e,a,n,o,s);return}W(e,a,void 0,()=>n+jt,n,je(o,r.boothTop),r.boothWall,K)}}}var yn=1.1,dr=[.9,.9,.88],tc=.1,Nt=[.87,.87,.85],pr=.08;function Mr(e,t){let n=f=>({x:(e[f].x+e[(f+1)%4].x)/2,y:(e[f].y+e[(f+1)%4].y)/2}),o=0,r=1/0;for(let f=0;f<4;f++){let u=n(f),l=Math.hypot(u.x-t.x,u.y-t.y);l<r&&(r=l,o=f)}let s=[0,1,2,3].map(f=>e[(o+f)%4]),i=(f,u,l)=>({x:f.x+(u.x-f.x)*l,y:f.y+(u.y-f.y)*l});return{q:s,part:(f,u,l,c)=>{let h=i(s[0],s[1],f),m=i(s[0],s[1],u),d=i(s[3],s[2],f),p=i(s[3],s[2],u);return[i(h,d,l),i(m,p,l),i(m,p,c),i(h,d,c)]},depthM:Math.hypot(s[3].x-s[0].x,s[3].y-s[0].y)*v,widthM:Math.hypot(s[1].x-s[0].x,s[1].y-s[0].y)*v}}function nc(e,t,n,o,r){let{q:s,part:i}=Mr(t,r),a=o??[.35,.42,.55],f=re(a,[.78,.78,.77],.62),u=re(a,[.95,.95,.94],.45);ee(e,s,n+Ge,n,f,z(f,.8)),ee(e,i(.05,.95,.72,.98),n+yn-.05,n+Ge,u,z(u,.8)),ee(e,i(.03,.97,.7,1),n+yn,n+yn-.05,dr,z(dr,.9))}function oc(e,t,n,o,r){if(t.length!==4)return!1;let{q:s,part:i,depthM:a,widthM:f}=Mr(t,r);if(a<1||f<1)return!1;let u=o??[.35,.42,.55],l=re(u,[.78,.78,.77],.62),c=n+jt,h=pr/f,m=pr/a;ee(e,s,n+Ge,n,l,z(l,.8)),ee(e,i(0,1,1-m,1),c,n+Ge,Nt,z(Nt,.9));for(let[b,y]of[[0,h],[1-h,1]])ee(e,i(b,y,0,1-m),c,n+Ge,Nt,z(Nt,.9));ee(e,i(h,1-h,0,Math.min(.5,.06/a)),c,c-.3,u,z(u,.85));let d=Math.min(.4,.6/f),p=Math.min(.12,.3/a);return ee(e,i(.5-d,.5+d,.72-p,.72+p),n+qa,n+Ge,re(u,[.95,.95,.94],.7),z(u,.75)),!0}function Ht(e){if(e.shape==="round"){let l=e.radius;return l?Et(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 s=(o??0)*Math.PI/180,i=Math.cos(s),a=Math.sin(s),f=t/2,u=n/2;return[[-f,-u],[f,-u],[f,u],[-f,u]].map(([l,c])=>({x:r.x+l*i-c*a,y:r.y+l*a+c*i}))}function Sr(e,t,n,o,r,s=!0){let i=Ht(t);if(!i)return;let a=i.reduce((h,m)=>h+m.x,0)/i.length,f=i.reduce((h,m)=>h+m.y,0)/i.length,u=h=>i.map(m=>({x:a+(m.x-a)*h,y:f+(m.y-f)*h})),l=s&&o?je(o,r.tableTop):rc,c=n+Ja;W(e,i,void 0,()=>c,n+ic,l,z(l,.86),K),W(e,u(.12),void 0,()=>c+.12,c,br,z(br,.8),K)}var rc=[.93,.92,.89],br=[.78,.66,.42],ic=.25;function Ir(e,t,n,o,r,s,i,a,f=[]){let u=ae(t);if(!t.role&&(!t.fill||t.fill==="none"||t.fill==="transparent")||!u){pt(e,t,n+o+Qa);return}let c=a?a.kind==="stage":t.role==="stage",h=a?a.kind==="screen":t.role==="screen",m=a?{kind:c?"stage":"solid",heightM:a.topY-a.baseY}:Pe(t),d=a?.baseY??n,p=a?.topY??n+o;if(c&&i){let P=1/0,S=-1/0,E=1/0,_=-1/0;for(let O of u)O.x<P&&(P=O.x),O.x>S&&(S=O.x),O.y<E&&(E=O.y),O.y>_&&(_=O.y);i.push({cx:(P+S)/2*v,cz:(E+_)/2*v,y:p,halfX:Math.max((S-P)/2*v,.5),halfZ:Math.max((_-E)/2*v,.5)})}let b=oe(t.fill),y=t.role==="wall"||t.role==="entrance"||t.role==="exit",x=y?b?z(Ae(b,.12),.95):r.tierTop:c&&b?re(r.stageTop,z(Ae(b,.18),.9),.9):!t.role&&b?b:je(b,c?r.stageTop:r.decorTop),M=h?b:null,I=y?b?z(Ae(b,.12),.85):r.tierWall:c?b?re(r.stageWall,z(b,.58),.82):r.stageWall:h?M?re(z(M,1.42),[.24,.46,.82],.08):[.24,.46,.82]:je(oe(t.fill),r.decorWall);if(t.role==="wall"&&!a){rr(e,u,d,p,f,x,I),pt(e,t,p+.012);return}if(h&&u.length===4&&p-d>.2){let P=pn(u,d,p);if(!P)return;let{quad:S,side:E,trim:_,inner:O,panel:k}=P,C=[.12,.15,.18];for(let[A,L]of[[0,E],[1-E,1]])ee(e,fe(S,A,L),p,d,C,C);ee(e,O,d+_,d,C,C),ee(e,O,p,p-_,C,C),ee(e,k,p-_,d+_,I,I),pt(e,t,p+.012);return}let w=b?z(Ae(b,.15),.82):I,g=b?z(Ae(b,.1),1.02):x;if(ir(t.role)&&!a&&sr(e,t.role,u,d,p,w,g,s,t.heightM!==void 0))return;if((t.role==="sound"||a?.kind==="sound_desk")&&u.length===4&&p-d>.3){let P=be(u),S=Math.hypot(P[1].x-P[0].x,P[1].y-P[0].y)*v,E=Math.min(.12,.09/Math.max(S,.001)),_=[.18,.21,.24],O=p-Math.min(.12,(p-d)*.15);for(let[k,C]of[[0,E],[1-E,1]])ee(e,fe(P,k,C),O,d,_,_);ee(e,P,p,O,x,_);return}if(t.role==="rail"&&u.length===4&&p>d){let P=be(u),S=Math.hypot(P[1].x-P[0].x,P[1].y-P[0].y)*v,E=Math.max(1,Math.min(128,Math.ceil(S/1.4))),_=Math.min(.08,.055/Math.max(.055,S)),O=[.58,.64,.66];for(let k=0;k<=E;k++){let C=k/E,A=Math.min(1-_,Math.max(0,C-_/2));ee(e,fe(P,A,A+_),p,d,O,z(O,.8))}for(let k of[.52,1]){let C=d+(p-d)*k;ee(e,P,C,Math.max(d,C-.055),O,z(O,.8))}return}if(t.role==="goal"&&u.length===4){let P=be(u),S=Math.hypot(P[1].x-P[0].x,P[1].y-P[0].y)*v,E=Math.min(.12,.1/Math.max(.1,S)),_=[.9,.94,.94];for(let[O,k]of[[0,E],[1-E,1]])ee(e,fe(P,O,k),Math.max(d,p-.1),d,_,_);ee(e,P,p,Math.max(d,p-.1),_,_);return}if(m.kind==="portal"&&u.length===4){let P=Je(u,d,p);if(!P)return;let{quad:S,side:E,face:_,openingTop:O}=P;for(let[k,C,A]of[[0,_,1],[_,1-_,.67],[1-_,1,1]]){let L=dt(S,k,C),F=z(x,A),T=z(I,A);for(let[B,N]of[[0,E],[1-E,1]])ee(e,fe(L,B,N),O,d,F,T);ee(e,L,p,O,F,T)}return}if(m.kind==="suite"&&u.length===4){let P=u.map((_,O)=>{let k=u[(O+1)%4],C=(_.x+k.x)/2,A=(_.y+k.y)/2;return Math.hypot(C-s.x,A-s.y)}),S=P.indexOf(Math.min(...P)),E=[0,1,2,3].map(_=>u[(S+_)%4]);ee(e,fe(E,0,.08),p,d,x,I),ee(e,fe(E,.92,1),p,d,x,I),ee(e,dt(E,.88,1),p,d,x,I),ee(e,E,p,Math.max(d,p-.18),x,I);return}if(c&&!t.stageKind?.startsWith("pitch-")&&p-d>.12){let P=p-Math.min(.06,(p-d)*.15);ee(e,u,P,d,x,I),ee(e,u,p,P,x,re(x,I,.2))}else ee(e,u,p,d,x,I);if((t.stageKind==="pitch-football"||t.stageKind==="pitch-rugby")&&u.length===4){e.setMaterial(4);let P=be(u);for(let S=0;S<12;S++){let E=fe(P,S/12,(S+1)/12),_=z(b??[.12,.38,.16],S%2?1.035:.965),O=E.map(k=>[k.x*v,p+.006,k.y*v]);e.tri(O[0],O[1],O[2],[0,1,0],_),e.tri(O[0],O[2],O[3],[0,1,0],_)}}t.stageKind&&t.stageKind!=="pitch-football"&&hr(e,u,t.stageKind,p,b),c&&Xe(t.stageKind)&&mr(e,t,p),e.setMaterial(h?1:0),pt(e,t,p+.012)}function Xt(e){let{x:t,y:n,width:o,height:r}=e;if(!o||!r)return null;let s=t+o/2,i=n+r/2,a=(e.rotation??0)*Math.PI/180,f=Math.cos(a),u=Math.sin(a),l=o/2,c=r/2;return[[-l,-c],[l,-c],[l,c],[-l,c]].map(([h,m])=>({x:s+h*f-m*u,y:i+h*u+m*f}))}function sc(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 oe(o);let s=t.match(new RegExp(`<(?:linear|radial)Gradient\\b[^>]*\\bid="${r[1]}"[^>]*>([\\s\\S]*?)</(?:linear|radial)Gradient>`,"i"));if(!s)return null;let i=[];for(let a of s[1].matchAll(/stop-color="([^"]+)"/gi)){let f=oe(a[1].trim());f&&i.push(f)}return i.length?i.reduce((a,f,u)=>re(a,f,1/(u+1)),i[0]):null}function Pr(e,t,n,o){if(t.layer==="foreground")return;let r=Xt(t);if(!r)return;let s=n+ec,i=je(sc(t.href),o.decorTop),a=Math.max(0,Math.min(1,t.opacity??1));a<1&&(i=re(o.ground,i,a)),W(e,r,void 0,()=>s,n,i,re(i,o.decorWall,.5),K)}function Rr(e,t,n,o,r){if(!t.points||t.points.length<3)return;let s=je(o,r.gaTop);W(e,t.points,t.holes,()=>n+yr,n,s,r.gaWall,K),lc(e,t.points,n+yr)}var yr=.15,Gt=[.72,.74,.76],xn=1.1,xr=.12,gn=.05,ac=.06,cc=2.4;function lc(e,t,n){let o=Ce([...t]),r=Ye(o,xr/v),s=Ye(o,(xr+gn)/v);if(r.length<3||s.length<3)return;for(let a of[n+xn,n+xn*.5])W(e,r,[s.slice().reverse()],()=>a,a-gn,Gt,z(Gt,.85),K);let i=ac/2/v;for(let a=0;a<r.length;a++){let f=r[a],u=r[(a+1)%r.length],l=Math.hypot(u.x-f.x,u.y-f.y)*v,c=Math.max(1,Math.round(l/cc));for(let h=0;h<c;h++){let m=h/c,d=f.x+(u.x-f.x)*m,p=f.y+(u.y-f.y)*m,b=[{x:d-i,y:p-i},{x:d+i,y:p-i},{x:d+i,y:p+i},{x:d-i,y:p+i}];W(e,b,void 0,()=>n+xn-gn,n,Gt,z(Gt,.8),K)}}}var Mn=.6,wr=3,uc=.25;function fc(e,t){if(pe(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 s=t[r],i=t[o],a=i.x-s.x,f=i.y-s.y,u=a*a+f*f||1,l=Math.max(0,Math.min(1,((e.x-s.x)*a+(e.y-s.y)*f)/u));n=Math.min(n,Math.hypot(e.x-(s.x+l*a),e.y-(s.y+l*f)))}return n}function vr(e,t){let n=e.map(i=>({booth:i,ring:_e(i)})).filter(i=>!!i.ring&&i.ring.length===4&&!i.booth.points),o=n.map(({ring:i})=>({minX:Math.min(...i.map(a=>a.x)),maxX:Math.max(...i.map(a=>a.x)),minY:Math.min(...i.map(a=>a.y)),maxY:Math.max(...i.map(a=>a.y))})),r=(wr+Mn)/v,s=new Map;return n.forEach(({booth:i,ring:a},f)=>{let u={x:a.reduce((m,d)=>m+d.x,0)/4,y:a.reduce((m,d)=>m+d.y,0)/4},l=[0,1,2,3].map(m=>{let d=a[m],p=a[(m+1)%4],b={x:(d.x+p.x)/2,y:(d.y+p.y)/2},y=b.x-u.x,x=b.y-u.y,M=Math.hypot(y,x)||1,I={x:b.x+y/M*Mn/v,y:b.y+x/M*Mn/v},w=wr/v;return o.forEach((g,R)=>{R===f||I.x<g.minX-r||I.x>g.maxX+r||I.y<g.minY-r||I.y>g.maxY+r||(w=Math.min(w,fc(I,n[R].ring)))}),{open:w*v,toward:{x:b.x+y/M*10/v,y:b.y+x/M*10/v},focal:Math.hypot(b.x-t.x,b.y-t.y)}}),c=Math.max(...l.map(m=>m.open)),h=l.filter(m=>m.open>=c-uc).sort((m,d)=>m.focal-d.focal)[0];s.set(i.id,h.toward)}),s}var Er=Fe(require("polygon-clipping"),1);var mc=.45,hc=1500,dc=200;function Cr(e,t){if(e.role!=="stage"||Xe(e.stageKind))return e;let n=ae(e);if(!n||n.length<3||Math.abs(de(n))*v*v>hc)return e;let o=t.filter(i=>pe(n,i.x,i.y));if(!o.length||o.length>dc)return e;let r=mc/v,s=o.map(i=>[[[i.x-r,i.y-r],[i.x+r,i.y-r],[i.x+r,i.y+r],[i.x-r,i.y+r],[i.x-r,i.y-r]]]);try{let i=Er.default.difference([[...n.map(u=>[u.x,u.y]),[n[0].x,n[0].y]]],...s),a=null,f=0;for(let u of i){let l=u[0].slice(0,-1).map(([h,m])=>({x:h,y:m})),c=Math.abs(de(l));c>f&&(f=c,a=l)}return!a||a.length<3?e:{...e,kind:"polygon",points:a,rotation:0}}catch{return e}}var pc=Math.PI/180,ie=96,bc=6,yc=60,xc=150,Ar=.2,gc=.35;function Mc(e,t){let n=Math.atan2(t.x-e.x,t.y-e.y)/pc;return n<0?n+360:n}function Ut(e){if(!e.length)return NaN;let t=[...e].sort((n,o)=>n-o);return t[Math.floor(t.length/2)]}function Vt(e,t,n=2){let o=e.length,r=new Float64Array(o);for(let s=0;s<o;s++){let i=0,a=0;for(let f=-n;f<=n;f++){let u=s+f;if(t)u=(u%o+o)%o;else if(u<0||u>=o)continue;i+=e[u],a++}r[s]=i/a}return r}function _r(e,t){let n=e.filter(h=>h.rows.length>=1);if(n.length<1)return null;let o=[],r=0,s=0,i=0;for(let h of n)for(let m of h.rows){for(let d of m.pts)r+=d.x,s+=d.y,i++;if(m.pts.length>=4){let d=en(m.pts);d&&Number.isFinite(d.cx)&&Number.isFinite(d.cy)&&o.push({x:d.cx,y:d.cy})}}if(!i)return null;let a={x:r/i,y:s/i},f=a;if(o.length>=8){let h=Ut(o.map(y=>y.x)),m=Ut(o.map(y=>y.y)),d=0;for(let y of n)for(let x of y.rows)for(let M of x.pts){let I=Math.hypot(M.x-a.x,M.y-a.y);I>d&&(d=I)}let p=0,b=d*.2;for(let y of n)for(let x of y.rows)for(let M of x.pts)Math.hypot(M.x-h,M.y-m)<b&&p++;Math.hypot(h-a.x,m-a.y)<=d&&p/i<.01&&(f={x:h,y:m})}let u=[];for(let h of n){let m={sectionId:h.sectionId,rMin:1/0,rMax:-1/0,samples:[]};for(let d of h.rows)for(let p of d.pts){let b=Math.hypot(p.x-f.x,p.y-f.y),y=Math.min(ie-1,Math.floor(Mc(f,p)/(360/ie)));m.samples.push({r:b,bin:y,levelM:d.levelM}),b<m.rMin&&(m.rMin=b),b>m.rMax&&(m.rMax=b)}m.samples.length&&u.push(m)}if(!u.length)return null;u.sort((h,m)=>h.rMin+h.rMax-(m.rMin+m.rMax));let l=[];for(let h of u){let m=!1;for(let d of l){let p=Math.min(h.rMax,d.rMax)-Math.max(h.rMin,d.rMin),b=Math.min(h.rMax-h.rMin,d.rMax-d.rMin);if(b>1e-9&&p>=gc*b){d.members.push(h),d.rMin=Math.min(d.rMin,h.rMin),d.rMax=Math.max(d.rMax,h.rMax),m=!0;break}}m||l.push({members:[h],rMin:h.rMin,rMax:h.rMax})}let c=[];for(let h of l){let m=new Array(ie).fill(null);for(let k of h.members)for(let C of k.samples){let A=m[C.bin];A||(A={samples:[]},m[C.bin]=A),A.samples.push({r:C.r,levelM:C.levelM})}let d=m.map(k=>!!k);if(!d.filter(Boolean).length)continue;let b=[],y=[];for(let k of m){if(!k)continue;let C=1/0,A=-1/0;for(let L of k.samples)L.r<C&&(C=L.r),L.r>A&&(A=L.r);b.push(C),y.push(A)}let x=Ut(b),M=Ut(y);if(!(x>=Ar*M)||!(M>0))continue;let I=[...b].sort((k,C)=>k-C);if(!(I[Math.floor(I.length*.1)]>=Ar*M))continue;let g=m.map(k=>{if(!k)return null;let C=[...k.samples].sort((D,V)=>D.r-V.r),A=C[0].r,L=C[C.length-1].r,F=C[0].levelM,T=-1/0;for(let D of C)D.levelM>T&&(T=D.levelM);let B=[];for(let D of C){let V={r:D.r,l:D.levelM};for(;B.length&&Math.abs(B[B.length-1].r-V.r)<1e-9;){if(B[B.length-1].l<=V.l){V.skip=!0;break}B.pop()}if(!V.skip){for(;B.length>=2;){let U=B[B.length-2],Z=B[B.length-1];if((Z.r-U.r)*(V.l-U.l)-(Z.l-U.l)*(V.r-U.r)<=0)B.pop();else break}B.push(V)}}let N=B.map(D=>D.r),H=B.map(D=>D.l);return{inner:A,outer:L,front:F,top:T,profile:{rs:N,ls:H}}}),R=d.slice();for(let k=0;k<ie;k++){if(R[k])continue;let C=-1,A=-1,L=0;for(let X=1;X<=ie;X++){let q=(k-X+ie*2)%ie;if(R[q]){C=q;break}}for(let X=1;X<=ie;X++){let q=(k+X)%ie;if(R[q]){A=q,L=X;break}}if(C<0||A<0)continue;let F=0;for(let X=1;X<=ie;X++){let q=(k-X+ie*2)%ie;if(d[q]){F=X;break}}if(F-1+L>bc)continue;let B=g[C],N=g[A],H=F/(F+L),D=B.inner+(N.inner-B.inner)*H,V=B.outer+(N.outer-B.outer)*H,U=B.front+(N.front-B.front)*H,Z=B.top+(N.top-B.top)*H;g[k]={inner:D,outer:V,front:U,top:Z,profile:{rs:[D,V],ls:[U,Z]}}}for(let k=0;k<ie;k++)g[k]&&(R[k]=!0);let P=360/ie,S=[],E=R.filter(Boolean).length,_=[];if(E===ie)_.push({start:0,len:ie});else{let k=0;for(;R[k];)k=(k+1)%ie;let C=-1;for(let A=0;A<=ie;A++){let L=(k+A)%ie,F=A<ie&&R[L];if(F&&C<0)C=L;else if(!F&&C>=0){let T=(L-C+ie)%ie||ie;_.push({start:C,len:T}),C=-1}}}for(let k of _){if(k.len*P<yc&&k.len<ie)continue;let C=k.len===ie,A=new Float64Array(k.len),L=new Float64Array(k.len),F=new Float64Array(k.len),T=new Float64Array(k.len),B=[];for(let X=0;X<k.len;X++){let q=g[(k.start+X)%ie];A[X]=q.inner,L[X]=q.outer,F[X]=q.front,T[X]=q.top,B.push(q.profile??{rs:[q.inner,q.outer],ls:[q.front,q.top]})}let N=Vt(A,C),H=Vt(L,C),D=Vt(F,C),V=Vt(T,C);for(let X=0;X<k.len;X++)N[X]>A[X]&&(N[X]=A[X]),H[X]<L[X]&&(H[X]=L[X]),N[X]>H[X]-1e-6&&(N[X]=Math.max(0,H[X]-1e-6)),V[X]<D[X]&&(V[X]=D[X]);let U={startBin:k.start,binCount:k.len,closed:C,innerR:N,outerR:H,frontLevelM:D,topLevelM:V,profiles:B},Z=(X,q,$)=>{let j=B[X],G=j.rs,Q=j.ls;if(q<=G[0]){Q[0]>$&&(Q[0]=$);return}if(q>=G[G.length-1]){Q[Q.length-1]>$&&(Q[Q.length-1]=$);return}for(let te=0;te+1<G.length;te++)if(q<=G[te+1]){Q[te]>$&&(Q[te]=$),Q[te+1]>$&&(Q[te+1]=$);return}};for(let X=0;X<k.len;X++){let q=m[(k.start+X)%ie];if(q)for(let $ of q.samples){Z(X,$.r,$.levelM);let j=C?(X-1+k.len)%k.len:X-1,G=C?(X+1)%k.len:X+1;j>=0&&Z(j,$.r,$.levelM),G<k.len&&Z(G,$.r,$.levelM)}}S.push(U)}S.reduce((k,C)=>k+C.binCount*P,0)<xc||c.push({arcs:S,sectionIds:h.members.map(k=>k.sectionId),innerRMedian:x,outerRMedian:M})}if(!c.length)return null;if(c.sort((h,m)=>h.innerRMedian-m.innerRMedian),t){let h=c[c.length-1].outerRMedian;if(Math.hypot(t.x-f.x,t.y-f.y)>.9*h)return null}return{centre:f,binCount:ie,binStepDeg:360/ie,rings:c}}function kr(e,t,n,o){let r=e.binStepDeg,s=n/r-.5-t.startBin;s=(s%e.binCount+e.binCount)%e.binCount,s>t.binCount-1&&(t.closed?s=s-t.binCount<t.binCount-s?0:t.binCount-1:s=s-(t.binCount-1)<e.binCount-s?t.binCount-1:0);let i=Math.floor(s),a=t.closed?(i+1)%t.binCount:Math.min(t.binCount-1,i+1),f=s-i,u=l=>{let c=t.profiles[l],h=c.rs,m=c.ls;if(o<=h[0])return m[0];if(o>=h[h.length-1])return m[m.length-1];for(let d=0;d+1<h.length;d++)if(o<=h[d+1]){let p=h[d+1]-h[d],b=p>1e-9?(o-h[d])/p:0;return m[d]+(m[d+1]-m[d])*b}return m[m.length-1]};return u(i)*(1-f)+u(a)*f}function Sn(e,t,n,o,r,s,i,a,f,u=[],l=r){if(t.length!==n.length||t.length<2||s-r<1.5)return;let c=(p,b,y)=>{Oe(e,p,b,y,u,i,a,{portalBase:l,ao:f})||W(e,p,void 0,()=>y,b,i,a,f)},h=(p,b,y)=>({x:p.x+(b.x-p.x)*y,y:p.y+(b.y-p.y)*y}),m=o?t.length:t.length-1,d=0;for(let p=0;p<m;p++){let b=(p+1)%t.length,y=Math.hypot(n[b].x-n[p].x,n[b].y-n[p].y)*J;if(y<1e-5)continue;let x=(g,R)=>[h(t[p],t[b],g),h(t[p],t[b],R),h(n[p],n[b],R),h(n[p],n[b],g)];c(x(0,1),r,r+.95),c(x(0,1),s-.22,s);let M=Math.ceil((d-.32)/6)*6,I=!1,w=!1;for(let g=M;g<d+y;g+=6){let R=Math.max(0,(g-d)/y),P=Math.min(1,(g+.32-d)/y);P<=R||(c(x(R,P),r+.95,s-.22),I||=R<1e-6,w||=P>1-1e-6)}if(!o&&(p===0&&!I||p===m-1&&!w)){let g=Math.min(1,.32/y);c(x(p===0?0:1-g,p===0?g:1),r+.95,s-.22)}d+=y}}var bt=.65;function Tr(e,t){let n=1/0;for(let o of t)for(let r=0;r<o.length;r++){let s=o[r],i=o[(r+1)%o.length],a=i.x-s.x,f=i.y-s.y,u=Math.max(0,Math.min(1,((e.x-s.x)*a+(e.y-s.y)*f)/(a*a+f*f||1)));n=Math.min(n,Math.hypot(e.x-s.x-u*a,e.y-s.y-u*f))}return n}var Lr=.01;function Or(e,t,n,o,r,s,i,a=[],f=!0){if(o-r<=1e-5)return;let u=o-r>=3,l=u?o-bt:r;e.setMaterial(5);let c=u?[]:a.filter(I=>{if(I.role!=="entrance"&&I.role!=="exit")return!1;let w=ae(I);if(!w)return!1;let g=Je(w,r,r+Pe(I).heightM);return g!==null&&g.openingTop<=o-.12});if((!c.length||!Oe(e,t,l,o,c,s,i,{holes:n,portalBase:r}))&&W(e,t,n,()=>o,l,s,i,K,void 0,()=>[0,1,0]),!u){e.setMaterial(0);return}let h=6/v,m=.22/v,d=a.flatMap(I=>{if(I.role!=="entrance"&&I.role!=="exit")return[];let w=ae(I);return w?.length?[{minX:Math.min(...w.map(g=>g.x)),maxX:Math.max(...w.map(g=>g.x)),minY:Math.min(...w.map(g=>g.y)),maxY:Math.max(...w.map(g=>g.y))}]:[]}),p=Math.min(...t.map(I=>I.x)),b=Math.max(...t.map(I=>I.x)),y=Math.min(...t.map(I=>I.y)),x=Math.max(...t.map(I=>I.y));for(let I=p+h/2;I<b;I+=h)for(let w=y+h/2;w<x;w+=h){if(d.some(R=>I+m>=R.minX&&I-m<=R.maxX&&w+m>=R.minY&&w-m<=R.maxY))continue;let g=[{x:I-m,y:w-m},{x:I+m,y:w-m},{x:I+m,y:w+m},{x:I-m,y:w+m}];!me({x:I,y:w},t,n)||Tr({x:I,y:w},[t,...n??[]])<m*Math.SQRT2+(f?In/v:0)||W(e,g,void 0,()=>l,r,s,i,K)}let M=Ye(t,In/v);if(f&&M.length>=3){let I=a.filter(R=>{if(R.role!=="entrance"&&R.role!=="exit")return!1;let P=ae(R);return!!P&&P.some(S=>!me(S,t,void 0)||Tr(S,[t])<=In/v)}),w=[M.slice().reverse()],g=r-Lr;(!I.length||!Oe(e,t,g,l,I,s,i,{holes:w,portalBase:r+Lr}))&&W(e,t,w,()=>l,g,s,i,K)}e.setMaterial(0)}var In=.25;var Sc=.02,Ic=.25,Pc=1.2,Rc=.6,wc=.45,vc=2.3,Ec=Math.PI/180,Br=.005;function ke(e,t,n){let o=n*Ec;return{x:e.x+t*Math.sin(o),y:e.y+t*Math.cos(o)}}function Cc(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 s=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(s.length<2)continue;let i=0;for(let a of s)Math.hypot(a.x-t.centre.x,a.y-t.centre.y)>=o&&i++;if(i>=s.length/2)return!0}return!1}var Ac=24,_c=.01;function kc(e,t,n,o,r,s,i,a,f){let u=n.binCount,l=Ac,c=J,h=s+.02,m=s-_c,d=[];for(let C=0;C<u;C++){let A=(n.startBin+C+.5)*t.binStepDeg,L=new Float64Array(l+1);for(let F=0;F<=l;F++){let T=o[C]+(r[C]-o[C])*F/l;L[F]=Math.max(h,kr(t,n,A,T)-Ic)}d.push(L)}if(f){let C=0;for(let A=0;A+1<u;A++)for(let L=0;L<l;L++){let F=ke(t.centre,o[A]+(r[A]-o[A])*L/l,(n.startBin+A+.5)*t.binStepDeg),T=ke(t.centre,o[A+1]+(r[A+1]-o[A+1])*(L+1)/l,(n.startBin+A+1.5)*t.binStepDeg);C=Math.max(C,Math.hypot(T.x-F.x,T.y-F.y))}for(let A=0;A<u;A++){let L=(n.startBin+A+.5)*t.binStepDeg;for(let F=0;F<=l;F++){let T=ke(t.centre,o[A]+(r[A]-o[A])*F/l,L),B=f(T.x,T.y,C*1.01);B!==null&&(d[A][F]=Math.min(d[A][F],Math.max(m+Br,B-Br)))}}}let p=[i.bandTop[0]*a.top,i.bandTop[1]*a.top,i.bandTop[2]*a.top],b=[i.bandTop[0]*a.bottomCap,i.bandTop[1]*a.bottomCap,i.bandTop[2]*a.bottomCap],y=[i.bandWall[0]*a.top,i.bandWall[1]*a.top,i.bandWall[2]*a.top],x=[i.bandWall[0]*a.wallBottom,i.bandWall[1]*a.wallBottom,i.bandWall[2]*a.wallBottom],M=(C,A)=>{let L=(n.startBin+C+.5)*t.binStepDeg,F=o[C]+(r[C]-o[C])*A/l,T=ke(t.centre,F,L);return[T.x*c,d[C][A],T.y*c]};{let C=Math.tan(12*Math.PI/180);for(let A=0;A<6;A++){let L=!1;for(let T=0;T<u;T++)for(let B=l-1;B>=0;B--)d[T][B]>d[T][B+1]&&(d[T][B]=d[T][B+1],L=!0);let F=n.closed?u:u-1;for(let T=0;T<F;T++){let B=(T+1)%u;for(let N=0;N<=l;N++){let H=d[B][N]-d[T][N];if(Math.abs(H)>1)continue;let D=o[T]+(r[T]-o[T])*N/l,V=o[B]+(r[B]-o[B])*N/l,U=ke(t.centre,D,(n.startBin+T+.5)*t.binStepDeg),Z=ke(t.centre,V,(n.startBin+B+.5)*t.binStepDeg),X=C*Math.hypot(Z.x-U.x,Z.y-U.y)*c;H>X?(d[B][N]=d[T][N]+X,L=!0):-H>X&&(d[T][N]=d[B][N]+X,L=!0)}}if(!L)break}}let I=1,w=(C,A)=>{for(let L=0;L<=l;L+=4)if(Math.abs(d[C][L]-d[A][L])>I)return!0;return Math.abs(d[C][l]-d[A][l])>I},g=Math.tan(38*Math.PI/180),R=C=>(r[C]-o[C])/l*c,P=(C,A)=>d[C][A+1]-d[C][A]>g*Math.max(1e-6,R(C)),S=(C,A)=>{let L=n.closed?(C-1+u)%u:Math.max(0,C-1),F=n.closed?(C+1)%u:Math.min(u-1,C+1);Math.abs(d[L][A]-d[C][A])>I&&(L=C),Math.abs(d[F][A]-d[C][A])>I&&(F=C);let T=Math.max(0,A-1),B=Math.min(l,A+1);T<A&&P(C,T)&&(T=A),B>A&&P(C,A)&&(B=A);let N=M(L,A),H=M(F,A),D=M(C,T),V=M(C,B),U=H[0]-N[0],Z=H[1]-N[1],X=H[2]-N[2],q=V[0]-D[0],$=V[1]-D[1],j=V[2]-D[2],G=Z*j-X*$,Q=X*q-U*j,te=U*$-Z*q,ne=Math.hypot(G,Q,te);return ne>1e-12?(G/=ne,Q/=ne,te/=ne,Q<0&&(G=-G,Q=-Q,te=-te),[G,Q,te]):[0,1,0]},E=(C,A,L=!1)=>{let F=L&&Math.min(C[1],A[1])-s>=3,T=[C[0],F?C[1]-bt:m,C[2]],B=[A[0],F?A[1]-bt:m,A[2]],N=A[0]-C[0],H=A[2]-C[2],D=Math.hypot(N,H);if(!(D>1e-12))return;let V=[H/D,0,-N/D];e.tri(C,A,B,V,y,y,x),e.tri(C,B,T,V,y,x,x)},_=.05*ge,O=C=>r[C]-o[C]<_,k=n.closed?u:u-1;for(let C=0;C<k;C++){let A=(C+1)%u;if(O(C)||O(A))continue;if(w(C,A)){let H=(n.startBin+C+1)*t.binStepDeg,D=($,j)=>{let G=(o[C]+o[A])/2,Q=(r[C]+r[A])/2,te=G+(Q-G)*j/l,ne=ke(t.centre,te,H);return[ne.x*c,d[$][j],ne.y*c]};for(let $=0;$<l;$++){let j=M(C,$),G=M(C,$+1),Q=D(C,$),te=D(C,$+1),ne=S(C,$),ce=S(C,$+1);e.triN(j,Q,te,ne,ne,ce,p),e.triN(j,te,G,ne,ce,ce,p);let se=M(A,$),Y=M(A,$+1),le=D(A,$),Re=D(A,$+1),we=S(A,$),ve=S(A,$+1);e.triN(le,se,Y,we,we,ve,p),e.triN(le,Y,Re,we,ve,ve,p);let Se=D(C,$),he=D(C,$+1),ze=D(A,$+1),Kt=D(A,$),yt=he[0]-Se[0],rt=he[2]-Se[2],zt=Math.hypot(yt,rt);if(zt>1e-12){let Tn=[rt/zt,0,-yt/zt];e.tri(Se,he,ze,Tn,y),e.tri(Se,ze,Kt,Tn,y)}}let V=M(C,0),U=M(A,0),Z=M(A,l),X=M(C,l),q=$=>[$[0],m,$[2]];Math.min(V[1],U[1])-s<3&&(e.tri(q(V),q(Z),q(U),[0,-1,0],b),e.tri(q(V),q(X),q(Z),[0,-1,0],b)),E(V,U,!0),E(X,Z,!0);continue}for(let H=0;H<l;H++){let D=S(C,H),V=S(A,H),U=S(A,H+1),Z=S(C,H+1);if(P(C,H)||P(A,H)){let G=(he,ze)=>{let Kt=(n.startBin+he+.5)*t.binStepDeg,yt=o[he]+(r[he]-o[he])*(H+.5)/l,rt=ke(t.centre,yt,Kt);return[rt.x*c,ze,rt.y*c]},Q=M(C,H),te=M(A,H),ne=G(C,d[C][H]),ce=G(A,d[A][H]);e.triN(Q,te,ce,D,V,V,p),e.triN(Q,ce,ne,D,V,D,p);let se=M(A,H+1),Y=M(C,H+1),le=G(C,d[C][H+1]),Re=G(A,d[A][H+1]);e.triN(le,Re,se,Z,U,U,p),e.triN(le,se,Y,Z,U,Z,p);let we=ce[0]-ne[0],ve=ce[2]-ne[2],Se=Math.hypot(we,ve);if(Se>1e-12){let he=[-ve/Se,0,we/Se];e.tri(ne,ce,Re,he,y),e.tri(ne,Re,le,he,y)}continue}let X=M(C,H),q=M(A,H),$=M(A,H+1),j=M(C,H+1);e.triN(X,q,$,D,V,U,p),e.triN(X,$,j,D,U,Z,p)}let L=M(C,0),F=M(A,0),T=M(A,l),B=M(C,l),N=H=>[H[0],m,H[2]];Math.min(L[1],F[1])-s<3&&(e.tri(N(L),N(T),N(F),[0,-1,0],b),e.tri(N(L),N(B),N(T),[0,-1,0],b)),E(L,F,!0),E(B,T,!0)}if(!n.closed)for(let C of[0,u-1])for(let A=0;A<l;A++)E(M(C,A),M(C,A+1))}function Fr(e,t,n){let{bottomY:o,colors:r,ao:s}=n,i=new Float64Array(t.binCount).fill(-1/0);for(let l of t.rings)for(let c of l.arcs){let h=new Float64Array(c.binCount),m=new Float64Array(c.binCount);for(let p=0;p<c.binCount;p++){let b=(c.startBin+p)%t.binCount,y=Math.max(0,c.innerR[p]-Me);h[p]=Math.max(y,i[b]+.001),m[p]=Math.max(h[p]+.001,c.outerR[p]+Me)}let d=0;for(let p=0;p<c.binCount;p++){let b=c.topLevelM[p]-o;b>d&&(d=b)}d>=Pc&&kc(e,t,c,h,m,o,r,s,n.standTopNear);for(let p=0;p<c.binCount;p++){let b=(c.startBin+p)%t.binCount;m[p]>i[b]&&(i[b]=m[p])}}if(n.deriveShell===!1||Cc(n.shapes,t))return;let a=t.rings[t.rings.length-1],f=Rc*ge,u=wc*ge;for(let l of a.arcs){let c=[],h=[];for(let S=0;S<l.binCount;S++){let E=(l.startBin+S+.5)*t.binStepDeg,_=l.outerR[S]+Me+f;c.push(ke(t.centre,_,E)),h.push(ke(t.centre,_+u,E))}let m=-1/0;for(let S=0;S<l.binCount;S++)l.topLevelM[S]>m&&(m=l.topLevelM[S]);let d=m+vc,p=l.closed?h:[...h,...c.slice().reverse()],b=l.closed?[c.slice().reverse()]:void 0,y=re(r.shellWall,[.66,.71,.72],.62),x=(S,E,_,O,k)=>{let C=Math.abs(O-m)<1e-6?O-Sc:O;Oe(e,S,_,C,n.shapes,r.shellTop,k,{holes:E,portalBase:o,ao:s})||W(e,S,E,()=>C,_,r.shellTop,k,s)},M=Math.max(1,Math.ceil((m-o)/4.5)),I=(m-o)/M,w=new Set,g=n.tierFrontLevels??t.rings.map(S=>{let E=S.arcs.flatMap(_=>Array.from(_.frontLevelM)).filter(Number.isFinite).sort((_,O)=>_-O);return E[Math.floor(E.length/2)]});for(let S of g)Number.isFinite(S)&&S-o>=3&&S<m&&w.add(Math.max(0,Math.min(M-1,Math.floor((S-o)/I))));let R=Math.min(...g.filter(S=>Number.isFinite(S)&&S-o>=3&&S<m));for(let S=0;S<M;S++)o+(S+1)*I<=R-bt&&Number.isFinite(R)&&w.add(S);for(let S=0;S<M;S++){let E=o+(m-o)*S/M,_=o+(m-o)*(S+1)/M;w.has(S)&&_-E>=3.2?(x(p,b,E,E+.45,y),Sn(e,c,h,l.closed,E+.45,_-.16,r.shellTop,y,s,n.shapes,o)):x(p,b,E,_-.16,y),x(p,b,_-.16,_,z(y,.62))}Sn(e,c,h,l.closed,m,d,r.shellTop,y,s,n.shapes,o);let P=8;for(let S=1;S<h.length;S++){if(P+=Math.hypot(h[S].x-h[S-1].x,h[S].y-h[S-1].y)*J,P<8)continue;P=0;let E=h[S],_=h[S-1],O=E.x-_.x,k=E.y-_.y,C=Math.max(1,Math.hypot(O,k)),A=O/C*.16*ge,L=k/C*.16*ge,F=Math.max(1,Math.hypot(E.x-t.centre.x,E.y-t.centre.y)),T=(E.x-t.centre.x)/F*.24*ge,B=(E.y-t.centre.y)/F*.24*ge,N=[{x:E.x-A,y:E.y-L},{x:E.x+A,y:E.y+L},{x:E.x+A+T,y:E.y+L+B},{x:E.x-A+T,y:E.y-L+B}];x(N,void 0,o,m,z(y,1.12))}}}function Dr(e,t,n,o){let r=new Map;for(let a of t){let f=r.get(a.blockId);(!f||a.depth<f.depth)&&r.set(a.blockId,a)}let s=[.68,.72,.72],i=[.48,.55,.57];for(let a of r.values()){if(a.y-o<2.5||a.pts.length<2)continue;let f=a.pts.map(l=>{let c=l.x-n.x,h=l.y-n.y,m=Math.max(1,Math.hypot(c,h));return{x:l.x-c/m*.65/v,y:l.y-h/m*.65/v}}),u=2;for(let l=1;l<f.length;l++){let c=f[l-1],h=f[l],m=h.x-c.x,d=h.y-c.y,p=Math.hypot(m,d);if(p<1e-5||p*v>2)continue;let b=y=>{let x=-d/p*y/v/2,M=m/p*y/v/2;return[{x:c.x+x,y:c.y+M},{x:h.x+x,y:h.y+M},{x:h.x-x,y:h.y-M},{x:c.x-x,y:c.y-M}]};W(e,b(.22),void 0,()=>a.y-.06,a.y-.56,s,s,K);for(let y of[.5,.95])W(e,b(.045),void 0,()=>a.y+y,a.y+y-.045,i,i,K);if(u+=p*v,u>=1.8||l===f.length-1){u=0;let y=.028/v,x=[{x:c.x-y,y:c.y-y},{x:c.x+y,y:c.y-y},{x:c.x+y,y:c.y+y},{x:c.x-y,y:c.y+y}];W(e,x,void 0,()=>a.y+.95-.045,a.y-.06,i,i,K)}}}}function Nr(e,t,n,o,r){let s=[.67,.71,.68];for(let i=0;i<t.length;i++){let a=t[i];if(!(a.pts.length<2))for(let f of[0,a.pts.length-1]){let u=a.pts[f],l=a.pts[f===0?1:f-1],c=u.x-l.x,h=u.y-l.y,m=Math.hypot(c,h);if(m<1e-5)continue;c/=m,h/=m;let d=1/0;for(let P=0;P<n.length;P++){let S=n[P],E=n[(P+1)%n.length],_=E.x-S.x,O=E.y-S.y,k=c*O-h*_;if(Math.abs(k)<1e-8)continue;let C=S.x-u.x,A=S.y-u.y,L=(C*O-A*_)/k,F=(C*h-A*c)/k;L>0&&F>=0&&F<=1&&(d=Math.min(d,L))}let p=.3/v,b=d-.04/v;if(!Number.isFinite(d)||d*v>2||b-p<.12/v)continue;let y=.27/v,x=[{x:u.x+c*p-h*y,y:u.y+h*p+c*y},{x:u.x+c*b-h*y,y:u.y+h*b+c*y},{x:u.x+c*b+h*y,y:u.y+h*b-c*y},{x:u.x+c*p+h*y,y:u.y+h*p-c*y}];if(!x.every(P=>pe(n,P.x,P.y)))continue;let M=r?.[i]?.belowY,I=M==null?0:a.y-M,w=!!o&&I>.03&&I<=.65;if(w&&o){let P=(S,E)=>Math.hypot((S.x+E.x)/2-o.x,(S.y+E.y)/2-o.y);P(x[0],x[1])>P(x[3],x[2])&&(x=[x[3],x[2],x[1],x[0]])}let g=w?Math.ceil((I-1e-8)/.2):1,R=(P,S,E)=>({x:P.x+(S.x-P.x)*E,y:P.y+(S.y-P.y)*E});for(let P=0;P<g;P++){let S=P/g,E=(P+1)/g,_=[R(x[0],x[3],S),R(x[1],x[2],S),R(x[1],x[2],E),R(x[0],x[3],E)],O=a.y+.008-(w?I*(1-E):0);if(W(e,_,void 0,()=>O,O-(w?I/g+.1:.16),s,[.43,.47,.46],K),!w)continue;let k=Math.hypot(_[3].x-_[0].x,_[3].y-_[0].y)*v,C=Math.min(.04/k,.25),A=R(_[0],_[3],C),L=R(_[1],_[2],C),F=B=>[B.x*v,O+.004,B.y*v],T=[.66,.59,.39];e.tri(F(_[0]),F(_[1]),F(L),[0,1,0],T),e.tri(F(_[0]),F(L),F(A),[0,1,0],T)}}}}function Gr(e,t,n,o,r,s,i,a,f=!1){if(!t.outline||t.outline.length<3)return;let u=n.baseHeightM,l=n.objects.filter(x=>x.type==="shape"&&(x.role==="entrance"||x.role==="exit")),c=Qo(o,a.tierTop);if(!r)return;let h=x=>r.deckAt(x.x,x.y),m=Ko(t,i),d=m[0]??t.outline;if(r.rowLevels.length>=2){let x=kt(r.rowLevels),M=zo(jo(r.rowLevels,n.focal,x),m);for(let w of M){let g=Math.max(u,w.topY-jr);for(let R of s.subtract(w.outline,g))Or(e,R,w.holes,g,u,a.tierTop,a.tierWall,l,!f)}M.length||W(e,d,t.holes,()=>r.landingY,u,c,a.tierWall,K);let I={tread:[c[0]*K.top,c[1]*K.top,c[2]*K.top],riser:[c[0]*.72,c[1]*.72,c[2]*.72]};for(let w of m.length?m:[d])Xo(e,r.rowLevels,n.focal,r.landingY,I,w,x);Dr(e,r.rowLevels,n.focal,u),Nr(e,r.rowLevels,t.outline,n.focal,x);return}let p=r.flat?1/0:Zo,b=x=>r.normalAt(x.x,x.y),y=r.flat?r.landingY:void 0;for(let x of s.subtract(d,y))W(e,x,t.holes,h,u,c,a.tierWall,K,p,b)}function Tc(e,t,n){let o=new Set;for(let i of e.objects)i.type==="section"&&o.add(i.id);let r=new Map;for(let i=0;i<t.length;i++){let a=n.seatOwner[i];if(!a||!o.has(a))continue;let f=n.bySection.get(a);if(f&&f.rowLevels.length>=2)continue;let u=t[i];if(u.kind==="booth")continue;let l=r.get(a);l||(l=new Map,r.set(a,l));let c=u.rowId||`__seat-${i}`,h=l.get(c);h||(h={pts:[],levelM:0,n:0},l.set(c,h)),h.pts.push({x:u.x,y:u.y}),h.levelM+=n.seatDeckY(i),h.n++}let s=[];for(let i of e.objects){if(i.type!=="section")continue;let a=n.bySection.get(i.id);if(a&&a.rowLevels.length>=2){let u=a.rowLevels.filter(l=>!l.patch).map(l=>({pts:l.pts,levelM:l.y}));u.length>=2&&s.push({sectionId:i.id,rows:u});continue}let f=r.get(i.id);f&&s.push({sectionId:i.id,rows:[...f.values()].map(u=>({pts:u.pts,levelM:u.levelM/u.n}))})}return s}function Lc(e,t){let n=1/0;for(let o=0;o<t.length;o++){let r=t[o],s=t[(o+1)%t.length],i=s.x-r.x,a=s.y-r.y,f=Math.max(0,Math.min(1,((e.x-r.x)*i+(e.y-r.y)*a)/(i*i+a*a||1)));n=Math.min(n,Math.hypot(e.x-r.x-f*i,e.y-r.y-f*a))}return n}var jr=.02;function Oc(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 s=1/0,i=-1/0,a=1/0,f=-1/0;for(let l of o.outline)l.x<s&&(s=l.x),l.x>i&&(i=l.x),l.y<a&&(a=l.y),l.y>f&&(f=l.y);let u=r.landingY;for(let l of r.rowLevels)u=Math.min(u,l.y-jr);return[{outline:o.outline,holes:o.holes,surface:r,floorTop:u,minX:s,maxX:i,minY:a,maxY:f}]});return(o,r,s)=>{let i=null;for(let a of n){if(o<a.minX-s||o>a.maxX+s||r<a.minY-s||r>a.maxY+s)continue;let f={x:o,y:r};if(!me(f,a.outline,a.holes)&&Lc(f,a.outline)>s)continue;let u=Math.min(a.surface.deckAt(o,r),a.floorTop);(i===null||u<i)&&(i=u)}return i}}var Bc=3,Fc=.4;function Hr(e,t,n,o,r,s,i=!0){let a=Tc(t,n,o);if(a.length<Bc)return;let f=_r(a,t.focal);if(!f)return;let u=Math.max(0,...f.rings.map(l=>l.arcs.reduce((c,h)=>c+h.binCount,0)))/f.binCount;e.setMaterial(5),Fr(e,f,{bottomY:t.baseHeightM,tierFrontLevels:a.map(l=>Math.min(...l.rows.map(c=>c.levelM))),colors:{bandTop:z(r.tierTop,.8),bandWall:r.tierWall,shellTop:s??z(r.tierWall,1.15),shellWall:s??r.tierWall},ao:K,shapes:t.objects.filter(l=>l.type==="shape"),deriveShell:i&&u>=Fc,standTopNear:Oc(t,o)}),e.setMaterial(0)}var Xr=4;var Dc=[[/\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"]];function Nc(e){if(!e)return null;for(let[t,n]of Dc)if(t.test(e))return n;return null}var Yr="auto-rows-";function Kr(e){return e.id.startsWith(Yr)&&!e.label}var Gc=1.15,jc=.09,Hc=6,Xc=34,Uc=.35,Vc=6,Yc=.35,Kc=.75,zc=12,Wc=2.5,Zc=40,Ur=[18,24],$c=.8,Qc=.6,qc=5,Jc=.3,zr=.4,el=2,tl=400,nl=2.6,ol=1.6,rl=6e3,il=.6,sl="#c3c7cd",Vr=300,al=240;function cl(e,t,n,o){if(!e.fill||!/^#[0-9a-f]{6}$/i.test(e.fill))return null;let r=Rn([...t]),s=new Set;for(let l of o)s.add(Math.floor(Math.atan2(l.y-r.y,l.x-r.x)*180/Math.PI/10));if(s.size*10<al)return null;let{h:i,s:a,l:f}=po(ho(e.fill));return i<70/360||i>170/360||a<.2||f<.08||f>.75||n.some(l=>l!==e&&l.type==="shape"&&ae(l)?.some(c=>En(c,t)))?null:e.kind==="ellipse"?"oval-cricket":e.kind==="rect"?"pitch-football":null}var ll="Estimated from the drawing; confirm with the venue.",Wr=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},Rn=e=>({x:e.reduce((t,n)=>t+n.x,0)/e.length,y:e.reduce((t,n)=>t+n.y,0)/e.length}),wn=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 ul(e){return e.height!==void 0||e.rake!==void 0||e.elevation!==void 0||e.surfaceKind!==void 0}function vn(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 En(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let s=t[o],i=t[r];s.y>e.y!=i.y>e.y&&e.x<(i.x-s.x)*(e.y-s.y)/(i.y-s.y)+s.x&&(n=!n)}return n}function Cn(e,t){let n=t[0],o=1/0;for(let r=0;r<t.length;r++){let s=t[r],i=t[(r+1)%t.length],a=i.x-s.x,f=i.y-s.y,u=a*a+f*f,l=u>0?Math.max(0,Math.min(1,((e.x-s.x)*a+(e.y-s.y)*f)/u)):0,c={x:s.x+a*l,y:s.y+f*l},h=Math.hypot(e.x-c.x,e.y-c.y);h<o&&(o=h,n=c)}return n}function Zr(e,t){let n=0,o=0;for(let r of e.values()){if(r.length<3)continue;let s=r[0],i=r[r.length-1],a=i.x-s.x,f=i.y-s.y,u=Math.hypot(a,f);if(u<1e-6)continue;let l={x:(s.x+i.x)/2,y:(s.y+i.y)/2},c=Cn(l,t),h=c.x-l.x,m=c.y-l.y,d=Math.hypot(h,m);d<1e-6||(o+=Math.abs((-f*h+a*m)/(u*d))*r.length,n+=r.length)}return n?o/n:0}function fl(e,t,n){let o=e.filter(p=>p.type==="shape"),r=o.find(p=>p.role==="stage");if(r){let p=ae(r);return p?{shape:r,centre:Rn(p),outline:p,inferred:!1}:null}if(!n.length)return null;let s=1/0,i=-1/0,a=1/0,f=-1/0;for(let p of n)s=Math.min(s,p.x),i=Math.max(i,p.x),a=Math.min(a,p.y),f=Math.max(f,p.y);let u=(i-s)*(f-a),l=[];for(let p of o){if(p.role)continue;let b=ae(p);if(!b)continue;let y=wn(b);if(y*J*J<6||y>u)continue;let x=Math.min(...b.map(S=>S.x)),M=Math.max(...b.map(S=>S.x)),I=Math.min(...b.map(S=>S.y)),w=Math.max(...b.map(S=>S.y)),g=0;for(let S of n)S.x>x&&S.x<M&&S.y>I&&S.y<w&&En(S,b)&&g++;if(g>n.length*.05)continue;let R=Rn(b),P=Zr(t,b);P>=$c&&l.push({shape:p,centre:R,outline:b,score:P,area:y,box:[x,I,M,w]})}let c=(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=>c(p,b))),m=Math.max(0,...h.map(p=>p.score)),d=h.filter(p=>p.score>=m-.03).sort((p,b)=>b.area-p.area)[0]??null;return d?{shape:d.shape,centre:d.centre,outline:d.outline,inferred:!0}:null}function ml(e,t,n){if(!n||n.length<3)return Math.hypot(e.x-t.x,e.y-t.y);let o=Cn(e,n);return Math.hypot(e.x-o.x,e.y-o.y)}function $r(e){let t=[...e].sort((s,i)=>s.x-i.x||s.y-i.y);if(t.length<3)return t;let n=(s,i,a)=>(i.x-s.x)*(a.y-s.y)-(i.y-s.y)*(a.x-s.x),o=[];for(let s of t){for(;o.length>=2&&n(o[o.length-2],o[o.length-1],s)<=0;)o.pop();o.push(s)}let r=[];for(let s=t.length-1;s>=0;s--){let i=t[s];for(;r.length>=2&&n(r[r.length-2],r[r.length-1],i)<=0;)r.pop();r.push(i)}return[...o.slice(0,-1),...r.slice(0,-1)]}function hl(e){if(!e.length||e.length>rl)return[];let t=[...vn(e).values()],n=t.map((a,f)=>f),o=a=>n[a]===a?a:n[a]=o(n[a]),r=ol/J,s=t.map(a=>({minX:Math.min(...a.map(f=>f.x))-r,maxX:Math.max(...a.map(f=>f.x))+r,minY:Math.min(...a.map(f=>f.y))-r,maxY:Math.max(...a.map(f=>f.y))+r}));for(let a=0;a<t.length;a++)for(let f=a+1;f<t.length;f++){let u=s[a],l=s[f];if(u.maxX<l.minX||l.maxX<u.minX||u.maxY<l.minY||l.maxY<u.minY)continue;t[a].some(h=>t[f].some(m=>Math.hypot(h.x-m.x,h.y-m.y)<=r))&&(n[o(a)]=o(f))}let i=new Map;return t.forEach((a,f)=>{let u=o(f),l=i.get(u);l?l.push(...a):i.set(u,[...a])}),[...i.values()].filter(a=>new Set(a.map(f=>f.rowId)).size>=2)}function dl(e,t,n){if(!t.length)return null;let o=t.filter(P=>n.tableIds.has(P.rowId)||P.kind==="booth").length>t.length/2,r=vn(t),s=!n.outline||Zr(r,n.outline)>=Qc,i=0,a=0;for(let P of r.values()){if(P.length<2)continue;let S=P[0],E=P[P.length-1],_=E.x-S.x,O=E.y-S.y,k=Math.hypot(_,O);if(k<1e-6)continue;let C={x:(S.x+E.x)/2,y:(S.y+E.y)/2},A=s?n.outline?Cn(C,n.outline):n.focal:n.middle,L=-O/k,F=_/k;L*(A.x-C.x)+F*(A.y-C.y)<0&&(L=-L,F=-F),i+=L*P.length,a+=F*P.length}let f={x:t.reduce((P,S)=>P+S.x,0)/t.length,y:t.reduce((P,S)=>P+S.y,0)/t.length};if(Math.hypot(i,a)<1e-9){let P=s?n.focal:n.middle;i=P.x-f.x,a=P.y-f.y}let u=Math.hypot(i,a)||1,l={x:i/u,y:a/u},c=P=>-(P.x*l.x+P.y*l.y),h=P=>-P.x*l.y+P.y*l.x,m=1/0,d=-1/0,p=1/0,b=-1/0,y=1/0,x=new Map;for(let P of t){let S=c(P),E=h(P);m=Math.min(m,S),d=Math.max(d,S),p=Math.min(p,E),b=Math.max(b,E),s&&(y=Math.min(y,ml(P,n.focal,n.outline)));let _=P.logicalRowId??P.rowId,O=x.get(_);O?O.push(S):x.set(_,[S])}s||(y=Math.max(0,m-c(n.middle)));let M=[...x.values()].map(P=>Wr(P)).sort((P,S)=>P-S),I=[];if(!o)for(let P of M)I.length&&P-I[I.length-1]<Yc/J||I.push(P);let w=ul(e),g=De(e,{floorBaseHeightM:n.baseHeightM}),R={id:e.id,section:e,authored:w,plane:n,facing:l,facesAction:s,hull:$r(t),sample:t.filter((P,S)=>S%Math.ceil(t.length/tl)===0),frontD:m,backD:d,latMin:p,latMax:b,frontDistance:y,rowDepths:I,rowCount:I.length,level:0,height:g.height,rake:w?g.rake:0,backHeight:0};return R.backHeight=R.height+(d-m)*J*Math.tan(R.rake*Math.PI/180),R}function pl(e,t,n,o){if(e.length<2)return 0;let r=Math.max(1,t*J),s=n+Gc-o,i=0,a=0;for(let u=1;u<e.length;u++){let l=Math.max(Kc,(e[u]-e[u-1])*J),c=(s+jc)*(r+l)/r;i+=c-s,a+=l,s=c,r+=l}let f=Math.atan(i/a)*180/Math.PI;return Math.round(Math.max(Hc,Math.min(Xc,f))*10)/10}function bl(e,t){if(e.facing.x*t.facing.x+e.facing.y*t.facing.y<Jc)return null;let n=-1/0,o=1/0,r=-1/0;for(let c of t.hull){n=Math.max(n,-(c.x*e.facing.x+c.y*e.facing.y));let h=-c.x*e.facing.y+c.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)<zr*(e.latMax-e.latMin))return null;let i=el/J,a=new Map,f=new Map;for(let c of e.sample){let h=Math.floor((-c.x*e.facing.y+c.y*e.facing.x)/i),m=-(c.x*e.facing.x+c.y*e.facing.y);a.set(h,Math.min(a.get(h)??1/0,m))}for(let c of t.sample){let h=Math.floor((-c.x*e.facing.y+c.y*e.facing.x)/i),m=-(c.x*e.facing.x+c.y*e.facing.y);f.set(h,Math.max(f.get(h)??-1/0,m))}let u=[];for(let[c,h]of a){let m=f.get(c);m!==void 0&&u.push(h-m)}let l=u.length?Wr(u):e.frontD-n;return l<-1/J?null:l}function yl(e,t){if(t.plane.floorIndex>=e.plane.floorIndex)return!1;let n=-1/0,o=1/0,r=1/0,s=-1/0;for(let f of t.hull){let u=-(f.x*e.facing.x+f.y*e.facing.y);n=Math.max(n,u),o=Math.min(o,u);let l=-f.x*e.facing.y+f.y*e.facing.x;r=Math.min(r,l),s=Math.max(s,l)}let i=Math.min(e.latMax,s)-Math.max(e.latMin,r),a=Math.min(e.backD,n)-Math.max(e.frontD,o);return i>zr*(e.latMax-e.latMin)&&a>1/J}function xl(e){let t=new Map,n=[...e].sort((i,a)=>i.plane.floorIndex-a.plane.floorIndex||i.frontDistance-a.frontDistance),o=[],r=new Map,s=i=>{if(i.plane.floorIndex===0||i.plane.baseHeightM>0)return i.plane.baseHeightM;let a=r.get(i.plane.floorIndex-1);return a===void 0?i.plane.baseHeightM:a+Xr};for(let i of n){if(!i.authored){let f=s(i),u;for(let c of o){if(c.plane.floorIndex>i.plane.floorIndex)continue;if(yl(i,c)){let d=c.backHeight+nl;d>f&&(f=d,u=c);continue}let h=bl(i,c);if(h==null)continue;let m=c.backHeight+Uc+Math.min(Vc,Math.max(0,h)*J)*Math.tan(c.rake*Math.PI/180);m>f&&(f=m,u=c)}i.height=Math.round(Math.min(f,i.plane.baseHeightM+Zc)*100)/100;let l=!u&&i.height>i.plane.baseHeightM;if(i.level=u?u.level+1:l?1:0,i.rake=pl(i.rowDepths,i.frontDistance,i.height,i.plane.focalHeightM),!i.facesAction&&i.rowCount<qc)i.rake=0;else if(!u&&!l){let c=Math.max(1e-6,(i.backD-i.frontD)*J);i.rake=Math.min(i.rake,zc,Math.round(Math.atan(Wc/c)*1800/Math.PI)/10)}else i.rowCount>=2&&(i.rake=Math.max(i.rake,Ur[Math.min(i.level,Ur.length)-1]));i.backHeight=i.height+(i.backD-i.frontD)*J*Math.tan(i.rake*Math.PI/180),t.set(i.id,u?.id)}let a=i.plane.floorIndex;r.set(a,Math.min(r.get(a)??1/0,i.height)),o.push(i)}return t}var Pn=(e,t)=>!!e&&e.x===t.x&&e.y===t.y;function Qr(e,t={x:0,y:-40}){let n=$e(e),o=new Map;for(let d of n){if(!d.sectionId)continue;let p=o.get(d.sectionId);p?p.push(d):o.set(d.sectionId,[d])}let r={focalInferred:!1,confident:!1,sections:[]},s=e.floors?.length?e.floors.map((d,p)=>({objects:d.objects,floorIndex:p,floorId:d.id,baseHeightM:d.baseHeightM??0,focal:d.focalPoint??e.focalPoint})):[{objects:e.objects,floorIndex:0,floorId:void 0,baseHeightM:0,focal:e.focalPoint}],i=new Set(s.flatMap(d=>d.objects.filter(p=>p.type==="table").map(p=>p.id))),a=[],f,u=new Set,l=s.map(d=>{let p=E=>!e.floors?.length||E.floorId===d.floorId,b=hl(n.filter(E=>!E.sectionId&&E.kind!=="booth"&&!i.has(E.rowId)&&p(E))),y=[];for(let E of b){let _=Ie(Ce($r(E)),il/J);if(n.some(k=>!p(k)&&En(k,_)))continue;let O=`${Yr}${d.floorIndex}-${y.length}`;u.add(O),o.set(O,E),y.push({type:"section",id:O,label:"",color:sl,outline:_})}let x=y.length?{...d,objects:[...d.objects,...y]}:d,M=new Set(x.objects.filter(E=>E.type==="section").map(E=>E.logicalSectionId??E.id)),I=[...o.entries()].filter(([E])=>M.has(E)).flatMap(([,E])=>E),w=fl(x.objects,vn(I),I),g=x.focal;(w||x.focal&&!Pn(x.focal,t))&&(r.confident=!0),w&&(r.stage??={id:w.shape.id,inferred:w.inferred,...x.floorId?{floorId:x.floorId}:{}},(w.inferred||Pn(x.focal,t))&&(g=w.centre,r.focalInferred=!0));let R=w&&(!w.inferred||wn(w.outline)*J*J<=Vr),P=w?void 0:f,S={tableIds:i,floorIndex:x.floorIndex,floorId:x.floorId,baseHeightM:x.baseHeightM,focal:P?.focal??g,outline:w?.outline??P?.outline,focalHeightM:P?.focalHeightM??x.baseHeightM+(w&&R?Pe({...w.shape,role:"stage"}).heightM:0),middle:I.length?{x:I.reduce((E,_)=>E+_.x,0)/I.length,y:I.reduce((E,_)=>E+_.y,0)/I.length}:g};for(let E of x.objects){if(E.type!=="section")continue;let _=dl(E,o.get(E.logicalSectionId??E.id)??[],S);_&&a.push(_)}return S.outline&&(f=S),Pn(x.focal,S.focal)||(r.focal??=[]).push({...x.floorId?{floorId:x.floorId}:{},point:{...S.focal}}),{unit:x,plane:S,stage:w,planeSeats:I}}),c=xl(a),h=new Map(a.filter(d=>!d.authored).map(d=>[d.id,d])),m=l.map(({unit:d,plane:p,stage:b,planeSeats:y})=>d.objects.map(x=>{let M=x.type==="shape"&&!x.role&&x.id!==b?.shape.id?Nc(x.label):null;if(M&&x.type==="shape")return(r.roles??=[]).push({id:x.id,...p.floorId?{floorId:p.floorId}:{},role:M}),{...x,role:M};let I=b?.inferred&&x.id===b.shape.id&&x.type==="shape"?cl(x,b.outline,d.objects,y):null;if(I&&x.type==="shape")return r.stage?.id===x.id&&(r.stage.field=I),{...x,role:"stage",stageKind:I};if(b?.inferred&&x.id===b.shape.id&&x.type==="shape"&&wn(b.outline)*J*J<=Vr)return r.stage?.id===x.id&&(r.stage.deck=!0),{...x,role:"stage"};let w=x.type==="section"?h.get(x.id):void 0;if(!w||x.type!=="section")return x;let g=w.rowCount>=2&&w.rake>0;u.has(w.id)?r.looseRowBlocks=(r.looseRowBlocks??0)+1:r.sections.push({id:w.id,floorId:p.floorId,surfaceKind:g?"rakedRows":"flat",height:w.height,rake:w.rake,stackedOn:c.get(w.id)});let R={status:"inferred",source:"public-2d-topology",note:ll};return{...x,height:w.height,rake:w.rake,surfaceKind:g?"rakedRows":"flat",physical3dProvenance:{height:R,rake:R,surfaceKind:R}}}));if(e.floors?.length){let d=e.floors.map((p,b)=>({...p,objects:m[b],focalPoint:l[b].plane.focal}));return{doc:{...e,floors:d,objects:d[0].objects,focalPoint:d[0].focalPoint},report:r}}return{doc:{...e,objects:m[0],focalPoint:l[0].plane.focal},report:r}}var qr=/^[\p{L}\p{N}]{1,4}$/u,gl=/^([\p{L}\p{N}]{2,})[\s\-\u2013\u2014\u00b7_./]+(.+)$/u;function Jr(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 i=e.slice(n.length).trim();if(qr.test(i))return i}let s=gl.exec(e);if(s){let i=s[1].toLocaleLowerCase("en-US"),a=s[2].trim();if((r.startsWith(i)||i.startsWith(r))&&qr.test(a))return a}return e}var Ml=6,Sl=2.2,ei=.1,Il=.3,Pl=1.8,Rl=.9,wl=.55,vl=6e3;function ni(e){let{doc:t,units:n,seats:o,surfaces:r,focal:s}=e,i=t.zones??[],a=[];if(i.length){let f=new Map;for(let l of n)for(let c of l.objects)c.type==="section"&&c.zone&&f.set(c.id,c.zone);let u=new Map;for(let l=0;l<o.length;l++){let c=o[l],h=r.seatOwner[l],m=c.zoneId??(h?f.get(h):void 0);if(!m)continue;let d=u.get(m);d||(d={n:0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0,sumY:0},u.set(m,d)),d.n++,c.x<d.minX&&(d.minX=c.x),c.y<d.minY&&(d.minY=c.y),c.x>d.maxX&&(d.maxX=c.x),c.y>d.maxY&&(d.maxY=c.y),d.sumY+=r.seatDeckY(l)}for(let l of i){let c=u.get(l.id),h=[];for(let[m,d]of f)d===l.id&&h.push(m);if(!c||c.n===0){a.push({id:l.id,label:l.label,color:oe(l.color),sectionIds:h,seatCount:0,center:[0,0,0],radius:0,focalWorld:[(l.focalPoint??s).x*v,1.5,(l.focalPoint??s).y*v]});continue}a.push({id:l.id,label:l.label,color:oe(l.color),sectionIds:h,seatCount:c.n,center:[(c.minX+c.maxX)/2*v,c.sumY/c.n,(c.minY+c.maxY)/2*v],radius:.5*Math.hypot((c.maxX-c.minX)*v,(c.maxY-c.minY)*v)||1,focalWorld:[(l.focalPoint??s).x*v,1.5,(l.focalPoint??s).y*v]})}}return a}function oi(e){let{doc:t,units:n,seats:o,surfaces:r,seatData:s,hintedSeatFloor:i,zones:a,focal:f}=e,u=[],l=[],c=[];for(let h of a)h.seatCount!==0&&u.push({id:`zone:${h.id}`,kind:"zone",text:h.label,anchor:[h.center[0],h.center[1]+Ml,h.center[2]],color:t.zones?.find(m=>m.id===h.id)?.color});{let h=new Map,m=new Map;for(let d=0;d<o.length;d++){let p=r.seatOwner[d];if(!p)continue;let b=h.get(p);b||(b={n:0,x:0,y:0,deck:0},h.set(p,b)),b.n++,b.x+=o[d].x,b.y+=o[d].y,b.deck+=r.seatDeckY(d);let y=m.get(p);y||(y={minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0,minDeck:1/0,maxDeck:-1/0},m.set(p,y)),y.minDeck=Math.min(y.minDeck,r.seatDeckY(d)),y.maxDeck=Math.max(y.maxDeck,r.seatDeckY(d)),o[d].x<y.minX&&(y.minX=o[d].x),o[d].x>y.maxX&&(y.maxX=o[d].x),o[d].y<y.minY&&(y.minY=o[d].y),o[d].y>y.maxY&&(y.maxY=o[d].y)}for(let d of n)for(let p of d.objects){if(p.type!=="section"||Kr(p))continue;let b=h.get(p.id);if(!b||b.n===0)continue;let y=m.get(p.id),x=[b.x/b.n*v,b.deck/b.n,b.y/b.n*v],M=p.displayLabel||p.label||p.id;l.push({id:p.id,floorIndex:d.index,label:M,seatCount:b.n,center:x,radius:Math.max(1,Math.hypot(y.maxX-y.minX,y.maxY-y.minY)*.5*v),box:{min:[y.minX*v-.4,y.minDeck,y.minY*v-.4],max:[y.maxX*v+.4,y.maxDeck+1,y.maxY*v+.4]},focalWorld:[d.focal.x*v,d.baseHeightM+1.5,d.focal.y*v]});let I=t.floors?.[d.index]?.name?.trim().toLocaleLowerCase();n.length>1&&I===M.trim().toLocaleLowerCase()||u.push({id:`section:${p.id}`,kind:"section",text:M,anchor:[x[0],x[1]+Sl,x[2]],floorIndex:d.index})}}{for(let b of n)for(let y of b.objects){if(y.type!=="gaArea")continue;let x=it(y.points);if(!x)continue;let M=y.displayLabel||y.label||y.id;u.push({id:`ga:${y.id}`,kind:"ga",text:y.capacity>0?`${M} \xB7 ${y.capacity.toLocaleString()}`:M,anchor:[x.x*v,b.baseHeightM+Pl,x.y*v],floorIndex:b.index})}let h=new Map,m=new Map;for(let b of n)for(let y of b.objects)if(y.type==="section"&&h.set(y.id,y.displayLabel||y.label||y.id),y.type==="row"){let x=y.displayLabel?.trim()||y.segmentedRow?.displayLabel?.trim();x&&m.set(y.id,x)}let d=new Map;for(let b=0;b<o.length;b++){let y=o[b],x=Math.hypot(y.x-f.x,y.y-f.y),M=d.get(y.rowId);(!M||x>M.far)&&d.set(y.rowId,{seat:y,index:b,far:x})}for(let[b,y]of d){let x=r.seatOwner[y.index]??y.seat.sectionId,M=ti(y.seat.label,b,h.get(x??""),m.get(b));M&&u.push({id:`row:${b}`,kind:"row",text:M,anchor:[y.seat.x*v,r.seatDeckY(y.index)+Rl,y.seat.y*v],floorIndex:i[y.index]})}let p=new Map;for(let b=0;b<o.length;b++){let y=o[b],x=p.get(y.rowId);x||(x={n:0,x:0,y:0,z:0,minX:1/0,maxX:-1/0,minZ:1/0,maxZ:-1/0,label:ti(y.label,y.rowId,h.get(r.seatOwner[b]??y.sectionId??""),m.get(y.rowId)),sectionId:r.seatOwner[b]??y.sectionId},p.set(y.rowId,x));let M=b*3,I=s.iPosition[M],w=s.iPosition[M+1],g=s.iPosition[M+2];x.n++,x.x+=I,x.y+=w,x.z+=g,x.minX=Math.min(x.minX,I),x.maxX=Math.max(x.maxX,I),x.minZ=Math.min(x.minZ,g),x.maxZ=Math.max(x.maxZ,g)}for(let[b,y]of p)c.push({id:b,label:y.label,sectionId:y.sectionId,seatCount:y.n,center:[y.x/y.n,y.y/y.n,y.z/y.n],radius:Math.max(.8,Math.hypot(y.maxX-y.minX,y.maxZ-y.minZ)*.5)});if(o.length<=vl)for(let b=0;b<o.length;b++){let y=o[b],x=El(y.displayLabel||y.label);x&&u.push({id:`seat:${y.id}`,kind:"seat",seatWidthM:s.iChairWidth[b]*2,text:x,anchor:[y.x*v,r.seatDeckY(b)+wl,y.y*v],floorIndex:i[b]})}}for(let h of n)for(let m of h.objects)if(m.type==="shape"&&m.role&&["entrance","exit","screen","suite","obstruction"].includes(m.role)){let d=ae(m),p=d?it(d):null;if(!p||!m.label)continue;u.push({id:`architecture:${m.id}`,kind:"annotation",text:m.label,anchor:[p.x*v,h.baseHeightM+Pe(m).heightM+ei,p.y*v],color:m.fill,floorIndex:h.index})}else if(m.type==="text"){if(!m.text)continue;u.push({id:`text:${m.id}`,kind:"annotation",text:m.text,anchor:[m.position.x*v,h.baseHeightM+ei,m.position.y*v],color:m.color,rotation:m.rotation,floorIndex:h.index})}else if(m.type==="booth"){let d=_e(m);if(!d)continue;let p=it(d);if(!p)continue;u.push({id:`booth:${m.id}`,kind:"booth",text:m.displayLabel||m.label||m.id,anchor:[p.x*v,h.baseHeightM+jt+Il,p.y*v],floorIndex:h.index})}return{labels:u,sections:l,rows:c}}function ri(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 El(e){let t=e.lastIndexOf("-");return t>=0&&t<e.length-1?e.slice(t+1):e}function ti(e,t,n,o){if(o?.trim())return o.trim();let r=e?e.lastIndexOf("-"):-1,s=r>0?e.slice(0,r):t;return s&&Jr(s,n)}function ii(e){let{doc:t,units:n,seats:o,surfaces:r,solids:s,hintedSeatFloor:i,seatFloor:a}=e,f=[];{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<s.floor.length;h+=1){let m=Math.max(0,Math.min(n.length-1,Math.round(s.floor[h]))),d=h*3,p=u[m];p.minX=Math.min(p.minX,s.position[d]),p.minY=Math.min(p.minY,s.position[d+1]),p.minZ=Math.min(p.minZ,s.position[d+2]),p.maxX=Math.max(p.maxX,s.position[d]),p.maxY=Math.max(p.maxY,s.position[d+1]),p.maxZ=Math.max(p.maxZ,s.position[d+2])}let l=new Map;for(let h=0;h<n.length;h++)for(let m of n[h].objects)m.type==="section"&&l.set(m.id,h);let c=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 m=r.seatOwner[h],d=(m!==null?l.get(m):void 0)??i[h];if(d===void 0)continue;let p=c[d],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*v,p.sumDeck+=y,p.sumZ+=b.y*v,p.minDeck=Math.min(p.minDeck,y),p.maxDeck=Math.max(p.maxDeck,y+1.6),a[h]=d}for(let h=0;h<n.length;h++){let m=c[h],d=t.floors?.[h],p=u[h],b=Math.min(m.n?m.minX*v:n[h].focal.x*v-1,Number.isFinite(p.minX)?p.minX:1/0),y=Math.max(m.n?m.maxX*v:n[h].focal.x*v+1,Number.isFinite(p.maxX)?p.maxX:-1/0),x=Math.min(m.n?m.minY*v:n[h].focal.y*v-1,Number.isFinite(p.minZ)?p.minZ:1/0),M=Math.max(m.n?m.maxY*v:n[h].focal.y*v+1,Number.isFinite(p.maxZ)?p.maxZ:-1/0),I=Math.min(m.n?Math.min(n[h].baseHeightM,m.minDeck):n[h].baseHeightM,Number.isFinite(p.minY)?p.minY:1/0),w=Math.max(m.n?Math.max(m.maxDeck,I+.5):I+.5,Number.isFinite(p.maxY)?p.maxY:-1/0),g=[m.n?m.sumX/m.n:(b+y)/2,m.n?m.sumDeck/m.n:(I+w)/2,m.n?m.sumZ/m.n:(x+M)/2],R=Math.max(1,.5*Math.hypot(y-b,w-I,M-x));f.push({index:h,id:d?.id??`floor-${h}`,label:d?.name??(n.length>1?`Floor ${h+1}`:"Venue"),seatCount:m.n,center:g,radius:R,box:{min:[b,I,x],max:[y,w,M]},focalWorld:[n[h].focal.x*v,n[h].baseHeightM+1.5,n[h].focal.y*v]})}}return f}function An(e){if(e.length<3)return e.map(s=>({...s}));let t=[...e].sort((s,i)=>s.x-i.x||s.y-i.y),n=(s,i,a)=>(i.x-s.x)*(a.y-s.y)-(i.y-s.y)*(a.x-s.x),o=s=>{let i=[];for(let a of s){for(;i.length>=2&&n(i[i.length-2],i[i.length-1],a)<=0;)i.pop();i.push(a)}return i.pop(),i},r=[...o(t),...o([...t].reverse())];return r.length>=3?r.map(s=>({...s})):t.map(s=>({...s}))}function _n(e,t){let n=1/0,o=1/0,r=-1/0,s=-1/0,i=(a,f)=>{a<n&&(n=a),f<o&&(o=f),a>r&&(r=a),f>s&&(s=f)};for(let a of t)i(a.x,a.y);for(let a of e)for(let f of a.objects)if(f.type==="section")for(let u of f.outline)i(u.x,u.y);else if(f.type==="shape"&&f.points)for(let u of f.points)i(u.x,u.y);else if(f.type==="gaArea")for(let u of f.points)i(u.x,u.y);else if(f.type==="booth"){let u=_e(f);if(u)for(let l of u)i(l.x,l.y)}else if(f.type==="table"){let u=Ht(f);if(u)for(let l of u)i(l.x,l.y)}else if(f.type==="decorImage"){let u=Xt(f);if(u)for(let l of u)i(l.x,l.y)}return Number.isFinite(n)||(n=-100,o=-100,r=100,s=100),{minX:n,minY:o,maxX:r,maxY:s}}function ui(e,t,n,o,r,s,i){if(t.length===1){let a=n.map(h=>({x:h.x,y:h.y}));for(let h of t[0].objects)h.type==="section"?a.push(...h.outline):h.type==="shape"?a.push(...ae(h)??h.points??[]):h.type==="gaArea"?a.push(...h.points):h.type==="booth"?a.push(..._e(h)??[]):h.type==="table"?a.push(...Ht(h)??[]):h.type==="decorImage"&&a.push(...Xt(h)??[]);if(li(e,t[0],n,a,s))return!1;if(i&&ai(e,t[0].baseHeightM,a,s,i))return!0;let f=An(a),u=(r.minX+r.maxX)/2,l=(r.minY+r.maxY)/2,c=f.length>=3?f.map(h=>{let m=h.x-u,d=h.y-l,p=Math.max(1,Math.hypot(m,d));return{x:h.x+m/p*80,y:h.y+d/p*80}}):ft(r.minX-28,r.minY-28,r.maxX-r.minX+56,r.maxY-r.minY+56);return W(e,c,void 0,()=>-.04,-.22,s.ground,s.ground,K),!1}else{let a=t.reduce((b,y)=>y.baseHeightM<b.baseHeightM?y:b);e.setFloor(a.index);let f={...a,objects:t.flatMap(b=>b.objects)},u=n.map(b=>({x:b.x,y:b.y}));for(let b of f.objects)b.type==="section"&&u.push(...b.outline);if(li(e,f,n,u,s))return!1;if(i&&ai(e,a.baseHeightM,u,s,i))return!0;let l=n.filter((b,y)=>o[y]===a.index),c=_n([a],l),h=Math.hypot(c.maxX-c.minX,c.maxY-c.minY),m=Math.max(28,Math.min(80,h*.04)),d=ft(c.minX-m,c.minY-m,c.maxX-c.minX+m*2,c.maxY-c.minY+m*2),p=a.baseHeightM-.03;return W(e,d,void 0,()=>p,p-.22,s.ground,s.ground,K),!1}}function kn(e,t,n,o){let{cx:r,cz:s,radius:i}=n,a=1/0,f=1/0,u=1/0,l=-1/0,c=-1/0,h=-1/0,m=(b,y,x)=>{a=Math.min(a,b),l=Math.max(l,b),f=Math.min(f,y),c=Math.max(c,y),u=Math.min(u,x),h=Math.max(h,x)};for(let b=0;b<e.position.length;b+=3){let y=b/3;o&&y>=o[0]&&y<o[1]||m(e.position[b],e.position[b+1],e.position[b+2])}for(let b=0;b<t.count;b++){let y=b*3,x=t.iPosition[y],M=t.iPosition[y+1],I=t.iPosition[y+2],w=Math.max(.35,t.iMaxRadius[b]??.35);m(x-w,M,I-w),m(x+w,M+1.6,I+w)}Number.isFinite(a)||(a=r-i,l=r+i,f=0,c=i*.16,u=s-i,h=s+i);let d=[(a+l)/2,(f+c)/2,(u+h)/2],p=Math.max(1,.5*Math.hypot(l-a,c-f,h-u));return{center:d,radius:p,minY:f,maxY:c}}function fi(e,t,n,o,r,s){let i=1/0,a=1/0,f=-1/0,u=-1/0;for(let I=0;I<e.count;I++){let w=I*3,g=e.iPosition[w],R=e.iPosition[w+2];g<i&&(i=g),g>f&&(f=g),R<a&&(a=R),R>u&&(u=R)}for(let I of t)i=Math.min(i,I.cx-I.halfX),f=Math.max(f,I.cx+I.halfX),a=Math.min(a,I.cz-I.halfZ),u=Math.max(u,I.cz+I.halfZ);let l=n.minX*v,c=n.maxX*v,h=n.minY*v,m=n.maxY*v,d=l,p=c,b=h,y=m;if(Number.isFinite(i)){let I=Math.max(2,.06*Math.hypot(f-i,u-a));d=Math.max(l,i-I),p=Math.min(c,f+I),b=Math.max(h,a-I),y=Math.min(m,u+I)}let x=Math.min(0,o),M=Math.max(r,s*.05);return{min:[d,x,b],max:[p,M,y]}}var si=12,Cl=.6,Al=40;function ai(e,t,n,o,r){let s=An([...n]);if(s.length<3)return!1;let i=1/0,a=1/0,f=-1/0,u=-1/0;for(let I of s)i=Math.min(i,I.x),f=Math.max(f,I.x),a=Math.min(a,I.y),u=Math.max(u,I.y);let l=Math.hypot(f-i,u-a)*v,c=Ie(s,si/v,1.2),h=Math.max(Al,l*Cl),m=Ie(s,(si+h)/v,1.2);if(c.length!==m.length)return!1;let d=re(o.ground,[.78,.76,.72],.35),p=re(o.ground,[.56,.62,.52],.3);W(e,c,void 0,()=>t-.04,t-.22,d,d,K);let b=t-.05,y=c.map(I=>[I.x*v,b,I.y*v]),x=m.map(I=>[I.x*v,b,I.y*v]),M=[0,1,0];for(let I=0;I<y.length;I++){let w=(I+1)%y.length;e.tri(y[I],x[w],x[I],M,p,r,r),e.tri(y[I],y[w],x[w],M,p,p,r)}return!0}var _l=3e3,kl=20,ci=1.5,Tl=1.2,Ll=.25;function li(e,t,n,o,r){if(!n.length||n.length>_l||o.length<3)return!1;for(let S of t.objects){if(S.type==="shape"&&Kn(S.stageKind))return!1;if(S.type==="section"){let{height:E}=De(S,{floorBaseHeightM:t.baseHeightM});if(E-t.baseHeightM>kl)return!1}}let s=0,i=0;for(let S of o)s+=S.x,i+=S.y;s/=o.length,i/=o.length;let a=0,f=0,u=0;for(let S of o){let E=S.x-s,_=S.y-i;a+=E*E,f+=_*_,u+=E*_}let l=.5*Math.atan2(2*u,a-f),c=Math.cos(l),h=Math.sin(l),m=-h,d=c,p=1/0,b=-1/0,y=1/0,x=-1/0;for(let S of o){let E=(S.x-s)*c+(S.y-i)*h,_=(S.x-s)*m+(S.y-i)*d;p=Math.min(p,E),b=Math.max(b,E),y=Math.min(y,_),x=Math.max(x,_)}let M=S=>[[p-S,y-S],[b+S,y-S],[b+S,x+S],[p-S,x+S]].map(([E,_])=>({x:s+c*E+m*_,y:i+h*E+d*_})),I=M(ci/v),w=M((ci+Ll)/v),g=t.baseHeightM,R=re(r.ground,[.62,.55,.47],.4),P=re(r.ground,[.86,.86,.84],.55);return W(e,w,void 0,()=>g-.04,g-.22,R,R,K),W(e,w,[I.slice().reverse()],()=>g+Tl,g-.04,re(P,[1,1,1],.2),P,K),!0}function mi(e,t,n){let o=()=>({byObjectId:new Map,elements:[]});if(!t||!e)return o();let r=$n(t);if(!r.ok||r.value.id!==e)return o();let s=new Map;for(let c of n)for(let h of c.objects)h.type==="shape"&&s.set(h.id,{shape:h,unit:c});let i=new Set,a=new Set,f=new Map((t.overlay.productionElements??[]).map(c=>{let h=c.runtimeContentImageUrl;return[c.id,typeof h=="string"&&/^(?:blob:|data:image\/|https:\/\/)/.test(h)?h:void 0]})),u=[];for(let c of r.value.overlay.productionElements??[]){let h=s.get(c.objectId),m=h?ae(h.shape):null,d=c.baseElevationM??0;if(!h||!m||m.length<3||!c.id||i.has(c.id)||a.has(c.objectId)||!Number.isFinite(c.heightM)||c.heightM<.05||c.heightM>50||!Number.isFinite(d)||d<-10||d>100)return o();i.add(c.id),a.add(c.objectId);let p=m.map(P=>P.x*v),b=m.map(P=>P.y*v),y=h.unit.baseHeightM+d,x=Math.min(...p),M=Math.max(...p),I=Math.min(...b),w=Math.max(...b),g,R=f.get(c.id)??c.contentImageUrl;if(c.kind==="screen"&&R&&(g=nr(m,y,y+c.heightM,h.unit.focal),!g))if(M-x>=w-I){let P=Math.abs(I-h.unit.focal.y*v)<=Math.abs(w-h.unit.focal.y*v)?I-.006:w+.006;g=[[x,y,P],[M,y,P],[x,y+c.heightM,P],[M,y+c.heightM,P]]}else{let P=Math.abs(x-h.unit.focal.x*v)<=Math.abs(M-h.unit.focal.x*v)?x-.006:M+.006;g=[[P,y,I],[P,y,w],[P,y+c.heightM,I],[P,y+c.heightM,w]]}u.push({id:c.id,objectId:c.objectId,kind:c.kind,floorIndex:h.unit.index,baseY:y,topY:y+c.heightM,bounds:{min:[x,y,I],max:[M,y+c.heightM,w]},occlusion:c.occlusion,...R?{contentImageUrl:R}:{},...g?{contentPlane:g}:{}})}let l=u.sort((c,h)=>c.id.localeCompare(h.id));return{byObjectId:new Map(l.map(c=>[c.objectId,c])),elements:l}}var hi=[.13,.14,.17],ot=[.4,.43,.47],Ol=.18,Bl=.02,Fl=2.4,Dl=1500,Nl=240;function di(e,t,n,o){let r=t.stageKind??"";if(Xe(r)||r==="round"||!o.length)return;let s=ae(t);if(!s||s.length<3)return;let i={x:s.reduce((A,L)=>A+L.x,0)/s.length,y:s.reduce((A,L)=>A+L.y,0)/s.length},a=0,f=0,u=new Set;for(let A of o)a+=A.x,f+=A.y,u.add(Math.floor(Math.atan2(A.y-i.y,A.x-i.x)*180/Math.PI/10));if(u.size*10>Nl)return;let l=i.x-a/o.length,c=i.y-f/o.length,h=Math.hypot(l,c);if(h<1e-6)return;let m=l/h,d=c/h,p=-d,b=m,y=-1/0,x=1/0,M=1/0,I=-1/0;for(let A of s){let L=(A.x-i.x)*m+(A.y-i.y)*d,F=(A.x-i.x)*p+(A.y-i.y)*b;y=Math.max(y,L),x=Math.min(x,L),M=Math.min(M,F),I=Math.max(I,F)}let w=(I-M)*v,g=(y-x)*v;if(w<3||g<1.5||w*g>Dl)return;let R=Ol/v,P=(A,L)=>({x:i.x+m*A+p*L,y:i.y+d*A+b*L}),S=(A,L,F,T)=>[P(A,F),P(A,T),P(L,T),P(L,F)],E=n+Math.max(3.5,Math.min(8,w*.35)),_=n+Math.min(Fl,E-n-1),O=.2/v,k=x+Math.min(g*.25,1.5)/v,C=Bl/v;W(e,S(y-2*R+C,y-R-C,M+R+O,I-R-O),void 0,()=>_,n,hi,hi,K);for(let[A,L]of[[M+R,M+R+O],[I-R-O,I-R]])W(e,S(y-2*R,y-R,A,L),void 0,()=>E+.3,n,ot,ot,K),W(e,S(k+O,y-2*R,A,L),void 0,()=>E+.3,E,ot,ot,K);W(e,S(k,k+O,M+R,I-R),void 0,()=>E+.3,E,ot,ot,K)}function xe(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ye(e){return Array.isArray(e)?e:[]}function Gl(e){let t=[e];for(;t.length;){let n=t.pop();if(Array.isArray(n)){t.push(...n);continue}if(!xe(n))continue;let o=xe(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 Yt(e,t){return!Array.isArray(e)||e.length!==t||!e.every(n=>typeof n=="number"&&Number.isFinite(n))?null:e}function jl(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function Hl(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 s=0;s<4;s++)n[o*4+r]+=e[s*4+r]*t[o*4+s];return n}function Xl(e){let t=Yt(e.matrix,16);if(t)return t;if(e.matrix!==void 0)return null;let n=e.translation===void 0?[0,0,0]:Yt(e.translation,3),o=e.rotation===void 0?[0,0,0,1]:Yt(e.rotation,4),r=e.scale===void 0?[1,1,1]:Yt(e.scale,3);if(!n||!o||!r)return null;let[s,i,a,f]=o,u=Math.hypot(s,i,a,f);if(!(u>1e-8))return null;let l=s/u,c=i/u,h=a/u,m=f/u,d=l+l,p=c+c,b=h+h,y=l*d,x=l*p,M=l*b,I=c*p,w=c*b,g=h*b,R=m*d,P=m*p,S=m*b;return[(1-(I+g))*r[0],(x+S)*r[0],(M-P)*r[0],0,(x-S)*r[1],(1-(y+g))*r[1],(w+R)*r[1],0,(M+P)*r[2],(w-R)*r[2],(1-(y+I))*r[2],0,n[0],n[1],n[2],1]}function Ul(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 Vl(e){let t=e[0],n=e[4],o=e[8],r=e[1],s=e[5],i=e[9],a=e[2],f=e[6],u=e[10],l=s*u-i*f,c=i*a-r*u,h=r*f-s*a,m=t*l+n*c+o*h;if(Math.abs(m)<1e-12)return null;let d=1/m;return[l*d,c*d,h*d,(o*f-n*u)*d,(t*u-o*a)*d,(n*a-t*f)*d,(n*i-o*s)*d,(o*r-t*i)*d,(t*s-n*r)*d]}function pi(e,t,n,o){let r=e[0]*t+e[1]*n+e[2]*o,s=e[3]*t+e[4]*n+e[5]*o,i=e[6]*t+e[7]*n+e[8]*o,a=Math.hypot(r,s,i)||1;return r/=a,s/=a,i/=a,[r,s,i]}function Yl(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 s=t.getUint32(n,!0),i=t.getUint32(n+4,!0);if(n+=8,s%4!==0||n+s>e.byteLength)return null;let a=e.subarray(n,n+s);if(i===1313821514&&!o)try{let f=JSON.parse(new TextDecoder().decode(a).replace(/[\u0000 ]+$/g,""));if(!xe(f))return null;o=f}catch{return null}else if(i===5130562&&!r)r=a;else return null;n+=s}return n===e.byteLength&&o&&r?{json:o,bin:r}:null}function Kl(e){return e===5120||e===5121?1:e===5122||e===5123?2:e===5125||e===5126?4:0}function zl(e){return e==="SCALAR"?1:e==="VEC2"?2:e==="VEC3"?3:e==="VEC4"?4:0}function Wl(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 Zl(e){let t=e instanceof Uint8Array?e:new Uint8Array(e),n=Yl(t);if(!n)return{ok:!1,issue:"invalid_glb"};let{json:o,bin:r}=n;if(!xe(o.asset)||o.asset.version!=="2.0")return{ok:!1,issue:"unsupported_glb"};let s=ye(o.extensionsUsed).filter(I=>typeof I=="string");if(s.includes("KHR_draco_mesh_compression")||Gl(o))return{ok:!1,issue:"draco_not_allowed"};if(s.length||ye(o.extensionsRequired).length)return{ok:!1,issue:"unsupported_glb"};if(ye(o.images).length||ye(o.textures).length)return{ok:!1,issue:"external_resource"};let i=ye(o.buffers);if(i.length!==1||!xe(i[0])||i[0].uri!==void 0||typeof i[0].byteLength!="number"||!Number.isInteger(i[0].byteLength)||i[0].byteLength<0||i[0].byteLength>r.byteLength)return{ok:!1,issue:"external_resource"};let a=ye(o.accessors),f=ye(o.bufferViews),u=ye(o.meshes),l=ye(o.nodes),c=ye(o.scenes),h=typeof o.scene=="number"?o.scene:0;if(!xe(c[h]))return{ok:!1,issue:"unsupported_glb"};let m=new DataView(r.buffer,r.byteOffset,r.byteLength),d=(I,w,g)=>{if(typeof I!="number"||!Number.isInteger(I)||!xe(a[I]))return null;let R=a[I];if(R.type!==w||R.sparse!==void 0||R.normalized===!0||typeof R.count!="number"||!Number.isInteger(R.count)||R.count<1||typeof R.componentType!="number"||!g.includes(R.componentType)||typeof R.bufferView!="number")return null;let P=f[R.bufferView];if(!xe(P)||P.buffer!==0||typeof P.byteLength!="number"||!Number.isInteger(P.byteLength)||P.byteLength<0)return null;let S=zl(R.type),E=Kl(R.componentType),_=typeof P.byteStride=="number"?P.byteStride:S*E,O=typeof P.byteOffset=="number"?P.byteOffset:0,k=typeof R.byteOffset=="number"?R.byteOffset:0,C=O+k,A=k+(R.count-1)*_+S*E;if(!Number.isInteger(_)||!Number.isInteger(O)||!Number.isInteger(k)||_<S*E||O<0||k<0||O+P.byteLength>r.byteLength||A>P.byteLength)return null;let L=[];for(let F=0;F<R.count;F++){let T=[];for(let B=0;B<S;B++){let N=Wl(m,C+F*_+B*E,R.componentType);if(!Number.isFinite(N))return null;T.push(N)}L.push(T)}return L},p=[],b=[],y=0,x=new Set,M=(I,w)=>{if(typeof I!="number"||!Number.isInteger(I)||!xe(l[I])||x.has(I))return!1;x.add(I);let g=l[I],R=Xl(g);if(!R)return!1;let P=Hl(w,R),S=Vl(P);if(!S)return!1;if(g.mesh!==void 0){if(typeof g.mesh!="number")return!1;let E=u[g.mesh];if(!xe(E))return!1;for(let _ of ye(E.primitives)){if(!xe(_)||_.mode!==void 0&&_.mode!==4||!xe(_.attributes))return!1;let O=d(_.attributes.POSITION,"VEC3",[5126]),k=_.attributes.NORMAL===void 0?null:d(_.attributes.NORMAL,"VEC3",[5126]);if(!O||_.attributes.NORMAL!==void 0&&!k)return!1;let C=O.length;if(_.indices!==void 0){let L=typeof _.indices=="number"?a[_.indices]:null;C=xe(L)?L.count:void 0}if(typeof C!="number"||!Number.isInteger(C)||C%3!==0||(y+=C/3,y>1e5))return!1;let A=_.indices===void 0?O.map((L,F)=>[F]):d(_.indices,"SCALAR",[5121,5123,5125]);if(!A||A.length%3!==0||A.length!==C)return!1;for(let L=0;L<A.length;L+=3){let F=[A[L][0],A[L+1][0],A[L+2][0]];if(F.some(N=>!Number.isInteger(N)||N<0||N>=O.length))return!1;let T=F.map(N=>Ul(P,...O[N])),B=null;if(!k){let N=T[1][0]-T[0][0],H=T[1][1]-T[0][1],D=T[1][2]-T[0][2],V=T[2][0]-T[0][0],U=T[2][1]-T[0][1],Z=T[2][2]-T[0][2];B=pi([1,0,0,0,1,0,0,0,1],H*Z-D*U,D*V-N*Z,N*U-H*V)}for(let N=0;N<3;N++)p.push(...T[N]),b.push(...k?pi(S,...k[F[N]]):B)}}}for(let E of ye(g.children))if(!M(E,P))return!1;return x.delete(I),!0};for(let I of ye(c[h].nodes))if(!M(I,jl()))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 bi(e){try{return Zl(e)}catch{return{ok:!1,issue:"invalid_glb"}}}function yi(e){let{doc:t}=e,n=go(t.theme),o=n.structure,r=Yo(t,e.eventConfigurationId??t.eventConfigurationId),s=mi(e.eventConfigurationId,e.eventConfiguration,r),i=e.seats,a=new vt,f=null;if(e.registeredShellGlb){let j=bi(e.registeredShellGlb);if(j.ok){let G=j.position.length/3,Q=new Float32Array(j.position.length),te=n.materials.shell??o.tierWall;for(let ne=0;ne<G;ne++){let ce=j.normal[ne*3+1],se=ce<-.25?.4:.62+.38*Math.max(0,ce);Q[ne*3]=te[0]*se,Q[ne*3+1]=te[1]*se,Q[ne*3+2]=te[2]*se}f={position:j.position,normal:j.normal,color:Q,floor:new Float32Array(G).fill(-2),material:new Float32Array(G),count:G}}}let u=new Map;for(let j of r)for(let G of j.objects)u.set(G.id,j.index),G.type==="section"&&u.set(G.logicalSectionId??G.id,j.index);let l=i.map(j=>u.get(j.sectionId??"")??u.get(j.rowId??"")??0),c=_n(r,i),h=a.vertexCount,d=ui(a,r,i,l,c,o,re(n.background.top,n.background.bottom,.5))?a.vertexCount:h,p=qo(t,i),b=new Map,y=new Map;for(let j of t.categories??[])b.set(j.key,j.color),j.seatGlyph&&y.set(j.key,j.seatGlyph);let x=[],M=$o(r,i,l),I=new Map;i.forEach((j,G)=>{let Q=M.seatDeckY(G);Number.isFinite(Q)&&I.set(j.rowId,Math.min(I.get(j.rowId)??1/0,Q))});let w=new Float32Array(i.length),g=[],R=new Map((t.floors??[]).map((j,G)=>[j.id,G])),P=r.map(()=>[]);for(let j of i){let G=j.floorId?R.get(j.floorId)??0:0;P[Math.min(G,P.length-1)]?.push(j)}let S=(j,G)=>{if(!G||G.length<3)return!1;let Q=Math.min(...G.map(se=>se.x)),te=Math.max(...G.map(se=>se.x)),ne=Math.min(...G.map(se=>se.y)),ce=Math.max(...G.map(se=>se.y));for(let se=0;se<j;se++)for(let Y of P[se])if(!(Y.x<Q||Y.x>te||Y.y<ne||Y.y>ce)&&me(Y,G,void 0))return!0;return!1},E=null,_=j=>r.length===1?i:i.filter((G,Q)=>l[Q]===j),O=(j,G)=>{let Q=_e(j);if(!Q)return!1;let te=1/0,ne=1/0,ce=-1/0,se=-1/0;for(let Y of Q)te=Math.min(te,Y.x),ce=Math.max(ce,Y.x),ne=Math.min(ne,Y.y),se=Math.max(se,Y.y);return i.some((Y,le)=>Y.kind!=="booth"&&(r.length===1||l[le]===G)&&Y.x>te&&Y.x<ce&&Y.y>ne&&Y.y<se&&pe(Q,Y.x,Y.y))};for(let j=0;j<r.length;j++){let G=r[j];a.setFloor(j);let Q=new Tt,te=[],ne=G.objects.filter(Y=>Y.type==="shape"&&(Y.role==="entrance"||Y.role==="exit")),ce=G.objects.filter(Y=>Y.type==="section"&&!!Y.outline&&Y.outline.length>=3),se=vr(G.objects.filter(Y=>Y.type==="booth"),G.focal);for(let Y of G.objects)if(Y.type==="section"){let le=a.vertexCount;Gr(a,Y,G,Jo(Y,p),M.bySection.get(Y.id),Q,ce,o,j>0&&S(j,Y.outline));let Re=a.vertexCount-le;Re>0&&g.push({sectionId:Y.id,start:le,count:Re})}else if(Y.type==="shape"){let le=s.byObjectId.get(Y.id),Re=x.length;a.setMaterial((le?.kind??Y.role)==="screen"?1:0);let we=Y.role==="stage"&&!le?Cr(Y,_(j)):Y,ve=tr(we,te);if(Ir(a,we,G.baseHeightM+ve.supportOffsetM,ve.topOffsetM-ve.supportOffsetM,o,G.focal,x,le,ne),a.setMaterial(0),Y.role==="stage"&&!le&&x.length>Re&&(E??j)===j){E=j;let Se=t.floors?.[j]?.id,he=r.length>1&&Se?i.filter(ze=>ze.floorId===Se):i;di(a,we,x[x.length-1].y,he)}}else Y.type==="gaArea"?Rr(a,Y,G.baseHeightM,oe(b.get(Y.categoryKey)),o):Y.type==="booth"?gr(a,Y,G.baseHeightM,oe(b.get(Y.categoryKey)),o,se.get(Y.id)??G.focal,O(Y,j)):Y.type==="table"?Sr(a,Y,Math.max(G.baseHeightM,I.get(Y.id)??G.baseHeightM),oe(Y.fill??t.theme?.decorFill??"#232c40"),o,!!(Y.fill??t.theme?.decorFill)):Y.type==="decorImage"&&Pr(a,Y,G.baseHeightM,o);Hr(a,G,i,M,o,n.materials.shell,!f)}let k=r.length>1?{x:r.reduce((j,G)=>j+G.focal.x,0)/r.length,y:r.reduce((j,G)=>j+G.focal.y,0)/r.length}:t.focalPoint??{x:(c.minX+c.maxX)/2,y:(c.minY+c.maxY)/2},C=fo(f?[a.build(),f]:[a.build()]),A=Ao(i,e.initialState,M,w,b,y),L=ni({doc:t,units:r,seats:i,surfaces:M,focal:k}),{labels:F,sections:T,rows:B}=oi({doc:t,units:r,seats:i,surfaces:M,seatData:A,hintedSeatFloor:l,zones:L,focal:k}),N=new Map(T.map((j,G)=>[j.id,G]));M.seatOwner.forEach((j,G)=>{A.iSection[G]=j?N.get(j)??-1:-1});let H=ii({doc:t,units:r,seats:i,surfaces:M,solids:C,hintedSeatFloor:l,seatFloor:w});ri(F,H),A.iYaw=Co(A.iPosition,i.length,j=>i[j].rowId,j=>{let G=r[w[j]]?.focal??k;return[G.x*v,G.y*v]});let D=(c.minX+c.maxX)/2*v,V=(c.minY+c.maxY)/2*v,U=.5*Math.hypot((c.maxX-c.minX)*v,(c.maxY-c.minY)*v)||10,Z=kn(C,A,{cx:D,cz:V,radius:U},[h,d]),X=kn(C,A,{cx:D,cz:V,radius:U}),q=fi(A,x,c,Z.minY,Z.maxY,U);return{sharedAisles:mo(r.flatMap(j=>j.objects.flatMap(G=>{if(G.type!=="section")return[];let Q=M.bySection.get(G.id);return Q?[{sectionId:G.id,floorIndex:j.index,rows:Q.rowLevels}]:[]}))),solids:C,sectionSolidRanges:g,seats:A,seatSectionIds:M.seatOwner,bounds:{center:[(q.min[0]+q.max[0])/2,(q.min[1]+q.max[1])/2,(q.min[2]+q.max[2])/2],radius:U,groundY:0,box:q},renderBounds:{center:Z.center,radius:Z.radius},clipBounds:{center:X.center,radius:X.radius},stateColorLUT:Mo(n,Ct),theme:n,seatCount:i.length,focalWorld:[k.x*v,1.5,k.y*v],zones:L,stages:x,productionElements:s.elements,sections:T,rows:B,labels:F,floors:H}}function $l(e,t){let{doc:n,report:o}=Qr(e),r=o.confident&&(o.sections.length>0||!!o.looseRowBlocks);if(!r&&!o.roles?.length)return null;if(!r){let f=new Map(o.roles.map(m=>[m.id,m.role])),u=m=>m.map(d=>d.type==="shape"&&f.has(d.id)?{...d,role:f.get(d.id)}:d),l=e.floors?.map(m=>({...m,objects:u(m.objects)})),c=new Float64Array(t.length).fill(Number.NaN),h=new Float64Array(t.length*2).fill(Number.NaN);return t.forEach((m,d)=>{m.eyeHeightM!==void 0&&(c[d]=m.eyeHeightM),m.focalPoint&&(h[d*2]=m.focalPoint.x,h[d*2+1]=m.focalPoint.y)}),{doc:{...e,objects:l?.[0]?.objects??u(e.objects),...l?{floors:l}:{}},report:o,eyeHeightM:c,focal:h}}let s=new Map($e(n).map(f=>[f.id,f])),i=new Float64Array(t.length).fill(Number.NaN),a=new Float64Array(t.length*2).fill(Number.NaN);return t.forEach((f,u)=>{let l=s.get(f.id)??f;l.eyeHeightM!==void 0&&(i[u]=l.eyeHeightM),l.focalPoint&&(a[u*2]=l.focalPoint.x,a[u*2+1]=l.focalPoint.y)}),{doc:n,report:o,eyeHeightM:i,focal:a}}function Ql(e,t){return e.map((n,o)=>{let r=t.eyeHeightM[o],s=t.focal[o*2],i=t.focal[o*2+1],a={...n};return Number.isNaN(r)?delete a.eyeHeightM:a.eyeHeightM=r,Number.isNaN(s)?delete a.focalPoint:a.focalPoint={x:s,y:i},a})}function xi(e){let t=e.estimate===!1?null:$l(e.doc,e.seats);return t?{input:{...e,doc:t.doc,seats:Ql(e.seats,t)},estimate:t}:{input:e}}function ql(e){return[e.solids.position,e.solids.normal,e.solids.color,e.solids.floor,e.solids.material,e.seats.iPosition,e.seats.iState,e.seats.iCategory,e.seats.iMaxRadius,e.seats.iRing,e.seats.iFloor,e.seats.iYaw,e.seats.iChairWidth,e.seats.iGlyph,e.seats.iPhysicalSeat].map(n=>n.buffer)}var gi=self;gi.onmessage=e=>{let t=performance.now(),n=!e.data.seats,o=e.data.seats??$e(e.data.doc),{input:r,estimate:s}=xi({doc:e.data.doc,seats:o,eventConfigurationId:e.data.eventConfigurationId,eventConfiguration:e.data.eventConfiguration,registeredShellGlb:e.data.registeredShellGlb,estimate:e.data.estimate}),i=yi(r),a=ql(i);s&&a.push(s.eyeHeightM.buffer,s.focal.buffer),gi.postMessage({model:i,buildMs:performance.now()-t,...n?{seats:o}:{},...s?{estimate:s}:{}},a)};
1
+ "use strict";var Xi=Object.create;var Vn=Object.defineProperty;var Ui=Object.getOwnPropertyDescriptor;var Vi=Object.getOwnPropertyNames;var Yi=Object.getPrototypeOf,Ki=Object.prototype.hasOwnProperty;var Wi=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Vi(t))!Ki.call(e,r)&&r!==n&&Vn(e,r,{get:()=>t[r],enumerable:!(o=Ui(t,r))||o.enumerable});return e};var Te=(e,t,n)=>(n=e!=null?Xi(Yi(e)):{},Wi(t||!e||!e.__esModule?Vn(n,"default",{value:e,enumerable:!0}):n,e));var Qu=Math.PI/180;function tn(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 ut(e){return e.length?tn(e):null}function Yn(e,t){let n=1-t,o=n*n*n,r=3*n*n*t,i=3*n*t*t,s=t*t*t;return{x:o*e.start.x+r*e.control1.x+i*e.control2.x+s*e.end.x,y:o*e.start.y+r*e.control1.y+i*e.control2.y+s*e.end.y}}function Kn(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[Yn(e,.5)];let o=Array.from({length:n+1},(f,c)=>Yn(e,c/n)),r=new Float64Array(o.length);for(let f=1;f<o.length;f+=1){let c=o[f].x-o[f-1].x,l=o[f].y-o[f-1].y;r[f]=r[f-1]+Math.hypot(c,l)}let i=r[r.length-1];if(i<=1e-9)return Array.from({length:t},()=>({...e.start}));let s=[],a=1;for(let f=0;f<t;f+=1){let c=i*f/(t-1);for(;a<r.length-1&&r[a]<c;)a+=1;let l=r[a-1],u=r[a],h=u===l?0:(c-l)/(u-l);s.push({x:o[a-1].x+(o[a].x-o[a-1].x)*h,y:o[a-1].y+(o[a].y-o[a-1].y)*h})}return s}function Wn(e,t,n){return Math.max(t,Math.min(n,e))}function zn(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,m)=>h.segmentedRow.componentIndex-m.segmentedRow.componentIndex),s=i[0]?.segmentedRow?.componentCount??0,a=i[0]?.segmentedRow;if(!a||!(s>=2&&i.length===s&&a?.boundaryBefore==="start"&&i.every((h,m)=>h.segmentedRow?.kind==="segmented-row-v1"&&h.segmentedRow.groupId===o&&h.segmentedRow.componentCount===s&&h.segmentedRow.componentIndex===m&&h.segmentedRow.repeatLabelOnComponents===a.repeatLabelOnComponents&&(m===0?h.segmentedRow.boundaryBefore==="start":h.segmentedRow.boundaryBefore!=="start")&&h.segmentedRow.displayLabel===a.displayLabel)))continue;let c=i.reduce((h,m)=>h+m.seatCount,0),l=0,u=0;for(let h of i)h.segmentedRow.boundaryBefore==="break"&&(l+=1),t.set(h.id,{groupId:o,adjacencyOffset:l,displayOffset:u,displayLabel:a.displayLabel,totalSeats:c,canonical:i[0],viewFromSeatUrl:a.viewFromSeatUrl,viewFromSeatMeta:a.viewFromSeatMeta,confidenceEvidence:a.confidenceEvidence}),l+=h.seatCount,u+=h.seatCount}return t}var zi="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var Zi="abcdefghijklmnopqrstuvwxyz";function $i(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 nn(e,t=!1){let n=t?Zi:zi;return $i(Math.max(0,Math.floor(e)-1),n)}var Qi=[[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 Zn(e){if(!Number.isFinite(e)||e<=0)return String(e);let t=Math.floor(e),n="";for(let[o,r]of Qi)for(;t>=o;)n+=r,t-=o;return n}function qi(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 Et(e,t){let n=e.seatLabelStart??1,o=e.seatNumbering?.direction??"ltr",r=e.seatNumbering?.step??1,i=e.seatNumbering?.scheme??"decimal",s=e.seatNumbering?.prefix??"",a=e.seatNumbering?.endAt,f=e.seatCount;if(i==="updown"||i==="updown-descending"){let m=Math.ceil(f/2),d=i==="updown"?t<m?n+2*t:n-1+2*(f-t):t<m?n+2*(m-1-t):n+1+2*(t-m);return`${s}${d}`}let c=i==="odd"||i==="even"?2:r,l=a!=null&&Number.isFinite(a)?a-(f-1)*c:n,u=o==="center"?qi(f)[t]:o==="rtl"?f-1-t:t,h;switch(i){case"odd":{let m=l%2===1?l:l+1;h=String(m+u*2);break}case"even":{let m=l%2===0?l:l+1;h=String(m+u*2);break}case"roman":h=Zn(l+u*r);break;case"letters-upper":h=nn(l+u*r,!1);break;case"letters-lower":h=nn(l+u*r,!0);break;default:h=String(l+u*r);break}return`${s}${h}`}function Ji(e){return{...e.canonical,seatCount:e.totalSeats,label:e.displayLabel,displayLabel:e.displayLabel}}function $n(e,t,n){return n?.label??`${e.seatLabelBase??e.label}-${Et(e,t)}`}function on(e,t,n,o){if(o?.displayLabel)return o.displayLabel;if(e.seatDisplayLabelMode==="number")return Et(e,t);if(!n)return`${e.displayLabel||e.label}-${Et(e,t)}`;let r=Ji(n),i=n.displayOffset+t;return`${n.displayLabel}-${Et(r,i)}`}var Q=.02291666666666667,Ie=1/Q,es=58,ts=es*Q;var ns=3,Qn=0,rn=120,os=0,rs=45,is=7,Ce=1.2;function sn(e,t,n,o){return Number.isFinite(e)?Math.max(t,Math.min(n,e)):o}function ss(e){return!Number.isFinite(e)||!Number.isInteger(e)||e<0?0:e<=is?e:ns}function Ge(e,t={}){let n=sn(t.floorBaseHeightM,Qn,rn,0),o=Math.min(rn,n+ss(e.elevation)*ts),r=e.height===void 0?o:sn(e.height,Qn,rn,o),i=sn(e.rake,os,rs,0);return{height:r,rake:i}}function qn(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 qe(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],s=e[r+1],a=s.x-i.x,f=s.y-i.y,c=a*a+f*f,l=c>1e-12?((t-i.x)*a+(n-i.y)*f)/c:0;l<0?l=0:l>1&&(l=1);let u=t-(i.x+l*a),h=n-(i.y+l*f);if(Math.abs(u)>=o||Math.abs(h)>=o)continue;let m=Math.hypot(u,h);m<o&&(o=m)}return o}function as(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 s=Math.hypot(i.x-t,i.y-n);s>r&&(r=s)}return{cx:t,cy:n,r}}function Jn(e,t){return Math.hypot(e.cx-t.cx,e.cy-t.cy)-e.r-t.r}function an(e,t){let n=1/0;for(let o of qn(e)){let r=qe(t,o.x,o.y);r<n&&(n=r)}for(let o of qn(t)){let r=qe(e,o.x,o.y);r<n&&(n=r)}return n}function cs(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 u=Math.hypot(l.x-n,l.y-o);u>r&&(r=u,i=l)}let s=i.x-n,a=i.y-o,f=Math.hypot(s,a);f>1e-9?(s/=f,a/=f):(s=1,a=0);let c=e.map((l,u)=>({p:l,i:u,t:(l.x-n)*s+(l.y-o)*a})).sort((l,u)=>l.t-u.t);return{pts:c.map(l=>l.p),seatIndices:c.map(l=>t[l.i])}}function cn(e){let t=e.length;if(t<3)return null;let n=0,o=0;for(let y of e)n+=y.x,o+=y.y;n/=t,o/=t;let r=0,i=0,s=0,a=0,f=0,c=0,l=0;for(let y of e){let I=y.x-n,P=y.y-o;r+=I*I,s+=P*P,i+=I*P,a+=I*I*I,f+=P*P*P,c+=I*P*P,l+=P*I*I}let u=r*s-i*i;if(Math.abs(u)<1e-9)return null;let h=(a+c)/2,m=(f+l)/2,d=(h*s-m*i)/u,p=(m*r-h*i)/u,b=d+n,x=p+o;return!Number.isFinite(b)||!Number.isFinite(x)?null:{cx:b,cy:x}}var ls=.15;function us(e){if(e.length<2)return null;let t=e.map(E=>{let g=0,S=0;for(let M of E.pts)g+=M.x,S+=M.y;return{x:g/E.pts.length,y:S/E.pts.length}}),n=0,o=0;for(let E of t)n+=E.x,o+=E.y;n/=t.length,o/=t.length;let r=0,i=0,s=0;for(let E of t){let g=E.x-n,S=E.y-o;r+=g*g,i+=g*S,s+=S*S}let a=r+s,f=r*s-i*i,c=a/2+Math.sqrt(Math.max(0,a*a/4-f)),l,u;Math.abs(i)>1e-12?(l=c-s,u=i):r>=s?(l=1,u=0):(l=0,u=1);let h=Math.hypot(l,u);if(!(h>1e-12))return null;l/=h,u/=h;let m=0,d=0,p=0;for(let E of e){if(E.pts.length<2)continue;let g=E.pts[0],S=E.pts[E.pts.length-1],M=S.x-g.x,R=S.y-g.y,v=Math.hypot(M,R);if(!(v>1e-9))continue;let T=M/v,k=R/v;m+=(T*T-k*k)*v,d+=2*T*k*v,p+=v}if(p>0&&Math.hypot(m,d)>=ms*p){let E=Math.atan2(d,m)/2,g=Math.cos(E),S=Math.sin(E);Math.abs(l*g+u*S)>hs&&(l=-S,u=g)}let b=1/0,x=-1/0,y=[];for(let E of e){let g=1/0,S=-1/0;for(let M of E.pts){let R=M.x*l+M.y*u;R<g&&(g=R),R>S&&(S=R),R<b&&(b=R),R>x&&(x=R)}y.push(S-g)}let I=x-b;return I>1e-9?(y.sort((E,g)=>E-g),y[Math.min(y.length-1,Math.floor(y.length*.9))]/I<=fs?{x:l,y:u}:null):null}var fs=.35,ms=.8,hs=.7;function At(e,t,n,o){let r=new Map;for(let g of n){let S=t[g],M=S.rowId||`__seat-${g}`,R=r.get(M);R||(R={pts:[],idx:[]},r.set(M,R)),R.pts.push({x:S.x,y:S.y}),R.idx.push(g)}if(!r.size)return{sectionId:e,rows:[],blockCount:0};let i=[];for(let[g,S]of r){let M=cs(S.pts,S.idx),R=0;for(let v of M.pts)R+=Math.hypot(v.x-o.x,v.y-o.y);i.push({id:g,pts:M.pts,seatIndices:M.seatIndices,blockId:-1,ordinal:0,blockDepth:0,focalDistance:R/M.pts.length})}let s=i.map(g=>as(g.pts)),a=i.length<=256?i.length*(i.length-1)/2:0,f=a?new Float64Array(a):null;f?.fill(Number.NaN);let c=f?new Map(i.map((g,S)=>[g,S])):null,l=(g,S)=>(g>S&&([g,S]=[S,g]),g*(2*i.length-g-1)/2+(S-g-1)),u=(g,S)=>{if(!f)return an(i[g].pts,i[S].pts);let M=l(g,S),R=f[M];if(!Number.isNaN(R))return R;let v=an(i[g].pts,i[S].pts);return f[M]=v,v},h=(g,S)=>c?u(c.get(g),c.get(S)):an(g.pts,S.pts),m=[];for(let g=0;g<i.length;g++){let S=1/0;for(let M=0;M<i.length;M++){if(g===M||Jn(s[g],s[M])>=S)continue;let R=u(g,M);R<S&&(S=R)}Number.isFinite(S)&&m.push(S)}m.sort((g,S)=>g-S);let d=m.length?m[Math.floor(m.length/2)]:1,p=Math.max(d*1.8,1e-6),b=i.map(()=>[]);for(let g=0;g<i.length;g++)for(let S=g+1;S<i.length;S++)Jn(s[g],s[S])>p||u(g,S)<=p&&(b[g].push(S),b[S].push(g));let x=0;for(let g=0;g<i.length;g++){if(i[g].blockId!==-1)continue;let S=x++,M=[g];for(i[g].blockId=S;M.length;){let R=M.pop();for(let v of b[R])i[v].blockId===-1&&(i[v].blockId=S,M.push(v))}}let y=new Map;for(let g of i){let S=y.get(g.blockId)??[];S.push(g),y.set(g.blockId,S)}let I=[];for(let g of i){if(g.pts.length<4)continue;let S=cn(g.pts);S&&(!Number.isFinite(S.cx)||!Number.isFinite(S.cy)||I.push({x:S.cx,y:S.cy}))}let P=I.length>=2?(()=>{let g=I.map(R=>R.x).sort((R,v)=>R-v),S=I.map(R=>R.y).sort((R,v)=>R-v),M=Math.floor(I.length/2);return{cx:g[M],cy:S[M]}})():null;if(P){let g=k=>Math.hypot(k.x-P.cx,k.y-P.cy),S=1/0,M=-1/0,R=[];for(let k of i){let _=1/0,A=-1/0;for(let C of k.pts){let L=g(C);L<_&&(_=L),L>A&&(A=L)}R.push(A-_),_<S&&(S=_),A>M&&(M=A)}let v=M-S;R.sort((k,_)=>k-_);let T=R[Math.min(R.length-1,Math.floor(R.length*.9))];if(v>1e-9&&T/v<=ls){let k=i.map(D=>{let U=0;for(let V of D.pts)U+=g(V);return{row:D,radius:U/D.pts.length}}),_=0,A=0;for(let D of k)_+=D.radius,A+=D.row.focalDistance;_/=k.length,A/=k.length;let C=0;for(let D of k)C+=(D.radius-_)*(D.row.focalDistance-A);if(C<0)for(let D of k)D.radius=-D.radius;let F=1/0;for(let D of k)D.radius<F&&(F=D.radius);k.sort((D,U)=>D.radius-U.radius);let O=-1,B=-1/0,N=v/Math.max(1,k.length)*.5,H=[];for(let D of k)D.radius-B>N&&(O++,B=D.radius),D.row.ordinal=O,D.row.blockDepth=D.radius-F,H.push(D.row);return{sectionId:e,rows:H,blockCount:x}}}let E=[];for(let[,g]of y){let S=us(g);if(S){let M=k=>{let _=0;for(let A of k.pts)_+=A.x*S.x+A.y*S.y;return _/k.pts.length};g.sort((k,_)=>M(k)-M(_)),g.length>=2&&g[0].focalDistance>g[g.length-1].focalDistance&&g.reverse();let R=[],v=d*.5;for(let k of g){let _=R[R.length-1];_&&Math.abs(M(k)-M(_[0]))<v?_.push(k):R.push([k])}let T=0;for(let k=0;k<R.length;k++){if(k>0){let _=1/0;for(let A of R[k-1])for(let C of R[k])_=Math.min(_,h(A,C));T+=_}for(let _ of R[k])_.ordinal=k,_.blockDepth=T,E.push(_)}}else{let M=1/0;for(let R of g)R.focalDistance<M&&(M=R.focalDistance);g.sort((R,v)=>R.focalDistance-v.focalDistance);for(let R=0;R<g.length;R++)g[R].ordinal=R,g[R].blockDepth=Math.max(0,g[R].focalDistance-M),E.push(g[R])}}return{sectionId:e,rows:E,blockCount:x}}var ds=/^\d{4}-\d{2}-\d{2}$/;function ps(e){let t=Date.parse(e);return Number.isFinite(t)?ds.test(e)?t+864e5:t:null}function bs(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=ps(e.validUntil);return n===null?!1:(t instanceof Date?t.getTime():t)<n}function ys(e,t,n){return!(e.eventConfigurationId&&e.eventConfigurationId!==t||e.eventConfigurationVersion!==void 0&&e.eventConfigurationVersion!==n)}function xs(e){return e.status!=="draft"&&e.status!=="retracted"}function gs(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 eo(e,t={}){return!!e&&xs(e)&&ys(e,t.activeConfigurationId,t.activeConfigurationVersion)&&gs(e,t.activeBasisSha256)&&bs(e,t.now)}var Ms=new Set(["pitch-football","rink-hockey","track-athletics","oval-cricket","pitch-rugby","diamond-baseball","court-basketball","court-tennis","ring-boxing"]),Ss=new Set(["pitch-football","track-athletics","oval-cricket","pitch-rugby","diamond-baseball"]);function We(e){return!!e&&Ms.has(e)}function vt(e){return!!e&&Ss.has(e)}var Ct=1.1,Is={"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}},Rs={"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 Ps=Math.PI*2;function ws(e,t,n,o,r,i){return{x:r+e*n-t*o,y:i+e*o+t*n}}function to(e,t){let n=Math.max(0,e-t),o=[],r=20;for(let i=0;i<=r;i++){let s=-Math.PI/2+i/r*Math.PI;o.push({x:n+t*Math.cos(s),y:t*Math.sin(s)})}for(let i=0;i<=r;i++){let s=Math.PI/2+i/r*Math.PI;o.push({x:-n+t*Math.cos(s),y:t*Math.sin(s)})}return o}var no=(()=>{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,s=[],a=Math.atan2(o.y-r,o.x),f=Math.atan2(o.y-r,-o.x);for(let c=0;c<=24;c++){let l=a+(f-a)*c/24;s.push({x:i*Math.cos(l),y:r+i*Math.sin(l)})}return{half:70,home:t,backstop:n,fence:s}})();var _t="#f1f5f9";function ft(e){return We(e)}function je(e,t,n,o,r=32){let i=[];for(let s=0;s<r;s++){let a=s/r*Ps;i.push({x:e+n*Math.cos(a),y:t+o*Math.sin(a)})}return i}function Le(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 Es(e){let{kind:t,cx:n,cy:o,width:r,height:i}=e,s=(e.rotation??0)*Math.PI/180,a=Math.cos(s),f=Math.sin(s),c=r/2,l=i/2,u=[],h=Is[t],m=p=>h?p/h.width*r:0,d=p=>h?p/h.height*i:0;switch(t){case"pitch-football":{u.push({points:[{x:0,y:-l},{x:0,y:l}],closed:!1}),u.push({points:je(0,0,m(9.15),d(9.15)),closed:!0});for(let p of[-1,1])u.push({points:Le(p*(c-m(16.5)/2),0,m(16.5)/2,d(40.32)/2),closed:!0}),u.push({points:Le(p*(c-m(5.5)/2),0,m(5.5)/2,d(18.32)/2),closed:!0});break}case"rink-hockey":{u.push({points:[{x:0,y:-l},{x:0,y:l}],closed:!1,ink:"#d63b3b"});for(let p of[-1,1]){u.push({points:[{x:p*m(7.5),y:-l},{x:p*m(7.5),y:l}],closed:!1,ink:"#2f6ecb"}),u.push({points:[{x:p*(c-m(4)),y:-d(11)},{x:p*(c-m(4)),y:d(11)}],closed:!1,ink:"#d63b3b"});for(let b of[-1,1])u.push({points:je(p*m(20.5),b*d(7),m(4.5),d(4.5)),closed:!0,ink:"#2f6ecb"})}u.push({points:je(0,0,m(4.5),d(4.5)),closed:!0,ink:"#2f6ecb"});break}case"track-athletics":{let b=l-d(1.22)*8;b>0&&u.push({points:to(c-m(1.22)*8,b),closed:!0,fill:"#2f7d4f"});for(let x=1;x<8;x++){let y=d(1.22)*x,I=l-y;if(I<=0)break;u.push({points:to(c-m(1.22)*x,I),closed:!0})}break}case"oval-cricket":{u.push({points:je(0,0,m(27.4),d(27.4+20.12/2),40),closed:!0}),u.push({points:Le(0,0,m(3.05)/2,d(20.12)/2),closed:!0,ink:"#d8cfae"});break}case"pitch-rugby":{let p=b=>({points:[{x:m(b),y:-l},{x:m(b),y:l}],closed:!1});u.push(p(0));for(let b of[-1,1]){u.push(p(b*50),p(b*28));for(let x=-35;x<35;x+=4)u.push({points:[{x:m(b*10),y:d(x)},{x:m(b*10),y:d(Math.min(35,x+2))}],closed:!1})}break}case"diamond-baseball":{let p=(L,F)=>({x:m(L),y:d(F)}),{home:b}=no,x=27.43,y=x/Math.SQRT2,I={x:b.x+y,y:b.y-y},P={x:b.x,y:b.y-2*y},E={x:b.x-y,y:b.y-y},g={x:b.x,y:b.y-18.44},S="#b98a59",M=Rs["diamond-baseball"],R=38.94,v=[p(b.x,b.y)],T=Math.atan2(b.y-R/Math.SQRT2-g.y,R/Math.SQRT2),k=Math.PI-T;for(let L=0;L<=16;L++){let F=T-(T+Math.PI*2-k)%(Math.PI*2)*(L/16);v.push(p(g.x+29*Math.cos(F),g.y+29*Math.sin(F)))}u.push({points:v,closed:!0,fill:S,ink:S});let _={x:b.x,y:b.y-y},A=[{x:b.x,y:b.y},I,P,E].map(L=>p(_.x+(L.x-_.x)*.84,_.y+(L.y-_.y)*.84));u.push({points:A,closed:!0,fill:M,ink:M}),u.push({points:je(m(g.x),d(g.y),m(2.74),d(2.74),20),closed:!0,fill:S,ink:S}),u.push({points:je(m(b.x),d(b.y),m(3.96),d(3.96),20),closed:!0,fill:S,ink:S});let C=no.fence;u.push({points:[p(b.x,b.y),p(C[0].x,C[0].y)],closed:!1}),u.push({points:[p(b.x,b.y),p(C[C.length-1].x,C[C.length-1].y)],closed:!1});for(let L of[I,P,E])u.push({points:Le(m(L.x),d(L.y),m(.3),d(.3)),closed:!0,fill:_t});break}case"court-basketball":{u.push({points:Le(0,0,m(14),d(7.5)),closed:!0}),u.push({points:[{x:0,y:-d(7.5)},{x:0,y:d(7.5)}],closed:!1}),u.push({points:je(0,0,m(1.8),d(1.8),24),closed:!0});for(let p of[-1,1]){let b=p*14,x=p*(14-5.8),y=p*(14-1.575);u.push({points:Le(m((b+x)/2),0,m(2.9),d(2.45)),closed:!0,fill:"#2f5d8a"}),u.push({points:je(m(x),0,m(1.8),d(1.8),24),closed:!0});let I=Math.sqrt(6.75*6.75-6.6*6.6),P=[{x:m(b),y:-d(6.6)}],E=Math.atan2(-6.6,-p*I),g=2*Math.atan2(6.6,I);for(let S=0;S<=16;S++){let M=E-p*g*(S/16);P.push({x:m(y+6.75*Math.cos(M)),y:d(6.75*Math.sin(M))})}P.push({x:m(b),y:d(6.6)}),u.push({points:P,closed:!1})}break}case"court-tennis":{u.push({points:Le(0,0,m(11.885),d(5.485)),closed:!0,fill:"#2b5f99"});for(let p of[-1,1])u.push({points:[{x:-m(11.885),y:p*d(4.115)},{x:m(11.885),y:p*d(4.115)}],closed:!1}),u.push({points:[{x:p*m(6.4),y:-d(4.115)},{x:p*m(6.4),y:d(4.115)}],closed:!1});u.push({points:[{x:-m(6.4),y:0},{x:m(6.4),y:0}],closed:!1}),u.push({points:[{x:0,y:-d(6.4)},{x:0,y:d(6.4)}],closed:!1,ink:"#d1d5db"});break}case"ring-boxing":{u.push({points:Le(0,0,m(3.05),d(3.05)),closed:!0});let x=[[-1,-1,"#c53030"],[1,1,"#2b6cb0"],[1,-1,"#e2e8f0"],[-1,1,"#e2e8f0"]];for(let[y,I,P]of x)u.push({points:Le(y*m(3.05),I*d(3.05),m(.3),d(.3)),closed:!0,fill:P,ink:P});break}default:return[]}return u.map(p=>({...p,points:p.points.map(b=>ws(b.x,b.y,a,f,n,o))}))}function oo(e){if(e.role!=="stage"||!ft(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),s=Math.min(...o),a=Math.max(...o),f=Math.max(1,i-r),c=Math.max(1,a-s);t={cx:r+f/2,cy:s+c/2,width:f,height:c}}return t?Es({kind:e.stageKind,...t}):[]}var As=/^data:image\/(?:png|jpe?g|webp|gif|avif);base64,[a-z0-9+/]+={0,2}$/i,vs=/[\s"'<>`\\]/;function Cs(e){if(typeof e!="string"||!e||e.length>2e6||e!==e.trim())return!1;if(e.startsWith("data:"))return As.test(e);if(vs.test(e))return!1;try{let t=new URL(e);return t.protocol==="https:"&&!t.username&&!t.password}catch{return!1}}function ro(e){let t=e.trim();return Cs(t)?t:null}var ln="seatlayer.event-configuration/1";var Je=100,_s=120,ks=2e5,Ts=1e4,Ls=/^[a-f0-9]{64}$/,Os=new Set(["stage","screen","barrier","camera_platform","sound_desk","rigging_truss"]);function mt(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ze(e,t){return typeof e=="string"&&e.length>=1&&e.length<=t&&e.normalize("NFKC").trim()===e}function Bs(e){return typeof e=="number"&&Number.isInteger(e)&&e>0}function io(e){return!Array.isArray(e)||e.length>ks||!e.every(t=>ze(t,Je))?null:[...new Set(e)].sort()}function Fs(e){return!mt(e)||!ze(e.chartId,Je)||!ze(e.version,Je)||e.sha256!==void 0&&(typeof e.sha256!="string"||!Ls.test(e.sha256))?null:{chartId:e.chartId,version:e.version,...typeof e.sha256=="string"?{sha256:e.sha256}:{}}}function un(e,t,n){return typeof e=="number"&&Number.isFinite(e)&&e>=t&&e<=n}function Ds(e){return mt(e)?e.mode==="none"||e.mode==="opaque"?e.opacity===void 0?{mode:e.mode}:null:e.mode==="partial"&&un(e.opacity,.01,.99)?{mode:"partial",opacity:e.opacity}:null:null}function Ns(e,t){if(e===void 0)return;if(!Array.isArray(e)||e.length>Ts)return null;let n=new Set(t),o=new Set,r=new Set,i=0,s=[];for(let a of e){if(!mt(a)||!ze(a.id,Je)||!ze(a.objectId,Je)||!n.has(a.objectId)||!Os.has(String(a.kind))||!un(a.heightM,.05,50)||a.baseElevationM!==void 0&&!un(a.baseElevationM,-10,100))return null;let f=Ds(a.occlusion);if(!f||o.has(a.id)||r.has(a.objectId))return null;let c=a.contentImageUrl===void 0?void 0:typeof a.contentImageUrl=="string"?ro(a.contentImageUrl):null;if(a.contentImageUrl!==void 0&&(!c||a.kind!=="screen"||++i>1))return null;o.add(a.id),r.add(a.objectId),s.push({id:a.id,objectId:a.objectId,kind:a.kind,heightM:a.heightM,...a.baseElevationM!==void 0?{baseElevationM:a.baseElevationM}:{},occlusion:f,...c?{contentImageUrl:c}:{}})}return s.sort((a,f)=>a.id.localeCompare(f.id))}function Gs(e){let t=[];if(!mt(e))return{issues:[{code:"invalid_export",path:"configuration",message:"Configuration must be an object"}]};e.schema!==ln&&t.push({code:"unsupported_schema",path:"configuration.schema",message:`Configuration schema must be ${ln}`}),ze(e.id,Je)||t.push({code:"invalid_id",path:"configuration.id",message:"Configuration id must contain 1 to 100 normalized characters"}),ze(e.label,_s)||t.push({code:"invalid_label",path:"configuration.label",message:"Configuration label must contain 1 to 120 normalized characters"}),Bs(e.version)||t.push({code:"invalid_version",path:"configuration.version",message:"Configuration version must be a positive integer"});let n=Fs(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=mt(e.overlay)?e.overlay:null,r=io(o?.objectIds),i=io(o?.productionKillSeatIds),s=r?Ns(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"}),s===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||s===null?{issues:t}:{issues:t,value:{schema:ln,id:e.id,label:e.label,version:e.version,baseVenue:n,overlay:{objectIds:r,productionKillSeatIds:i,...s!==void 0?{productionElements:s}:{}}}}}function so(e){let t=Gs(e);return t.value?{ok:!0,value:t.value}:{ok:!1,issues:t.issues}}function js(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 Hs(e,t,n){let o=n*Math.PI/180,r=Math.cos(o),i=Math.sin(o),s=e.x-t.x,a=e.y-t.y;return{x:t.x+s*r-a*i,y:t.y+s*i+a*r}}function ao(e){let t=js(e);if(!t||t.length<2)return null;let n=e.rotation??0,o=Math.abs(n)<1e-6?t:t.map(f=>Hs(f,{x:t.reduce((c,l)=>c+l.x,0)/t.length,y:t.reduce((c,l)=>c+l.y,0)/t.length},n)),r=1/0,i=1/0,s=-1/0,a=-1/0;for(let f of o)r=Math.min(r,f.x),i=Math.min(i,f.y),s=Math.max(s,f.x),a=Math.max(a,f.y);return!Number.isFinite(r)||s-r<1e-6||a-i<1e-6?null:{minX:r,minY:i,maxX:s,maxY:a}}var Xs=5,Us=3,Vs=.92,Ys=1.9,Ks=2,Ws=.6,zs=1,Zs=.06;function $s(e){return e.heightM!==void 0?e.heightM:e.stageKind==="ring-boxing"?Ct:ft(e.stageKind)?Zs:zs}function co(e){let t=1/0,n=1/0,o=-1/0,r=-1/0,i=-1/0;for(let s of fo(e)){let a=s.baseHeightM??0;for(let f of s.objects){if(f.type!=="shape"||f.role!=="stage")continue;let c=ao(f);c&&(t=Math.min(t,c.minX),n=Math.min(n,c.minY),o=Math.max(o,c.maxX),r=Math.max(r,c.maxY),i=Math.max(i,a+$s(f)))}}return!Number.isFinite(t)||!Number.isFinite(i)?null:{minX:t,minY:n,maxX:o,maxY:r,deckTopM:i}}function Qs(e,t,n,o){let r=1/0,i=1/0,s=-1/0,a=-1/0;for(let m of e)Number.isFinite(m.eyeHeightM)&&(r=Math.min(r,m.x),s=Math.max(s,m.x),i=Math.min(i,m.y),a=Math.max(a,m.y));if(!Number.isFinite(r))return null;let f=r*t,c=i*t,l=Math.max(1,Math.ceil((s-r)*t/n)+1),u=Math.max(1,Math.ceil((a-i)*t/n)+1),h=new Float64Array(l*u).fill(-1/0);for(let m of e){if(!Number.isFinite(m.eyeHeightM))continue;let d=m.eyeHeightM-Ce,p=Math.min(l-1,Math.max(0,Math.floor((m.x*t-f)/n))),x=Math.min(u-1,Math.max(0,Math.floor((m.y*t-c)/n)))*l+p,y=d+o;y>h[x]&&(h[x]=y)}return{cellM:n,minX:f,minY:c,cols:l,rows:u,top:h}}function qs(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 lo(e,t,n={}){let o=new Map;if(!t||!e.length)return o;let r=n.metresPerChartUnit??Q,i=n.cellM??Ws,s=n.chairBackM??Vs,a=n.selfRowSkipM??Ks,f=n.clearThreshold??.9,c=n.partialThreshold??.25,l=Math.max(1,n.columns??Xs),u=Math.max(1,n.rows??Us),h=Qs(e,r,i,s);if(!h)return o;let m=(t.maxX-t.minX)*r,d=(t.maxY-t.minY)*r,p=m>=d,b=(t.minX+t.maxX)/2*r,x=(t.minY+t.maxY)/2*r,y=[];for(let P=0;P<l;P++){let E=(P+.5)/l-.5,g=p?b+E*m:b,S=p?x:x+E*d;for(let M=0;M<u;M++){let R=t.deckTopM+(u===1?0:M/(u-1)*Ys);y.push({x:g,y:S,z:R})}}let I=i/2;for(let P of e){if(!Number.isFinite(P.eyeHeightM))continue;let E=P.x*r,g=P.y*r,S=P.eyeHeightM,M=0,R=1/0;for(let T of y){let k=T.x-E,_=T.y-g,A=Math.hypot(k,_);if(!(A>a)){M++;continue}let C=k/A,L=_/A,F=0;for(let O=a;O<A;O+=I){let B=qs(h,E+C*O,g+L*O);if(!(!Number.isFinite(B)||B>=S)&&B>S+(T.z-S)*O/A){F=O;break}}F?R=Math.min(R,F):M++}let v=M/y.length;v>=f||o.set(P.id,{seatId:P.id,mark:v<c?"obstructedView":"restrictedView",visibleFraction:v,totalRays:y.length,atDistanceM:Number.isFinite(R)?R:0})}return o}function uo(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 fn(e){return e?e.accessibility?.length?e.wheelchairSpaceType&&!e.accessibility.includes("wheelchair")?["wheelchair",...e.accessibility]:e.accessibility:e.wheelchairSpaceType?["wheelchair"]:e.accessible?["wheelchair"]:[]:[]}var Tt=Math.PI/180;var ht=16;function mn(e,t,n,o){let r=n*Tt,i=Math.cos(r),s=Math.sin(r);return{x:o.x+e*i-t*s,y:o.y+e*s+t*i}}function yo(e){let{seatCount:t,seatSpacing:n,curve:o,rotation:r,origin:i}=e,s=[];if(e.path)return Kn(e.path,t);if(t<=1)return t===1&&s.push({x:i.x,y:i.y}),s;if(o===0){for(let c=0;c<t;c++)s.push(mn(c*n,0,r,i));return s}let a=o/(t-1)*Tt,f=n/(2*Math.sin(Math.abs(a)/2));for(let c=0;c<t;c++){let l=c*a,u=f*Math.sin(l),h=-f+f*Math.cos(l);s.push(mn(u,h,r,i))}return s}function xo(e){let t=new Map;if(e.overrides)for(let n of e.overrides)t.set(n.index,n);return t}function Js(e,t){let n=xo(e);return yo(e).map((o,r)=>{let i=n.get(r),s=fn(i),a=$n(e,r,i),f={...e.commercial,...i?.commercial};return{index:r,x:o.x+(i?.dx??0),y:o.y+(i?.dy??0),label:a,displayLabel:on(e,r,t,i),categoryKey:i?.categoryKey??e.categoryKey,skipped:!!i?.skip,accessible:s.length>0,accessibility:s,wheelchairSpaceType:i?.wheelchairSpaceType,commercial:Object.values(f).some(c=>c!==void 0&&c!==!1&&c!=="")?f:void 0,glyph:i?.glyph,viewUrl:i?.viewFromSeatUrl??e.viewFromSeatUrl,viewMeta:i?.viewFromSeatUrl?i.viewFromSeatMeta:e.viewFromSeatMeta,labelStyle:i?.labelStyle??e.seatLabelStyle}})}function ea(e){let t=[];for(let n of Js(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 ta(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 na(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,u,h,m)=>{let d=o.get(l),p=fn(d),b=d?.label??`${e.label}-${l+1}`,x=e.displayLabel??e.label;return{index:l,label:b,displayLabel:d?.displayLabel??`${x}-${l+1}`,x:u+(d?.dx??0),y:h+(d?.dy??0),categoryKey:d?.categoryKey??e.categoryKey,skipped:!!d?.skip,accessible:p.length>0,accessibility:p,wheelchairSpaceType:d?.wheelchairSpaceType,commercial:d?.commercial,glyph:d?.glyph,viewUrl:d?.viewFromSeatUrl,viewMeta:d?.viewFromSeatUrl?d.viewFromSeatMeta:void 0,labelStyle:d?.labelStyle,...m?{side:m}:{}}};if(e.shape==="round"){let l=(e.radius??40)+ht,u=e.rotation*Tt,h=Math.max(0,Math.min(360,e.seatArc??360));if(h>=360||n===1){for(let b=0;b<n;b++){let x=u+b/n*2*Math.PI;t.push(r(b,e.center.x+l*Math.cos(x),e.center.y+l*Math.sin(x)))}return t}let m=h*Tt,d=(2*Math.PI-m)/2,p=u+d;for(let b=0;b<n;b++){let x=p+b/(n-1)*m;t.push(r(b,e.center.x+l*Math.cos(x),e.center.y+l*Math.sin(x)))}return t}let i=e.width??80,s=e.height??50,a=ta(e),f=["top","bottom","left","right"],c=0;for(let l of f){let u=a[l];for(let h=0;h<u;h++){let m,d;l==="top"?(m=-i/2+(h+.5)*i/u,d=-s/2-ht):l==="bottom"?(m=-i/2+(h+.5)*i/u,d=s/2+ht):l==="left"?(m=-i/2-ht,d=-s/2+(h+.5)*s/u):(m=i/2+ht,d=-s/2+(h+.5)*s/u);let p=mn(m,d,e.rotation,e.center);t.push(r(c++,p.x,p.y,l))}}return t}function oa(e){return na(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 ra(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 mo(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o].x,s=t[o].y,a=t[r].x,f=t[r].y;s>e.y!=f>e.y&&e.x<(a-i)*(e.y-s)/(f-s)+i&&(n=!n)}return n}function ia(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 s=(e.x-n.x)*(r.x-n.x)+(e.y-n.y)*(r.y-n.y),a=(r.x-n.x)**2+(r.y-n.y)**2;return s>=-1e-7&&s<=a+1e-7})}function hn(e){return Array.isArray(e)?e.filter(t=>Array.isArray(t)&&t.length>=3):[]}function be(e,t,n){return mo(e,t)&&!hn(n).some(o=>mo(e,o)||ia(e,o))}function kt(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 go(e){switch(e.type){case"row":{let t=yo(e),n=xo(e),o=0,r=0,i=0;for(let s=0;s<t.length;s++){let a=n.get(s);a?.skip||(o+=t[s].x+(a?.dx??0),r+=t[s].y+(a?.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 kt(e.points);case"section":return kt(e.outline);case"text":return{x:e.position.x,y:e.position.y};case"shape":return e.points&&e.points.length?kt(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 ho(e,t){return e.length===t.length&&e.every((n,o)=>n.x===t[o].x&&n.y===t[o].y)}function sa(e,t){if(e.type!=="gaArea"||!ho(e.points,t.outline))return!1;let n=hn(e.holes),o=hn(t.holes);return n.length===o.length&&n.every((r,i)=>ho(r,o[i]))}function aa(e,t,n=e.filter(r=>r.type==="section"),o=go(t)){let r="referenceInventorySource"in t?t.referenceInventorySource?.logicalSectionId:void 0;return(r?n.find(s=>(s.logicalSectionId??s.id)===r&&(sa(t,s)||be(o,s.outline,s.holes))):void 0)??n.find(s=>be(o,s.outline,s.holes))}function fo(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 po(e,t,n,o,r,i,s,a,f){let c=[],l=e.filter(p=>p.type==="section"),u=zn(e),h=p=>!p?.eventConfigurationId||p.eventConfigurationId===o&&(p.eventConfigurationVersion===void 0||p.eventConfigurationVersion===f),m=p=>eo(p,{activeConfigurationId:o,activeConfigurationVersion:f,activeBasisSha256:r,now:a}),d=(p,b)=>m(p)?{...p,coverage:b}:void 0;for(let p of e){let b=[];if(p.type==="row"?b=ea(p):p.type==="table"?b=oa(p):p.type==="booth"&&(b=ra(p)),!b.length)continue;for(let E of b)E.viewUrl&&!h(E.viewMeta)&&(E.viewUrl=void 0,E.viewMeta=void 0);if(p.type==="row"){let E=u.get(p.id);if(E){let g=new Map((p.overrides??[]).map(S=>[S.index,S]));for(let S of b){let M=Number(S.id.slice(S.id.lastIndexOf(":")+1));if(!Number.isInteger(M))continue;S.logicalRowId=E.groupId,S.logicalSeatIndex=E.adjacencyOffset+M,g.get(M)?.displayLabel||(S.displayLabel=on(p,M,E)),!S.viewUrl&&E.viewFromSeatUrl&&h(E.viewFromSeatMeta)&&(S.viewUrl=E.viewFromSeatUrl,S.viewMeta=E.viewFromSeatMeta);let R=g.get(M)?.confidenceEvidence;S.confidenceEvidence=d(R,"exact-seat")??d(p.confidenceEvidence,"row-representative")??d(E.confidenceEvidence,"row-representative")}}}let x=aa(e,p,l,p.type==="row"?kt(b):go(p)),y=x?.viewFromSeatUrl,P=(x?.zone?t?.find(E=>E.id===x.zone):void 0)?.focalPoint??n;for(let E of b){if(!E.confidenceEvidence){let g=Number(E.id.slice(E.id.lastIndexOf(":")+1)),S=(p.type==="row"||p.type==="table")&&Number.isInteger(g)?p.overrides?.find(M=>M.index===g)?.confidenceEvidence:void 0;E.confidenceEvidence=d(S,"exact-seat")??(p.type==="row"?d(p.confidenceEvidence,"row-representative"):void 0)}E.confidenceEvidence??=d(x?.confidenceEvidence,"section-representative")??(s?d(s.evidence,s.coverage):void 0),!E.viewUrl&&y&&h(x?.viewFromSeatMeta)&&(E.viewUrl=y,E.viewMeta=x?.viewFromSeatMeta),!E.viewUrl&&i&&h(i.meta)&&(E.viewUrl=i.url,E.viewMeta=i.meta),x&&(E.sectionId=x.logicalSectionId??x.id),x?.zone&&(E.zoneId=x.zone),P&&(E.focalPoint={...P})}c.push(...b)}return c}function et(e,t={}){if(e.floors?.length){let o=[];for(let r of e.floors){let i=r.focalPoint??e.focalPoint,s=r.viewFromSeatUrl?{url:r.viewFromSeatUrl,meta:r.viewFromSeatMeta}:e.viewFromSeatUrl?{url:e.viewFromSeatUrl,meta:e.viewFromSeatMeta}:void 0,a=r.confidenceEvidence?{evidence:r.confidenceEvidence,coverage:"floor-representative"}:e.confidenceEvidence?{evidence:e.confidenceEvidence,coverage:"venue-representative"}:void 0,f=po(r.objects,e.zones,i,e.eventConfigurationId,e.confidenceBasisSha256,s,a,t.now,t.eventConfigurationVersion??e.eventConfigurationVersion);t.resolveEyeHeights!==!1&&bo(r.objects,r.focalPoint??e.focalPoint,r.baseHeightM??0,f);for(let c of f)c.floorId=r.id;for(let c of f)o.push(c)}return o}let n=po(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&&bo(e.objects,e.focalPoint,t.floorBaseHeightM??0,n),ca(e,n,t)}function ca(e,t,n){return!n.deriveRestrictedView||e.derivedRestrictedView===!1||n.resolveEyeHeights===!1||uo(t,lo(t,co(e))),t}function bo(e,t,n,o){let r=e.filter(u=>u.type==="section"),i=n>0||r.some(u=>u.height!==void 0||u.rake!==void 0||(u.elevation??0)>0);if(!r.length||!i||!t){for(let u of o)u.eyeHeightM=n+Ce;return}let s=new Array(o.length),a=new Map;for(let u of r)a.has(u.id)||a.set(u.id,u);let f=new Map,c=new Map;for(let u=0;u<o.length;u++){let h=o[u],d=(h.sectionId?a.get(h.sectionId)??r.find(b=>b.logicalSectionId===h.sectionId&&be({x:h.x,y:h.y},b.outline,b.holes)):void 0)??r.find(b=>be({x:h.x,y:h.y},b.outline,b.holes))??null;if(s[u]=d,!d)continue;f.has(d.id)||f.set(d.id,Ge(d,{floorBaseHeightM:n}));let p=c.get(d.id);p?p.push(u):c.set(d.id,[u])}let l=new Array(o.length).fill(void 0);for(let[u,h]of c){let m=f.get(u);if(!m)continue;let d=m.rake>0?Math.tan(m.rake*Math.PI/180):0,p=At(u,o,h,t);for(let b of p.rows){let x=b.blockDepth*Q*d,y=m.height+x;for(let I of b.seatIndices)l[I]=y}}for(let u=0;u<o.length;u++){let h=o[u],m=s[u];if(!m){h.eyeHeightM=n+Ce;continue}let d=f.get(m.id);h.eyeHeightM=(l[u]??d.height)+Ce}}var So=Te(require("earcut"),1),dn=Te(require("polygon-clipping"),1);function ye(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 xe(e,t,n){let o=!1;for(let r=0,i=e.length-1;r<e.length;i=r++){let s=e[r],a=e[i];s.y>n!=a.y>n&&t<(a.x-s.x)*(n-s.y)/(a.y-s.y)+s.x&&(o=!o)}return o}var w=Q,la=.002;function ua(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]),s=Math.max(o,r,i);if(s<1e-9)return!0;let a=(o+r+i)/2;return 2*Math.sqrt(Math.max(0,a*(a-o)*(a-r)*(a-i)))/s<la}var Ze=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)}},Bt=class{constructor(){this.pos=new Ze;this.nor=new Ze;this.col=new Ze;this.flr=new Ze;this.mat=new Ze;this.currentFloor=0;this.currentMaterial=0}setFloor(t){this.currentFloor=t}setMaterial(t){this.currentMaterial=t}tri(t,n,o,r,i,s=i,a=i){ua(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(s[0],s[1],s[2]),this.col.push3(a[0],a[1],a[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,s,a,f=a,c=a){[...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(s[0],s[1],s[2]),this.col.push3(a[0],a[1],a[2]),this.col.push3(f[0],f[1],f[2]),this.col.push3(c[0],c[1],c[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 fa(e,t,n){let o=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2],s=n[0]-e[0],a=n[1]-e[1],f=n[2]-e[2],c=r*f-i*a,l=i*s-o*f,u=o*a-r*s,h=Math.hypot(c,l,u)||1;return c/=h,l/=h,u/=h,[c,l,u]}function ma(e,t){let n=[...e],o=[];for(let s of e)o.push(s.x,s.y);let r=[];if(t){for(let s of t)if(!(s.length<3)){r.push(n.length);for(let a of s)n.push(a),o.push(a.x,a.y)}}let i=(0,So.default)(o,r.length?r:void 0,2);return{pts:n,tris:i}}function _e(e){return ye(e)<0?[...e].reverse():e}var ha=3;function da(e,t,n,o){let r=o(e),i=o(t),s=o(n),a=(m,d,p,b)=>Math.abs(o({x:(m.x+d.x)/2,y:(m.y+d.y)/2})-(p+b)/2),f=(e.x+t.x+n.x)/3,c=(e.y+t.y+n.y)/3,l=(r+i+s)/3,u=Math.max(a(e,t,r,i),a(t,n,i,s),a(n,e,s,r),Math.abs(o({x:f,y:c})-l)),h=(m,d,p)=>{let b=Math.abs(o({x:(m+f)/2,y:(d+c)/2})-(p+l)/2);b>u&&(u=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+s)/2),h((n.x+e.x)/2,(n.y+e.y)/2,(s+r)/2),u}function dt(e,t,n,o,r){if(r<=0)return da(e,t,n,o);let i={x:(e.x+t.x)/2,y:(e.y+t.y)/2},s={x:(t.x+n.x)/2,y:(t.y+n.y)/2},a={x:(n.x+e.x)/2,y:(n.y+e.y)/2};return Math.max(dt(e,i,a,o,r-1),dt(i,t,s,o,r-1),dt(a,s,n,o,r-1),dt(i,s,a,o,r-1))}function pt(e,t,n,o,r,i,s,a){if(s>0){let h={x:(t.x+n.x)/2,y:(t.y+n.y)/2},m={x:(n.x+o.x)/2,y:(n.y+o.y)/2},d={x:(o.x+t.x)/2,y:(o.y+t.y)/2};pt(e,t,h,d,r,i,s-1,a),pt(e,h,n,m,r,i,s-1,a),pt(e,d,m,o,r,i,s-1,a),pt(e,h,m,d,r,i,s-1,a);return}let f=[t.x*w,r(t),t.y*w],c=[n.x*w,r(n),n.y*w],l=[o.x*w,r(o),o.y*w];if(a){e.triN(f,c,l,a(t),a(n),a(o),i);return}let u=fa(f,c,l);u[1]<0&&(u=[-u[0],-u[1],-u[2]]),e.tri(f,c,l,u,i)}var pa=8;function Mo(e,t,n){if(!Number.isFinite(n))return e;let o=[],r=(i,s,a,f,c)=>{if(c>0){let l={x:(i.x+s.x)/2,y:(i.y+s.y)/2},u=t(l);if(Math.abs(u-(a+f)/2)>n){r(i,l,a,u,c-1),r(l,s,u,f,c-1);return}}o.push(i)};for(let i=0;i<e.length;i++){let s=e[i],a=e[(i+1)%e.length];r(s,a,t(s),t(a),pa)}return o}function Lt(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],s=n[r],a=n[(r+1)%n.length],f=a.x-i.x,c=a.y-i.y,l=Math.hypot(f,c);l>t&&Math.abs((s.x-i.x)*c-(s.y-i.y)*f)/l<t||o.push(s)}return o.length>=3?o:n}var Ot=.001*Ie*.1;function W(e,t,n,o,r,i,s,a,f=1/0,c){if(!t||t.length<3||(f===void 0&&(f=1/0),Math.abs(ye(t))<1e-4))return;let l=Lt(Mo(Lt(_e(t),Ot),o,f),Ot),u=n?.map(g=>Lt(Mo(Lt(_e(g),Ot),o,f),Ot)).filter(g=>g.length>=3&&Math.abs(ye(g))>=1e-4),{pts:h,tris:m}=ma(l,u),d=[i[0]*a.top,i[1]*a.top,i[2]*a.top],p=[i[0]*a.bottomCap,i[1]*a.bottomCap,i[2]*a.bottomCap],b=[s[0]*a.top,s[1]*a.top,s[2]*a.top],x=[s[0]*a.wallBottom,s[1]*a.wallBottom,s[2]*a.wallBottom],y=0;if(Number.isFinite(f))for(;y<ha;y++){let g=0;for(let S=0;S<m.length;S+=3){let M=dt(h[m[S]],h[m[S+1]],h[m[S+2]],o,y);M>g&&(g=M)}if(g<=f)break}for(let g=0;g<m.length;g+=3){let S=h[m[g]],M=h[m[g+1]],R=h[m[g+2]];pt(e,S,M,R,o,d,y,c);let v=[S.x*w,r,S.y*w],T=[M.x*w,r,M.y*w],k=[R.x*w,r,R.y*w];e.tri(v,k,T,[0,-1,0],p)}let I=g=>{if(y<=0)return g;let S=1<<y,M=[];for(let R=0;R<g.length;R++){let v=g[R],T=g[(R+1)%g.length];for(let k=0;k<S;k++){let _=k/S;M.push({x:v.x+(T.x-v.x)*_,y:v.y+(T.y-v.y)*_})}}return M},P=tn(l),E=[{ring:I(l),flip:!1}];if(u)for(let g of u)g.length>=3&&E.push({ring:I(g),flip:!0});for(let{ring:g,flip:S}of E)for(let M=0;M<g.length;M++){let R=g[M],v=g[(M+1)%g.length],T=(v.x-R.x)*w,_=(v.y-R.y)*w,A=-T,C=Math.hypot(_,A)||1;_/=C,A/=C;let L=(R.x+v.x)/2-P.x,F=(R.y+v.y)/2-P.y,O=_*L+A*F;S&&(O=-O),O<0&&(_=-_,A=-A);let B=[_,0,A],N=[R.x*w,o(R),R.y*w],H=[v.x*w,o(v),v.y*w],D=[R.x*w,r,R.y*w],U=[v.x*w,r,v.y*w];e.tri(N,H,U,B,b,b,x),e.tri(N,U,D,B,b,x,x)}}function Io(e){let t=0;for(let f of e)t+=f.count;let n=new Float32Array(t*3),o=new Float32Array(t*3),r=new Float32Array(t*3),i=new Float32Array(t),s=new Float32Array(t),a=0;for(let f of e)n.set(f.position,a*3),o.set(f.normal,a*3),r.set(f.color,a*3),i.set(f.floor,a),s.set(f.material,a),a+=f.count;return{position:n,normal:o,color:r,floor:i,material:s,count:t}}function Pe(e,t,n=2.5){if(t<=0||e.length<3)return e;let o=_e(e),r=o.length,i=[];for(let a=0;a<r;a++){let f=o[a],c=o[(a+1)%r],l=c.x-f.x,u=c.y-f.y,h=Math.hypot(l,u)||1;i.push({x:u/h,y:-l/h})}let s=[];for(let a=0;a<r;a++){let f=o[a],c=i[(a-1+r)%r],l=i[a],u=c.x+l.x,h=c.y+l.y,m=Math.hypot(u,h),d=()=>{s.push([f.x+c.x*t,f.y+c.y*t]),s.push([f.x+l.x*t,f.y+l.y*t])};if(m<1e-9){d();continue}u/=m,h/=m;let p=u*c.x+h*c.y,b=1/Math.max(p,1e-6);if(!Number.isFinite(b)||b>n){d();continue}s.push([f.x+u*t*b,f.y+h*t*b])}if(s.length<3)return e;try{let a=dn.default.union([[...s,s[0]]]),f=null,c=-1/0;for(let u of a){let h=Math.abs(ye(u[0].map(([m,d])=>({x:m,y:d}))));h>c&&(c=h,f=u[0])}if(!f)return e;let l=f.map(([u,h])=>({x:u,y:h}));if(l.length>1){let u=l[0],h=l[l.length-1];Math.abs(u.x-h.x)<1e-9&&Math.abs(u.y-h.y)<1e-9&&l.pop()}return l.length>=3?l:e}catch{return e}}function He(e,t,n=2.5){if(e.length<3)return[];if(t<=0)return e;let o=_e(e),r=o.length,i=[];for(let f=0;f<r;f++){let c=o[f],l=o[(f+1)%r],u=Math.hypot(l.x-c.x,l.y-c.y)||1;i.push({x:-(l.y-c.y)/u,y:(l.x-c.x)/u})}let s=[],a=[];for(let f=0;f<r;f++){let c=o[f],l=i[(f-1+r)%r],u=i[f],h=l.x+u.x,m=l.y+u.y,d=Math.hypot(h,m),p=d<1e-9?1/0:1/Math.max(h/d*l.x+m/d*l.y,1e-6);if(!Number.isFinite(p)||p>n){s.push({x:c.x+l.x*t,y:c.y+l.y*t},{x:c.x+u.x*t,y:c.y+u.y*t}),a.push(f,f);continue}h/=d,m/=d,s.push({x:c.x+h*t*p,y:c.y+m*t*p}),a.push(f)}for(let f=0;f<s.length;f++){let c=(f+1)%s.length,l=a[f],u=a[c];if(u!==(l+1)%r)continue;let h=o[l],m=o[u];if((s[c].x-s[f].x)*(m.x-h.x)+(s[c].y-s[f].y)*(m.y-h.y)<=0)return[]}try{let f=dn.default.intersection([[...s.map(d=>[d.x,d.y]),[s[0].x,s[0].y]]],[[...o.map(d=>[d.x,d.y]),[o[0].x,o[0].y]]]),c=null,l=0;for(let d of f){let p=Math.abs(ye(d[0].map(([b,x])=>({x:b,y:x}))));p>l&&(l=p,c=d[0])}if(!c)return[];let u=c.map(([d,p])=>({x:d,y:p})),h=u[0],m=u[u.length-1];return u.length>1&&Math.abs(h.x-m.x)<1e-9&&Math.abs(h.y-m.y)<1e-9&&u.pop(),u.length>=3?_e(u):[]}catch{return[]}}function Ft(e,t,n,o,r=28){let i=[];for(let s=0;s<r;s++){let a=s/r*Math.PI*2;i.push({x:e+n*Math.cos(a),y:t+o*Math.sin(a)})}return i}function bt(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 yt=3,$e=.38,xt=.24;function ba(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)*w,i=(n.y-t.y)*w,s=(o.x-t.x)*w,a=(o.y-t.y)*w,f=2*(r*a-i*s);if(Math.abs(f)<1e-7)return null;let c=r*r+i*i,l=s*s+a*a,u=(c*a-l*i)/f+t.x*w,h=(r*l-s*c)/f+t.y*w,m=Math.hypot(t.x*w-u,t.y*w-h);return m<1||m>200||!Number.isFinite(m)||e.some(d=>Math.abs(Math.hypot(d.x*w-u,d.y*w-h)-m)>.03)?null:{x:u,z:h,radius:m}}function Ro(e){let t=[],n=new Map,o=(f,c)=>`${Math.floor(f/yt)},${Math.floor(c/yt)}`;for(let f of e)for(let c of f.rows){for(let u of c.pts){let h=u.x*w,m=u.y*w,d=o(h,m),p=n.get(d)??[];p.push({x:h,z:m,y:c.y,floor:f.floorIndex}),n.set(d,p)}if(c.patch||c.pts.length<2)continue;let l=ba(c.pts);for(let u of[0,c.pts.length-1]){let h=c.pts[u],m=c.pts[u===0?1:u-1],d=h.x-m.x,p=h.y-m.y,b=Math.hypot(d,p);b<1e-6||t.push({sectionId:f.sectionId,floorIndex:f.floorIndex,curve:l,row:c,point:h,x:h.x*w,z:h.y*w,dx:d/b,dz:p/b})}}let r=new Map;t.forEach((f,c)=>{let l=o(f.x,f.z),u=r.get(l)??[];u.push(c),r.set(l,u)});let i=(f,c)=>{let l=Math.floor(f/yt),u=Math.floor(c/yt);return[-1,0,1].flatMap(h=>[-1,0,1].map(m=>`${l+h},${u+m}`))},s=new Map;t.forEach((f,c)=>{let l=-1,u=1/0,h=!1;for(let m of i(f.x,f.z))for(let d of r.get(m)??[]){let p=t[d];if(f.sectionId===p.sectionId&&f.row.blockId===p.row.blockId||f.floorIndex!==p.floorIndex||Math.abs(f.row.y-p.row.y)>.05)continue;let b=p.x-f.x,x=p.z-f.z,y=Math.hypot(b,x);if(y<$e*2+.45||y>yt)continue;let I=f.curve&&p.curve&&Math.hypot(f.curve.x-p.curve.x,f.curve.z-p.curve.z)<=.05&&Math.abs(f.curve.radius-p.curve.radius)<=.05,P=Math.min((b*f.dx+x*f.dz)/y,(-b*p.dx-x*p.dz)/y);(I?P<.8:P<.98)||!I&&(Math.abs(b*f.dz-x*f.dx)>.15||Math.abs(b*p.dz-x*p.dx)>.15)||(y<u-.02?(l=d,u=y,h=!1):Math.abs(y-u)<=.02&&(h=!0))}l>=0&&!h&&s.set(c,l)});let a=[];for(let[f,c]of s){if(f>=c||s.get(c)!==f)continue;let l=t[f],u=t[c],h=Math.hypot(u.x-l.x,u.z-l.z),m=(u.x-l.x)/h,d=(u.z-l.z)/h,p=!1;for(let x of i((l.x+u.x)/2,(l.z+u.z)/2))for(let y of n.get(x)??[]){if(y.floor!==l.floorIndex||Math.abs(y.y-l.row.y)>.75)continue;let I=(y.x-l.x)*m+(y.z-l.z)*d,P=Math.abs((y.x-l.x)*d-(y.z-l.z)*m);I>.01&&I<h-.01&&P<xt+$e&&(p=!0)}if(p)continue;let b=(x,y)=>({x:(l.x+m*x-d*y)/w,y:(l.z+d*x+m*y)/w});a.push({sections:[l.sectionId,u.sectionId],blocks:[l.row.blockId,u.row.blockId],floorIndex:l.floorIndex,ends:[l.point,u.point],clearWidthM:h-2*$e,heightM:(l.row.y+u.row.y)/2,outline:[b($e,-xt),b(h-$e,-xt),b(h-$e,xt),b($e,xt)]})}return a}var ya=/^#?([\da-f]{3}|[\da-f]{6})$/i;function Po(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 xa(e){let t=ya.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 ne(e){let t=xa(e);return t?[t[0]/255,t[1]/255,t[2]/255]:null}function ga(e){return .2126*e[0]+.7152*e[1]+.0722*e[2]}function te(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=ga(e);return te(e,[n,n,n],t)}function wo({r:e,g:t,b:n}){let o=e/255,r=t/255,i=n/255,s=Math.max(o,r,i),a=Math.min(o,r,i),f=(s+a)/2;if(s===a)return{h:0,s:0,l:f};let c=s-a,l=f>.5?c/(2-s-a):c/(s+a),u;return s===o?u=((r-i)/c+(r<i?6:0))/6:s===r?u=((i-o)/c+2)/6:u=((o-r)/c+4)/6,{h:u,s:l,l:f}}var Dt=["available","held","sold","selected","dimmed"];function Eo(e){let t=Dt.indexOf(e);return t<0?0:t}var Ao={available:[.24,.82,.52],held:[.34,.39,.45],sold:[.34,.39,.45],selected:[.24,.74,1],dimmed:[.28,.32,.37]};var pn={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]},bn={top:[.05,.06,.08],bottom:[.1,.12,.15]};function z(e,t){return[Math.min(1,e[0]*t),Math.min(1,e[1]*t),Math.min(1,e[2]*t)]}var Ma=.15,Sa=1.6;function vo(e){return Wn(e??1,Ma,Sa)}var Ia=.15,Ra=.9,Pa=1.76;function Co(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 wa(){return{background:{top:[...bn.top],bottom:[...bn.bottom]},sky:Co(null),structure:pn,seatStates:{...Ao},seatScale:1,materials:{seat:null,shell:null,roughness:.78}}}function Ea(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 _o(e){let t=wa();e??={};let n=ne(e.background);if(n){t.background={top:z(n,Ra),bottom:z(n,Pa)},t.sky=Co(n);let a={};for(let[c,l]of Object.entries(pn))a[c]=te(l,n,Ia);n[0]*.2126+n[1]*.7152+n[2]*.0722>.55&&(a.ground=z(n,.86)),t.structure=a}let o=ne(e.selectionColor)??ne(e.accent);o&&(t.seatStates={...t.seatStates,selected:o});let r=e.seatScale;typeof r=="number"&&Number.isFinite(r)&&(t.seatScale=vo(r));let i=Object.fromEntries(Object.entries(e.venue3d??{}).filter(([,a])=>a!=null)),s={...Ea(n),...i};if(s){let a=ne(s.deck),f=ne(s.fascia);a&&(t.structure={...t.structure,tierTop:a,gaTop:a}),f&&(t.structure={...t.structure,tierWall:f,gaWall:f}),t.materials.seat=ne(s.seat),t.materials.shell=ne(s.shell),typeof s.roughness=="number"&&Number.isFinite(s.roughness)&&(t.materials.roughness=Math.min(1,Math.max(0,s.roughness)))}return t}function ko(e,t){let n=[];for(let o of t)n.push(...e.seatStates[o]);return n}function To(e){let t=1/0,n=1/0,o=-1/0,r=-1/0,i=!1;for(let s of e)!Number.isFinite(s.x)||!Number.isFinite(s.y)||(i=!0,s.x<t&&(t=s.x),s.y<n&&(n=s.y),s.x>o&&(o=s.x),s.y>r&&(r=s.y));return i?{minX:t,minY:n,maxX:o,maxY:r}:null}function tt(e,t){return e.minX<=t.maxX&&t.minX<=e.maxX&&e.minY<=t.maxY&&t.minY<=e.maxY}var Aa=[{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"}],zf=new Map(Aa.map(e=>[e.key,e]));var va={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 Lo(e){let t=e?.[0];return t&&va[t]||"#3b82f6"}var Ca=[{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"}],Zf=new Map(Ca.map(e=>[e.key,e]));var _a=["reference-focal","bar","entrance","exit","restroom","screen","sound","concession","coat","wall","rail","suite","obstruction"],$f=new Set(_a);function gt(e){if(e.length<3)return e.map(i=>({...i}));let t=[...e].sort((i,s)=>i.x-s.x||i.y-s.y),n=(i,s,a)=>(s.x-i.x)*(a.y-i.y)-(s.y-i.y)*(a.x-i.x),o=i=>{let s=[];for(let a of i){for(;s.length>=2&&n(s[s.length-2],s[s.length-1],a)<=0;)s.pop();s.push(a)}return s.pop(),s},r=[...o(t),...o([...t].reverse())];return r.length>=3?r.map(i=>({...i})):t.map(i=>({...i}))}var ar=Te(require("polygon-clipping"),1);var Y={top:1,wallBottom:.58,bottomCap:.4};function Qe(e,t){if(!e)return t;let n=z(we(e,.4),.62);return te(t,n,.22)}function Oo(e,t){return e?te(t,z(we(e,.25),.74),.62):t}function Bo(e,t){return e?te(t,z(we(e,.08),.9),.82):t}function Fo(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 s=o.get(i.sectionId);s||(s=new Map,o.set(i.sectionId,s)),s.set(i.categoryKey,(s.get(i.categoryKey)??0)+1)}let r=new Map;for(let[i,s]of o){let a=0,f=0,c=0,l=0;for(let[u,h]of s){let m=ne(n.get(u));m&&(a+=m[0]*h,f+=m[1]*h,c+=m[2]*h,l+=h)}l>0&&r.set(i,[a/l,f/l,c/l])}return r}function Do(e,t){return ne(e.color)??t.get(e.logicalSectionId??e.id)??null}var Mn=Te(require("polygon-clipping"),1);var gn=Te(require("polygon-clipping"),1);var Go=[{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}}],jo=Go.map(e=>e.key),ka=new Map(Go.map(e=>[e.key,e]));function No(e){return typeof e=="string"&&ka.has(e)}function Ho(e,t){return No(e)?e:No(t?.seatGlyph)?t.seatGlyph:"circle"}var de={pedestal:0,pad:1,back:2,arm:3,footrest:4,leg:5,body:10,head:11},Ta=.44,La=.15,Oa=.3,Ba=.24;function Xo(e){return e===void 0||!Number.isFinite(e)||e<=0?Ba:Math.min(Oa,Math.max(La,e*Ta))}var Fa=.05,Uo=.45,Da=Uo+Fa,Na=.92;var rm=[{part:de.pedestal,min:[-.3,0,-.3],max:[.3,.36,.3]},{part:de.pad,min:[-1,.36,-.95],max:[1,Uo,1]},{part:de.back,min:[-1,Da,-1],max:[1,Na,-.72]},{part:de.arm,min:[-1,.44,-.82],max:[-.78,.65,.78]},{part:de.arm,min:[.78,.44,-.82],max:[1,.65,.78]},{part:de.footrest,min:[-.9,.18,.78],max:[.9,.31,1.34]},{part:de.leg,min:[-.82,0,-.7],max:[-.62,.37,-.48]},{part:de.leg,min:[.62,0,-.7],max:[.82,.37,-.48]},{part:de.leg,min:[-.82,0,.48],max:[-.62,.37,.7]},{part:de.leg,min:[.62,0,.48],max:[.82,.37,.7]}],im=[{part:de.body,min:[-.52,.39,-.08],max:[-.08,.55,.82]},{part:de.body,min:[.08,.39,-.08],max:[.52,.55,.82]},{part:de.body,min:[-.47,.05,.58],max:[-.13,.43,.82]},{part:de.body,min:[.13,.05,.58],max:[.47,.43,.82]},{part:de.head,min:[-.16,1.04,-.33],max:[.16,1.1,-.13]}];function Vo(e,t,n,o){let r=new Float32Array(t),i=c=>e[c*3],s=c=>e[c*3+2],a=0,f=(c,l)=>{let u=l-c;for(let h=c;h<l;h++){let[m,d]=o(h),p=m-i(h),b=d-s(h);if(u>=2){let x=Math.max(c,h-1),y=Math.min(l-1,h+1),I=i(y)-i(x),P=s(y)-s(x),E=Math.hypot(I,P);if(E>1e-6){let g=-P/E,S=I/E;g*p+S*b<0&&(g=-g,S=-S),p=g,b=S}}r[h]=p===0&&b===0?0:Math.atan2(p,b)}};for(let c=1;c<=t;c++)(c===t||n(c)!==n(a))&&(f(a,c),a=c);return r}var Nt=.22;var Ga=.42;function ja(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,s=-1/0;for(let d of e)d.x<o&&(o=d.x),d.y<r&&(r=d.y),d.x>i&&(i=d.x),d.y>s&&(s=d.y);let a=Math.max(i-o,1e-6),f=Math.max(s-r,1e-6),c=Math.max(Math.sqrt(a*f/t),1e-6),l=Math.max(1,Math.ceil(a/c)+1),u=Math.max(1,Math.ceil(f/c)+1),h=new Map,m=(d,p)=>{let b=Math.min(l-1,Math.max(0,Math.floor((d-o)/c)));return Math.min(u-1,Math.max(0,Math.floor((p-r)/c)))*l+b};for(let d=0;d<t;d++){let p=m(e[d].x,e[d].y),b=h.get(p);b?b.push(d):h.set(p,[d])}for(let d=0;d<t;d++){let p=e[d],b=Math.min(l-1,Math.max(0,Math.floor((p.x-o)/c))),x=Math.min(u-1,Math.max(0,Math.floor((p.y-r)/c))),y=1/0;for(let I=1;I<=4;I++){for(let P=x-I;P<=x+I;P++)if(!(P<0||P>=u))for(let E=b-I;E<=b+I;E++){if(E<0||E>=l||I>1&&Math.abs(P-x)<I&&Math.abs(E-b)<I)continue;let g=h.get(P*l+E);if(g)for(let S of g){if(S===d)continue;let M=Math.hypot(e[S].x-p.x,e[S].y-p.y);M<y&&(y=M)}}if(Number.isFinite(y)&&y<=I*c)break}n[d]=y}return n}function Ha(e){let t=e.eyeHeightM;return Number.isFinite(t)?Math.max(0,t-Ce):0}function Yo(e,t,n,o,r,i){let s=e.length,a=new Float32Array(s*3),f=new Float32Array(s),c=new Float32Array(s*3),l=new Float32Array(s),u=new Float32Array(s),h=new Float32Array(s),m=new Float32Array(s),d=new Float32Array(s*3),p=new Map,b=ja(e);for(let x=0;x<s;x++){let y=e[x],P=(n?.seatPitchU(x)??b[x])*w;l[x]=Number.isFinite(P)?Math.max(.06,Math.min(Nt,P*Ga)):Nt,u[x]=Xo(Number.isFinite(P)?P:void 0);let E=Ho(y.glyph,{seatGlyph:i?.get(y.categoryKey)});h[x]=jo.indexOf(E),m[x]=y.wheelchairSpaceType==="no-seat"?0:1,a[x*3]=y.x*w,a[x*3+1]=n?n.seatDeckY(x):Ha(y),a[x*3+2]=y.y*w,f[x]=Eo(t?t(y):"available");let g=ne(r?.get(y.categoryKey)??"#6e7bff")??[.43,.48,1];if(c[x*3]=g[0],c[x*3+1]=g[1],c[x*3+2]=g[2],y.accessibility?.length){let S=ne(Lo(y.accessibility));S&&(d[x*3]=S[0],d[x*3+1]=S[1],d[x*3+2]=S[2])}p.set(y.id,x)}return{count:s,iPosition:a,iState:f,iCategory:c,iMaxRadius:l,iRing:d,idToIndex:p,iChairWidth:u,iGlyph:h,iPhysicalSeat:m,iFloor:o??new Float32Array(s),iSection:new Float32Array(s).fill(-1),iYaw:new Float32Array(s)}}var Zo=Te(require("earcut"),1);var Xa=.58,Ko=.01,Re=Nt*1.5*Ie,Ua=.5,Va=.6;function Ya(e,t){let n=e.length,o=[];for(let s=0;s<n;s++){let a=e[Math.max(0,s-1)],f=e[Math.min(n-1,s+1)],c=f.x-a.x,l=f.y-a.y,u=Math.hypot(c,l);if(u<1e-9){o.push([0,0]);continue}c/=u,l/=u,o.push([-l,c])}let r=0;for(let s=0;s<n;s++)r+=(e[s].x-t.x)*o[s][0]+(e[s].y-t.y)*o[s][1];return r<0?o.map(([s,a])=>[-s,-a]):o}function Ka(e,t){if(e.length<2||t<=0)return[...e];let n=[...e],o=(s,a)=>{let f=a.x-s.x,c=a.y-s.y,l=Math.hypot(f,c)||1;return{x:f/l,y:c/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 Wo=Math.PI/12;function Wa(e){if(e.length<3)return[...e];let t=[...e].sort((i,s)=>i.x-s.x||i.y-s.y),n=(i,s,a)=>(s.x-i.x)*(a.y-i.y)-(s.y-i.y)*(a.x-i.x),o=i=>{let s=[];for(let a of i){for(;s.length>=2&&n(s[s.length-2],s[s.length-1],a)<=0;)s.pop();s.push(a)}return s.pop(),s},r=[...o(t),...o([...t].reverse())];return r.length>=3?r:[...e]}function $o(e,t){if(!e.length||!(t>0))return[];let n=Wa(e),o=(a,f,c,l)=>{let u=c-f;for(;u<0;)u+=Math.PI*2;for(;u>Math.PI*2;)u-=Math.PI*2;let h=Math.max(1,Math.ceil(u/Wo)),m=t/Math.cos(u/h/2);for(let d=0;d<=h;d++){let p=f+u*d/h;l.push({x:a.x+Math.cos(p)*m,y:a.y+Math.sin(p)*m})}};if(n.length<3){let a=0,f=0;for(let m of n)a+=m.x,f+=m.y;a/=n.length||1,f/=n.length||1;let c=0;for(let m of n)c=Math.max(c,Math.hypot(m.x-a,m.y-f));let l=[],u=Math.max(3,Math.ceil(Math.PI*2/Wo)),h=(c+t)/Math.cos(Math.PI/u);for(let m=0;m<u;m++){let d=m/u*Math.PI*2;l.push({x:a+Math.cos(d)*h,y:f+Math.sin(d)*h})}return l}let r=n.length,i=[];for(let a=0;a<r;a++){let f=n[a],c=n[(a+1)%r];i.push(Math.atan2(-(c.x-f.x),c.y-f.y))}let s=[];for(let a=0;a<r;a++)o(n[a],i[(a+r-1)%r],i[a],s);return tr(s)}function za(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],s=e[r+1],a=s.x-i.x,f=s.y-i.y,c=a*a+f*f,l=c>1e-12?((t-i.x)*a+(n-i.y)*f)/c:0;l<0?l=0:l>1&&(l=1);let u=Math.hypot(t-(i.x+l*a),n-(i.y+l*f));u<o&&(o=u)}return o}function Gt(e){let t=e.map(r=>{let i=0,s=0;for(let c of r.pts)i+=c.x,s+=c.y;let a=r.pts.length||1;i/=a,s/=a;let f=0;for(let c of r.pts){let l=Math.hypot(c.x-i,c.y-s);l>f&&(f=l)}return{cx:i,cy:s,rad:f}}),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),s=[],a=1/0,f=null;for(let l of i){let u=1/0;for(let h=0;h<e.length;h++){if(h===r||Math.abs(e[h].y-e[r].y)<.001)continue;let m=t[h],d=Math.hypot(l.x-m.cx,l.y-m.cy)-m.rad;if(d>=u&&d>=a)continue;let p=za(e[h].pts,l.x,l.y);p<u&&(u=p),e[h].depth<e[r].depth&&p<a&&(a=p,f=e[h].y)}Number.isFinite(u)&&u>0&&s.push(u)}s.sort((l,u)=>l-u);let c=s.length?s[Math.floor(s.length/2)]:1;o.push({pitch:c,belowY:f})}return o}function Qo(e,t,n,o){let r=e[t],i=r.pts.length>=2?[...r.pts]:r.pts.length===1?(()=>{let l=r.pts[0],u=l.x-o.x,h=l.y-o.y,m=Math.hypot(u,h)||1;u/=m,h/=m;let d=Math.max(n[t].pitch,.001)*.5;return[{x:l.x+h*d,y:l.y-u*d},{x:l.x-h*d,y:l.y+u*d}]})():[];if(i.length<2)return null;let s=0,a=0;for(let l=1;l<i.length;l++){let u=Math.hypot(i[l].x-i[l-1].x,i[l].y-i[l-1].y);u>1e-6&&(s+=u,a++)}let f=a>0?s/a:0,c=Ka(i,Math.max(f*Va,Re));return{pts:c,nrm:Ya(c,o),front:Math.max(n[t].pitch*Xa,Re),back:Math.max(n[t].pitch*Ua,Re)}}var nt=1.5,qo=.3;function yn(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,s=Math.hypot(r,i),a=-1,f=-1;for(let u=1;u<e.length-1;u++){let h=e[u],m=s>1e-12?Math.abs((h.x-n.x)*i-(h.y-n.y)*r)/s:Math.hypot(h.x-n.x,h.y-n.y);m>a&&(a=m,f=u)}if(a<=t||f<0)return[n,o];let c=yn(e.slice(0,f+1),t),l=yn(e.slice(f),t);return[...c.slice(0,-1),...l]}function Jo(e,t){if(e.length<4)return e;let n=yn([...e,e[0]],t);return n.pop(),n.length>=3?n:e}function Za(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 s=t[i];if(!(Math.abs(r.i-s.i)===1||Math.abs(r.i-s.i)===e.length-1||r.maxY<s.minY||s.maxY<r.minY)&&n(r.a,r.b,s.a)*n(r.a,r.b,s.b)<=0&&n(s.a,s.b,r.a)*n(s.a,s.b,r.b)<=0)return!0}}return!1}function er(e,t,n){if(e.length<2)return[];let o=n??Gt(e),r=new Map;for(let s=0;s<e.length;s++){let a=r.get(e[s].blockId);a?a.push(s):r.set(e[s].blockId,[s])}let i=[];for(let[,s]of r){let a=[];for(let y of s){let I=e[y].patch;I&&I.length>=3?i.push({outline:[...I],holes:[],topY:e[y].y}):a.push(y)}if(!a.length)continue;a.sort((y,I)=>e[y].depth-e[I].depth);let c=a.map(y=>Qo(e,y,o,t)).filter(y=>y!==null);if(!c.length)continue;let l=(y,I)=>({x:y.pts[I].x-y.nrm[I][0]*(y.front+nt),y:y.pts[I].y-y.nrm[I][1]*(y.front+nt)}),u=(y,I)=>({x:y.pts[I].x+y.nrm[I][0]*(y.back+nt),y:y.pts[I].y+y.nrm[I][1]*(y.back+nt)}),h=c[0],m=c[c.length-1],d=[];for(let y=0;y<h.pts.length;y++)d.push(l(h,y));for(let y of c)d.push(u(y,y.pts.length-1));for(let y=m.pts.length-1;y>=0;y--)d.push(u(m,y));for(let y=c.length-1;y>=0;y--)d.push(l(c[y],0));let p=tr(d),b=1/0;for(let y of a)e[y].y<b&&(b=e[y].y);if(!Number.isFinite(b))continue;if(p.length>=3&&Math.abs(ye(p))>1e-6&&c.every(y=>{let I=y.pts[Math.floor(y.pts.length/2)];return xe(p,I.x,I.y)})&&!Za(p)){i.push({outline:Jo(p,qo),holes:[],topY:b});continue}for(let y of $a(c))i.push({outline:y,holes:[],topY:b})}return i}function $a(e){let t=[];for(let n of e){let o=[],r=[],i=n.front+nt,s=n.back+nt;for(let f=0;f<n.pts.length;f++){let c=n.pts[f],l=n.nrm[f];o.push([c.x-l[0]*i,c.y-l[1]*i]),r.push([c.x+l[0]*s,c.y+l[1]*s])}let a=[...o,...r.reverse()];a.length<3||(a.push(a[0]),t.push([a]))}if(!t.length)return[];try{let n=gn.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(([f,c])=>({x:f,y:c})),s=i[0],a=i[i.length-1];i.length>1&&Math.abs(s.x-a.x)<1e-9&&Math.abs(s.y-a.y)<1e-9&&i.pop(),i.length>=3&&o.push(Jo(i,qo))}return o}catch{return[]}}function tr(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 xn=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(!xe(n,r.x,r.y)){o=!1;break}if(o)return!0}return!1}};function zo(e,t,n,o,r,i){if(o.length<3)return;if(n.containsAll(o)){let c=[0,1,0],l=o[0];for(let u=1;u+1<o.length;u++){let h=o[u],m=o[u+1];e.tri([l.x*w,r,l.y*w],[h.x*w,r,h.y*w],[m.x*w,r,m.y*w],c,i)}return}let s=o.map(c=>[c.x,c.y]);s.push(s[0]);let a;try{a=gn.default.intersection([s],t)}catch{return}let f=[0,1,0];for(let c of a){if(!c.length||c[0].length<4)continue;let l=c[0],u=[],h=[];for(let d=0;d<l.length-1;d++)u.push(l[d][0],l[d][1]),h.push([l[d][0],l[d][1]]);if(h.length<3)continue;let m=(0,Zo.default)(u,void 0,2);for(let d=0;d<m.length;d+=3){let p=h[m[d]],b=h[m[d+1]],x=h[m[d+2]];e.tri([p[0]*w,r,p[1]*w],[b[0]*w,r,b[1]*w],[x[0]*w,r,x[1]*w],f,i)}}}function nr(e,t,n,o,r,i,s){if(t.length<2)return;let a=s??Gt(t),f=[0,1,0],c=i&&i.length>=3?[[...i.map(m=>[m.x,m.y]),[i[0].x,i[0].y]]]:null,l=i&&i.length>=3?new xn([[...i]]):null,u=m=>{e.setMaterial(2),m(),e.setMaterial(0)},h=m=>{e.setMaterial(3),m(),e.setMaterial(0)};for(let m=0;m<t.length;m++){let d=t[m];if(d.patch&&d.patch.length>=3){let E=[...d.patch],g=a[m].belowY??o;if(h(()=>{if(c&&l)zo(e,c,l,E,d.y,r.tread);else{let S=E[0];for(let M=1;M+1<E.length;M++){let R=E[M],v=E[M+1];e.tri([S.x*w,d.y,S.y*w],[R.x*w,d.y,R.y*w],[v.x*w,d.y,v.y*w],f,r.tread)}}}),d.y>g+Ko){let S=0,M=0;for(let R of E)S+=R.x,M+=R.y;S/=E.length,M/=E.length,u(()=>{for(let R=0;R<E.length;R++){let v=E[R],T=E[(R+1)%E.length],k=T.x-v.x,_=T.y-v.y,A=Math.hypot(k,_);if(A<1e-6)continue;let C=_/A,L=-k/A;(v.x-S)*C+(v.y-M)*L<0&&(C=-C,L=-L);let F=[C,0,L],O=[v.x*w,d.y,v.y*w],B=[T.x*w,d.y,T.y*w],N=[v.x*w,g,v.y*w],H=[T.x*w,g,T.y*w];e.tri(O,B,H,F,r.riser),e.tri(O,H,N,F,r.riser)}})}continue}let p=Qo(t,m,a,n);if(!p)continue;let{pts:b,nrm:x,front:y,back:I}=p,P=a[m].belowY??o;for(let E=0;E+1<b.length;E++){let g=b[E],S=b[E+1],M=x[E],R=x[E+1];if(Math.hypot(S.x-g.x,S.y-g.y)<1e-6||M[0]===0&&M[1]===0||R[0]===0&&R[1]===0)continue;let v=[(g.x-M[0]*y)*w,d.y,(g.y-M[1]*y)*w],T=[(S.x-R[0]*y)*w,d.y,(S.y-R[1]*y)*w],k=[(g.x+M[0]*I)*w,d.y,(g.y+M[1]*I)*w],_=[(S.x+R[0]*I)*w,d.y,(S.y+R[1]*I)*w];if(h(()=>{c&&l?zo(e,c,l,[{x:g.x-M[0]*y,y:g.y-M[1]*y},{x:S.x-R[0]*y,y:S.y-R[1]*y},{x:S.x+R[0]*I,y:S.y+R[1]*I},{x:g.x+M[0]*I,y:g.y+M[1]*I}],d.y,r.tread):(e.tri(v,T,_,f,r.tread),e.tri(v,_,k,f,r.tread))}),d.y>P+Ko){let A=[v[0],P,v[2]],C=[T[0],P,T[2]],L=[-M[0],0,-M[1]];u(()=>{e.tri(v,T,C,L,r.riser),e.tri(v,C,A,L,r.riser)})}}}}function Qa(e,t){let n=e.eventConfigurationIds;return!n?.length||!!t&&n.includes(t)}function or(e,t){return e.filter(n=>n.type!=="shape"||Qa(n,t))}function rr(e,t){let n=e.focalPoint??{x:0,y:0};return e.floors?.length?e.floors.map((o,r)=>({objects:or(o.objects,t),focal:{x:(o.focalPoint??n).x,y:(o.focalPoint??n).y},baseHeightM:o.baseHeightM??0,index:r})):[{objects:or(e.objects,t),focal:n,baseHeightM:0,index:0}]}var qa={minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};function Oe(e){return To(e)??qa}function ir(e,t){let n=Pe(e.outline,Re),o=Oe(n),r=t.filter(s=>s!==e&&s.outline&&s.outline.length>=3&&tt(o,Oe(s.outline)));if(!r.length)return[n];let i=s=>{let a=s.map(f=>[f.x,f.y]);return a.push(a[0]),a};try{let s=Mn.default.difference([i(n)],...r.map(f=>[i(f.outline)])),a=[];for(let f of s){if(!f.length)continue;let c=f[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&&a.push(c)}return a.length?a:[n]}catch{return[n]}}function sr(e,t){if(!t.length)return e;let n=i=>{let s=i.map(a=>[a.x,a.y]);return s.push(s[0]),s},o=t.map(i=>[n(i)]),r=[];for(let i of e){let s;try{s=Mn.default.intersection([n(i.outline)],o.flat())}catch{r.push(i);continue}for(let a of s){if(!a.length)continue;let f=a[0].map(([c,l])=>({x:c,y:l}));if(f.length>1){let c=f[0],l=f[f.length-1];Math.abs(c.x-l.x)<1e-9&&Math.abs(c.y-l.y)<1e-9&&f.pop()}f.length>=3&&r.push({outline:f,holes:[],topY:i.topY})}}return r.length?r:e}function Ja(e,t){return e===void 0||t===void 0?!0:Math.abs(e-t)<.001}var jt=class{constructor(){this.rings=[];this.boxes=[];this.levels=[]}subtract(t,n){let o=t.map(f=>[f.x,f.y]);if(o.length<3)return[];o.push(o[0]);let r=Oe(t),i=this.rings.filter((f,c)=>tt(r,this.boxes[c])&&Ja(n,this.levels[c])),s=[[o]];if(i.length)try{s=ar.default.difference([o],...i).map(c=>c.map(l=>l.map(([u,h])=>[u,h])))}catch{s=[[o]]}this.rings.push([o]),this.boxes.push(r),this.levels.push(n);let a=[];for(let f of s){if(!f.length)continue;let c=f[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&&a.push(c)}return a}};function Ht(e,t){if(!t)return e;let n=1/0,o=-1/0,r=1/0,i=-1/0;for(let u of e)n=Math.min(n,u.x),o=Math.max(o,u.x),r=Math.min(r,u.y),i=Math.max(i,u.y);let s=(n+o)/2,a=(r+i)/2,f=t*Math.PI/180,c=Math.cos(f),l=Math.sin(f);return e.map(u=>{let h=u.x-s,m=u.y-a;return{x:s+h*c-m*l,y:a+h*l+m*c}})}function ie(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=bt(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=Ft(n,o,e.width/2,e.height/2)}return t?Ht(t,e.rotation):null}function Ee(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"&&ft(e.stageKind)?{kind:"stage",heightM:e.stageKind==="ring-boxing"?Ct:.06}:n[t]??{kind:"plate",heightM:.25};return{...o,heightM:e.heightM??o.heightM}}var ec=.08,tc=30,nc=.015;function oc(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o],s=t[r];i.y>e.y!=s.y>e.y&&e.x<(s.x-i.x)*(e.y-i.y)/(s.y-i.y)+i.x&&(n=!n)}return n}function cr(e,t){let n=ie(e)??(e.points?.length?Ht(e.points,e.rotation):null),o=Ee(e),i=!e.role&&o.kind==="plate"&&e.heightM===void 0&&!!n&&Math.abs(ye(n))*Q**2>=tc?nc:o.heightM;if(!n)return{topOffsetM:i,supportOffsetM:0};if(o.kind!=="plate"&&o.kind!=="stage")return{topOffsetM:i,supportOffsetM:0};let s=1/0,a=1/0,f=-1/0,c=-1/0;for(let m of n)s=Math.min(s,m.x),a=Math.min(a,m.y),f=Math.max(f,m.x),c=Math.max(c,m.y);let l=i,u=0,h=1e-6*Math.max(1,f-s,c-a);for(let m of t)f>m.minX&&s<m.maxX&&c>m.minY&&a<m.maxY&&l<=m.topOffsetM+1e-6&&(l=m.topOffsetM+ec),s>=m.minX-h&&f<=m.maxX+h&&a>=m.minY-h&&c<=m.maxY+h&&(!m.poly||n.every(b=>oc(b,m.poly)||rc(b,m.poly,h)))&&(u=Math.max(u,m.topOffsetM));return e.fill&&e.fill!=="none"&&e.fill!=="transparent"&&t.push({minX:s,minY:a,maxX:f,maxY:c,topOffsetM:l,poly:n}),{topOffsetM:l,supportOffsetM:Math.min(u,l)}}function rc(e,t,n){for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[r],s=t[o],a=s.x-i.x,f=s.y-i.y,c=a*a+f*f,l=c?Math.max(0,Math.min(1,((e.x-i.x)*a+(e.y-i.y)*f)/c)):0;if(Math.hypot(e.x-(i.x+l*a),e.y-(i.y+l*f))<=n)return!0}return!1}function Xe(e,t,n){return{x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n}}function ge(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 pe(e,t,n){return[Xe(e[0],e[1],t),Xe(e[0],e[1],n),Xe(e[3],e[2],n),Xe(e[3],e[2],t)]}function Mt(e,t,n){return[Xe(e[0],e[3],t),Xe(e[1],e[2],t),Xe(e[1],e[2],n),Xe(e[0],e[3],n)]}function ee(e,t,n,o,r,i){W(e,t,void 0,()=>n,o,r,i,Y)}var ic=.8,sc=.6,ac=2;function ot(e,t){if(!t.length)return null;let n=[],o=0;for(let s of e.objects){if(s.type!=="shape"||s.role!=="wall")continue;let a=ie(s)??[],f=lr(a)/2;!(f>0)||uc(a)/f*w>ac||(n.push(...a),o+=f)}if(n.length<3)return null;let r=gt(n);if(r.length<3||o<lr(r)*sc)return null;let i=0;for(let s of t)fc(s,r)&&(i+=1);return i>=t.length*ic?r:null}var ur=6,cc=5,lc=8;function fr(e){return Math.max(lc,(Number.isFinite(e)?e:0)+cc)}function mr(e){let t=0,n=0,o=0;for(let r=0;r<e.length;r++){let i=e[r],s=e[(r+1)%e.length],a=i.x*s.y-s.x*i.y;t+=a,n+=(i.x+s.x)*a,o+=(i.y+s.y)*a}if(Math.abs(t)<1e-9){let r=0,i=0;for(let s of e)r+=s.x,i+=s.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 uc(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 lr(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 fc(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o],s=t[r];i.y>e.y!=s.y>e.y&&e.x<(s.x-i.x)*(e.y-i.y)/(s.y-i.y)+i.x&&(n=!n)}return n}function mc(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 hc(e,t){if(!e.length)return null;let n=0,o=0,r=0;for(let m of e)n+=m.x,o+=m.y,r+=Math.hypot(m.x-t.x,m.y-t.y);let i=e.length;n/=i,o/=i,r/=i;let s=e[0],a=-1;for(let m of e){let d=Math.hypot(m.x-n,m.y-o);d>a&&(a=d,s=m)}let f=s.x-n,c=s.y-o,l=Math.hypot(f,c);l>1e-9?(f/=l,c/=l):(f=1,c=0);let u=[...e].sort((m,d)=>(m.x-n)*f+(m.y-o)*c-((d.x-n)*f+(d.y-o)*c)),h=0;for(let m of u){let d=Math.hypot(m.x-n,m.y-o);d>h&&(h=d)}return{pts:u,cx:n,cy:o,radius:h,depth:r}}function hr(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 s=o[i],a=o[i+1],f=a.x-s.x,c=a.y-s.y,l=f*f+c*c,u=l>1e-12?((t-s.x)*f+(n-s.y)*c)/l:0;u<0?u=0:u>1&&(u=1);let h=Math.hypot(t-(s.x+u*f),n-(s.y+u*c));h<r&&(r=h)}return r}var Xt=8;function dc(e,t,n){let o=new Array(Xt).fill(1/0),r=new Array(Xt).fill(-1);for(let l=0;l<e.length;l++){let u=e[l],h=Math.hypot(t-u.cx,n-u.cy)-u.radius;for(let m=0;m<Xt;m++)if(h<o[m]){for(let d=Xt-1;d>m;d--)o[d]=o[d-1],r[d]=r[d-1];o[m]=h,r[m]=l;break}}let i=new Array(3).fill(1/0),s=new Array(3).fill(-1);for(let l of r){if(l<0)continue;let u=hr(e[l],t,n);for(let h=0;h<3;h++)if(u<i[h]){for(let m=2;m>h;m--)i[m]=i[m-1],s[m]=s[m-1];i[h]=u,s[h]=l;break}}if(s[0]<0)return 0;if(i[0]<1e-6)return e[s[0]].depth;let a=i[0]*2.2,f=0,c=0;for(let l=0;l<3;l++){let u=s[l];if(u<0||i[l]>a)continue;let h=1/(i[l]*i[l]);f+=h*e[u].depth,c+=h}return c>0?f/c:e[s[0]].depth}function pc(e){let t=(o,r)=>dc(e,o,r),n=(o,r)=>{let i=1/0,s=-1;for(let a=0;a<e.length;a++){let f=e[a];if(Math.hypot(o-f.cx,r-f.cy)-f.radius>=i)continue;let c=hr(f,o,r);c<i&&(i=c,s=a)}return s};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,s=(t(o,r+.5)-t(o,r-.5))/(2*.5),a=Math.hypot(i,s);return a<1e-9?[0,0]:[i/a,s/a]}}}function dr(e,t){let n=[];for(let o of e){let r=hc(o.points,t);r&&n.push(r)}return n.length<2?mc(t):(n.sort((o,r)=>o.depth-r.depth),pc(n))}var Ue=.06,bc=.05,br=.05,pr=.15,Sn=25;function yr(e,t,n){let o=new Map,r=new Array(t.length).fill(null),i=new Float64Array(t.length),s=new Array(t.length).fill(void 0),a=new Array(t.length).fill(void 0),f=new Map,c=[],l=new Set;for(let h=0;h<e.length;h+=1){let m=e[h];for(let d of m.objects){if(d.type==="table"&&l.add(d.id),d.type!=="section"||!d.outline||d.outline.length<3)continue;let p=Pe(d.outline,Re);f.set(d.id,{section:d,unit:m,frontU:1/0,hasSeats:!1,rows:new Map,seatIndices:[]}),c.push({id:d.id,floorIndex:h,box:Oe(p),section:d,unit:m,outline:p})}}let u=new Map;for(let h of c){let m=u.get(h.floorIndex);m?m.push(h):u.set(h.floorIndex,[h])}for(let h=0;h<t.length;h++){let m=t[h],d=n?u.get(n[h])??[]:c,p=m.sectionId?d.find(x=>x.id===m.sectionId)??d.find(x=>x.section.logicalSectionId===m.sectionId&&be({x:m.x,y:m.y},x.outline,x.section.holes)):void 0,b=p?[p]:d;for(let x of b){if(n&&x.floorIndex!==n[h]||!p&&(m.x<x.box.minX||m.x>x.box.maxX||m.y<x.box.minY||m.y>x.box.maxY||!be({x:m.x,y:m.y},x.outline,x.section.holes)))continue;r[h]=x.id;let y=f.get(x.id);y.hasSeats=!0;let I=m.focalPoint??x.unit.focal,P=Math.hypot(m.x-I.x,m.y-I.y);P<y.frontU&&(y.frontU=P),y.seatIndices.push(h);let E=m.rowId||`__seat-${h}`,g=y.rows.get(E);g?g.push({x:m.x,y:m.y}):y.rows.set(E,[{x:m.x,y:m.y}]);break}}for(let[h,m]of f){let d=Ge(m.section,{floorBaseHeightM:m.unit.baseHeightM}),p=m.unit.baseHeightM,b=d.rake>0?Math.tan(d.rake*Math.PI/180):0,x=d.rake<=.01&&d.height<=p+.001,y=m.section.surfaceKind,I=y==="flat"?!0:y==="rakedRows"&&d.rake>.01?!1:x,P=m.hasSeats?At(h,t,m.seatIndices,m.unit.focal):{sectionId:h,rows:[],blockCount:0},g=P.rows.length<2?dr([...m.rows.values()].map(O=>({points:O})),m.unit.focal):null,S=1/0;if(g){if(m.hasSeats)for(let O of m.rows.values())for(let B of O){let N=g.depthAt(B.x,B.y);N<S&&(S=N)}if(!m.hasSeats||!Number.isFinite(S)){S=1/0;for(let O of m.section.outline){let B=g.depthAt(O.x,O.y);B<S&&(S=B)}}}let M=p+bc,R=Math.max(M,d.height),v=O=>{let B=Math.max(0,O-S)*Q,N=Math.min(B*b,Sn);return Math.max(M,d.height+N)},T=O=>{let B=Math.max(0,O)*Q,N=Math.min(B*b,Sn);return Math.max(M,d.height+N)},k=I?[]:P.rows.map(O=>({pts:O.pts,y:T(O.blockDepth),depth:O.blockDepth,blockId:O.blockId,...l.has(O.id)?{patch:$o(O.pts,Re)}:{}})),_=k.length?k[0].y:R,A=k.map(O=>{let B=O.patch&&O.patch.length>=3?O.patch:O.pts,N=0,H=0;for(let V of B)N+=V.x,H+=V.y;let D=B.length||1;N/=D,H/=D;let U=0;for(let V of B){let $=Math.hypot(V.x-N,V.y-H);$>U&&(U=$)}return{cx:N,cy:H,rad:U}}),C=I?()=>R:k.length>=2?(O,B)=>{let N=1/0,H=_;for(let D=0;D<k.length;D++){let U=A[D];if(Math.hypot(O-U.cx,B-U.cy)-U.rad>=N)continue;let V=k[D].patch,$=V&&V.length>=3?xe(V,O,B)?0:qe(V,O,B):qe(k[D].pts,O,B);$<N&&(N=$,H=k[D].y)}return H}:(O,B)=>g?v(g.depthAt(O,B)):R,L=[0,1,0],F=k.length>=2||I?()=>L:(O,B)=>{if(!g)return L;let N=g.depthAt(O,B);if(N<=S)return L;let H=(N-S)*Q;if(H*b>=Sn||d.height+H*b<=M)return L;let[D,U]=g.gradientAt(O,B);if(D===0&&U===0)return L;let V=1/Math.hypot(b,1);return[-D*b*V,V,-U*b*V]};if(!I)for(let O of P.rows){let B=T(O.blockDepth);for(let N of O.seatIndices)s[N]=B}for(let O of P.rows){let B=[];for(let V=1;V<O.pts.length;V++){let $=Math.hypot(O.pts[V].x-O.pts[V-1].x,O.pts[V].y-O.pts[V-1].y);$>1e-6&&B.push($)}B.sort((V,$)=>V-$);let N=B.length?B[Math.floor(B.length/2)]:1/0,H=1/0,D=O.pts[Math.floor(O.pts.length/2)];if(D)for(let V of P.rows){if(V===O||V.blockId!==O.blockId)continue;let $=qe(V.pts,D.x,D.y);$>1e-6&&$<H&&(H=$)}let U=Math.min(N,Math.max(H,N*.5));if(Number.isFinite(U)&&U>0)for(let V of O.seatIndices)a[V]=U}o.set(h,{sectionId:h,deckAt:C,normalAt:F,flat:I,bottomY:p,rowLevels:k,landingY:_})}for(let h=0;h<t.length;h++){let m=r[h],d=t[h];if(m){let x=s[h];i[h]=(x??o.get(m).deckAt(d.x,d.y))+pr;continue}let p=d.eyeHeightM,b=Number.isFinite(p)?Math.max(0,p-Ce):0;i[h]=d.kind==="booth"?b+Ue+pr:b}return{bySection:o,seatOwner:r,seatDeckY:h=>i[h],seatPitchU:h=>a[h]}}function rt(e,t,n){if(e.length!==4||n<=t)return null;let o=ge(e),r=Math.hypot(o[1].x-o[0].x,o[1].y-o[0].y)*w,i=Math.hypot(o[3].x-o[0].x,o[3].y-o[0].y)*w;if(r<1e-6||i<1e-6)return null;let s=Math.min(.22/r,.16),a=Math.min(.28,(n-t)*.13),f=Math.min(.065/i,.2);return{quad:o,side:s,face:f,opening:pe(o,s,1-s),openingTop:n-a}}function In(e,t,n){if(e.length!==4||n-t<=.2)return null;let o=ge(e),r=Math.hypot(o[1].x-o[0].x,o[1].y-o[0].y)*w;if(r<=1e-6)return null;let i=Math.min(.14,(n-t)*.08,r*.08),s=i/r,a=pe(o,s,1-s);return{quad:o,side:s,trim:i,inner:a,panel:Mt(a,.15,.85),bottom:t+i,top:n-i}}function xr(e,t,n,o){let r=In(e,t,n);if(!r)return;let{panel:i}=r,s=(y,I)=>({x:(y.x+I.x)/2,y:(y.y+I.y)/2}),a=s(i[0],i[1]),f=s(i[3],i[2]),c=Math.hypot(a.x-o.x,a.y-o.y)<=Math.hypot(f.x-o.x,f.y-o.y),[l,u]=c?[i[0],i[1]]:[i[3],i[2]],h=c?{x:a.x-f.x,y:a.y-f.y}:{x:f.x-a.x,y:f.y-a.y},m=Math.hypot(h.x,h.y);if(m<1e-6)return;-(u.y-l.y)*h.x+(u.x-l.x)*h.y<0&&([l,u]=[u,l]);let d=Math.min(.006,m*w*.05),p=h.x/m*d,b=h.y/m*d,x=(y,I)=>[y.x*w+p,I,y.y*w+b];return[x(l,r.bottom),x(u,r.bottom),x(l,r.top),x(u,r.top)]}var gr=Te(require("polygon-clipping"),1);function Be(e,t,n,o,r,i,s,a={}){let f=Oe(t),c=a.ao??Y,l=r.flatMap(p=>{if(p.role!=="entrance"&&p.role!=="exit")return[];let b=ie(p);if(!b||b.length!==4||!tt(f,Oe(b)))return[];let x=a.portalBase??n,y=rt(b,x,x+Ee(p).heightM);if(!y)return[];let I=Math.min(o,y.openingTop);return I<=n?[]:[{poly:y.opening,height:I}]});if(!l.length)return!1;let u=p=>p.map(b=>[b.x,b.y]),h=[u(t),...(a.holes??[]).map(u)],m=[n,...new Set(l.map(p=>p.height)),o].sort((p,b)=>p-b),d=[];try{for(let p=1;p<m.length;p++){let b=m[p-1],x=m[p];if(x-b<1e-6)continue;let y=l.filter(P=>P.height>b+1e-6).map(P=>[u(P.poly)]),I=y.length?gr.default.difference(h,...y):[h];d.push({low:b,high:x,polys:I})}}catch{return!1}for(let p of d)for(let b of p.polys){let[x,...y]=b.map(P=>P.map(([E,g])=>({x:E,y:g}))),I=P=>c.wallBottom+(c.top-c.wallBottom)*(P-n)/(o-n);W(e,x,y,()=>p.high,p.low,i,s,{...c,top:I(p.high),wallBottom:I(p.low)})}return!0}function Mr(e,t,n,o,r,i,s){let a=o-n;if(a<=0)return;let f=a<1.5?[[n,o,1]]:[[n,n+Math.min(.9,a*.18),.82],[n+Math.min(.9,a*.18),o-.1,1],[o-.1,o,1.1]],c=l=>Y.wallBottom+(Y.top-Y.wallBottom)*(l-n)/a;for(let[l,u,h]of f){let m={...Y,top:c(u),wallBottom:c(l)},d=z(i,h),p=z(s,h);Be(e,t,l,u,r,d,p,{portalBase:n,ao:m})||W(e,t,void 0,()=>u,l,d,p,m)}}function St(e,t,n){let o=ne(t.stroke?.color),r=t.stroke?.width??0;if(!o||!Number.isFinite(r)||r<=0)return;let i=t.kind==="line"||t.kind==="polyline",s=i?Ht(t.points??[],t.rotation):ie(t);if(!s||s.length<2)return;let a=i?s.length-1:s.length,f=r*.5;for(let c=0;c<a;c++){let l=s[c],u=s[(c+1)%s.length],h=Math.hypot(u.x-l.x,u.y-l.y);if(h<1e-6)continue;let m=-(u.y-l.y)/h*f,d=(u.x-l.x)/h*f,p=[(l.x+m)*w,n,(l.y+d)*w],b=[(u.x+m)*w,n,(u.y+d)*w],x=[(u.x-m)*w,n,(u.y-d)*w],y=[(l.x-m)*w,n,(l.y-d)*w];e.tri(p,b,x,[0,1,0],o),e.tri(p,x,y,[0,1,0],o)}}function Sr(e){return e==="bar"||e==="concession"||e==="coat"||e==="restroom"}var it=(e,t,n)=>({x:e.x+(t.x-e.x)*n,y:e.y+(t.y-e.y)*n});function Ut(e,t,n,o){let[r,i,s,a]=t?e:[e[3],e[2],e[1],e[0]];return[it(r,a,n),it(i,s,n),it(i,s,o),it(r,a,o)]}function Ir(e,t,n,o,r,i,s,a,f=!1){if(n.length!==4||r-o<.4)return!1;let c=M=>f?Math.min(M,r):M,l=ge(n),u=Math.hypot(l[3].x-l[0].x,l[3].y-l[0].y)*w;if(u<.4)return!1;let h=it(l[0],l[1],.5),m=it(l[3],l[2],.5),d=Math.hypot(h.x-a.x,h.y-a.y)<=Math.hypot(m.x-a.x,m.y-a.y),p=te(s,[.92,.9,.86],.35),b=z(i,.72),x=r-o;if(t==="restroom"){let M=Math.min(.18,x*.08);return ee(e,l,r-M,o,s,i),ee(e,l,r,r-M,p,p),!0}let y=o+Math.min(1.1,x),I=t==="coat"?1:Math.min(.5,.75/u),P=Ut(l,d,0,I);if(ee(e,P,y-.05,o,b,i),ee(e,P,y,y-.05,p,p),t==="coat"||u<1.2)return!0;if(t==="bar"){let M=Ut(l,d,Math.max(I+.2,1-.45/u),1),R=c(o+Math.max(Math.min(2.2,x*2),y-o+.6));return ee(e,M,R,o,s,b),!0}let E=Ut(l,d,Math.max(I+.25,.55),1),g=c(o+Math.max(2.6,y-o+1.4));if(g-.14<=y)return!0;ee(e,E,g-.14,o,s,i),ee(e,l,g,g-.14,p,b);let S=Math.min(.08,.1/Math.max(.1,Math.hypot(l[1].x-l[0].x,l[1].y-l[0].y)*w));for(let[M,R]of[[0,S],[1-S,1]])ee(e,Ut(pe(l,M,R),d,0,Math.min(.08,.1/u)),g-.14,y,b,b);return!0}var yc=[.12,.38,.16],xc=[.72,.62,.45],gc=[.88,.93,.96],Rr=[.95,.95,.94],Mc=[.66,.29,.22],Rn={length:20.12,width:3.05},Sc=.14,Ic=9.76,Fe=[.93,.94,.95],Vt=[.1,.11,.13],Rc=[.45,.85,1.25],Pc=1.45,Pr=.012,wr=.004,wc=1.07,Ec=.15;function at(e,t,n,o,r,i){e.setMaterial(i),W(e,t,n?[n.slice().reverse()]:void 0,()=>o,o-.004,r,r,Y)}var Er=(e,t)=>He(e,t/w);function Ar(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 s=-r/i*n,a=o/i*n;return[{x:e.x+s,y:e.y+a},{x:t.x+s,y:t.y+a},{x:t.x-s,y:t.y-a},{x:e.x-s,y:e.y-a}]}function Ac(e,t,n,o){let r=t.map(i=>[i.x*w,n,i.y*w]);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 Yt(e,t,n,o,r,i){let s=n/w,a=[{x:t.x-s,y:t.y-s},{x:t.x+s,y:t.y-s},{x:t.x+s,y:t.y+s},{x:t.x-s,y:t.y+s}];W(e,a,void 0,()=>r,o,i,z(i,.85),Y)}function st(e,t,n,o,r,i,s){let a=Ar(t,n,o/w);a&&W(e,a,void 0,()=>i,r,s,z(s,.85),Y)}function Kt(e){let t=ge(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},s={x:(t[3].x-t[0].x)/r,y:(t[3].y-t[0].y)/r};return{at:(f,c)=>({x:n.x+(i.x*f+s.x*c)/w,y:n.y+(i.y*f+s.y*c)/w}),lengthM:o*w,widthM:r*w}}function vr(e,t,n){let o=oo(t);if(!o.length)return;let r=1/0,i=-1/0,s=1/0,a=-1/0;for(let I of t.points??[])r=Math.min(r,I.x),i=Math.max(i,I.x),s=Math.min(s,I.y),a=Math.max(a,I.y);let f=(t.rotation??0)*Math.PI/180,c=Math.cos(f),l=Math.sin(f),u=(r+i)/2,h=(s+a)/2,m=I=>f?{x:u+(I.x-u)*c-(I.y-h)*l,y:h+(I.x-u)*l+(I.y-h)*c}:I,d=Math.min(i-r,a-s)*w,p=Math.max(.04,Math.min(.3,d*.004))/w,b=0;e.setMaterial(0);for(let I of o){if(!I.fill)continue;let P=I.points.map(m);at(e,P,null,n+Pr+b*wr,ne(I.fill)??Fe,0),b++}let x=o.filter(I=>!(I.fill&&I.ink===I.fill)),y=[...new Set(x.map(I=>I.ink??_t))];for(let I of y){let P=n+Pr+b++*wr,E=ne(I)??Fe;for(let g of x){if((g.ink??_t)!==I)continue;let S=g.points.map(m),M=g.closed?S.length:S.length-1;for(let R=0;R<M;R++){let v=Ar(S[R],S[(R+1)%S.length],p);v&&Ac(e,v,P,E)}}}}function Cr(e,t,n,o,r){if(t.length<3)return!1;let i=o+.006,s=r??yc;if(n==="oval-cricket"){let a=t.reduce((E,g)=>E+g.x,0)/t.length,f=t.reduce((E,g)=>E+g.y,0)/t.length,c=E=>t.map(g=>({x:a+(g.x-a)*E,y:f+(g.y-f)*E})),l=8;for(let E=0;E<l;E++){let g=c(1-E/l),S=E===l-1?null:c(1-(E+1)/l);at(e,g,S,i,z(s,E%2?1.04:.96),4)}let u=t[0];for(let E of t)Math.hypot(E.x-a,E.y-f)>Math.hypot(u.x-a,u.y-f)&&(u=E);let h=Math.hypot(u.x-a,u.y-f)||1,m=(u.x-a)/h,d=(u.y-f)/h,p=-d,b=m,x=Math.min(1,2*h*w*Sc/Rn.length),y=Rn.length*x/2/w,I=Rn.width*x/2/w,P=[[-y,-I],[y,-I],[y,I],[-y,I]].map(([E,g])=>({x:a+m*E+p*g,y:f+d*E+b*g}));return at(e,P,null,i+.004,xc,0),e.setMaterial(0),!0}if(n==="rink-hockey"){let a=Er(t,Ec);return at(e,a,null,i,gc,0),e.setMaterial(0),W(e,t,[a.slice().reverse()],()=>o+wc,o,Rr,z(Rr,.9),Y),!0}if(n==="ring-boxing"&&t.length===4){let{at:a}=Kt(t),f=[a(-3.05,-3.05),a(3.05,-3.05),a(3.05,3.05),a(-3.05,3.05)],c=[[.77,.19,.19],Fe,[.17,.42,.69],Fe];e.setMaterial(0),f.forEach((l,u)=>Yt(e,l,.07,o,o+Pc,c[u]));for(let l of Rc)for(let u=0;u<4;u++)st(e,f[u],f[(u+1)%4],.025,o+l-.025,o+l+.025,Fe);return!0}if(n==="court-tennis"&&t.length===4){let{at:a}=Kt(t);e.setMaterial(0),st(e,a(0,-6.4),a(0,6.4),.015,o,o+.95,Vt),st(e,a(0,-6.4),a(0,6.4),.03,o+.95,o+1,Fe);for(let f of[-1,1])Yt(e,a(0,f*6.4),.05,o,o+1.07,Vt);return!0}if(n==="court-basketball"&&t.length===4){let{at:a,lengthM:f}=Kt(t),c=Math.min(14,f/2-.5);e.setMaterial(0);for(let l of[-1,1]){let u=a(l*(c+1.2),0),h=a(l*(c-1.2),0);Yt(e,u,.12,o,o+3.4,Vt),st(e,u,h,.06,o+3.25,o+3.4,Vt),st(e,a(l*(c-1.2),-.9),a(l*(c-1.2),.9),.03,o+2.9,o+3.95,Fe)}return!0}if(n==="pitch-rugby"&&t.length===4){let{at:a,lengthM:f}=Kt(t),c=f*(50/120);e.setMaterial(0);for(let l of[-1,1]){for(let u of[-2.8,2.8])Yt(e,a(l*c,u),.07,o,o+12,Fe);st(e,a(l*c,-2.8),a(l*c,2.8),.06,o+2.94,o+3.06,Fe)}return!0}if(n==="track-athletics"){let a=Er(t,Ic);return a.length<3?!1:(at(e,t,a,i,Mc,0),at(e,a,null,i,s,4),e.setMaterial(0),!0)}return!1}var _r=[.19,.4,.15],vc=.012,Zt=2.4,Cc=1,_c=.75,kc=.15;function Ae(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,s=Math.cos(i),a=Math.sin(i),f=n/2,c=o/2;return[[-f,-c],[f,-c],[f,c],[-f,c]].map(([l,u])=>({x:t.x+l*s-u*a,y:t.y+l*a+u*s}))}function Fr(e,t,n,o,r,i,s=!1){let a=Ae(t);if(a){if(s){let f=Qe(o,r.boothTop),c=_e([...a]);W(e,Pe(c,Tc/w),[c.slice().reverse()],()=>n+.03,n,f,z(f,.8),Y);return}if(!(!t.points&&i&&Oc(e,a,n,o,i))){if(!t.points&&i&&a.length===4){Lc(e,a,n,o,i);return}W(e,a,void 0,()=>n+Zt,n,Qe(o,r.boothTop),r.boothWall,Y)}}}var Pn=1.1,kr=[.9,.9,.88],Tc=.1,Wt=[.87,.87,.85],Tr=.08;function Dr(e,t){let n=f=>({x:(e[f].x+e[(f+1)%4].x)/2,y:(e[f].y+e[(f+1)%4].y)/2}),o=0,r=1/0;for(let f=0;f<4;f++){let c=n(f),l=Math.hypot(c.x-t.x,c.y-t.y);l<r&&(r=l,o=f)}let i=[0,1,2,3].map(f=>e[(o+f)%4]),s=(f,c,l)=>({x:f.x+(c.x-f.x)*l,y:f.y+(c.y-f.y)*l});return{q:i,part:(f,c,l,u)=>{let h=s(i[0],i[1],f),m=s(i[0],i[1],c),d=s(i[3],i[2],f),p=s(i[3],i[2],c);return[s(h,d,l),s(m,p,l),s(m,p,u),s(h,d,u)]},depthM:Math.hypot(i[3].x-i[0].x,i[3].y-i[0].y)*w,widthM:Math.hypot(i[1].x-i[0].x,i[1].y-i[0].y)*w}}function Lc(e,t,n,o,r){let{q:i,part:s}=Dr(t,r),a=o??[.35,.42,.55],f=te(a,[.78,.78,.77],.62),c=te(a,[.95,.95,.94],.45);ee(e,i,n+Ue,n,f,z(f,.8)),ee(e,s(.05,.95,.72,.98),n+Pn-.05,n+Ue,c,z(c,.8)),ee(e,s(.03,.97,.7,1),n+Pn,n+Pn-.05,kr,z(kr,.9))}function Oc(e,t,n,o,r){if(t.length!==4)return!1;let{q:i,part:s,depthM:a,widthM:f}=Dr(t,r);if(a<1||f<1)return!1;let c=o??[.35,.42,.55],l=te(c,[.78,.78,.77],.62),u=n+Zt,h=Tr/f,m=Tr/a;ee(e,i,n+Ue,n,l,z(l,.8)),ee(e,s(0,1,1-m,1),u,n+Ue,Wt,z(Wt,.9));for(let[b,x]of[[0,h],[1-h,1]])ee(e,s(b,x,0,1-m),u,n+Ue,Wt,z(Wt,.9));ee(e,s(h,1-h,0,Math.min(.5,.06/a)),u,u-.3,c,z(c,.85));let d=Math.min(.4,.6/f),p=Math.min(.12,.3/a);return ee(e,s(.5-d,.5+d,.72-p,.72+p),n+Cc,n+Ue,te(c,[.95,.95,.94],.7),z(c,.75)),!0}function $t(e){if(e.shape==="round"){let l=e.radius;return l?Ft(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,s=Math.cos(i),a=Math.sin(i),f=t/2,c=n/2;return[[-f,-c],[f,-c],[f,c],[-f,c]].map(([l,u])=>({x:r.x+l*s-u*a,y:r.y+l*a+u*s}))}function Nr(e,t,n,o,r,i=!0){let s=$t(t);if(!s)return;let a=s.reduce((h,m)=>h+m.x,0)/s.length,f=s.reduce((h,m)=>h+m.y,0)/s.length,c=h=>s.map(m=>({x:a+(m.x-a)*h,y:f+(m.y-f)*h})),l=i&&o?Qe(o,r.tableTop):Bc,u=n+_c;W(e,s,void 0,()=>u,n+Fc,l,z(l,.86),Y),W(e,c(.12),void 0,()=>u+.12,u,Lr,z(Lr,.8),Y)}var Bc=[.93,.92,.89],Lr=[.78,.66,.42],Fc=.25;function Gr(e,t,n,o,r,i,s,a,f=[]){let c=ie(t);if(!t.role&&(!t.fill||t.fill==="none"||t.fill==="transparent")||!c){St(e,t,n+o+vc);return}let u=a?a.kind==="stage":t.role==="stage",h=a?a.kind==="screen":t.role==="screen",m=a?{kind:u?"stage":"solid",heightM:a.topY-a.baseY}:Ee(t),d=a?.baseY??n,p=a?.topY??n+o;if(u&&s){let M=1/0,R=-1/0,v=1/0,T=-1/0;for(let k of c)k.x<M&&(M=k.x),k.x>R&&(R=k.x),k.y<v&&(v=k.y),k.y>T&&(T=k.y);s.push({cx:(M+R)/2*w,cz:(v+T)/2*w,y:p,halfX:Math.max((R-M)/2*w,.5),halfZ:Math.max((T-v)/2*w,.5)})}let b=ne(t.fill),x=t.role==="wall"||t.role==="entrance"||t.role==="exit",y=x?b?z(we(b,.12),.95):r.tierTop:u&&b?te(r.stageTop,z(we(b,.18),.9),.9):!t.role&&b?b:Qe(b,u?r.stageTop:r.decorTop),I=h?b:null,P=x?b?z(we(b,.12),.85):r.tierWall:u?b?te(r.stageWall,z(b,.58),.82):r.stageWall:h?I?te(z(I,1.42),[.24,.46,.82],.08):[.24,.46,.82]:Qe(ne(t.fill),r.decorWall);if(t.role==="wall"&&!a){Mr(e,c,d,p,f,y,P),St(e,t,p+.012);return}if(h&&c.length===4&&p-d>.2){let M=In(c,d,p);if(!M)return;let{quad:R,side:v,trim:T,inner:k,panel:_}=M,A=[.12,.15,.18];for(let[C,L]of[[0,v],[1-v,1]])ee(e,pe(R,C,L),p,d,A,A);ee(e,k,d+T,d,A,A),ee(e,k,p,p-T,A,A),ee(e,_,p-T,d+T,P,P),St(e,t,p+.012);return}let E=b?z(we(b,.15),.82):P,g=b?z(we(b,.1),1.02):y;if(Sr(t.role)&&!a&&Ir(e,t.role,c,d,p,E,g,i,t.heightM!==void 0))return;if((t.role==="sound"||a?.kind==="sound_desk")&&c.length===4&&p-d>.3){let M=ge(c),R=Math.hypot(M[1].x-M[0].x,M[1].y-M[0].y)*w,v=Math.min(.12,.09/Math.max(R,.001)),T=[.18,.21,.24],k=p-Math.min(.12,(p-d)*.15);for(let[_,A]of[[0,v],[1-v,1]])ee(e,pe(M,_,A),k,d,T,T);ee(e,M,p,k,y,T);return}if(t.role==="rail"&&c.length===4&&p>d){let M=ge(c),R=Math.hypot(M[1].x-M[0].x,M[1].y-M[0].y)*w,v=Math.max(1,Math.min(128,Math.ceil(R/1.4))),T=Math.min(.08,.055/Math.max(.055,R)),k=[.58,.64,.66];for(let _=0;_<=v;_++){let A=_/v,C=Math.min(1-T,Math.max(0,A-T/2));ee(e,pe(M,C,C+T),p,d,k,z(k,.8))}for(let _ of[.52,1]){let A=d+(p-d)*_;ee(e,M,A,Math.max(d,A-.055),k,z(k,.8))}return}if(t.role==="goal"&&c.length===4){let M=ge(c),R=Math.hypot(M[1].x-M[0].x,M[1].y-M[0].y)*w,v=Math.min(.12,.1/Math.max(.1,R)),T=[.9,.94,.94];for(let[k,_]of[[0,v],[1-v,1]])ee(e,pe(M,k,_),Math.max(d,p-.1),d,T,T);ee(e,M,p,Math.max(d,p-.1),T,T);return}if(m.kind==="portal"&&c.length===4){let M=rt(c,d,p);if(!M)return;let{quad:R,side:v,face:T,openingTop:k}=M;for(let[_,A,C]of[[0,T,1],[T,1-T,.67],[1-T,1,1]]){let L=Mt(R,_,A),F=z(y,C),O=z(P,C);for(let[B,N]of[[0,v],[1-v,1]])ee(e,pe(L,B,N),k,d,F,O);ee(e,L,p,k,F,O)}return}if(m.kind==="suite"&&c.length===4){let M=c.map((T,k)=>{let _=c[(k+1)%4],A=(T.x+_.x)/2,C=(T.y+_.y)/2;return Math.hypot(A-i.x,C-i.y)}),R=M.indexOf(Math.min(...M)),v=[0,1,2,3].map(T=>c[(R+T)%4]);ee(e,pe(v,0,.08),p,d,y,P),ee(e,pe(v,.92,1),p,d,y,P),ee(e,Mt(v,.88,1),p,d,y,P),ee(e,v,p,Math.max(d,p-.18),y,P);return}if(u&&!t.stageKind?.startsWith("pitch-")&&p-d>.12){let M=p-Math.min(.06,(p-d)*.15);ee(e,c,M,d,y,P),ee(e,c,p,M,y,te(y,P,.2))}else ee(e,c,p,d,y,P);if((t.stageKind==="pitch-football"||t.stageKind==="pitch-rugby")&&c.length===4){e.setMaterial(4);let M=ge(c),R=te(b??_r,_r,b?.45:0);for(let v=0;v<12;v++){let T=pe(M,v/12,(v+1)/12),k=z(R,v%2?1.09:.91),_=T.map(A=>[A.x*w,p+.006,A.y*w]);e.tri(_[0],_[1],_[2],[0,1,0],k),e.tri(_[0],_[2],_[3],[0,1,0],k)}}t.stageKind&&t.stageKind!=="pitch-football"&&Cr(e,c,t.stageKind,p,b),u&&We(t.stageKind)&&vr(e,t,p),e.setMaterial(h?1:0),St(e,t,p+.012)}function Qt(e){let{x:t,y:n,width:o,height:r}=e;if(!o||!r)return null;let i=t+o/2,s=n+r/2,a=(e.rotation??0)*Math.PI/180,f=Math.cos(a),c=Math.sin(a),l=o/2,u=r/2;return[[-l,-u],[l,-u],[l,u],[-l,u]].map(([h,m])=>({x:i+h*f-m*c,y:s+h*c+m*f}))}function Dc(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 ne(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 s=[];for(let a of i[1].matchAll(/stop-color="([^"]+)"/gi)){let f=ne(a[1].trim());f&&s.push(f)}return s.length?s.reduce((a,f,c)=>te(a,f,1/(c+1)),s[0]):null}function jr(e,t,n,o){if(t.layer==="foreground")return;let r=Qt(t);if(!r)return;let i=n+kc,s=Qe(Dc(t.href),o.decorTop),a=Math.max(0,Math.min(1,t.opacity??1));a<1&&(s=te(o.ground,s,a)),W(e,r,void 0,()=>i,n,s,te(s,o.decorWall,.5),Y)}function Hr(e,t,n,o,r){if(!t.points||t.points.length<3)return;let i=Oo(o,r.gaTop);W(e,t.points,t.holes,()=>n+Or,n,i,r.gaWall,Y),jc(e,t.points,n+Or)}var Or=.15,zt=[.72,.74,.76],wn=1.1,Br=.12,En=.05,Nc=.06,Gc=2.4;function jc(e,t,n){let o=_e([...t]),r=He(o,Br/w),i=He(o,(Br+En)/w);if(r.length<3||i.length<3)return;for(let a of[n+wn,n+wn*.5])W(e,r,[i.slice().reverse()],()=>a,a-En,zt,z(zt,.85),Y);let s=Nc/2/w;for(let a=0;a<r.length;a++){let f=r[a],c=r[(a+1)%r.length],l=Math.hypot(c.x-f.x,c.y-f.y)*w,u=Math.max(1,Math.round(l/Gc));for(let h=0;h<u;h++){let m=h/u,d=f.x+(c.x-f.x)*m,p=f.y+(c.y-f.y)*m,b=[{x:d-s,y:p-s},{x:d+s,y:p-s},{x:d+s,y:p+s},{x:d-s,y:p+s}];W(e,b,void 0,()=>n+wn-En,n,zt,z(zt,.8),Y)}}}var An=.6,Xr=3,Hc=.25;function Xc(e,t){if(xe(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],s=t[o],a=s.x-i.x,f=s.y-i.y,c=a*a+f*f||1,l=Math.max(0,Math.min(1,((e.x-i.x)*a+(e.y-i.y)*f)/c));n=Math.min(n,Math.hypot(e.x-(i.x+l*a),e.y-(i.y+l*f)))}return n}function Ur(e,t){let n=e.map(s=>({booth:s,ring:Ae(s)})).filter(s=>!!s.ring&&s.ring.length===4&&!s.booth.points),o=n.map(({ring:s})=>({minX:Math.min(...s.map(a=>a.x)),maxX:Math.max(...s.map(a=>a.x)),minY:Math.min(...s.map(a=>a.y)),maxY:Math.max(...s.map(a=>a.y))})),r=(Xr+An)/w,i=new Map;return n.forEach(({booth:s,ring:a},f)=>{let c={x:a.reduce((m,d)=>m+d.x,0)/4,y:a.reduce((m,d)=>m+d.y,0)/4},l=[0,1,2,3].map(m=>{let d=a[m],p=a[(m+1)%4],b={x:(d.x+p.x)/2,y:(d.y+p.y)/2},x=b.x-c.x,y=b.y-c.y,I=Math.hypot(x,y)||1,P={x:b.x+x/I*An/w,y:b.y+y/I*An/w},E=Xr/w;return o.forEach((g,S)=>{S===f||P.x<g.minX-r||P.x>g.maxX+r||P.y<g.minY-r||P.y>g.maxY+r||(E=Math.min(E,Xc(P,n[S].ring)))}),{open:E*w,toward:{x:b.x+x/I*10/w,y:b.y+y/I*10/w},focal:Math.hypot(b.x-t.x,b.y-t.y)}}),u=Math.max(...l.map(m=>m.open)),h=l.filter(m=>m.open>=u-Hc).sort((m,d)=>m.focal-d.focal)[0];i.set(s.id,h.toward)}),i}var Vr=Te(require("polygon-clipping"),1);var Uc=.45,Vc=1500,Yc=200;function Yr(e,t){if(e.role!=="stage"||We(e.stageKind))return e;let n=ie(e);if(!n||n.length<3||Math.abs(ye(n))*w*w>Vc)return e;let o=t.filter(s=>xe(n,s.x,s.y));if(!o.length||o.length>Yc)return e;let r=Uc/w,i=o.map(s=>[[[s.x-r,s.y-r],[s.x+r,s.y-r],[s.x+r,s.y+r],[s.x-r,s.y+r],[s.x-r,s.y-r]]]);try{let s=Vr.default.difference([[...n.map(c=>[c.x,c.y]),[n[0].x,n[0].y]]],...i),a=null,f=0;for(let c of s){let l=c[0].slice(0,-1).map(([h,m])=>({x:h,y:m})),u=Math.abs(ye(l));u>f&&(f=u,a=l)}return!a||a.length<3?e:{...e,kind:"polygon",points:a,rotation:0}}catch{return e}}var Kc=Math.PI/180,oe=96,Wc=6,zc=60,Zc=150,Kr=.2,$c=.35;function Qc(e,t){let n=Math.atan2(t.x-e.x,t.y-e.y)/Kc;return n<0?n+360:n}function qt(e){if(!e.length)return NaN;let t=[...e].sort((n,o)=>n-o);return t[Math.floor(t.length/2)]}function Jt(e,t,n=2){let o=e.length,r=new Float64Array(o);for(let i=0;i<o;i++){let s=0,a=0;for(let f=-n;f<=n;f++){let c=i+f;if(t)c=(c%o+o)%o;else if(c<0||c>=o)continue;s+=e[c],a++}r[i]=s/a}return r}function Wr(e,t){let n=e.filter(h=>h.rows.length>=1);if(n.length<1)return null;let o=[],r=0,i=0,s=0;for(let h of n)for(let m of h.rows){for(let d of m.pts)r+=d.x,i+=d.y,s++;if(m.pts.length>=4){let d=cn(m.pts);d&&Number.isFinite(d.cx)&&Number.isFinite(d.cy)&&o.push({x:d.cx,y:d.cy})}}if(!s)return null;let a={x:r/s,y:i/s},f=a;if(o.length>=8){let h=qt(o.map(x=>x.x)),m=qt(o.map(x=>x.y)),d=0;for(let x of n)for(let y of x.rows)for(let I of y.pts){let P=Math.hypot(I.x-a.x,I.y-a.y);P>d&&(d=P)}let p=0,b=d*.2;for(let x of n)for(let y of x.rows)for(let I of y.pts)Math.hypot(I.x-h,I.y-m)<b&&p++;Math.hypot(h-a.x,m-a.y)<=d&&p/s<.01&&(f={x:h,y:m})}let c=[];for(let h of n){let m={sectionId:h.sectionId,rMin:1/0,rMax:-1/0,samples:[]};for(let d of h.rows)for(let p of d.pts){let b=Math.hypot(p.x-f.x,p.y-f.y),x=Math.min(oe-1,Math.floor(Qc(f,p)/(360/oe)));m.samples.push({r:b,bin:x,levelM:d.levelM}),b<m.rMin&&(m.rMin=b),b>m.rMax&&(m.rMax=b)}m.samples.length&&c.push(m)}if(!c.length)return null;c.sort((h,m)=>h.rMin+h.rMax-(m.rMin+m.rMax));let l=[];for(let h of c){let m=!1;for(let d of l){let p=Math.min(h.rMax,d.rMax)-Math.max(h.rMin,d.rMin),b=Math.min(h.rMax-h.rMin,d.rMax-d.rMin);if(b>1e-9&&p>=$c*b){d.members.push(h),d.rMin=Math.min(d.rMin,h.rMin),d.rMax=Math.max(d.rMax,h.rMax),m=!0;break}}m||l.push({members:[h],rMin:h.rMin,rMax:h.rMax})}let u=[];for(let h of l){let m=new Array(oe).fill(null);for(let _ of h.members)for(let A of _.samples){let C=m[A.bin];C||(C={samples:[]},m[A.bin]=C),C.samples.push({r:A.r,levelM:A.levelM})}let d=m.map(_=>!!_);if(!d.filter(Boolean).length)continue;let b=[],x=[];for(let _ of m){if(!_)continue;let A=1/0,C=-1/0;for(let L of _.samples)L.r<A&&(A=L.r),L.r>C&&(C=L.r);b.push(A),x.push(C)}let y=qt(b),I=qt(x);if(!(y>=Kr*I)||!(I>0))continue;let P=[...b].sort((_,A)=>_-A);if(!(P[Math.floor(P.length*.1)]>=Kr*I))continue;let g=m.map(_=>{if(!_)return null;let A=[..._.samples].sort((D,U)=>D.r-U.r),C=A[0].r,L=A[A.length-1].r,F=A[0].levelM,O=-1/0;for(let D of A)D.levelM>O&&(O=D.levelM);let B=[];for(let D of A){let U={r:D.r,l:D.levelM};for(;B.length&&Math.abs(B[B.length-1].r-U.r)<1e-9;){if(B[B.length-1].l<=U.l){U.skip=!0;break}B.pop()}if(!U.skip){for(;B.length>=2;){let V=B[B.length-2],$=B[B.length-1];if(($.r-V.r)*(U.l-V.l)-($.l-V.l)*(U.r-V.r)<=0)B.pop();else break}B.push(U)}}let N=B.map(D=>D.r),H=B.map(D=>D.l);return{inner:C,outer:L,front:F,top:O,profile:{rs:N,ls:H}}}),S=d.slice();for(let _=0;_<oe;_++){if(S[_])continue;let A=-1,C=-1,L=0;for(let X=1;X<=oe;X++){let J=(_-X+oe*2)%oe;if(S[J]){A=J;break}}for(let X=1;X<=oe;X++){let J=(_+X)%oe;if(S[J]){C=J,L=X;break}}if(A<0||C<0)continue;let F=0;for(let X=1;X<=oe;X++){let J=(_-X+oe*2)%oe;if(d[J]){F=X;break}}if(F-1+L>Wc)continue;let B=g[A],N=g[C],H=F/(F+L),D=B.inner+(N.inner-B.inner)*H,U=B.outer+(N.outer-B.outer)*H,V=B.front+(N.front-B.front)*H,$=B.top+(N.top-B.top)*H;g[_]={inner:D,outer:U,front:V,top:$,profile:{rs:[D,U],ls:[V,$]}}}for(let _=0;_<oe;_++)g[_]&&(S[_]=!0);let M=360/oe,R=[],v=S.filter(Boolean).length,T=[];if(v===oe)T.push({start:0,len:oe});else{let _=0;for(;S[_];)_=(_+1)%oe;let A=-1;for(let C=0;C<=oe;C++){let L=(_+C)%oe,F=C<oe&&S[L];if(F&&A<0)A=L;else if(!F&&A>=0){let O=(L-A+oe)%oe||oe;T.push({start:A,len:O}),A=-1}}}for(let _ of T){if(_.len*M<zc&&_.len<oe)continue;let A=_.len===oe,C=new Float64Array(_.len),L=new Float64Array(_.len),F=new Float64Array(_.len),O=new Float64Array(_.len),B=[];for(let X=0;X<_.len;X++){let J=g[(_.start+X)%oe];C[X]=J.inner,L[X]=J.outer,F[X]=J.front,O[X]=J.top,B.push(J.profile??{rs:[J.inner,J.outer],ls:[J.front,J.top]})}let N=Jt(C,A),H=Jt(L,A),D=Jt(F,A),U=Jt(O,A);for(let X=0;X<_.len;X++)N[X]>C[X]&&(N[X]=C[X]),H[X]<L[X]&&(H[X]=L[X]),N[X]>H[X]-1e-6&&(N[X]=Math.max(0,H[X]-1e-6)),U[X]<D[X]&&(U[X]=D[X]);let V={startBin:_.start,binCount:_.len,closed:A,innerR:N,outerR:H,frontLevelM:D,topLevelM:U,profiles:B},$=(X,J,Z)=>{let ce=B[X],ae=ce.rs,G=ce.ls;if(J<=ae[0]){G[0]>Z&&(G[0]=Z);return}if(J>=ae[ae.length-1]){G[G.length-1]>Z&&(G[G.length-1]=Z);return}for(let j=0;j+1<ae.length;j++)if(J<=ae[j+1]){G[j]>Z&&(G[j]=Z),G[j+1]>Z&&(G[j+1]=Z);return}};for(let X=0;X<_.len;X++){let J=m[(_.start+X)%oe];if(J)for(let Z of J.samples){$(X,Z.r,Z.levelM);let ce=A?(X-1+_.len)%_.len:X-1,ae=A?(X+1)%_.len:X+1;ce>=0&&$(ce,Z.r,Z.levelM),ae<_.len&&$(ae,Z.r,Z.levelM)}}R.push(V)}R.reduce((_,A)=>_+A.binCount*M,0)<Zc||u.push({arcs:R,sectionIds:h.members.map(_=>_.sectionId),innerRMedian:y,outerRMedian:I})}if(!u.length)return null;if(u.sort((h,m)=>h.innerRMedian-m.innerRMedian),t){let h=u[u.length-1].outerRMedian;if(Math.hypot(t.x-f.x,t.y-f.y)>.9*h)return null}return{centre:f,binCount:oe,binStepDeg:360/oe,rings:u}}function zr(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 s=Math.floor(i),a=t.closed?(s+1)%t.binCount:Math.min(t.binCount-1,s+1),f=i-s,c=l=>{let u=t.profiles[l],h=u.rs,m=u.ls;if(o<=h[0])return m[0];if(o>=h[h.length-1])return m[m.length-1];for(let d=0;d+1<h.length;d++)if(o<=h[d+1]){let p=h[d+1]-h[d],b=p>1e-9?(o-h[d])/p:0;return m[d]+(m[d+1]-m[d])*b}return m[m.length-1]};return c(s)*(1-f)+c(a)*f}function vn(e,t,n,o,r,i,s,a,f,c=[],l=r){if(t.length!==n.length||t.length<2||i-r<1.5)return;let u=(p,b,x)=>{Be(e,p,b,x,c,s,a,{portalBase:l,ao:f})||W(e,p,void 0,()=>x,b,s,a,f)},h=(p,b,x)=>({x:p.x+(b.x-p.x)*x,y:p.y+(b.y-p.y)*x}),m=o?t.length:t.length-1,d=0;for(let p=0;p<m;p++){let b=(p+1)%t.length,x=Math.hypot(n[b].x-n[p].x,n[b].y-n[p].y)*Q;if(x<1e-5)continue;let y=(g,S)=>[h(t[p],t[b],g),h(t[p],t[b],S),h(n[p],n[b],S),h(n[p],n[b],g)];u(y(0,1),r,r+.95),u(y(0,1),i-.22,i);let I=Math.ceil((d-.32)/6)*6,P=!1,E=!1;for(let g=I;g<d+x;g+=6){let S=Math.max(0,(g-d)/x),M=Math.min(1,(g+.32-d)/x);M<=S||(u(y(S,M),r+.95,i-.22),P||=S<1e-6,E||=M>1-1e-6)}if(!o&&(p===0&&!P||p===m-1&&!E)){let g=Math.min(1,.32/x);u(y(p===0?0:1-g,p===0?g:1),r+.95,i-.22)}d+=x}}var Ve=Te(require("polygon-clipping"),1),Rt=.65;function Cn(e,t){let n=1/0;for(let o of t)for(let r=0;r<o.length;r++){let i=o[r],s=o[(r+1)%o.length],a=s.x-i.x,f=s.y-i.y,c=Math.max(0,Math.min(1,((e.x-i.x)*a+(e.y-i.y)*f)/(a*a+f*f||1)));n=Math.min(n,Math.hypot(e.x-i.x-c*a,e.y-i.y-c*f))}return n}var _n=.01;function Zr(e,t,n,o,r,i,s,a=[],f=!0,c={bays:[],walls:[]}){if(o-r<=1e-5)return;let l=o-r>=3,u=l?o-Rt:r;e.setMaterial(5);let h=l?[]:a.filter(g=>{if(g.role!=="entrance"&&g.role!=="exit")return!1;let S=ie(g);if(!S)return!1;let M=rt(S,r,r+Ee(g).heightM);return M!==null&&M.openingTop<=o-.12});if((!h.length||!Be(e,t,u,o,h,i,s,{holes:n,portalBase:r}))&&W(e,t,n,()=>o,u,i,s,Y,void 0,()=>[0,1,0]),!l){e.setMaterial(0);return}let m=f&&c.bays.length?qc(t,n,He(t,It/w),c):null,d=6/w,p=.22/w,b=a.flatMap(g=>{if(g.role!=="entrance"&&g.role!=="exit")return[];let S=ie(g);return S?.length?[{minX:Math.min(...S.map(M=>M.x)),maxX:Math.max(...S.map(M=>M.x)),minY:Math.min(...S.map(M=>M.y)),maxY:Math.max(...S.map(M=>M.y))}]:[]}),x=Math.min(...t.map(g=>g.x)),y=Math.max(...t.map(g=>g.x)),I=Math.min(...t.map(g=>g.y)),P=Math.max(...t.map(g=>g.y));for(let g=x+d/2;g<y;g+=d)for(let S=I+d/2;S<P;S+=d){if(b.some(R=>g+p>=R.minX&&g-p<=R.maxX&&S+p>=R.minY&&S-p<=R.maxY))continue;let M=[{x:g-p,y:S-p},{x:g+p,y:S-p},{x:g+p,y:S+p},{x:g-p,y:S+p}];!be({x:g,y:S},t,n)||Cn({x:g,y:S},[t,...n??[]])<p*Math.SQRT2+(f?It/w:0)||m&&Cn({x:g,y:S},m.flat())<p*Math.SQRT2+It/w||W(e,M,void 0,()=>u,r,i,s,Y)}if(m){for(let[g,...S]of m)W(e,g,S,()=>u,r-_n,i,s,Y);e.setMaterial(0);return}let E=He(t,It/w);if(f&&E.length>=3){let g=a.filter(R=>{if(R.role!=="entrance"&&R.role!=="exit")return!1;let v=ie(R);return!!v&&v.some(T=>!be(T,t,void 0)||Cn(T,[t])<=It/w)}),S=[E.slice().reverse()],M=r-_n;(!g.length||!Be(e,t,M,u,g,i,s,{holes:S,portalBase:r+_n}))&&W(e,t,S,()=>u,M,i,s,Y)}e.setMaterial(0)}var kn=.25,It=kn;function qc(e,t,n,o){if(n.length<3)return null;let r=s=>{let a=s.map(f=>[f.x,f.y]);return a.push(a[0]),a},i=s=>{let[a,...f]=s.map(c=>[r(c)]);return Ve.default.union(a,...f)};try{let s=[r(e),...(t??[]).map(r)],a=Ve.default.difference(s,[r(n)]),f=Ve.default.intersection(s,i(o.bays));if(!f.length)return null;let c=Ve.default.difference(Ve.default.intersection(s,i(o.walls)),f);return Ve.default.union(Ve.default.difference(a,f),c).map(u=>u.map(h=>h.slice(0,-1).map(([m,d])=>({x:m,y:d}))))}catch{return null}}var Jc=.02,el=.25,tl=1.2,nl=.6,ol=.45,rl=2.3,il=Math.PI/180,$r=.005;function ke(e,t,n){let o=n*il;return{x:e.x+t*Math.sin(o),y:e.y+t*Math.cos(o)}}function sl(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 s=0;for(let a of i)Math.hypot(a.x-t.centre.x,a.y-t.centre.y)>=o&&s++;if(s>=i.length/2)return!0}return!1}var al=24,cl=.01;function ll(e,t,n,o,r,i,s,a,f){let c=n.binCount,l=al,u=Q,h=i+.02,m=i-cl,d=[];for(let A=0;A<c;A++){let C=(n.startBin+A+.5)*t.binStepDeg,L=new Float64Array(l+1);for(let F=0;F<=l;F++){let O=o[A]+(r[A]-o[A])*F/l;L[F]=Math.max(h,zr(t,n,C,O)-el)}d.push(L)}if(f){let A=0;for(let C=0;C+1<c;C++)for(let L=0;L<l;L++){let F=ke(t.centre,o[C]+(r[C]-o[C])*L/l,(n.startBin+C+.5)*t.binStepDeg),O=ke(t.centre,o[C+1]+(r[C+1]-o[C+1])*(L+1)/l,(n.startBin+C+1.5)*t.binStepDeg);A=Math.max(A,Math.hypot(O.x-F.x,O.y-F.y))}for(let C=0;C<c;C++){let L=(n.startBin+C+.5)*t.binStepDeg;for(let F=0;F<=l;F++){let O=ke(t.centre,o[C]+(r[C]-o[C])*F/l,L),B=f(O.x,O.y,A*1.01);B!==null&&(d[C][F]=Math.min(d[C][F],Math.max(m+$r,B-$r)))}}}let p=[s.bandTop[0]*a.top,s.bandTop[1]*a.top,s.bandTop[2]*a.top],b=[s.bandTop[0]*a.bottomCap,s.bandTop[1]*a.bottomCap,s.bandTop[2]*a.bottomCap],x=[s.bandWall[0]*a.top,s.bandWall[1]*a.top,s.bandWall[2]*a.top],y=[s.bandWall[0]*a.wallBottom,s.bandWall[1]*a.wallBottom,s.bandWall[2]*a.wallBottom],I=(A,C)=>{let L=(n.startBin+A+.5)*t.binStepDeg,F=o[A]+(r[A]-o[A])*C/l,O=ke(t.centre,F,L);return[O.x*u,d[A][C],O.y*u]};{let A=Math.tan(12*Math.PI/180);for(let C=0;C<6;C++){let L=!1;for(let O=0;O<c;O++)for(let B=l-1;B>=0;B--)d[O][B]>d[O][B+1]&&(d[O][B]=d[O][B+1],L=!0);let F=n.closed?c:c-1;for(let O=0;O<F;O++){let B=(O+1)%c;for(let N=0;N<=l;N++){let H=d[B][N]-d[O][N];if(Math.abs(H)>1)continue;let D=o[O]+(r[O]-o[O])*N/l,U=o[B]+(r[B]-o[B])*N/l,V=ke(t.centre,D,(n.startBin+O+.5)*t.binStepDeg),$=ke(t.centre,U,(n.startBin+B+.5)*t.binStepDeg),X=A*Math.hypot($.x-V.x,$.y-V.y)*u;H>X?(d[B][N]=d[O][N]+X,L=!0):-H>X&&(d[O][N]=d[B][N]+X,L=!0)}}if(!L)break}}let P=1,E=(A,C)=>{for(let L=0;L<=l;L+=4)if(Math.abs(d[A][L]-d[C][L])>P)return!0;return Math.abs(d[A][l]-d[C][l])>P},g=Math.tan(38*Math.PI/180),S=A=>(r[A]-o[A])/l*u,M=(A,C)=>d[A][C+1]-d[A][C]>g*Math.max(1e-6,S(A)),R=(A,C)=>{let L=n.closed?(A-1+c)%c:Math.max(0,A-1),F=n.closed?(A+1)%c:Math.min(c-1,A+1);Math.abs(d[L][C]-d[A][C])>P&&(L=A),Math.abs(d[F][C]-d[A][C])>P&&(F=A);let O=Math.max(0,C-1),B=Math.min(l,C+1);O<C&&M(A,O)&&(O=C),B>C&&M(A,C)&&(B=C);let N=I(L,C),H=I(F,C),D=I(A,O),U=I(A,B),V=H[0]-N[0],$=H[1]-N[1],X=H[2]-N[2],J=U[0]-D[0],Z=U[1]-D[1],ce=U[2]-D[2],ae=$*ce-X*Z,G=X*J-V*ce,j=V*Z-$*J,q=Math.hypot(ae,G,j);return q>1e-12?(ae/=q,G/=q,j/=q,G<0&&(ae=-ae,G=-G,j=-j),[ae,G,j]):[0,1,0]},v=(A,C,L=!1)=>{let F=L&&Math.min(A[1],C[1])-i>=3,O=[A[0],F?A[1]-Rt:m,A[2]],B=[C[0],F?C[1]-Rt:m,C[2]],N=C[0]-A[0],H=C[2]-A[2],D=Math.hypot(N,H);if(!(D>1e-12))return;let U=[H/D,0,-N/D];e.tri(A,C,B,U,x,x,y),e.tri(A,B,O,U,x,y,y)},T=.05*Ie,k=A=>r[A]-o[A]<T,_=n.closed?c:c-1;for(let A=0;A<_;A++){let C=(A+1)%c;if(k(A)||k(C))continue;if(E(A,C)){let H=(n.startBin+A+1)*t.binStepDeg,D=(Z,ce)=>{let ae=(o[A]+o[C])/2,G=(r[A]+r[C])/2,j=ae+(G-ae)*ce/l,q=ke(t.centre,j,H);return[q.x*u,d[Z][ce],q.y*u]};for(let Z=0;Z<l;Z++){let ce=I(A,Z),ae=I(A,Z+1),G=D(A,Z),j=D(A,Z+1),q=R(A,Z),ue=R(A,Z+1);e.triN(ce,G,j,q,q,ue,p),e.triN(ce,j,ae,q,ue,ue,p);let fe=I(C,Z),he=I(C,Z+1),re=D(C,Z),se=D(C,Z+1),ve=R(C,Z),K=R(C,Z+1);e.triN(re,fe,he,ve,ve,K,p),e.triN(re,he,se,ve,K,K,p);let le=D(A,Z),me=D(A,Z+1),Ye=D(C,Z+1),Ke=D(C,Z),De=me[0]-le[0],Ne=me[2]-le[2],lt=Math.hypot(De,Ne);if(lt>1e-12){let wt=[Ne/lt,0,-De/lt];e.tri(le,me,Ye,wt,x),e.tri(le,Ye,Ke,wt,x)}}let U=I(A,0),V=I(C,0),$=I(C,l),X=I(A,l),J=Z=>[Z[0],m,Z[2]];Math.min(U[1],V[1])-i<3&&(e.tri(J(U),J($),J(V),[0,-1,0],b),e.tri(J(U),J(X),J($),[0,-1,0],b)),v(U,V,!0),v(X,$,!0);continue}for(let H=0;H<l;H++){let D=R(A,H),U=R(C,H),V=R(C,H+1),$=R(A,H+1);if(M(A,H)||M(C,H)){let ae=(me,Ye)=>{let Ke=(n.startBin+me+.5)*t.binStepDeg,De=o[me]+(r[me]-o[me])*(H+.5)/l,Ne=ke(t.centre,De,Ke);return[Ne.x*u,Ye,Ne.y*u]},G=I(A,H),j=I(C,H),q=ae(A,d[A][H]),ue=ae(C,d[C][H]);e.triN(G,j,ue,D,U,U,p),e.triN(G,ue,q,D,U,D,p);let fe=I(C,H+1),he=I(A,H+1),re=ae(A,d[A][H+1]),se=ae(C,d[C][H+1]);e.triN(re,se,fe,$,V,V,p),e.triN(re,fe,he,$,V,$,p);let ve=ue[0]-q[0],K=ue[2]-q[2],le=Math.hypot(ve,K);if(le>1e-12){let me=[-K/le,0,ve/le];e.tri(q,ue,se,me,x),e.tri(q,se,re,me,x)}continue}let X=I(A,H),J=I(C,H),Z=I(C,H+1),ce=I(A,H+1);e.triN(X,J,Z,D,U,V,p),e.triN(X,Z,ce,D,V,$,p)}let L=I(A,0),F=I(C,0),O=I(C,l),B=I(A,l),N=H=>[H[0],m,H[2]];Math.min(L[1],F[1])-i<3&&(e.tri(N(L),N(O),N(F),[0,-1,0],b),e.tri(N(L),N(B),N(O),[0,-1,0],b)),v(L,F,!0),v(B,O,!0)}if(!n.closed)for(let A of[0,c-1])for(let C=0;C<l;C++)v(I(A,C),I(A,C+1))}function Qr(e,t,n){let{bottomY:o,colors:r,ao:i}=n,s=new Float64Array(t.binCount).fill(-1/0);for(let l of t.rings)for(let u of l.arcs){let h=new Float64Array(u.binCount),m=new Float64Array(u.binCount);for(let p=0;p<u.binCount;p++){let b=(u.startBin+p)%t.binCount,x=Math.max(0,u.innerR[p]-Re);h[p]=Math.max(x,s[b]+.001),m[p]=Math.max(h[p]+.001,u.outerR[p]+Re)}let d=0;for(let p=0;p<u.binCount;p++){let b=u.topLevelM[p]-o;b>d&&(d=b)}d>=tl&&ll(e,t,u,h,m,o,r,i,n.standTopNear);for(let p=0;p<u.binCount;p++){let b=(u.startBin+p)%t.binCount;m[p]>s[b]&&(s[b]=m[p])}}if(n.deriveShell===!1||sl(n.shapes,t))return;let a=t.rings[t.rings.length-1],f=nl*Ie,c=ol*Ie;for(let l of a.arcs){let u=[],h=[];for(let R=0;R<l.binCount;R++){let v=(l.startBin+R+.5)*t.binStepDeg,T=l.outerR[R]+Re+f;u.push(ke(t.centre,T,v)),h.push(ke(t.centre,T+c,v))}let m=-1/0;for(let R=0;R<l.binCount;R++)l.topLevelM[R]>m&&(m=l.topLevelM[R]);let d=m+rl,p=l.closed?h:[...h,...u.slice().reverse()],b=l.closed?[u.slice().reverse()]:void 0,x=te(r.shellWall,[.66,.71,.72],.62),y=(R,v,T,k,_)=>{let A=Math.abs(k-m)<1e-6?k-Jc:k;Be(e,R,T,A,n.shapes,r.shellTop,_,{holes:v,portalBase:o,ao:i})||W(e,R,v,()=>A,T,r.shellTop,_,i)},I=Math.max(1,Math.ceil((m-o)/4.5)),P=(m-o)/I,E=new Set,g=n.tierFrontLevels??t.rings.map(R=>{let v=R.arcs.flatMap(T=>Array.from(T.frontLevelM)).filter(Number.isFinite).sort((T,k)=>T-k);return v[Math.floor(v.length/2)]});for(let R of g)Number.isFinite(R)&&R-o>=3&&R<m&&E.add(Math.max(0,Math.min(I-1,Math.floor((R-o)/P))));let S=Math.min(...g.filter(R=>Number.isFinite(R)&&R-o>=3&&R<m));for(let R=0;R<I;R++)o+(R+1)*P<=S-Rt&&Number.isFinite(S)&&E.add(R);for(let R=0;R<I;R++){let v=o+(m-o)*R/I,T=o+(m-o)*(R+1)/I;E.has(R)&&T-v>=3.2?(y(p,b,v,v+.45,x),vn(e,u,h,l.closed,v+.45,T-.16,r.shellTop,x,i,n.shapes,o)):y(p,b,v,T-.16,x),y(p,b,T-.16,T,z(x,.62))}vn(e,u,h,l.closed,m,d,r.shellTop,x,i,n.shapes,o);let M=8;for(let R=1;R<h.length;R++){if(M+=Math.hypot(h[R].x-h[R-1].x,h[R].y-h[R-1].y)*Q,M<8)continue;M=0;let v=h[R],T=h[R-1],k=v.x-T.x,_=v.y-T.y,A=Math.max(1,Math.hypot(k,_)),C=k/A*.16*Ie,L=_/A*.16*Ie,F=Math.max(1,Math.hypot(v.x-t.centre.x,v.y-t.centre.y)),O=(v.x-t.centre.x)/F*.24*Ie,B=(v.y-t.centre.y)/F*.24*Ie,N=[{x:v.x-C,y:v.y-L},{x:v.x+C,y:v.y+L},{x:v.x+C+O,y:v.y+L+B},{x:v.x-C+O,y:v.y-L+B}];y(N,void 0,o,m,z(x,1.12))}}}var ul=2.5,qr=.65,fl=2,ml=.03;function hl(e,t){let n=()=>{let o=t;for(;e.length>2;){let r=e[0],i=e[1],s=Math.hypot(i.x-r.x,i.y-r.y);if(s>o){e[0]={x:r.x+(i.x-r.x)/s*o,y:r.y+(i.y-r.y)/s*o};return}o-=s,e.shift()}};n(),e.reverse(),n(),e.reverse()}function On(e,t,n){let o=new Map;for(let i of e){let s=o.get(i.blockId);(!s||i.depth<s.depth)&&o.set(i.blockId,i)}let r=[];for(let[i,s]of o){if(s.y-n<ul||s.pts.length<2)continue;let a=s.pts.map(l=>{let u=l.x-t.x,h=l.y-t.y,m=Math.max(1,Math.hypot(u,h));return{x:l.x-u/m*qr/w,y:l.y-h/m*qr/w}}),f=[],c=[a[0]];for(let l=1;l<a.length;l++){let u=a[l-1],h=a[l];Math.hypot(h.x-u.x,h.y-u.y)*w>fl?(c.length>=2&&f.push(c),c=[h]):c.push(h)}c.length>=2&&f.push(c);for(let l of f)hl(l,ml/w);f.length&&r.push({blockId:i,y:s.y,runs:f})}return r}var Jr=.1,dl=1.1,pl=.22,Tn=.95,Ln=.05,ei=1.8;function ti(e,t,n,o){let r=[.72,.72,.69],i=[.48,.55,.57];for(let s of On(t,n,o)){let a=s.y;for(let f of s.runs){let c=ei;for(let l=1;l<f.length;l++){let u=f[l-1],h=f[l],m=h.x-u.x,d=h.y-u.y,p=Math.hypot(m,d);if(p<1e-5)continue;let b=x=>{let y=-d/p*x/w/2,I=m/p*x/w/2;return[{x:u.x+y,y:u.y+I},{x:h.x+y,y:h.y+I},{x:h.x-y,y:h.y-I},{x:u.x-y,y:u.y-I}]};if(W(e,b(pl),void 0,()=>a+Jr,a-dl,r,r,Y),W(e,b(Ln),void 0,()=>a+Tn,a+Tn-Ln,i,i,Y),c+=p*w,c>=ei||l===f.length-1){c=0;let x=.028/w,y=[{x:u.x-x,y:u.y-x},{x:u.x+x,y:u.y-x},{x:u.x+x,y:u.y+x},{x:u.x-x,y:u.y+x}];W(e,y,void 0,()=>a+Tn-Ln,a+Jr,i,i,Y)}}}}}var bl=.9,yl=1.5,xl=.3;function ni(e,t,n){let o=[],r=[],i=bl/w,s=yl/w,a=xl/w;for(let f of e)for(let c of f.runs){if(c.length<2)continue;let l=c.slice(),u=(b,x)=>{let y=l[b],I=l[x],P=Math.hypot(y.x-I.x,y.y-I.y)||1;l[b]={x:y.x+(y.x-I.x)/P*a,y:y.y+(y.y-I.y)/P*a}};u(0,1),u(l.length-1,l.length-2);let h=l.map((b,x)=>{let y=l[Math.max(0,x-1)],I=l[Math.min(l.length-1,x+1)],P=I.x-y.x,E=I.y-y.y,g=Math.hypot(P,E)||1,S=-E/g,M=P/g;return S*(b.x-t.x)+M*(b.y-t.y)<0&&(S=-S,M=-M),{nx:S,ny:M}}),m=l.map((b,x)=>({x:b.x-h[x].nx*s,y:b.y-h[x].ny*s})),d=l.map((b,x)=>({x:b.x+h[x].nx*i,y:b.y+h[x].ny*i})),p=l.map((b,x)=>({x:b.x+h[x].nx*(i+n/w),y:b.y+h[x].ny*(i+n/w)}));o.push([...m,...d.slice().reverse()]),r.push([...d,...p.reverse()])}return{bays:o,walls:r}}function oi(e,t,n,o,r){let i=[.67,.71,.68];for(let s=0;s<t.length;s++){let a=t[s];if(!(a.pts.length<2))for(let f of[0,a.pts.length-1]){let c=a.pts[f],l=a.pts[f===0?1:f-1],u=c.x-l.x,h=c.y-l.y,m=Math.hypot(u,h);if(m<1e-5)continue;u/=m,h/=m;let d=1/0;for(let M=0;M<n.length;M++){let R=n[M],v=n[(M+1)%n.length],T=v.x-R.x,k=v.y-R.y,_=u*k-h*T;if(Math.abs(_)<1e-8)continue;let A=R.x-c.x,C=R.y-c.y,L=(A*k-C*T)/_,F=(A*h-C*u)/_;L>0&&F>=0&&F<=1&&(d=Math.min(d,L))}let p=.3/w,b=d-.04/w;if(!Number.isFinite(d)||d*w>2||b-p<.12/w)continue;let x=.27/w,y=[{x:c.x+u*p-h*x,y:c.y+h*p+u*x},{x:c.x+u*b-h*x,y:c.y+h*b+u*x},{x:c.x+u*b+h*x,y:c.y+h*b-u*x},{x:c.x+u*p+h*x,y:c.y+h*p-u*x}];if(!y.every(M=>xe(n,M.x,M.y)))continue;let I=r?.[s]?.belowY,P=I==null?0:a.y-I,E=!!o&&P>.03&&P<=.65;if(E&&o){let M=(R,v)=>Math.hypot((R.x+v.x)/2-o.x,(R.y+v.y)/2-o.y);M(y[0],y[1])>M(y[3],y[2])&&(y=[y[3],y[2],y[1],y[0]])}let g=E?Math.ceil((P-1e-8)/.2):1,S=(M,R,v)=>({x:M.x+(R.x-M.x)*v,y:M.y+(R.y-M.y)*v});for(let M=0;M<g;M++){let R=M/g,v=(M+1)/g,T=[S(y[0],y[3],R),S(y[1],y[2],R),S(y[1],y[2],v),S(y[0],y[3],v)],k=a.y+.008-(E?P*(1-v):0);if(W(e,T,void 0,()=>k,k-(E?P/g+.1:.16),i,[.43,.47,.46],Y),!E)continue;let _=Math.hypot(T[3].x-T[0].x,T[3].y-T[0].y)*w,A=Math.min(.04/_,.25),C=S(T[0],T[3],A),L=S(T[1],T[2],A),F=B=>[B.x*w,k+.004,B.y*w],O=[.66,.59,.39];e.tri(F(T[0]),F(T[1]),F(L),[0,1,0],O),e.tri(F(T[0]),F(L),F(C),[0,1,0],O)}}}}function ri(e,t,n,o,r,i,s,a,f=!1){if(!t.outline||t.outline.length<3)return;let c=n.baseHeightM,l=n.objects.filter(y=>y.type==="shape"&&(y.role==="entrance"||y.role==="exit")),u=Bo(o,a.tierTop);if(!r)return;let h=y=>r.deckAt(y.x,y.y),m=ir(t,s),d=m[0]??t.outline;if(r.rowLevels.length>=2){let y=Gt(r.rowLevels),I=sr(er(r.rowLevels,n.focal,y),m),P=ni(On(r.rowLevels,n.focal,c),n.focal,kn);for(let g of I){let S=Math.max(c,g.topY-ii);for(let M of i.subtract(g.outline,S))Zr(e,M,g.holes,S,c,a.tierTop,a.tierWall,l,!f,P)}I.length||W(e,d,t.holes,()=>r.landingY,c,u,a.tierWall,Y);let E={tread:[u[0]*Y.top,u[1]*Y.top,u[2]*Y.top],riser:[u[0]*.72,u[1]*.72,u[2]*.72]};for(let g of m.length?m:[d])nr(e,r.rowLevels,n.focal,r.landingY,E,g,y);ti(e,r.rowLevels,n.focal,c),oi(e,r.rowLevels,t.outline,n.focal,y);return}let p=r.flat?1/0:br,b=y=>r.normalAt(y.x,y.y),x=r.flat?r.landingY:void 0;for(let y of i.subtract(d,x))W(e,y,t.holes,h,c,u,a.tierWall,Y,p,b)}function gl(e,t,n){let o=new Set;for(let s of e.objects)s.type==="section"&&o.add(s.id);let r=new Map;for(let s=0;s<t.length;s++){let a=n.seatOwner[s];if(!a||!o.has(a))continue;let f=n.bySection.get(a);if(f&&f.rowLevels.length>=2)continue;let c=t[s];if(c.kind==="booth")continue;let l=r.get(a);l||(l=new Map,r.set(a,l));let u=c.rowId||`__seat-${s}`,h=l.get(u);h||(h={pts:[],levelM:0,n:0},l.set(u,h)),h.pts.push({x:c.x,y:c.y}),h.levelM+=n.seatDeckY(s),h.n++}let i=[];for(let s of e.objects){if(s.type!=="section")continue;let a=n.bySection.get(s.id);if(a&&a.rowLevels.length>=2){let c=a.rowLevels.filter(l=>!l.patch).map(l=>({pts:l.pts,levelM:l.y}));c.length>=2&&i.push({sectionId:s.id,rows:c});continue}let f=r.get(s.id);f&&i.push({sectionId:s.id,rows:[...f.values()].map(c=>({pts:c.pts,levelM:c.levelM/c.n}))})}return i}function Ml(e,t){let n=1/0;for(let o=0;o<t.length;o++){let r=t[o],i=t[(o+1)%t.length],s=i.x-r.x,a=i.y-r.y,f=Math.max(0,Math.min(1,((e.x-r.x)*s+(e.y-r.y)*a)/(s*s+a*a||1)));n=Math.min(n,Math.hypot(e.x-r.x-f*s,e.y-r.y-f*a))}return n}var ii=.02;function Sl(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,s=-1/0,a=1/0,f=-1/0;for(let l of o.outline)l.x<i&&(i=l.x),l.x>s&&(s=l.x),l.y<a&&(a=l.y),l.y>f&&(f=l.y);let c=r.landingY;for(let l of r.rowLevels)c=Math.min(c,l.y-ii);return[{outline:o.outline,holes:o.holes,surface:r,floorTop:c,minX:i,maxX:s,minY:a,maxY:f}]});return(o,r,i)=>{let s=null;for(let a of n){if(o<a.minX-i||o>a.maxX+i||r<a.minY-i||r>a.maxY+i)continue;let f={x:o,y:r};if(!be(f,a.outline,a.holes)&&Ml(f,a.outline)>i)continue;let c=Math.min(a.surface.deckAt(o,r),a.floorTop);(s===null||c<s)&&(s=c)}return s}}var Il=3,Rl=.4;function si(e,t,n,o,r,i,s=!0){let a=gl(t,n,o);if(a.length<Il)return;let f=Wr(a,t.focal);if(!f)return;let c=Math.max(0,...f.rings.map(l=>l.arcs.reduce((u,h)=>u+h.binCount,0)))/f.binCount;e.setMaterial(5),Qr(e,f,{bottomY:t.baseHeightM,tierFrontLevels:a.map(l=>Math.min(...l.rows.map(u=>u.levelM))),colors:{bandTop:z(r.tierTop,.8),bandWall:r.tierWall,shellTop:i??z(r.tierWall,1.15),shellWall:i??r.tierWall},ao:Y,shapes:t.objects.filter(l=>l.type==="shape"),deriveShell:s&&c>=Rl,standTopNear:Sl(t,o)}),e.setMaterial(0)}var ai=4;var Pl=[[/\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"]],wl=1.2,El=12;function ci(e){if(e.heightM!==void 0)return!1;let t=ie(e);if(!t||t.length<3)return!1;let n=0;for(let r=0;r<t.length;r++){let i=t[r],s=t[(r+1)%t.length];n+=Math.hypot(s.x-i.x,s.y-i.y)}return n*Q<El*2?!1:2*Pt(t)/n*Q<=wl}function Bn(e){if(!e)return null;for(let[t,n]of Pl)if(t.test(e))return n;return null}var ui="auto-rows-";function fi(e){return e.id.startsWith(ui)&&!e.label}var Al=1.15,vl=.09,mi=6,Cl=34,_l=.35,kl=6,Tl=.35,Ll=.75,Ol=12,Bl=2.5,Fl=40,Dl=[18,24],Nl=[12,16],li=14,Gl=.8,jl=.6,Hl=5,Xl=.3,hi=.4,Ul=2,Vl=400,Yl=2.6,Kl=.8,Wl=4,zl=26,Zl=1.6,$l=6e3,Ql=.6,ql="#c3c7cd",Fn=300,Jl=240;function eu(e,t,n,o){if(!e.fill||!/^#[0-9a-f]{6}$/i.test(e.fill))return null;let r=Nn([...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<Jl)return null;let{h:s,s:a,l:f}=wo(Po(e.fill));return s<70/360||s>170/360||a<.2||f<.08||f>.75||n.some(l=>l!==e&&l.type==="shape"&&ie(l)?.some(u=>jn(u,t)))?null:e.kind==="ellipse"?"oval-cricket":e.kind==="rect"?"pitch-football":null}var tu="Estimated from the drawing; confirm with the venue.",di=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},Nn=e=>({x:e.reduce((t,n)=>t+n.x,0)/e.length,y:e.reduce((t,n)=>t+n.y,0)/e.length}),Pt=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 nu(e){return e.height!==void 0||e.rake!==void 0||e.elevation!==void 0||e.surfaceKind!==void 0}function Gn(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 jn(e,t){let n=!1;for(let o=0,r=t.length-1;o<t.length;r=o++){let i=t[o],s=t[r];i.y>e.y!=s.y>e.y&&e.x<(s.x-i.x)*(e.y-i.y)/(s.y-i.y)+i.x&&(n=!n)}return n}function Hn(e,t){let n=t[0],o=1/0;for(let r=0;r<t.length;r++){let i=t[r],s=t[(r+1)%t.length],a=s.x-i.x,f=s.y-i.y,c=a*a+f*f,l=c>0?Math.max(0,Math.min(1,((e.x-i.x)*a+(e.y-i.y)*f)/c)):0,u={x:i.x+a*l,y:i.y+f*l},h=Math.hypot(e.x-u.x,e.y-u.y);h<o&&(o=h,n=u)}return n}function pi(e,t){let n=0,o=0;for(let r of e.values()){if(r.length<3)continue;let i=r[0],s=r[r.length-1],a=s.x-i.x,f=s.y-i.y,c=Math.hypot(a,f);if(c<1e-6)continue;let l={x:(i.x+s.x)/2,y:(i.y+s.y)/2},u=Hn(l,t),h=u.x-l.x,m=u.y-l.y,d=Math.hypot(h,m);d<1e-6||(o+=Math.abs((-f*h+a*m)/(c*d))*r.length,n+=r.length)}return n?o/n:0}function ou(e,t,n){let o=e.filter(p=>p.type==="shape"),r=o.find(p=>p.role==="stage");if(r){let p=ie(r);return p?{shape:r,centre:Nn(p),outline:p,inferred:!1}:null}if(!n.length)return null;let i=1/0,s=-1/0,a=1/0,f=-1/0;for(let p of n)i=Math.min(i,p.x),s=Math.max(s,p.x),a=Math.min(a,p.y),f=Math.max(f,p.y);let c=(s-i)*(f-a),l=[];for(let p of o){if(p.role)continue;let b=ie(p);if(!b)continue;let x=Pt(b);if(x*Q*Q<6||x>c)continue;let y=Math.min(...b.map(R=>R.x)),I=Math.max(...b.map(R=>R.x)),P=Math.min(...b.map(R=>R.y)),E=Math.max(...b.map(R=>R.y)),g=0;for(let R of n)R.x>y&&R.x<I&&R.y>P&&R.y<E&&jn(R,b)&&g++;if(g>n.length*.05)continue;let S=Nn(b),M=pi(t,b);M>=Gl&&l.push({shape:p,centre:S,outline:b,score:M,area:x,box:[y,P,I,E]})}let u=(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=>u(p,b))),m=Math.max(0,...h.map(p=>p.score)),d=h.filter(p=>p.score>=m-.03).sort((p,b)=>b.area-p.area)[0]??null;return d?{shape:d.shape,centre:d.centre,outline:d.outline,inferred:!0}:null}function ru(e,t,n){if(!n||n.length<3)return Math.hypot(e.x-t.x,e.y-t.y);let o=Hn(e,n);return Math.hypot(e.x-o.x,e.y-o.y)}function bi(e){let t=[...e].sort((i,s)=>i.x-s.x||i.y-s.y);if(t.length<3)return t;let n=(i,s,a)=>(s.x-i.x)*(a.y-i.y)-(s.y-i.y)*(a.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 s=t[i];for(;r.length>=2&&n(r[r.length-2],r[r.length-1],s)<=0;)r.pop();r.push(s)}return[...o.slice(0,-1),...r.slice(0,-1)]}function iu(e){if(!e.length||e.length>$l)return[];let t=[...Gn(e).values()],n=t.map((a,f)=>f),o=a=>n[a]===a?a:n[a]=o(n[a]),r=Zl/Q,i=t.map(a=>({minX:Math.min(...a.map(f=>f.x))-r,maxX:Math.max(...a.map(f=>f.x))+r,minY:Math.min(...a.map(f=>f.y))-r,maxY:Math.max(...a.map(f=>f.y))+r}));for(let a=0;a<t.length;a++)for(let f=a+1;f<t.length;f++){let c=i[a],l=i[f];if(c.maxX<l.minX||l.maxX<c.minX||c.maxY<l.minY||l.maxY<c.minY)continue;t[a].some(h=>t[f].some(m=>Math.hypot(h.x-m.x,h.y-m.y)<=r))&&(n[o(a)]=o(f))}let s=new Map;return t.forEach((a,f)=>{let c=o(f),l=s.get(c);l?l.push(...a):s.set(c,[...a])}),[...s.values()].filter(a=>new Set(a.map(f=>f.rowId)).size>=2)}function su(e,t,n){if(!t.length)return null;let o=t.filter(M=>n.tableIds.has(M.rowId)||M.kind==="booth").length>t.length/2,r=Gn(t),i=!n.outline||pi(r,n.outline)>=jl,s=0,a=0;for(let M of r.values()){if(M.length<2)continue;let R=M[0],v=M[M.length-1],T=v.x-R.x,k=v.y-R.y,_=Math.hypot(T,k);if(_<1e-6)continue;let A={x:(R.x+v.x)/2,y:(R.y+v.y)/2},C=i?n.outline?Hn(A,n.outline):n.focal:n.middle,L=-k/_,F=T/_;L*(C.x-A.x)+F*(C.y-A.y)<0&&(L=-L,F=-F),s+=L*M.length,a+=F*M.length}let f={x:t.reduce((M,R)=>M+R.x,0)/t.length,y:t.reduce((M,R)=>M+R.y,0)/t.length};if(Math.hypot(s,a)<1e-9){let M=i?n.focal:n.middle;s=M.x-f.x,a=M.y-f.y}let c=Math.hypot(s,a)||1,l={x:s/c,y:a/c},u=M=>-(M.x*l.x+M.y*l.y),h=M=>-M.x*l.y+M.y*l.x,m=1/0,d=-1/0,p=1/0,b=-1/0,x=1/0,y=new Map;for(let M of t){let R=u(M),v=h(M);m=Math.min(m,R),d=Math.max(d,R),p=Math.min(p,v),b=Math.max(b,v),i&&(x=Math.min(x,ru(M,n.focal,n.outline)));let T=M.logicalRowId??M.rowId,k=y.get(T);k?k.push(R):y.set(T,[R])}i||(x=Math.max(0,m-u(n.middle)));let I=[...y.values()].map(M=>di(M)).sort((M,R)=>M-R),P=[];if(!o)for(let M of I)P.length&&M-P[P.length-1]<Tl/Q||P.push(M);let E=nu(e),g=Ge(e,{floorBaseHeightM:n.baseHeightM}),S={id:e.id,section:e,authored:E,plane:n,facing:l,facesAction:i,hull:bi(t),sample:t.filter((M,R)=>R%Math.ceil(t.length/Vl)===0),frontD:m,backD:d,latMin:p,latMax:b,frontDistance:x,rowDepths:P,rowCount:P.length,level:0,height:g.height,rake:E?g.rake:0,backHeight:0};return S.backHeight=S.height+(d-m)*Q*Math.tan(S.rake*Math.PI/180),S}function au(e,t,n,o){if(e.length<2)return 0;let r=Math.max(1,t*Q),i=n+Al-o,s=0,a=0;for(let c=1;c<e.length;c++){let l=Math.max(Ll,(e[c]-e[c-1])*Q),u=(i+vl)*(r+l)/r;s+=u-i,a+=l,i=u,r+=l}let f=Math.atan(s/a)*180/Math.PI;return Math.round(Math.max(mi,Math.min(Cl,f))*10)/10}function cu(e,t){if(e.facing.x*t.facing.x+e.facing.y*t.facing.y<Xl)return null;let n=-1/0,o=1/0,r=-1/0;for(let u of t.hull){n=Math.max(n,-(u.x*e.facing.x+u.y*e.facing.y));let h=-u.x*e.facing.y+u.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)<hi*(e.latMax-e.latMin))return null;let s=Ul/Q,a=new Map,f=new Map;for(let u of e.sample){let h=Math.floor((-u.x*e.facing.y+u.y*e.facing.x)/s),m=-(u.x*e.facing.x+u.y*e.facing.y);a.set(h,Math.min(a.get(h)??1/0,m))}for(let u of t.sample){let h=Math.floor((-u.x*e.facing.y+u.y*e.facing.x)/s),m=-(u.x*e.facing.x+u.y*e.facing.y);f.set(h,Math.max(f.get(h)??-1/0,m))}let c=[];for(let[u,h]of a){let m=f.get(u);m!==void 0&&c.push(h-m)}let l=c.length?di(c):e.frontD-n;return l<-1/Q?null:l}function lu(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 f of t.hull){let c=-(f.x*e.facing.x+f.y*e.facing.y);n=Math.max(n,c),o=Math.min(o,c);let l=-f.x*e.facing.y+f.y*e.facing.x;r=Math.min(r,l),i=Math.max(i,l)}let s=Math.min(e.latMax,i)-Math.max(e.latMin,r),a=Math.min(e.backD,n)-Math.max(e.frontD,o);return s>hi*(e.latMax-e.latMin)&&a>1/Q}function uu(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 fu(e,t){let n=1/0,o=-1/0;for(let i of t.hull){let s=-(i.x*e.facing.x+i.y*e.facing.y);n=Math.min(n,s),o=Math.max(o,s)}let r=Math.max(0,Math.min(o-n,e.frontD-n));return t.height+r*Q*Math.tan(t.rake*Math.PI/180)}function mu(e,t=!1,n=!1){let o=t?Nl:Dl,r=new Map,i=[...e].sort((c,l)=>c.plane.floorIndex-l.plane.floorIndex||c.frontDistance-l.frontDistance),s=[],a=new Map,f=c=>{if(c.plane.floorIndex===0||c.plane.baseHeightM>0)return c.plane.baseHeightM;let l=a.get(c.plane.floorIndex-1);return l===void 0?c.plane.baseHeightM:l+ai};for(let c of i){if(!c.authored){let u=f(c),h;for(let p of s){if(p.plane.floorIndex>c.plane.floorIndex)continue;if(lu(c,p)){let I=fu(c,p)+Yl;I>u&&(u=I,h=p);continue}let b=cu(c,p);if(b==null)continue;let y=n&&!!c.plane.stageDeck&&p.level===0&&p.plane.floorIndex===c.plane.floorIndex&&Math.max(0,b)*Q<=Wl?p.backHeight:p.backHeight+_l+Math.min(kl,Math.max(0,b)*Q)*Math.tan(p.rake*Math.PI/180);y>u&&(u=y,h=p)}c.height=Math.round(Math.min(u,c.plane.baseHeightM+Fl)*100)/100;let m=!h&&c.height>c.plane.baseHeightM;if(c.level=h?h.level+1:m?1:0,c.rake=au(c.rowDepths,c.frontDistance,c.height,c.plane.focalHeightM),!c.facesAction&&c.rowCount<Hl)c.rake=0;else if(!h&&!m){let p=Math.max(1e-6,(c.backD-c.frontD)*Q);c.rake=Math.min(c.rake,Ol,Math.round(Math.atan(Bl/p)*1800/Math.PI)/10)}else c.rowCount>=2&&(c.rake=Math.max(c.rake,o[Math.min(c.level,o.length)-1]));let d=(c.backD-c.frontD)*Q;if(t&&d>0&&c.height+d*Math.tan(c.rake*Math.PI/180)>c.plane.baseHeightM+li){let p=Math.max(0,c.plane.baseHeightM+li-c.height);c.rake=Math.max(mi,Math.round(Math.atan(p/d)*1800/Math.PI)/10)}n&&c.plane.stageDeck&&c.level>0&&(c.rake=Math.min(c.rake,zl)),c.backHeight=c.height+d*Math.tan(c.rake*Math.PI/180),r.set(c.id,h?.id)}let l=c.plane.floorIndex;a.set(l,Math.min(a.get(l)??1/0,c.height)),s.push(c)}return r}var Dn=(e,t)=>!!e&&e.x===t.x&&e.y===t.y;function yi(e,t={x:0,y:-40}){let n=et(e),o=new Map;for(let b of n){if(!b.sectionId)continue;let x=o.get(b.sectionId);x?x.push(b):o.set(b.sectionId,[b])}let r={focalInferred:!1,confident:!1,sections:[]},i=e.floors?.length?e.floors.map((b,x)=>({objects:b.objects,floorIndex:x,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}],s=new Set(i.flatMap(b=>b.objects.filter(x=>x.type==="table").map(x=>x.id))),a=[],f,c=new Set,l=i.map(b=>{let x=k=>!e.floors?.length||k.floorId===b.floorId,y=iu(n.filter(k=>!k.sectionId&&k.kind!=="booth"&&!s.has(k.rowId)&&x(k))),I=[];for(let k of y){let _=Pe(_e(bi(k)),Ql/Q);if(n.some(C=>!x(C)&&jn(C,_)))continue;let A=`${ui}${b.floorIndex}-${I.length}`;c.add(A),o.set(A,k),I.push({type:"section",id:A,label:"",color:ql,outline:_})}let P=I.length?{...b,objects:[...b.objects,...I]}:b,E=new Set(P.objects.filter(k=>k.type==="section").map(k=>k.logicalSectionId??k.id)),g=[...o.entries()].filter(([k])=>E.has(k)).flatMap(([,k])=>k),S=ou(P.objects,Gn(g),g),M=P.focal;(S||P.focal&&!Dn(P.focal,t))&&(r.confident=!0),S&&(r.stage??={id:S.shape.id,inferred:S.inferred,...P.floorId?{floorId:P.floorId}:{}},(S.inferred||Dn(P.focal,t))&&(M=S.centre,r.focalInferred=!0));let R=S&&(!S.inferred||Pt(S.outline)*Q*Q<=Fn),v=S?void 0:f,T={tableIds:s,floorIndex:P.floorIndex,floorId:P.floorId,baseHeightM:P.baseHeightM,focal:v?.focal??M,outline:S?.outline??v?.outline,focalHeightM:v?.focalHeightM??P.baseHeightM+(S&&R?Ee({...S.shape,role:"stage"}).heightM:0),stageDeck:v?.stageDeck??!!(S&&R&&Pt(S.outline)*Q*Q<=Fn),middle:g.length?{x:g.reduce((k,_)=>k+_.x,0)/g.length,y:g.reduce((k,_)=>k+_.y,0)/g.length}:M};for(let k of P.objects){if(k.type!=="section")continue;let _=su(k,o.get(k.logicalSectionId??k.id)??[],T);_&&a.push(_)}return T.outline&&(f=T),Dn(P.focal,T.focal)||(r.focal??=[]).push({...P.floorId?{floorId:P.floorId}:{},point:{...T.focal}}),{unit:P,plane:T,stage:S,planeSeats:g}}),u=i.flatMap(b=>b.objects).map(b=>b.type==="shape"&&!b.role&&(Bn(b.label)==="wall"||!Bn(b.label)&&ci(b))?{...b,role:"wall"}:b),h=ot({objects:u},n)!==null;h&&(r.indoor=!0);let m=mu(a,h,uu(n,l[0]?.plane.focal??t)<Kl),d=new Map(a.filter(b=>!b.authored).map(b=>[b.id,b])),p=l.map(({unit:b,plane:x,stage:y,planeSeats:I})=>b.objects.map(P=>{let E=P.type==="shape"&&!P.role&&P.id!==y?.shape.id?Bn(P.label):null;if(P.type==="shape"&&!P.role&&P.id!==y?.shape.id&&(E==="wall"||!E&&ci(P))&&P.type==="shape"){(r.roles??=[]).push({id:P.id,...x.floorId?{floorId:x.floorId}:{},role:"wall"});let{fill:T,...k}=P;return{...k,role:"wall"}}if(E&&P.type==="shape")return(r.roles??=[]).push({id:P.id,...x.floorId?{floorId:x.floorId}:{},role:E}),{...P,role:E};let S=y?.inferred&&P.id===y.shape.id&&P.type==="shape"?eu(P,y.outline,b.objects,I):null;if(S&&P.type==="shape")return r.stage?.id===P.id&&(r.stage.field=S),{...P,role:"stage",stageKind:S};if(y?.inferred&&P.id===y.shape.id&&P.type==="shape"&&Pt(y.outline)*Q*Q<=Fn)return r.stage?.id===P.id&&(r.stage.deck=!0),{...P,role:"stage"};let M=P.type==="section"?d.get(P.id):void 0;if(!M||P.type!=="section")return P;let R=M.rowCount>=2&&M.rake>0;c.has(M.id)?r.looseRowBlocks=(r.looseRowBlocks??0)+1:r.sections.push({id:M.id,floorId:x.floorId,surfaceKind:R?"rakedRows":"flat",height:M.height,rake:M.rake,stackedOn:m.get(M.id)});let v={status:"inferred",source:"public-2d-topology",note:tu};return{...P,height:M.height,rake:M.rake,surfaceKind:R?"rakedRows":"flat",physical3dProvenance:{height:v,rake:v,surfaceKind:v}}}));if(e.floors?.length){let b=e.floors.map((x,y)=>({...x,objects:p[y],focalPoint:l[y].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 xi=/^[\p{L}\p{N}]{1,4}$/u,hu=/^([\p{L}\p{N}]{2,})[\s\-\u2013\u2014\u00b7_./]+(.+)$/u;function gi(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 s=e.slice(n.length).trim();if(xi.test(s))return s}let i=hu.exec(e);if(i){let s=i[1].toLocaleLowerCase("en-US"),a=i[2].trim();if((r.startsWith(s)||s.startsWith(r))&&xi.test(a))return a}return e}var du=6,pu=2.2,Mi=.1,bu=new Set(["stage","entrance","exit","screen","suite","obstruction","sound","bar","concession","restroom","coat"]),yu=.3,xu=1.8,gu=.9,Mu=.55,Su=6e3;function Ii(e){let{doc:t,units:n,seats:o,surfaces:r,focal:i}=e,s=t.zones??[],a=[];if(s.length){let f=new Map;for(let l of n)for(let u of l.objects)u.type==="section"&&u.zone&&f.set(u.id,u.zone);let c=new Map;for(let l=0;l<o.length;l++){let u=o[l],h=r.seatOwner[l],m=u.zoneId??(h?f.get(h):void 0);if(!m)continue;let d=c.get(m);d||(d={n:0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0,sumY:0},c.set(m,d)),d.n++,u.x<d.minX&&(d.minX=u.x),u.y<d.minY&&(d.minY=u.y),u.x>d.maxX&&(d.maxX=u.x),u.y>d.maxY&&(d.maxY=u.y),d.sumY+=r.seatDeckY(l)}for(let l of s){let u=c.get(l.id),h=[];for(let[m,d]of f)d===l.id&&h.push(m);if(!u||u.n===0){a.push({id:l.id,label:l.label,color:ne(l.color),sectionIds:h,seatCount:0,center:[0,0,0],radius:0,focalWorld:[(l.focalPoint??i).x*w,1.5,(l.focalPoint??i).y*w]});continue}a.push({id:l.id,label:l.label,color:ne(l.color),sectionIds:h,seatCount:u.n,center:[(u.minX+u.maxX)/2*w,u.sumY/u.n,(u.minY+u.maxY)/2*w],radius:.5*Math.hypot((u.maxX-u.minX)*w,(u.maxY-u.minY)*w)||1,focalWorld:[(l.focalPoint??i).x*w,1.5,(l.focalPoint??i).y*w]})}}return a}function Ri(e){let{doc:t,units:n,seats:o,surfaces:r,seatData:i,hintedSeatFloor:s,zones:a,focal:f}=e,c=[],l=[],u=[],h=new Map;for(let m of n)for(let d of m.objects){if(d.type!=="section"||!d.zone)continue;let p=(d.displayLabel||d.label||"").trim().toLocaleLowerCase();if(!p)continue;let b=t.floors?.[m.index]?.name?.trim().toLocaleLowerCase();if(n.length>1&&b===p)continue;let x=h.get(d.zone);x||h.set(d.zone,x=new Set),x.add(p)}for(let m of a)m.seatCount!==0&&(h.get(m.id)?.has(m.label.trim().toLocaleLowerCase())||c.push({id:`zone:${m.id}`,kind:"zone",text:m.label,anchor:[m.center[0],m.center[1]+du,m.center[2]],color:t.zones?.find(d=>d.id===m.id)?.color}));{let m=new Map,d=new Map;for(let p=0;p<o.length;p++){let b=r.seatOwner[p];if(!b)continue;let x=m.get(b);x||(x={n:0,x:0,y:0,deck:0},m.set(b,x)),x.n++,x.x+=o[p].x,x.y+=o[p].y,x.deck+=r.seatDeckY(p);let y=d.get(b);y||(y={minX:1/0,maxX:-1/0,minY:1/0,maxY:-1/0,minDeck:1/0,maxDeck:-1/0},d.set(b,y)),y.minDeck=Math.min(y.minDeck,r.seatDeckY(p)),y.maxDeck=Math.max(y.maxDeck,r.seatDeckY(p)),o[p].x<y.minX&&(y.minX=o[p].x),o[p].x>y.maxX&&(y.maxX=o[p].x),o[p].y<y.minY&&(y.minY=o[p].y),o[p].y>y.maxY&&(y.maxY=o[p].y)}for(let p of n)for(let b of p.objects){if(b.type!=="section"||fi(b))continue;let x=m.get(b.id);if(!x||x.n===0)continue;let y=d.get(b.id),I=[x.x/x.n*w,x.deck/x.n,x.y/x.n*w],P=b.displayLabel||b.label||b.id;l.push({id:b.id,floorIndex:p.index,label:P,seatCount:x.n,center:I,radius:Math.max(1,Math.hypot(y.maxX-y.minX,y.maxY-y.minY)*.5*w),box:{min:[y.minX*w-.4,y.minDeck,y.minY*w-.4],max:[y.maxX*w+.4,y.maxDeck+1,y.maxY*w+.4]},focalWorld:[p.focal.x*w,p.baseHeightM+1.5,p.focal.y*w]});let E=t.floors?.[p.index]?.name?.trim().toLocaleLowerCase();n.length>1&&E===P.trim().toLocaleLowerCase()||c.push({id:`section:${b.id}`,kind:"section",text:P,anchor:[I[0],I[1]+pu,I[2]],floorIndex:p.index})}}{for(let x of n)for(let y of x.objects){if(y.type!=="gaArea")continue;let I=ut(y.points);if(!I)continue;let P=y.displayLabel||y.label||y.id;c.push({id:`ga:${y.id}`,kind:"ga",text:y.capacity>0?`${P} \xB7 ${y.capacity.toLocaleString()}`:P,anchor:[I.x*w,x.baseHeightM+xu,I.y*w],floorIndex:x.index})}let m=new Map,d=new Map;for(let x of n)for(let y of x.objects)if(y.type==="section"&&m.set(y.id,y.displayLabel||y.label||y.id),y.type==="row"){let I=y.displayLabel?.trim()||y.segmentedRow?.displayLabel?.trim();I&&d.set(y.id,I)}let p=new Map;for(let x=0;x<o.length;x++){let y=o[x],I=Math.hypot(y.x-f.x,y.y-f.y),P=p.get(y.rowId);(!P||I>P.far)&&p.set(y.rowId,{seat:y,index:x,far:I})}for(let[x,y]of p){let I=r.seatOwner[y.index]??y.seat.sectionId,P=Si(y.seat.label,x,m.get(I??""),d.get(x));P&&c.push({id:`row:${x}`,kind:"row",text:P,anchor:[y.seat.x*w,r.seatDeckY(y.index)+gu,y.seat.y*w],floorIndex:s[y.index]})}let b=new Map;for(let x=0;x<o.length;x++){let y=o[x],I=b.get(y.rowId);I||(I={n:0,x:0,y:0,z:0,minX:1/0,maxX:-1/0,minZ:1/0,maxZ:-1/0,label:Si(y.label,y.rowId,m.get(r.seatOwner[x]??y.sectionId??""),d.get(y.rowId)),sectionId:r.seatOwner[x]??y.sectionId},b.set(y.rowId,I));let P=x*3,E=i.iPosition[P],g=i.iPosition[P+1],S=i.iPosition[P+2];I.n++,I.x+=E,I.y+=g,I.z+=S,I.minX=Math.min(I.minX,E),I.maxX=Math.max(I.maxX,E),I.minZ=Math.min(I.minZ,S),I.maxZ=Math.max(I.maxZ,S)}for(let[x,y]of b)u.push({id:x,label:y.label,sectionId:y.sectionId,seatCount:y.n,center:[y.x/y.n,y.y/y.n,y.z/y.n],radius:Math.max(.8,Math.hypot(y.maxX-y.minX,y.maxZ-y.minZ)*.5)});if(o.length<=Su)for(let x=0;x<o.length;x++){let y=o[x],I=Iu(y.displayLabel||y.label);I&&c.push({id:`seat:${y.id}`,kind:"seat",seatWidthM:i.iChairWidth[x]*2,text:I,anchor:[y.x*w,r.seatDeckY(x)+Mu,y.y*w],floorIndex:s[x],rowId:y.rowId})}}for(let m of n)for(let d of m.objects)if(d.type==="shape"&&d.role&&bu.has(d.role)){let p=ie(d),b=p?ut(p):null;if(!b||!d.label)continue;c.push({id:`architecture:${d.id}`,kind:d.role==="stage"?"stage":"annotation",text:d.label,anchor:[b.x*w,m.baseHeightM+Ee(d).heightM+Mi,b.y*w],color:d.fill,floorIndex:m.index})}else if(d.type==="text"){if(!d.text)continue;c.push({id:`text:${d.id}`,kind:"annotation",text:d.text,anchor:[d.position.x*w,m.baseHeightM+Mi,d.position.y*w],color:d.color,rotation:d.rotation,floorIndex:m.index})}else if(d.type==="booth"){let p=Ae(d);if(!p)continue;let b=ut(p);if(!b)continue;c.push({id:`booth:${d.id}`,kind:"booth",text:d.displayLabel||d.label||d.id,anchor:[b.x*w,m.baseHeightM+Zt+yu,b.y*w],floorIndex:m.index})}return{labels:c,sections:l,rows:u}}function Pi(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 Iu(e){let t=e.lastIndexOf("-");return t>=0&&t<e.length-1?e.slice(t+1):e}function Si(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&&gi(i,n)}function wi(e){let{doc:t,units:n,seats:o,surfaces:r,solids:i,hintedSeatFloor:s,seatFloor:a}=e,f=[];{let c=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 m=Math.max(0,Math.min(n.length-1,Math.round(i.floor[h]))),d=h*3,p=c[m];p.minX=Math.min(p.minX,i.position[d]),p.minY=Math.min(p.minY,i.position[d+1]),p.minZ=Math.min(p.minZ,i.position[d+2]),p.maxX=Math.max(p.maxX,i.position[d]),p.maxY=Math.max(p.maxY,i.position[d+1]),p.maxZ=Math.max(p.maxZ,i.position[d+2])}let l=new Map;for(let h=0;h<n.length;h++)for(let m of n[h].objects)m.type==="section"&&l.set(m.id,h);let u=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 m=r.seatOwner[h],d=(m!==null?l.get(m):void 0)??s[h];if(d===void 0)continue;let p=u[d],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 x=r.seatDeckY(h);p.sumX+=b.x*w,p.sumDeck+=x,p.sumZ+=b.y*w,p.minDeck=Math.min(p.minDeck,x),p.maxDeck=Math.max(p.maxDeck,x+1.6),a[h]=d}for(let h=0;h<n.length;h++){let m=u[h],d=t.floors?.[h],p=c[h],b=Math.min(m.n?m.minX*w:n[h].focal.x*w-1,Number.isFinite(p.minX)?p.minX:1/0),x=Math.max(m.n?m.maxX*w:n[h].focal.x*w+1,Number.isFinite(p.maxX)?p.maxX:-1/0),y=Math.min(m.n?m.minY*w:n[h].focal.y*w-1,Number.isFinite(p.minZ)?p.minZ:1/0),I=Math.max(m.n?m.maxY*w:n[h].focal.y*w+1,Number.isFinite(p.maxZ)?p.maxZ:-1/0),P=Math.min(m.n?Math.min(n[h].baseHeightM,m.minDeck):n[h].baseHeightM,Number.isFinite(p.minY)?p.minY:1/0),E=Math.max(m.n?Math.max(m.maxDeck,P+.5):P+.5,Number.isFinite(p.maxY)?p.maxY:-1/0),g=[m.n?m.sumX/m.n:(b+x)/2,m.n?m.sumDeck/m.n:(P+E)/2,m.n?m.sumZ/m.n:(y+I)/2],S=Math.max(1,.5*Math.hypot(x-b,E-P,I-y));f.push({index:h,id:d?.id??`floor-${h}`,label:d?.name??(n.length>1?`Floor ${h+1}`:"Venue"),seatCount:m.n,center:g,radius:S,box:{min:[b,P,y],max:[x,E,I]},focalWorld:[n[h].focal.x*w,n[h].baseHeightM+1.5,n[h].focal.y*w]})}}return f}function Xn(e,t){let n=1/0,o=1/0,r=-1/0,i=-1/0,s=(a,f)=>{a<n&&(n=a),f<o&&(o=f),a>r&&(r=a),f>i&&(i=f)};for(let a of t)s(a.x,a.y);for(let a of e)for(let f of a.objects)if(f.type==="section")for(let c of f.outline)s(c.x,c.y);else if(f.type==="shape"&&f.points)for(let c of f.points)s(c.x,c.y);else if(f.type==="gaArea")for(let c of f.points)s(c.x,c.y);else if(f.type==="booth"){let c=Ae(f);if(c)for(let l of c)s(l.x,l.y)}else if(f.type==="table"){let c=$t(f);if(c)for(let l of c)s(l.x,l.y)}else if(f.type==="decorImage"){let c=Qt(f);if(c)for(let l of c)s(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 ki(e,t,n,o,r,i,s){if(t.length===1){let a=n.map(h=>({x:h.x,y:h.y}));for(let h of t[0].objects)h.type==="section"?a.push(...h.outline):h.type==="shape"?a.push(...ie(h)??h.points??[]):h.type==="gaArea"?a.push(...h.points):h.type==="booth"?a.push(...Ae(h)??[]):h.type==="table"?a.push(...$t(h)??[]):h.type==="decorImage"&&a.push(...Qt(h)??[]);if(vi(e,t[0],n,i)||_i(e,t[0],n,a,i))return!1;if(s&&Ai(e,t[0].baseHeightM,a,i,s))return!0;let f=gt(a),c=(r.minX+r.maxX)/2,l=(r.minY+r.maxY)/2,u=f.length>=3?f.map(h=>{let m=h.x-c,d=h.y-l,p=Math.max(1,Math.hypot(m,d));return{x:h.x+m/p*80,y:h.y+d/p*80}}):bt(r.minX-28,r.minY-28,r.maxX-r.minX+56,r.maxY-r.minY+56);return W(e,u,void 0,()=>-.04,-.22,i.ground,i.ground,Y),!1}else{let a=t.reduce((b,x)=>x.baseHeightM<b.baseHeightM?x:b);e.setFloor(a.index);let f={...a,objects:t.flatMap(b=>b.objects)},c=n.map(b=>({x:b.x,y:b.y}));for(let b of f.objects)b.type==="section"&&c.push(...b.outline);if(vi(e,f,n,i)||_i(e,f,n,c,i))return!1;if(s&&Ai(e,a.baseHeightM,c,i,s))return!0;let l=n.filter((b,x)=>o[x]===a.index),u=Xn([a],l),h=Math.hypot(u.maxX-u.minX,u.maxY-u.minY),m=Math.max(28,Math.min(80,h*.04)),d=bt(u.minX-m,u.minY-m,u.maxX-u.minX+m*2,u.maxY-u.minY+m*2),p=a.baseHeightM-.03;return W(e,d,void 0,()=>p,p-.22,i.ground,i.ground,Y),!1}}function Un(e,t,n,o){let{cx:r,cz:i,radius:s}=n,a=1/0,f=1/0,c=1/0,l=-1/0,u=-1/0,h=-1/0,m=(b,x,y)=>{a=Math.min(a,b),l=Math.max(l,b),f=Math.min(f,x),u=Math.max(u,x),c=Math.min(c,y),h=Math.max(h,y)};for(let b=0;b<e.position.length;b+=3){let x=b/3;o&&x>=o[0]&&x<o[1]||m(e.position[b],e.position[b+1],e.position[b+2])}for(let b=0;b<t.count;b++){let x=b*3,y=t.iPosition[x],I=t.iPosition[x+1],P=t.iPosition[x+2],E=Math.max(.35,t.iMaxRadius[b]??.35);m(y-E,I,P-E),m(y+E,I+1.6,P+E)}Number.isFinite(a)||(a=r-s,l=r+s,f=0,u=s*.16,c=i-s,h=i+s);let d=[(a+l)/2,(f+u)/2,(c+h)/2],p=Math.max(1,.5*Math.hypot(l-a,u-f,h-c));return{center:d,radius:p,minY:f,maxY:u}}var Ru=4096;function Ti(e,t,n=[]){let o=Math.max(1,Math.ceil(e.count/Ru)),r=Math.ceil(e.count/o),i=new Float32Array((r*2+t.length*4+n.length)*3),s=0;for(let a=0;a<e.count;a+=o){let f=e.iPosition[a*3],c=e.iPosition[a*3+1],l=e.iPosition[a*3+2];i[s++]=f,i[s++]=c,i[s++]=l,i[s++]=f,i[s++]=0,i[s++]=l}for(let[a,f,c]of n)i[s++]=a,i[s++]=f,i[s++]=c;for(let a of t)for(let[f,c]of[[-1,-1],[1,-1],[1,1],[-1,1]])i[s++]=a.cx+f*a.halfX,i[s++]=a.y,i[s++]=a.cz+c*a.halfZ;return i.subarray(0,s)}function Li(e,t,n,o,r,i,s=[]){let a=1/0,f=1/0,c=-1/0,l=-1/0;for(let E=0;E<e.count;E++){let g=E*3,S=e.iPosition[g],M=e.iPosition[g+2];S<a&&(a=S),S>c&&(c=S),M<f&&(f=M),M>l&&(l=M)}for(let[E,,g]of s)E<a&&(a=E),E>c&&(c=E),g<f&&(f=g),g>l&&(l=g);for(let E of t)a=Math.min(a,E.cx-E.halfX),c=Math.max(c,E.cx+E.halfX),f=Math.min(f,E.cz-E.halfZ),l=Math.max(l,E.cz+E.halfZ);let u=n.minX*w,h=n.maxX*w,m=n.minY*w,d=n.maxY*w,p=u,b=h,x=m,y=d;if(Number.isFinite(a)){let E=Math.max(2,.06*Math.hypot(c-a,l-f));p=Math.max(u,a-E),b=Math.min(h,c+E),x=Math.max(m,f-E),y=Math.min(d,l+E)}let I=Math.min(0,o),P=Math.max(r,i*.05);return{min:[p,I,x],max:[b,P,y]}}var Ei=12,Pu=.6,wu=40;function Ai(e,t,n,o,r){let i=gt([...n]);if(i.length<3)return!1;let s=1/0,a=1/0,f=-1/0,c=-1/0;for(let P of i)s=Math.min(s,P.x),f=Math.max(f,P.x),a=Math.min(a,P.y),c=Math.max(c,P.y);let l=Math.hypot(f-s,c-a)*w,u=Pe(i,Ei/w,1.2),h=Math.max(wu,l*Pu),m=Pe(i,(Ei+h)/w,1.2);if(u.length!==m.length)return!1;let d=te(o.ground,[.78,.76,.72],.35),p=te(o.ground,[.56,.62,.52],.3);W(e,u,void 0,()=>t-.04,t-.22,d,d,Y);let b=t-.05,x=u.map(P=>[P.x*w,b,P.y*w]),y=m.map(P=>[P.x*w,b,P.y*w]),I=[0,1,0];for(let P=0;P<x.length;P++){let E=(P+1)%x.length;e.tri(x[P],y[E],y[P],I,p,r,r),e.tri(x[P],x[E],y[E],I,p,p,r)}return!0}function vi(e,t,n,o){let r=ot(t,n);if(!r)return!1;let i=t.baseHeightM,s=te(o.ground,[.62,.55,.47],.4);return W(e,r,void 0,()=>i-.04,i-.22,s,s,Y),!0}var Eu=3e3,Au=20,Ci=1.5,vu=1.2,Cu=.25;function _i(e,t,n,o,r){if(!n.length||n.length>Eu||o.length<3)return!1;for(let R of t.objects){if(R.type==="shape"&&vt(R.stageKind))return!1;if(R.type==="section"){let{height:v}=Ge(R,{floorBaseHeightM:t.baseHeightM});if(v-t.baseHeightM>Au)return!1}}let i=0,s=0;for(let R of o)i+=R.x,s+=R.y;i/=o.length,s/=o.length;let a=0,f=0,c=0;for(let R of o){let v=R.x-i,T=R.y-s;a+=v*v,f+=T*T,c+=v*T}let l=.5*Math.atan2(2*c,a-f),u=Math.cos(l),h=Math.sin(l),m=-h,d=u,p=1/0,b=-1/0,x=1/0,y=-1/0;for(let R of o){let v=(R.x-i)*u+(R.y-s)*h,T=(R.x-i)*m+(R.y-s)*d;p=Math.min(p,v),b=Math.max(b,v),x=Math.min(x,T),y=Math.max(y,T)}let I=R=>[[p-R,x-R],[b+R,x-R],[b+R,y+R],[p-R,y+R]].map(([v,T])=>({x:i+u*v+m*T,y:s+h*v+d*T})),P=I(Ci/w),E=I((Ci+Cu)/w),g=t.baseHeightM,S=te(r.ground,[.62,.55,.47],.4),M=te(r.ground,[.86,.86,.84],.55);return W(e,E,void 0,()=>g-.04,g-.22,S,S,Y),W(e,E,[P.slice().reverse()],()=>g+vu,g-.04,te(M,[1,1,1],.2),M,Y),!0}function Oi(e,t,n){let o=()=>({byObjectId:new Map,elements:[]});if(!t||!e)return o();let r=so(t);if(!r.ok||r.value.id!==e)return o();let i=new Map;for(let u of n)for(let h of u.objects)h.type==="shape"&&i.set(h.id,{shape:h,unit:u});let s=new Set,a=new Set,f=new Map((t.overlay.productionElements??[]).map(u=>{let h=u.runtimeContentImageUrl;return[u.id,typeof h=="string"&&/^(?:blob:|data:image\/|https:\/\/)/.test(h)?h:void 0]})),c=[];for(let u of r.value.overlay.productionElements??[]){let h=i.get(u.objectId),m=h?ie(h.shape):null,d=u.baseElevationM??0;if(!h||!m||m.length<3||!u.id||s.has(u.id)||a.has(u.objectId)||!Number.isFinite(u.heightM)||u.heightM<.05||u.heightM>50||!Number.isFinite(d)||d<-10||d>100)return o();s.add(u.id),a.add(u.objectId);let p=m.map(M=>M.x*w),b=m.map(M=>M.y*w),x=h.unit.baseHeightM+d,y=Math.min(...p),I=Math.max(...p),P=Math.min(...b),E=Math.max(...b),g,S=f.get(u.id)??u.contentImageUrl;if(u.kind==="screen"&&S&&(g=xr(m,x,x+u.heightM,h.unit.focal),!g))if(I-y>=E-P){let M=Math.abs(P-h.unit.focal.y*w)<=Math.abs(E-h.unit.focal.y*w)?P-.006:E+.006;g=[[y,x,M],[I,x,M],[y,x+u.heightM,M],[I,x+u.heightM,M]]}else{let M=Math.abs(y-h.unit.focal.x*w)<=Math.abs(I-h.unit.focal.x*w)?y-.006:I+.006;g=[[M,x,P],[M,x,E],[M,x+u.heightM,P],[M,x+u.heightM,E]]}c.push({id:u.id,objectId:u.objectId,kind:u.kind,floorIndex:h.unit.index,baseY:x,topY:x+u.heightM,bounds:{min:[y,x,P],max:[I,x+u.heightM,E]},occlusion:u.occlusion,...S?{contentImageUrl:S}:{},...g?{contentPlane:g}:{}})}let l=c.sort((u,h)=>u.id.localeCompare(h.id));return{byObjectId:new Map(l.map(u=>[u.objectId,u])),elements:l}}var Bi=[.13,.14,.17],ct=[.4,.43,.47],_u=.18,ku=.02,Tu=2.4,Lu=1500,Ou=240;function Fi(e,t,n,o){let r=t.stageKind??"";if(We(r)||r==="round"||!o.length)return;let i=ie(t);if(!i||i.length<3)return;let s={x:i.reduce((C,L)=>C+L.x,0)/i.length,y:i.reduce((C,L)=>C+L.y,0)/i.length},a=0,f=0,c=new Set;for(let C of o)a+=C.x,f+=C.y,c.add(Math.floor(Math.atan2(C.y-s.y,C.x-s.x)*180/Math.PI/10));if(c.size*10>Ou)return;let l=s.x-a/o.length,u=s.y-f/o.length,h=Math.hypot(l,u);if(h<1e-6)return;let m=l/h,d=u/h,p=-d,b=m,x=-1/0,y=1/0,I=1/0,P=-1/0;for(let C of i){let L=(C.x-s.x)*m+(C.y-s.y)*d,F=(C.x-s.x)*p+(C.y-s.y)*b;x=Math.max(x,L),y=Math.min(y,L),I=Math.min(I,F),P=Math.max(P,F)}let E=(P-I)*w,g=(x-y)*w;if(E<3||g<1.5||E*g>Lu)return;let S=_u/w,M=(C,L)=>({x:s.x+m*C+p*L,y:s.y+d*C+b*L}),R=(C,L,F,O)=>[M(C,F),M(C,O),M(L,O),M(L,F)],v=n+Math.max(3.5,Math.min(8,E*.35)),T=n+Math.min(Tu,v-n-1),k=.2/w,_=y+Math.min(g*.25,1.5)/w,A=ku/w;W(e,R(x-2*S+A,x-S-A,I+S+k,P-S-k),void 0,()=>T,n,Bi,Bi,Y);for(let[C,L]of[[I+S,I+S+k],[P-S-k,P-S]])W(e,R(x-2*S,x-S,C,L),void 0,()=>v+.3,n,ct,ct,Y),W(e,R(_+k,x-2*S,C,L),void 0,()=>v+.3,v,ct,ct,Y);W(e,R(_,_+k,I+S,P-S),void 0,()=>v+.3,v,ct,ct,Y)}function Se(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Me(e){return Array.isArray(e)?e:[]}function Bu(e){let t=[e];for(;t.length;){let n=t.pop();if(Array.isArray(n)){t.push(...n);continue}if(!Se(n))continue;let o=Se(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 en(e,t){return!Array.isArray(e)||e.length!==t||!e.every(n=>typeof n=="number"&&Number.isFinite(n))?null:e}function Fu(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function Du(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 Nu(e){let t=en(e.matrix,16);if(t)return t;if(e.matrix!==void 0)return null;let n=e.translation===void 0?[0,0,0]:en(e.translation,3),o=e.rotation===void 0?[0,0,0,1]:en(e.rotation,4),r=e.scale===void 0?[1,1,1]:en(e.scale,3);if(!n||!o||!r)return null;let[i,s,a,f]=o,c=Math.hypot(i,s,a,f);if(!(c>1e-8))return null;let l=i/c,u=s/c,h=a/c,m=f/c,d=l+l,p=u+u,b=h+h,x=l*d,y=l*p,I=l*b,P=u*p,E=u*b,g=h*b,S=m*d,M=m*p,R=m*b;return[(1-(P+g))*r[0],(y+R)*r[0],(I-M)*r[0],0,(y-R)*r[1],(1-(x+g))*r[1],(E+S)*r[1],0,(I+M)*r[2],(E-S)*r[2],(1-(x+P))*r[2],0,n[0],n[1],n[2],1]}function Gu(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 ju(e){let t=e[0],n=e[4],o=e[8],r=e[1],i=e[5],s=e[9],a=e[2],f=e[6],c=e[10],l=i*c-s*f,u=s*a-r*c,h=r*f-i*a,m=t*l+n*u+o*h;if(Math.abs(m)<1e-12)return null;let d=1/m;return[l*d,u*d,h*d,(o*f-n*c)*d,(t*c-o*a)*d,(n*a-t*f)*d,(n*s-o*i)*d,(o*r-t*s)*d,(t*i-n*r)*d]}function Di(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,s=e[6]*t+e[7]*n+e[8]*o,a=Math.hypot(r,i,s)||1;return r/=a,i/=a,s/=a,[r,i,s]}function Hu(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),s=t.getUint32(n+4,!0);if(n+=8,i%4!==0||n+i>e.byteLength)return null;let a=e.subarray(n,n+i);if(s===1313821514&&!o)try{let f=JSON.parse(new TextDecoder().decode(a).replace(/[\u0000 ]+$/g,""));if(!Se(f))return null;o=f}catch{return null}else if(s===5130562&&!r)r=a;else return null;n+=i}return n===e.byteLength&&o&&r?{json:o,bin:r}:null}function Xu(e){return e===5120||e===5121?1:e===5122||e===5123?2:e===5125||e===5126?4:0}function Uu(e){return e==="SCALAR"?1:e==="VEC2"?2:e==="VEC3"?3:e==="VEC4"?4:0}function Vu(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 Yu(e){let t=e instanceof Uint8Array?e:new Uint8Array(e),n=Hu(t);if(!n)return{ok:!1,issue:"invalid_glb"};let{json:o,bin:r}=n;if(!Se(o.asset)||o.asset.version!=="2.0")return{ok:!1,issue:"unsupported_glb"};let i=Me(o.extensionsUsed).filter(P=>typeof P=="string");if(i.includes("KHR_draco_mesh_compression")||Bu(o))return{ok:!1,issue:"draco_not_allowed"};if(i.length||Me(o.extensionsRequired).length)return{ok:!1,issue:"unsupported_glb"};if(Me(o.images).length||Me(o.textures).length)return{ok:!1,issue:"external_resource"};let s=Me(o.buffers);if(s.length!==1||!Se(s[0])||s[0].uri!==void 0||typeof s[0].byteLength!="number"||!Number.isInteger(s[0].byteLength)||s[0].byteLength<0||s[0].byteLength>r.byteLength)return{ok:!1,issue:"external_resource"};let a=Me(o.accessors),f=Me(o.bufferViews),c=Me(o.meshes),l=Me(o.nodes),u=Me(o.scenes),h=typeof o.scene=="number"?o.scene:0;if(!Se(u[h]))return{ok:!1,issue:"unsupported_glb"};let m=new DataView(r.buffer,r.byteOffset,r.byteLength),d=(P,E,g)=>{if(typeof P!="number"||!Number.isInteger(P)||!Se(a[P]))return null;let S=a[P];if(S.type!==E||S.sparse!==void 0||S.normalized===!0||typeof S.count!="number"||!Number.isInteger(S.count)||S.count<1||typeof S.componentType!="number"||!g.includes(S.componentType)||typeof S.bufferView!="number")return null;let M=f[S.bufferView];if(!Se(M)||M.buffer!==0||typeof M.byteLength!="number"||!Number.isInteger(M.byteLength)||M.byteLength<0)return null;let R=Uu(S.type),v=Xu(S.componentType),T=typeof M.byteStride=="number"?M.byteStride:R*v,k=typeof M.byteOffset=="number"?M.byteOffset:0,_=typeof S.byteOffset=="number"?S.byteOffset:0,A=k+_,C=_+(S.count-1)*T+R*v;if(!Number.isInteger(T)||!Number.isInteger(k)||!Number.isInteger(_)||T<R*v||k<0||_<0||k+M.byteLength>r.byteLength||C>M.byteLength)return null;let L=[];for(let F=0;F<S.count;F++){let O=[];for(let B=0;B<R;B++){let N=Vu(m,A+F*T+B*v,S.componentType);if(!Number.isFinite(N))return null;O.push(N)}L.push(O)}return L},p=[],b=[],x=0,y=new Set,I=(P,E)=>{if(typeof P!="number"||!Number.isInteger(P)||!Se(l[P])||y.has(P))return!1;y.add(P);let g=l[P],S=Nu(g);if(!S)return!1;let M=Du(E,S),R=ju(M);if(!R)return!1;if(g.mesh!==void 0){if(typeof g.mesh!="number")return!1;let v=c[g.mesh];if(!Se(v))return!1;for(let T of Me(v.primitives)){if(!Se(T)||T.mode!==void 0&&T.mode!==4||!Se(T.attributes))return!1;let k=d(T.attributes.POSITION,"VEC3",[5126]),_=T.attributes.NORMAL===void 0?null:d(T.attributes.NORMAL,"VEC3",[5126]);if(!k||T.attributes.NORMAL!==void 0&&!_)return!1;let A=k.length;if(T.indices!==void 0){let L=typeof T.indices=="number"?a[T.indices]:null;A=Se(L)?L.count:void 0}if(typeof A!="number"||!Number.isInteger(A)||A%3!==0||(x+=A/3,x>1e5))return!1;let C=T.indices===void 0?k.map((L,F)=>[F]):d(T.indices,"SCALAR",[5121,5123,5125]);if(!C||C.length%3!==0||C.length!==A)return!1;for(let L=0;L<C.length;L+=3){let F=[C[L][0],C[L+1][0],C[L+2][0]];if(F.some(N=>!Number.isInteger(N)||N<0||N>=k.length))return!1;let O=F.map(N=>Gu(M,...k[N])),B=null;if(!_){let N=O[1][0]-O[0][0],H=O[1][1]-O[0][1],D=O[1][2]-O[0][2],U=O[2][0]-O[0][0],V=O[2][1]-O[0][1],$=O[2][2]-O[0][2];B=Di([1,0,0,0,1,0,0,0,1],H*$-D*V,D*U-N*$,N*V-H*U)}for(let N=0;N<3;N++)p.push(...O[N]),b.push(..._?Di(R,..._[F[N]]):B)}}}for(let v of Me(g.children))if(!I(v,M))return!1;return y.delete(P),!0};for(let P of Me(u[h].nodes))if(!I(P,Fu()))return{ok:!1,issue:x>1e5?"triangle_limit":"unsupported_glb"};return!x||p.length!==x*9||b.length!==p.length?{ok:!1,issue:"unsupported_glb"}:{ok:!0,triangleCount:x,position:new Float32Array(p),normal:new Float32Array(b)}}function Ni(e){try{return Yu(e)}catch{return{ok:!1,issue:"invalid_glb"}}}function Gi(e){let{doc:t}=e,n=_o(t.theme),o=n.structure,r=rr(t,e.eventConfigurationId??t.eventConfigurationId),i=Oi(e.eventConfigurationId,e.eventConfiguration,r),s=e.seats,a=new Bt,f=null;if(e.registeredShellGlb){let G=Ni(e.registeredShellGlb);if(G.ok){let j=G.position.length/3,q=new Float32Array(G.position.length),ue=n.materials.shell??o.tierWall;for(let fe=0;fe<j;fe++){let he=G.normal[fe*3+1],re=he<-.25?.4:.62+.38*Math.max(0,he);q[fe*3]=ue[0]*re,q[fe*3+1]=ue[1]*re,q[fe*3+2]=ue[2]*re}f={position:G.position,normal:G.normal,color:q,floor:new Float32Array(j).fill(-2),material:new Float32Array(j),count:j}}}let c=new Map;for(let G of r)for(let j of G.objects)c.set(j.id,G.index),j.type==="section"&&c.set(j.logicalSectionId??j.id,G.index);let l=s.map(G=>c.get(G.sectionId??"")??c.get(G.rowId??"")??0),u=Xn(r,s),h=a.vertexCount,d=ki(a,r,s,l,u,o,te(n.background.top,n.background.bottom,.5))?a.vertexCount:h,p=Fo(t,s),b=new Map,x=new Map;for(let G of t.categories??[])b.set(G.key,G.color),G.seatGlyph&&x.set(G.key,G.seatGlyph);let y=[],I=yr(r,s,l),P=new Map;s.forEach((G,j)=>{let q=I.seatDeckY(j);Number.isFinite(q)&&P.set(G.rowId,Math.min(P.get(G.rowId)??1/0,q))});let E=new Float32Array(s.length),g=[],S=new Map((t.floors??[]).map((G,j)=>[G.id,j])),M=r.map(()=>[]);for(let G of s){let j=G.floorId?S.get(G.floorId)??0:0;M[Math.min(j,M.length-1)]?.push(G)}let R=(G,j)=>{if(!j||j.length<3)return!1;let q=Math.min(...j.map(re=>re.x)),ue=Math.max(...j.map(re=>re.x)),fe=Math.min(...j.map(re=>re.y)),he=Math.max(...j.map(re=>re.y));for(let re=0;re<G;re++)for(let se of M[re])if(!(se.x<q||se.x>ue||se.y<fe||se.y>he)&&be(se,j,void 0))return!0;return!1},v=null,T=G=>r.length===1?s:s.filter((j,q)=>l[q]===G),k=(G,j)=>{let q=Ae(G);if(!q)return!1;let ue=1/0,fe=1/0,he=-1/0,re=-1/0;for(let se of q)ue=Math.min(ue,se.x),he=Math.max(he,se.x),fe=Math.min(fe,se.y),re=Math.max(re,se.y);return s.some((se,ve)=>se.kind!=="booth"&&(r.length===1||l[ve]===j)&&se.x>ue&&se.x<he&&se.y>fe&&se.y<re&&xe(q,se.x,se.y))},_;for(let G=0;G<r.length;G++){let j=r[G];a.setFloor(G);let q=ot(j,T(G)),ue=0;if(q){let K=0;for(let le of j.objects)if(le.type==="section")for(let me of I.bySection.get(le.id)?.rowLevels??[])K=Math.max(K,me.y-j.baseHeightM);if(ue=fr(K),!_){let le=mr(q);_={centre:[le.x*w,le.y*w]}}}let fe=new jt,he=[],re=j.objects.filter(K=>K.type==="shape"&&(K.role==="entrance"||K.role==="exit")),se=j.objects.filter(K=>K.type==="section"&&!!K.outline&&K.outline.length>=3),ve=Ur(j.objects.filter(K=>K.type==="booth"),j.focal);for(let K of j.objects)if(K.type==="section"){let le=a.vertexCount;ri(a,K,j,Do(K,p),I.bySection.get(K.id),fe,se,o,G>0&&R(G,K.outline));let me=a.vertexCount-le;me>0&&g.push({sectionId:K.id,start:le,count:me})}else if(K.type==="shape"){let le=i.byObjectId.get(K.id),me=y.length,Ye=q!==null&&K.role==="wall"&&!le;a.setMaterial(Ye?ur:(le?.kind??K.role)==="screen"?1:0);let Ke=K.role==="stage"&&!le?Yr(K,T(G)):Ye&&K.heightM===void 0?{...K,heightM:ue}:K,De=cr(Ke,he);if(Gr(a,Ke,j.baseHeightM+De.supportOffsetM,De.topOffsetM-De.supportOffsetM,o,j.focal,y,le,re),a.setMaterial(0),K.role==="stage"&&!le&&y.length>me&&(v??G)===G){v=G;let Ne=t.floors?.[G]?.id,lt=r.length>1&&Ne?s.filter(wt=>wt.floorId===Ne):s;Fi(a,Ke,y[y.length-1].y,lt)}}else K.type==="gaArea"?Hr(a,K,j.baseHeightM,ne(b.get(K.categoryKey)),o):K.type==="booth"?Fr(a,K,j.baseHeightM,ne(b.get(K.categoryKey)),o,ve.get(K.id)??j.focal,k(K,G)):K.type==="table"?Nr(a,K,Math.max(j.baseHeightM,P.get(K.id)??j.baseHeightM),ne(K.fill??t.theme?.decorFill??"#232c40"),o,!!(K.fill??t.theme?.decorFill)):K.type==="decorImage"&&jr(a,K,j.baseHeightM,o);si(a,j,s,I,o,n.materials.shell,!f)}let A=r.length>1?{x:r.reduce((G,j)=>G+j.focal.x,0)/r.length,y:r.reduce((G,j)=>G+j.focal.y,0)/r.length}:t.focalPoint??{x:(u.minX+u.maxX)/2,y:(u.minY+u.maxY)/2},C=Io(f?[a.build(),f]:[a.build()]),L=Yo(s,e.initialState,I,E,b,x),F=Ii({doc:t,units:r,seats:s,surfaces:I,focal:A}),{labels:O,sections:B,rows:N}=Ri({doc:t,units:r,seats:s,surfaces:I,seatData:L,hintedSeatFloor:l,zones:F,focal:A}),H=new Map(B.map((G,j)=>[G.id,j]));I.seatOwner.forEach((G,j)=>{L.iSection[j]=G?H.get(G)??-1:-1});let D=wi({doc:t,units:r,seats:s,surfaces:I,solids:C,hintedSeatFloor:l,seatFloor:E});Pi(O,D),L.iYaw=Vo(L.iPosition,s.length,G=>s[G].rowId,G=>{let j=r[E[G]]?.focal??A;return[j.x*w,j.y*w]});let U=(u.minX+u.maxX)/2*w,V=(u.minY+u.maxY)/2*w,$=.5*Math.hypot((u.maxX-u.minX)*w,(u.maxY-u.minY)*w)||10,X=Un(C,L,{cx:U,cz:V,radius:$},[h,d]),J=Un(C,L,{cx:U,cz:V,radius:$}),Z=Ku(r),ce=Li(L,y,u,X.minY,X.maxY,$,Z);return{sharedAisles:Ro(r.flatMap(G=>G.objects.flatMap(j=>{if(j.type!=="section")return[];let q=I.bySection.get(j.id);return q?[{sectionId:j.id,floorIndex:G.index,rows:q.rowLevels}]:[]}))),solids:C,sectionSolidRanges:g,seats:L,seatSectionIds:I.seatOwner,bounds:{center:[(ce.min[0]+ce.max[0])/2,(ce.min[1]+ce.max[1])/2,(ce.min[2]+ce.max[2])/2],radius:$,groundY:0,box:ce,fitPoints:Ti(L,y,Z)},..._?{room:_}:{},...!_&&r.some(G=>G.objects.some(j=>j.type==="shape"&&vt(j.stageKind)))?{outdoor:!0}:{},renderBounds:{center:X.center,radius:X.radius},clipBounds:{center:J.center,radius:J.radius},stateColorLUT:ko(n,Dt),theme:n,seatCount:s.length,focalWorld:[A.x*w,1.5,A.y*w],zones:F,stages:y,productionElements:i.elements,sections:B,rows:N,labels:O,floors:D}}function Ku(e){let t=[];for(let n of e)for(let o of n.objects){let r=o.type==="gaArea"?o.points:o.type==="booth"?Ae(o):null;for(let i of r??[])t.push([i.x*w,n.baseHeightM,i.y*w])}return t}function Wu(e,t){let{doc:n,report:o}=yi(e),r=o.confident&&(o.sections.length>0||!!o.looseRowBlocks);if(!r&&!o.roles?.length)return null;if(!r){let f=new Map(o.roles.map(m=>[m.id,m.role])),c=m=>m.map(d=>d.type==="shape"&&f.has(d.id)?{...d,role:f.get(d.id)}:d),l=e.floors?.map(m=>({...m,objects:c(m.objects)})),u=new Float64Array(t.length).fill(Number.NaN),h=new Float64Array(t.length*2).fill(Number.NaN);return t.forEach((m,d)=>{m.eyeHeightM!==void 0&&(u[d]=m.eyeHeightM),m.focalPoint&&(h[d*2]=m.focalPoint.x,h[d*2+1]=m.focalPoint.y)}),{doc:{...e,objects:l?.[0]?.objects??c(e.objects),...l?{floors:l}:{}},report:o,eyeHeightM:u,focal:h}}let i=new Map(et(n).map(f=>[f.id,f])),s=new Float64Array(t.length).fill(Number.NaN),a=new Float64Array(t.length*2).fill(Number.NaN);return t.forEach((f,c)=>{let l=i.get(f.id)??f;l.eyeHeightM!==void 0&&(s[c]=l.eyeHeightM),l.focalPoint&&(a[c*2]=l.focalPoint.x,a[c*2+1]=l.focalPoint.y)}),{doc:n,report:o,eyeHeightM:s,focal:a}}function zu(e,t){return e.map((n,o)=>{let r=t.eyeHeightM[o],i=t.focal[o*2],s=t.focal[o*2+1],a={...n};return Number.isNaN(r)?delete a.eyeHeightM:a.eyeHeightM=r,Number.isNaN(i)?delete a.focalPoint:a.focalPoint={x:i,y:s},a})}function ji(e){let t=e.estimate===!1?null:Wu(e.doc,e.seats);return t?{input:{...e,doc:t.doc,seats:zu(e.seats,t)},estimate:t}:{input:e}}function Zu(e){return[e.solids.position,e.solids.normal,e.solids.color,e.solids.floor,e.solids.material,e.seats.iPosition,e.seats.iState,e.seats.iCategory,e.seats.iMaxRadius,e.seats.iRing,e.seats.iFloor,e.seats.iYaw,e.seats.iChairWidth,e.seats.iGlyph,e.seats.iPhysicalSeat].map(n=>n.buffer)}var Hi=self;Hi.onmessage=e=>{let t=performance.now(),n=!e.data.seats,o=e.data.seats??et(e.data.doc),{input:r,estimate:i}=ji({doc:e.data.doc,seats:o,eventConfigurationId:e.data.eventConfigurationId,eventConfiguration:e.data.eventConfiguration,registeredShellGlb:e.data.registeredShellGlb,estimate:e.data.estimate}),s=Gi(r),a=Zu(s);i&&a.push(i.eyeHeightM.buffer,i.focal.buffer),Hi.postMessage({model:s,buildMs:performance.now()-t,...n?{seats:o}:{},...i?{estimate:i}:{}},a)};