<!-- SOLID CITY · part 3388 -->
    vec3 limb = mix(lin(vec3(.18,.38,1.)), lin(vec3(1.,.5,.26)), pow(sa, 2.)) * (exp(-lim * 30.) * .75 + exp(-lim * 8.) * .05);
    vec3 sp = (e < 0.) ? lin(vec3(.02,.03,.06)) : limb;
    c = mix(c, sp, uAlt);
    float s = max(dot(d, uSun), 0.);
    c += vec3(1., .86, .62) * pow(s, 9000.) * 40. + lin(vec3(1., .55, .25)) * (pow(s, 40.) * .5 + pow(s, 6.) * .25) * mix(1., .25, uAlt);
    gl_FragColor = vec4(c, 1.);
    ${uu}
  }`,side:jt,depthWrite:!1,depthTest:!1}));fc.renderOrder=-10;fc.frustumCulled=!1;et.add(fc);var Qh=(()=>{let i=Qt?1100:1800,e=new Float32Array(i*3),t=new Float32Array(i),n=Ki(3),s=new $e(.3,.8,.5).normalize(),r=new $e;for(let c=0;c<i;c++)r.set(n()*2-1,n()*2-1,n()*2-1).normalize(),c<i*.4&&r.addScaledVector(s,-r.dot(s)*(.85+n()*.15)).normalize(),e.set([r.x*900,r.y*900,r.z*900],c*3),t[c]=.6+Math.pow(n(),6)*3.2;let a=new ft;a.setAttribute("position",new wt(e,3)),a.setAttribute("aSize",new wt(t,1));let o=new It({uniforms:{uA:{value:0},uT:Dt.time,uPx:{value:1}},vertexShader:"attribute float aSize; uniform float uT; uniform float uPx; varying float vTw; void main(){ vTw = .65 + .35*sin(uT*2.3 + position.x*.7 + position.z); gl_PointSize = aSize * uPx * 1.6; gl_Position = projectionMatrix*modelViewMatrix*vec4(position,1.); }",fragmentShader:"uniform float uA; varying float vTw; void main(){ vec2 p = gl_PointCoord-.5; float a = smoothstep(.5,.0,length(p)); gl_FragColor = vec4(vec3(1.,.96,.9)*a*uA*vTw, 1.); }",blending:Wt,depthWrite:!1,depthTest:!1}),l=new Ui(a,o);return l.renderOrder=-9,l.frustumCulled=!1,et.add(l),l})();function Nv(i,e,t,n){let s=[],r=[],o=Math.pow(1.1,e)-1;s.push(0,i,0);for(let c=1;c<=e;c++){let h=n*(Math.pow(1.1,c)-1)/o;for(let f=0;f<t;f++){let u=f/t*Math.PI*2;s.push(i*Math.sin(h)*Math.cos(u),i*Math.cos(h),i*Math.sin(h)*Math.sin(u))}}for(let c=0;c<t;c++)r.push(0,1+(c+1)%t,1+c);for(let c=1;c<e;c++){let h=1+(c-1)*t,f=1+c*t;for(let u=0;u<t;u++){let d=(u+1)%t;r.push(h+u,h+d,f+u,h+d,f+d,f+u)}}let l=new ft;return l.setAttribute("position",new Qe(s,3)),l.setIndex(r),l}var du=new Ze(Nv(gs,Qt?64:76,Qt?96:140,1.05),new It({uniforms:{uSun:Dt.sun,uHaze:Dt.haze,uHazeDist:Dt.hazeDist,uT:Dt.time,uAlt:Dt.alt01},vertexShader:"varying vec3 vW; varying vec3 vN; void main(){ vec4 w = modelMatrix*vec4(position,1.); vW = w.xyz; vN = normalize(position); gl_Position = projectionMatrix*viewMatrix*w; }",fragmentShader:`uniform vec3 uSun; uniform vec3 uHaze; uniform float uHazeDist; uniform float uT; uniform float uAlt; varying vec3 vW; varying vec3 vN;
  void main(){
    vec3 V = cameraPosition - vW; float dist = length(V); V /= dist;
    vec3 N = normalize(vN);
    vec2 p = vW.xz * .018; float near = clamp(1. - dist / 4000., 0., 1.);
    N = normalize(N + near * .05 * vec3(sin(p.x*3.1+uT*.8)+sin(p.y*2.3-uT*.6), 0., cos(p.x*2.7-uT*.7)+cos(p.y*3.3+uT*.5)));
    float dif = max(dot(N, uSun), 0.);
    vec3 c = vec3(.008,.03,.045) * (.45 + dif * 1.6);
    vec3 H = normalize(uSun + V); float nh = max(dot(N, H), 0.);
    c += vec3(1., .62, .32) * (pow(nh, 260.) * 5. + pow(nh, 22.) * .22);
    float fr = pow(1. - max(dot(N, V), 0.), 5.);
    c += uHaze * fr * .55;
    float term = smoothstep(-.25, .25, dot(N, uSun));
    c *= mix(.25, 1., term);
    float hz = 1. - exp(-dist / uHazeDist);
    c = mix(c, uHaze * mix(1., .55 + .45 * term, uAlt), hz);
    gl_FragColor = vec4(c, 1.);
    ${uu}
  }`}));du.position.set(0,_r-gs,0);du.frustumCulled=!1;et.add(du);function Uv(){let i=Qt?58:66,e=Qt?110:150,t=1.115,n=[],s=[],r=new ge,a=new ge(.85,.85,.9),o=d=>d===0?0:34*(Math.pow(t,d)-1)/(t-1)/3;for(let d=0;d<=i;d++)for(let g=0;g<(d?e:1);g++){let M=o(d),m=g/e*Math.PI*2,p=Math.cos(m)*M,b=Math.sin(m)*M,A=Math.hypot(p,b)<820?22:Jf(p,b);A<1&&(A=Math.min(A,-40));let v=p+kt.x,T=b+kt.z;n.push(v,A+_r+ac(v*v+T*T)-.15,T)}for(let d=0;d<e;d++)s.push(0,1+(d+1)%e,1+d);for(let d=1;d<i;d++){let g=1+(d-1)*e,M=1+d*e;for(let m=0;m<e;m++){let p=(m+1)%e;s.push(g+m,g+p,M+m,g+p,M+p,M+m)}}let l=new ft;l.setAttribute("position",new Qe(n,3)),l.setIndex(s),l=l.toNonIndexed(),l.computeVertexNormals();let c=l.attributes.position,h=l.attributes.normal,f=new Float32Array(c.count*3);for(let d=0;d<c.count;d++){let g=c.getX(d),M=c.getZ(d),m=c.getY(d)-_r-ac(g*g+M*M)+.15,p=1-h.getY(d),b=nc(g*.0011+7,M*.0011,2);if(m<2)r.setRGB(.05,.1,.12);else if(m<16)r.setRGB(.2,.17,.14);else{let A=cn((b+.2)*2.2)*cn((2200-m)/900);r.setRGB(on(.075,.06,A),on(.06,.17,A),on(.065,.07,A)),p>.35&&r.setRGB(.11,.085,.08),m>2700&&r.lerp(a,cn((m-2900)/400))}Math.hypot(g-kt.x,M-kt.z)<815&&r.setRGB(.12,.09,.11),r.convertSRGBToLinear(),f[d*3]=r.r,f[d*3+1]=r.g,f[d*3+2]=r.b}l.setAttribute("color",new wt(f,3));let u=new Ze(l,new Tn({vertexColors:!0,flatShading:!0}));return u.frustumCulled=!1,et.add(u),u}var Kn={black:new Tn({color:789005}),gold:new Yn({color:15254378,emissive:3811336,shininess:60,specular:8939059}),red:new Ft({color:new ge(2.2,.15,.25)}),glowGold:new Ft({color:new ge(2.4,1.6,.6)}),road:new Tn({color:1380886})};function eu(i,e,t,n,s,r,a){let