<!-- SOLID CITY · part 3387 -->
e;for(let e=255;e>0;e--){let t=Math.floor(Tv()*(e+1)),n=i[e];i[e]=i[t],i[t]=n}for(let e=0;e<512;e++)ms[e]=i[e&255]}var jh=[[1,1],[-1,1],[1,-1],[-1,-1],[1,0],[-1,0],[0,1],[0,-1]],wv=.5*(Math.sqrt(3)-1),Ca=(3-Math.sqrt(3))/6;function Av(i,e){let t=(i+e)*wv,n=Math.floor(i+t),s=Math.floor(e+t),r=(n+s)*Ca,a=i-(n-r),o=e-(s-r),l=a>o?1:0,c=1-l,h=a-l+Ca,f=o-c+Ca,u=a-1+2*Ca,d=o-1+2*Ca,g=n&255,M=s&255,m=0,p,b;return b=.5-a*a-o*o,b>0&&(p=jh[ms[g+ms[M]]&7],b*=b,m+=b*b*(p[0]*a+p[1]*o)),b=.5-h*h-f*f,b>0&&(p=jh[ms[g+l+ms[M+c]]&7],b*=b,m+=b*b*(p[0]*h+p[1]*f)),b=.5-u*u-d*d,b>0&&(p=jh[ms[g+1+ms[M+1]]&7],b*=b,m+=b*b*(p[0]*u+p[1]*d)),70*m}function nc(i,e,t){let n=0,s=1,r=1,a=0;for(let o=0;o<t;o++)n+=r*Av(i*s,e*s),a+=r,s*=2.03,r*=.5;return n/a}var Rv=[{x:10500,z:2600,r:7200,h:3300},{x:11800,z:-3900,r:5200,h:3500},{x:4600,z:700,r:3200,h:1700},{x:7600,z:-7600,r:3600,h:1400},{x:15600,z:4200,r:3200,h:1100}];function Jf(i,e){let t=nc(i*22e-5,e*22e-5,4)*.32,n=1-Math.hypot(i-8600,e)/9800+t,s=n>0?4+260*Math.pow(n,.8):n*700,r=cn(n*6+.1);for(let o of Rv){let l=Math.hypot(i-o.x,e-o.z)/o.r;if(l<1){let c=1-l*l;s+=o.h*c*c*Math.pow(1-l,.35)*r}}r>0&&(s+=nc(i*9e-4,e*9e-4,4)*160*r*cn(n*2.5)+nc(i*.004,e*.004,2)*14*r);let a=Math.hypot(i,e);return a<1500&&(s=on(22,Math.max(s,4),cn((a-820)/680))),s}function $f(i,e){let t=i-kt.x,n=e-kt.z,s=Math.hypot(t,n)<820?22:Jf(t,n);return Math.max(s,0)+_r+ac(i*i+e*e)}var uc=Lt("gl"),zn=new Yl({canvas:uc,antialias:!Qt,powerPreference:"high-performance",stencil:!1});zn.toneMapping=ga;zn.toneMappingExposure=1.08;var ru=Math.min(window.devicePixelRatio||1,Qt?1.6:1.75),Uf=Qt?.62:.7,Rn=gr.get("dpr")?+gr.get("dpr"):Math.min(Qt?1.3:1.5,ru);zn.setPixelRatio(Rn);var et=new Vr,Mt=new sn(68,1,.5,17e4);et.add(Mt);var Kf=68;function dc(){let i=document.documentElement;return[i.clientWidth||innerWidth,i.clientHeight||innerHeight]}function xr(){let[i,e]=dc();zn.setSize(i,e,!1),Mt.aspect=i/e;let t=50*Math.PI/180;Kf=Math.min(92,Math.max(64,2*Math.atan(Math.tan(t/2)/Mt.aspect)*180/Math.PI)),Mt.updateProjectionMatrix()}addEventListener("resize",xr);addEventListener("orientationchange",()=>{setTimeout(xr,200),setTimeout(xr,700)});window.visualViewport&&visualViewport.addEventListener("resize",xr);xr();function yr(i,e,t,n=!0){let s=document.createElement("canvas");s.width=i,s.height=e,t(s.getContext("2d"),i,e);let r=new Jr(s);return n&&(r.colorSpace=dn),r}var jf=yr(128,128,(i,e)=>{let t=i.createRadialGradient(e/2,e/2,0,e/2,e/2,e/2);t.addColorStop(0,"rgba(255,255,255,1)"),t.addColorStop(.25,"rgba(255,255,255,.55)"),t.addColorStop(.6,"rgba(255,255,255,.12)"),t.addColorStop(1,"rgba(255,255,255,0)"),i.fillStyle=t,i.fillRect(0,0,e,e)},!1),Cv=yr(128,128,(i,e)=>{let t=i.createRadialGradient(e/2,e/2,e*.28,e/2,e/2,e/2);t.addColorStop(0,"rgba(255,255,255,0)"),t.addColorStop(.7,"rgba(255,255,255,.9)"),t.addColorStop(1,"rgba(255,255,255,0)"),i.fillStyle=t,i.fillRect(0,0,e,e)},!1),Iv=yr(128,128,(i,e)=>{let t=Ki(7);for(let n=0;n<16;n++){let s=e*(.28+t()*.44),r=e*(.32+t()*.4),a=e*(.14+t()*.18),o=i.createRadialGradient(s,r,0,s,r,a);o.addColorStop(0,"rgba(255,255,255,.42)"),o.addColorStop(1,"rgba(255,255,255,0)"),i.fillStyle=o,i.fillRect(0,0,e,e)}},!1),Ff=yr(64,128,(i,e,t)=>{i.fillStyle="#000",i.fillRect(0,0,e,t);let n=Ki(11);for(let s=4;s<t-4;s+=8)for(let r=3;r<e-3;r+=8){let a=n();a<.42||(i.fillStyle=a>.93?"#ff3048":a>.7?"#ffd27a":"#6a4a2a",i.fillRect(r,s,4,4))}}),Pv=yr(4,128,(i,e,t)=>{let n=i.createLinearGradient(0,t,0,0);n.addColorStop(0,"rgba(255,220,140,1)"),n.addColorStop(.15,"rgba(255,190,90,.6)"),n.addColorStop(1,"rgba(255,120,60,0)"),i.fillStyle=n,i.fillRect(0,0,e,t)},!1),Qf=i=>{let e=yr(128,128,(t,n)=>{t.fillStyle=i?"#000":"#2a1c24",t.fillRect(0,0,n,n),t.fillStyle=i?"#5a0a16":"#3a2430",t.fillRect(0,0,n,3),t.fillRect(0,0,3,n),i&&(t.fillStyle="#6a4a14",t.fillRect(62,0,2,n))});return e.wrapS=e.wrapT=Vs,e.repeat.set(130,130),e.anisotropy=4,e},Lv=Qf(!1),Dv=Qf(!0),uu=`#include <tonemapping_fragment>
#include <colorspace_fragment>`,Dt={time:{value:0},sun:{value:Yf},haze:{value:new ge},hazeDist:{value:8e3},alt01:{value:0},dip:{value:0}},fc=new Ze(new mn(1e3,32,20),new It({uniforms:{uAlt:Dt.alt01,uSun:Dt.sun,uDip:Dt.dip},vertexShader:"varying vec3 vD; void main(){ vD = normalize((modelMatrix*vec4(position,1.)).xyz - cameraPosition); gl_Position = projectionMatrix*modelViewMatrix*vec4(position,1.); }",fragmentShader:`uniform float uAlt; uniform vec3 uSun; uniform float uDip; varying vec3 vD;
  vec3 lin(vec3 c){ return pow(c, vec3(2.2)); }
  void main(){
    vec3 d = normalize(vD); float e = d.y + uDip;
    vec2 hz = normalize(d.xz + 1e-5), hs = normalize(uSun.xz);
    float sa = max(dot(hz, hs), 0.);
    vec3 hor = mix(lin(vec3(.56,.17,.2)), lin(vec3(1.,.47,.2)), pow(sa, 3.));
    vec3 c = mix(hor, lin(vec3(.3,.08,.18)), smoothstep(0., .2, e));
    c = mix(c, lin(vec3(.06,.025,.1)), smoothstep(.15, .75, e));
    if (e < 0.) c = mix(hor * .7, lin(vec3(.09,.035,.06)), smoothstep(0., -.3, e));
    float lim = max(e, 0.);
