1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4619],{44619:(e,t,a)=>{a.r(t),a.d(t,{IsometricTowers:()=>c,default:()=>u});var n=a(95155),s=a(12115),i=a(85339),r=a(87548);let o=new i.Pq0;function l(e,t,a,n,s,i){let r=2*Math.PI*s/4,l=Math.max(i-2*s,0),d=Math.PI/4;o.copy(t),o[n]=0,o.normalize();let h=.5*r/(r+l),c=1-o.angleTo(e)/d;return 1===Math.sign(o[a])?c*h:l/(r+l)+h+h*(1-c)}class d extends i.iNn{constructor(e=1,t=1,a=1,n=2,s=.1){let r=2*n+1;if(s=Math.min(e/2,t/2,a/2,s),super(1,1,1,r,r,r),this.type="RoundedBoxGeometry",this.parameters={width:e,height:t,depth:a,segments:n,radius:s},1===r)return;let o=this.toNonIndexed();this.index=null,this.attributes.position=o.attributes.position,this.attributes.normal=o.attributes.normal,this.attributes.uv=o.attributes.uv;let d=new i.Pq0,h=new i.Pq0,c=new i.Pq0(e,t,a).divideScalar(2).subScalar(s),u=this.attributes.position.array,m=this.attributes.normal.array,w=this.attributes.uv.array,f=u.length/6,p=new i.Pq0,g=.5/r;for(let n=0,i=0;n<u.length;n+=3,i+=2)switch(d.fromArray(u,n),h.copy(d),h.x-=Math.sign(h.x)*g,h.y-=Math.sign(h.y)*g,h.z-=Math.sign(h.z)*g,h.normalize(),u[n+0]=c.x*Math.sign(d.x)+h.x*s,u[n+1]=c.y*Math.sign(d.y)+h.y*s,u[n+2]=c.z*Math.sign(d.z)+h.z*s,m[n+0]=h.x,m[n+1]=h.y,m[n+2]=h.z,Math.floor(n/f)){case 0:p.set(1,0,0),w[i+0]=l(p,h,"z","y",s,a),w[i+1]=1-l(p,h,"y","z",s,t);break;case 1:p.set(-1,0,0),w[i+0]=1-l(p,h,"z","y",s,a),w[i+1]=1-l(p,h,"y","z",s,t);break;case 2:p.set(0,1,0),w[i+0]=1-l(p,h,"x","z",s,e),w[i+1]=l(p,h,"z","x",s,a);break;case 3:p.set(0,-1,0),w[i+0]=1-l(p,h,"x","z",s,e),w[i+1]=1-l(p,h,"z","x",s,a);break;case 4:p.set(0,0,1),w[i+0]=1-l(p,h,"x","y",s,e),w[i+1]=1-l(p,h,"y","x",s,t);break;case 5:p.set(0,0,-1),w[i+0]=l(p,h,"x","y",s,e),w[i+1]=1-l(p,h,"y","x",s,t)}}static fromJSON(e){return new d(e.width,e.height,e.depth,e.segments,e.radius)}}let h=[-55,-45,-35,-25,-15,-5,5,15,25,35,45,55];function c(){let e=(0,s.useRef)(null),t=(0,s.useRef)(null);return(0,s.useEffect)(()=>{let a=e.current,n=t.current;if(!a||!n)return;let s=new i.Z58;s.background=new i.Q1f(263690);let o=new i.ubm(34,1,.1,500);o.position.set(0,12,30),o.lookAt(0,4,0);let l=new r.JeP({canvas:a,antialias:!0});l.setPixelRatio(Math.min(window.devicePixelRatio,2)),l.outputColorSpace=i.er$,l.shadowMap.enabled=!0,l.shadowMap.type=i.Wk7,s.add(new i.$p8(0xffffff,.45));let c=new i.ZyN(0xffffff,1.6);c.position.set(-12,14,4),c.castShadow=!0,c.shadow.mapSize.set(2048,2048),c.shadow.camera.left=-80,c.shadow.camera.right=80,c.shadow.camera.top=30,c.shadow.camera.bottom=-30,c.shadow.camera.near=.5,c.shadow.camera.far=200,c.shadow.bias=-.001,s.add(c);let u=new i.ZyN(0xffffff,.5);u.position.set(6,4,-4),s.add(u);let m=new i.ZyN(848286,2);m.position.set(0,8,-40),s.add(m);let w=new i.ZyN(0xffffff,.9);w.position.set(-20,14,-20),s.add(w);let f=new i.tXL({color:443525,specular:new i.Q1f(4521915),shininess:110,flatShading:!1}),p=[];h.forEach((e,t)=>{let a=new i.eaF(new d(11,11,11,6,.45),f);a.position.set(e,-2.2,60),a.scale.setScalar(0),a.castShadow=!0,a.receiveShadow=!0,a.userData.stagger=.4*t,a.userData.colIdx=t,s.add(a),p.push(a)});let g=(e,t)=>{o.aspect=e/t,o.updateProjectionMatrix(),l.setSize(e,t,!1)},x=a.getBoundingClientRect();x.width>0&&x.height>0&&g(x.width,x.height);let y=new ResizeObserver(e=>{let[t]=e,{width:a,height:n}=t.contentRect;a>0&&n>0&&g(a,n)});y.observe(a);let v=document.getElementById("section-hero")||a.closest("[data-section]")||document.querySelector('[data-section="hero"]'),b={current:0},M=()=>{if(!v)return;let e=v.getBoundingClientRect(),t=Math.max(n.offsetHeight,1);b.current=Math.max(0,Math.min(-e.top/t,1))};M(),window.addEventListener("scroll",M,{passive:!0}),document.addEventListener("scroll",M,{passive:!0,capture:!0}),window.addEventListener("resize",M,{passive:!0});let z=0,k=0,E=0,S=!0,I=!document.hidden,P=()=>{!z&&S&&I&&(k=0,z=requestAnimationFrame(A))},N=()=>{cancelAnimationFrame(z),z=0},L=()=>{S&&I?P():N()},R=new IntersectionObserver(e=>{let[t]=e;S=t.isIntersecting,L()},{threshold:0});R.observe(n);let q=()=>{I=!document.hidden,L()};document.addEventListener("visibilitychange",q);let A=e=>{if(z=0,!S||!I)return;let t=k>0?Math.min((e-k)/1e3,.05):.016;k=e,E+=.35*t,M();let a=b.current,i=Math.min(E/.25,1);n.style.opacity=String(+i);let r=p.map(e=>{let t=e.userData.colIdx*(2*Math.PI/h.length);return .72+(Math.sin(2.2*E+t)+1)/2*.28}),d=1-.5*a,c=11*d,u=(.05-.048*a)*d+.35,m=(1.2-1.18*a)*d,w=r.slice(0,-1).map((e,t)=>{let a=(e+r[t+1])/2;return u+m*a*a}),f=-(r.reduce((e,t)=>
1e+c*t,0)+w.reduce((e,t)=>e+t,0))/2,g=r.map((e,t)=>{var a;let n=f+c*e/2;return f+=c*e+(null!=(a=w[t])?a:0),n});p.forEach((e,t)=>{var n;let s=e.userData.stagger,i=r[t],o=1+2.70158*Math.pow((n=Math.max(0,Math.min((E-.09*t)/.75,1)))-1,3)+1.70158*Math.pow(n-1,2);e.scale.setScalar(i*o*Math.max(d,0)),e.position.x=g[t],e.position.y=-2.2+10*a,e.position.z=(1-o)*60,e.rotation.x=(E+s)*.6,e.rotation.y=.15*Math.sin(.4*E+.5*s)}),l.render(s,o),z=requestAnimationFrame(A)};return P(),()=>{N(),y.disconnect(),R.disconnect(),window.removeEventListener("scroll",M),document.removeEventListener("scroll",M,!0),document.removeEventListener("visibilitychange",q),window.removeEventListener("resize",M),l.dispose(),p.forEach(e=>e.geometry.dispose()),f.dispose()}},[]),(0,n.jsx)("div",{ref:t,"aria-hidden":!0,className:"pointer-events-none absolute inset-x-0 bottom-0 h-[22vh] md:h-[34vh]",style:{zIndex:2,opacity:0,maskImage:"linear-gradient(to bottom, transparent 0%, white 35%)",WebkitMaskImage:"linear-gradient(to bottom, transparent 0%, white 35%)"},children:(0,n.jsx)("canvas",{ref:e,className:"block h-full w-full"})})}let u=c}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.