leaflet-city-mapper 0.0.7 → 0.0.8

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 (65) hide show
  1. package/README.md +2 -2
  2. package/cucumber.mjs +1 -3
  3. package/dist/leaflet-city-mapper-src.js +403 -201
  4. package/dist/leaflet-city-mapper-src.js.map +4 -4
  5. package/dist/leaflet-city-mapper-worker-src.js +69 -59
  6. package/dist/leaflet-city-mapper-worker-src.js.map +3 -3
  7. package/dist/leaflet-city-mapper-worker.js +1 -1
  8. package/dist/leaflet-city-mapper-worker.js.map +4 -4
  9. package/dist/leaflet-city-mapper.js +5 -5
  10. package/dist/leaflet-city-mapper.js.map +4 -4
  11. package/libs/leaflet-lens.js +44 -27
  12. package/libs/leaflet.js +4 -4
  13. package/libs/openlayers-bindings.js +2 -1
  14. package/libs/openlayers-bindings.min.js +1 -1
  15. package/libs/openlayers-bindings.min.js.map +3 -3
  16. package/package.json +2 -2
  17. package/src/camera/mapCamera.js +7 -7
  18. package/src/camera/mapTryAnimatedPan.js +4 -4
  19. package/src/camera/updateMapCamera.js +8 -6
  20. package/src/controls/cameraControls.js +27 -22
  21. package/src/core/cameraCircleBounds.js +2 -1
  22. package/src/core/closestCameraLayerPoint.js +2 -1
  23. package/src/core/constructLayer.js +9 -0
  24. package/src/core/extendLeafletClass.js +5 -0
  25. package/src/core/extendTerrainPixelBounds.js +31 -0
  26. package/src/core/gridlayerGetTiledPixelBounds.js +2 -27
  27. package/src/core/layerAddInitHook.js +7 -0
  28. package/src/core/layerCallInitHooks.js +13 -13
  29. package/src/core/layerMergeOptions.js +7 -0
  30. package/src/core/projectNativePath.js +23 -0
  31. package/src/geometry/circleGeometry.js +4 -3
  32. package/src/globals/layerControlAddItem.js +3 -0
  33. package/src/globals/leafletLayer.js +3 -0
  34. package/src/globals/workerCogSource.js +1 -1
  35. package/src/gpu/initializeRendererResources.js +10 -12
  36. package/src/index.js +26 -11
  37. package/src/layer-controls/layerControlInputId.js +11 -0
  38. package/src/layer-controls/placeEntry.js +2 -0
  39. package/src/materials/createProgram.js +7 -6
  40. package/src/native/gridTerrainElevation.js +7 -11
  41. package/src/native/nativeTerrainElevation.js +16 -0
  42. package/src/native/prepareGridTerrainRequests.js +16 -0
  43. package/src/native/retainGridTerrain.js +10 -0
  44. package/src/native/syncGridLayer.js +12 -59
  45. package/src/native/syncGridTile.js +18 -0
  46. package/src/native/syncTerrainGridTile.js +28 -0
  47. package/src/rendering/drawGeometry.js +11 -11
  48. package/src/rendering/resizeRenderer.js +16 -15
  49. package/src/scene/initializerFor.js +2 -1
  50. package/src/scene/layerInitialize.js +1 -1
  51. package/src/shadows/drawShadowMeshes.js +6 -5
  52. package/src/sources/pumpSourceAreas.js +1 -1
  53. package/src/sunlight/initSunlight.js +19 -8
  54. package/src/textures/nativeTextureFor.js +2 -3
  55. package/src/textures/uploadCanvasTexture.js +11 -2
  56. package/src/vector-tiles/createVectorLabel.js +22 -0
  57. package/src/vector-tiles/prepareVectorLabel.js +17 -35
  58. package/src/vector-tiles/updateVectorLabelStyle.js +8 -0
  59. package/src/vector-tiles/vectorLabelCells.js +2 -5
  60. package/src/vector-tiles/vectorLabelIcon.js +1 -1
  61. package/src/vector-tiles/vectorLabelText.js +10 -0
  62. package/src/walk/initWalk.js +19 -6
  63. package/src/weakmaps/pathProjectionByMap.js +1 -0
  64. package/src/workers/cogWorker.js +4 -5
  65. package/src/globals/layerCallInitHooks.js +0 -1
@@ -1,7 +1,7 @@
1
- (()=>{var ov=Object.defineProperty;var b=(e,t,r)=>()=>{if(r)throw r[0];try{return e&&(t=e(e=0)),t}catch(o){throw r=[o],o}};var iv=(e,t)=>{for(var r in t)ov(e,r,{get:t[r],enumerable:!0})};var d,L=b(()=>{d=globalThis.L});var B,$=b(()=>{B=Math.PI/180});var et,po=b(()=>{et=180/Math.PI});var vn,om=b(()=>{vn=new WeakMap});function _(e){return vn.get(e)??0}var J=b(()=>{om()});var wn,im=b(()=>{wn=new WeakMap});function k(e){return wn.get(e)??0}var Z=b(()=>{im()});var Ro,ua=b(()=>{Ro=Object.freeze({})});var He,ha=b(()=>{He=new WeakMap});function ga(){let e=this.getSize().y,t=_(this)*B,r=e*this.options.pitchMaxDistance,o=e*1.5,i=e/2-r*Math.abs(Math.cos(t))*o/(o+Math.sin(t)*r);i>0&&!He.get(this)&&(He.set(this,d.DomUtil.create("div","leaflet-pitch-sky",this.getContainer())),He.get(this).setAttribute("aria-hidden","true"),He.get(this).style.cssText="position:absolute;inset:0 0 auto;height:0;z-index:0;pointer-events:none;background:var(--leaflet-sky-background,linear-gradient(#9ec5e8,#dfe9f0))"),He.get(this)&&(He.get(this).style.inset=t>Math.PI/2?"auto 0 0":"0 0 auto",He.get(this).style.height=`${Math.max(0,Math.ceil(i))}px`,He.get(this).style.display=i>0?"":"none")}var _m=b(()=>{ha();L();$();J()});function Ne(e,t,r){if(!Number.isFinite(t)||!Number.isFinite(r))throw new TypeError("Camera angles must be finite numbers");if(!Number.isFinite(e.options.maxPitch)||e.options.maxPitch<0||e.options.maxPitch>180)throw new TypeError("maxPitch must be between 0 and 180 degrees");let o=_(e),i=k(e);return vn.set(e,Math.max(0,Math.min(e.options.maxPitch,t))),wn.set(e,(r%360+360)%360),e._loaded&&(ga.call(e),i!==k(e)&&e.fire("rotate",{bearing:k(e)}),o!==_(e)&&e.fire("pitch",{pitch:_(e)})),e}var dr=b(()=>{im();om();J();Z();_m()});var $t,ya=b(()=>{$t=new WeakMap});var Oo,xa=b(()=>{Oo=new WeakMap});var gr,va=b(()=>{gr=new Map});var Mt,wa=b(()=>{Mt={value:null}});function Do(e){gr.delete(e),$t.set(e,null),Oo.set(e,null),!gr.size&&Mt.value!==null&&(cancelAnimationFrame(Mt.value),Mt.value=null)}var La=b(()=>{ya();xa();va();wa()});var $r,Ma=b(()=>{$r=new WeakMap});var Io,Em=b(()=>{Io=new WeakMap});var Ei,zm=b(()=>{Ei=new WeakMap});var yr,zi=b(()=>{yr=new WeakMap});var xr,Ai=b(()=>{xr=new WeakMap});var Am,ou=b(()=>{Am={value:void 0}});var Rm,iu=b(()=>{Rm={value:void 0}});var Om,nu=b(()=>{Om={value:void 0}});var Dm,au=b(()=>{Dm={value:void 0}});var Ba,su=b(()=>{Ba={value:void 0}});var Bt,Go=b(()=>{Bt=new WeakMap});var Vr,Ta=b(()=>{Vr=new Set});var Ri,Im=b(()=>{Ri=Object.freeze({capture:!0,passive:!1})});function Gm(){this._map.fire("cameratouchchange")}var mu=b(()=>{});var Uo,Pa=b(()=>{Uo=Object.freeze([.8,.5])});var fu,pu=b(()=>{fu=Object.freeze([.8,0])});var Sa,Um=b(()=>{Sa=Object.freeze({preventScroll:!0})});var ka,Nm=b(()=>{ka=Object.freeze({animate:!0})});function cu(e){Mt.value=null;let t=[...gr];gr.clear();let r,o,i,n,a;for([o,i]of t)if(Oo.set(o,null),$t.get(o)===i){n=i.duration?Math.min(1,(e-i.start)/(i.duration*1e3)):1,a=1-(1-n)**3;try{Ne(o,i.fromPitch+(Math.max(0,Math.min(o.options.maxPitch,i.pitch))-i.fromPitch)*a,i.fromBearing+i.delta*a),n<1&&$t.get(o)===i?Ca(o,i):$t.get(o)===i&&$t.set(o,null)}catch(s){r||=s}}if(r)throw r}var lu=b(()=>{ya();xa();wa();va();dr();Fm()});function Ca(e,t){gr.set(e,t),Mt.value===null&&(Mt.value=requestAnimationFrame(cu)),Oo.set(e,Mt.value)}var Fm=b(()=>{xa();va();wa();lu()});function No(e,t,r,o=Ro){if(Do(e),!Number.isFinite(t)||!Number.isFinite(r))throw new TypeError("Camera angles must be finite numbers");if(!o.animate||matchMedia("(prefers-reduced-motion: reduce)").matches)return Ne(e,t,r);let i=o.duration??.3;if(!Number.isFinite(i)||i<0)throw new TypeError("Camera duration must be nonnegative");let n=performance.now(),a=_(e),s=k(e),m=((r-s)%360+540)%360-180,f={duration:i,start:n,fromPitch:a,fromBearing:s,pitch:t,delta:m};return $t.set(e,f),Ca(e,f),e}var _a=b(()=>{ya();ua();dr();J();Z();La();Fm()});function uu(e,t=ka){return No(e,0,0,t)}var du=b(()=>{Nm();_a()});function lt(e,t,r){return No(e,_(e),t,r)}var Fo=b(()=>{_a();J()});function hu(e,t=ka){return lt(e,0,t)}var gu=b(()=>{Nm();Fo()});function yu(e){let t=this._rotateControl,r=t._map;e.preventDefault(),t.options.visualizePitch?uu(r):hu(r),e.detail&&r.getContainer().focus(Sa)}var xu=b(()=>{Um();du();gu()});function Vt(e,t,r){return No(e,t,k(e),r)}var Oi=b(()=>{_a();Z()});function vu(e){let t=this._rotateControl,r=t._map,o=e.shiftKey?15:5;if(e.key==="ArrowLeft")lt(r,k(r)-o);else if(e.key==="ArrowRight")lt(r,k(r)+o);else if(e.key==="ArrowUp"&&t.options.visualizePitch)Vt(r,_(r)+o);else if(e.key==="ArrowDown"&&t.options.visualizePitch)Vt(r,_(r)-o);else if(e.key==="Home"||e.key===" ")this.click();else return;e.preventDefault(),e.stopPropagation()}var wu=b(()=>{Fo();Z();Oi();J()});function Ea(){let e=this._map,t=this.options.visualizePitch?_(e):0;this._arrow.style.transform=`scale(${1/Math.sqrt(Math.max(.01,Math.abs(Math.cos(t*B))))}) rotateX(${t}deg) rotate(${k(e)}deg)`,this._button.setAttribute("aria-description",`Bearing ${Math.round(k(e))} degrees, pitch ${Math.round(_(e))} degrees. Arrow keys adjust the camera; Home resets it.`),this._container.style.display=this.options.closeOnZeroBearing&&!k(e)&&!t&&!this._container.contains(document.activeElement)?"none":""}var Wm=b(()=>{$();J();Z()});var Fe,vr=b(()=>{Fe={value:new WeakMap}});var Zr,za=b(()=>{Zr={value:new Set}});function Aa(e){return e.closest?.('input,textarea,select,[contenteditable="true"]')}var jm=b(()=>{});function Ra(e){let t=Fe.value.get(this);if(t.drag||!t.accept(e)||Aa(e.target))return;e.preventDefault(),e.stopPropagation(),t.moved=!1;let r=t.map.getContainer().getBoundingClientRect();t.drag={id:e.pointerId,x:e.clientX,y:e.clientY,cursor:t.element.style.cursor,cx:r.left+r.width/2,cy:r.top+r.height/2,dragging:t.map.dragging?.enabled()},t.map.dragging?.disable(),t.element.focus?.(Sa),t.element.setPointerCapture(e.pointerId),t.element.style.cursor="grabbing"}var $m=b(()=>{vr();Um();jm()});function Oa(e){return Do(e),e}var Vm=b(()=>{La()});function Da(e){let t=Fe.value.get(this);if(!t.drag||t.drag.id!==e.pointerId)return;let r=e.clientX-t.drag.x,o=e.clientY-t.drag.y;if(Math.hypot(r,o)<3&&!t.moved)return;Oa(t.map),t.moved=!0,e.preventDefault();let i=r*t.sensitivity[0];if(t.orbit)if(Math.abs(t.drag.cy-t.drag.y)>100){let n=Math.atan2(e.clientY-t.drag.cy,e.clientX-t.drag.cx)-Math.atan2(e.clientY-t.drag.cy,t.drag.x-t.drag.cx);i=Math.atan2(Math.sin(n),Math.cos(n))*et}else i*=e.clientY<t.drag.cy?1:-1;Ne(t.map,_(t.map)-o*t.sensitivity[1],k(t.map)+i),t.drag.x=e.clientX,t.drag.y=e.clientY}var Zm=b(()=>{po();vr();Vm();dr();J();Z()});function Wo(e,t){if(!e?.drag||t?.pointerId!==void 0&&t.pointerId!==e.drag.id)return;let r=e.drag;e.drag=null,e.element.hasPointerCapture?.(r.id)&&e.element.releasePointerCapture(r.id),r.dragging&&e.map.getContainer()._leaflet_id&&e.map.dragging.enable(),e.element.style.cursor=r.cursor}var Ia=b(()=>{});function wr(e){Wo(Fe.value.get(this),e)}var qm=b(()=>{vr();Ia()});function Ga(e){let t=Fe.value.get(this);t.moved&&(e.preventDefault(),e.stopPropagation(),t.moved=!1)}var Hm=b(()=>{vr()});function Ua(e){let t=Fe.value.get(this);!t.drag&&!t.moved||(e.preventDefault(),e.stopPropagation())}var Ym=b(()=>{vr()});function Na(){let e;for(e of Zr.value)Wo(e)}var Xm=b(()=>{za();Ia()});function Fa(e,t,r,o=Uo,i=!1){let n={map:e,element:t,accept:r,sensitivity:o,orbit:i,drag:null,moved:!1};return Fe.value.set(t,n),Zr.value.add(n),t.addEventListener("pointerdown",Ra,!0),t.addEventListener("pointermove",Da),t.addEventListener("pointerup",wr),t.addEventListener("pointercancel",wr),t.addEventListener("lostpointercapture",wr),t.addEventListener("click",Ga,!0),t.addEventListener("contextmenu",Ua),window.addEventListener("blur",Na),n}var Jm=b(()=>{Pa();vr();za();$m();Zm();qm();Hm();Ym();Xm()});function Lu(e){return e.button===0}var bu=b(()=>{});function Mu(){Ea.call(this._rotateControl)}var Bu=b(()=>{Wm()});function Tu(e){let t=d.DomUtil.create("div","leaflet-control-rotate leaflet-bar"),r=d.DomUtil.create("a","leaflet-control-rotate-toggle",t);this._map=e,this._container=t,this._button=r,r._rotateControl=this,r.href="#",r.draggable=!1,r.setAttribute("role","button"),r.title=this.options.visualizePitch?"Reset bearing and pitch":"Reset bearing to north",r.setAttribute("aria-label",r.title),r.style.cssText="cursor:grab;touch-action:none";let o=d.DomUtil.create("span","leaflet-control-rotate-arrow",r);return this._arrow=o,o.setAttribute("aria-hidden","true"),o.style.cssText="display:block;width:100%;height:100%;pointer-events:none;background: no-repeat center / 29px 29px",o.style.backgroundImage='url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 29 29%27%3E%3Cpath fill=%27%23333%27 d=%27M10.5 14 14.5 6 18.5 14Z%27/%3E%3Cpath fill=%27%23ccc%27 d=%27M10.5 16 14.5 24 18.5 16Z%27/%3E%3C/svg%3E")',r.onclick=yu,r.onkeydown=vu,this._refresh=Ea,e.on("rotate pitch",this._refresh,this),this._refresh(),this._dragState=Fa(e,r,Lu,this.options.visualizePitch?Uo:fu),r.addEventListener("focusout",Mu),d.DomEvent.on(r,"dblclick contextmenu",d.DomEvent.stop),d.DomEvent.disableClickPropagation(t),d.DomEvent.disableScrollPropagation(t),t}var Pu=b(()=>{L();Pa();pu();xu();wu();Wm();Jm();bu();Bu()});function Su(e){Wo(e);let{element:t}=e;t.removeEventListener("pointerdown",Ra,!0),t.removeEventListener("pointermove",Da),t.removeEventListener("pointerup",wr),t.removeEventListener("pointercancel",wr),t.removeEventListener("lostpointercapture",wr),t.removeEventListener("click",Ga,!0),t.removeEventListener("contextmenu",Ua),Fe.value.delete(t),Zr.value.delete(e),Zr.value.size||window.removeEventListener("blur",Na)}var ku=b(()=>{vr();za();Ia();$m();Zm();qm();Hm();Ym();Xm()});function Wa(){Su(this._dragState)}var Km=b(()=>{ku()});function Cu(e){e.off("rotate pitch",this._refresh,this),Wa.call(this)}var _u=b(()=>{Km()});function Eu(e){return new d.Control.Rotate(e)}var zu=b(()=>{L()});function Au(e){let t=this._cameraShiftRotate;!e.shiftKey||Aa(e.target)||e.target.closest(".leaflet-control")||(e.preventDefault(),e.stopImmediatePropagation(),lt(t._map,k(t._map)+Math.sign(e.deltaY)*5))}var Ru=b(()=>{Fo();Z();jm()});function Ou(){let e=this._map.getContainer();e._cameraShiftRotate=this,this._wheel=Au,e.addEventListener("wheel",this._wheel,Ri)}var Du=b(()=>{Im();Ru()});function Iu(){let e=this._map.getContainer();e.removeEventListener("wheel",this._wheel,!0),delete e._cameraShiftRotate}var Gu=b(()=>{});function Uu(e){return!e.target.closest(".leaflet-control,.leaflet-marker-icon,.leaflet-popup")&&(e.button===2||e.button===0&&e.ctrlKey)}var Nu=b(()=>{});function Fu(){this._dragState=Fa(this._map,this._map.getContainer(),Uu,Uo,!0)}var Wu=b(()=>{Pa();Jm();Nu()});function ju(e){let t=this.handler,r=Number.isFinite(e.webkitCompassHeading)?-e.webkitCompassHeading:e.alpha,o=e.absolute?0:screen.orientation?.angle??window.orientation??0;Number.isFinite(r)&&lt(t._map,r-o)}var $u=b(()=>{Fo()});function Qm(e,t){e.disable(),e._map.fire("error",{error:t})}var Vu=b(()=>{});function Zu([e,t]){let{handler:r,generation:o}=e.value;if(!(!r.enabled()||r._generation!==o)){if(!window.DeviceOrientationEvent||t.status!=="fulfilled"||t.value!=="granted")return Qm(r,t.status==="rejected"?t.reason:new Error("Device compass permission unavailable or denied"));try{window.addEventListener("deviceorientation",r._orientation),window.addEventListener("deviceorientationabsolute",r._orientation)}catch(i){Qm(r,i)}}}var qu=b(()=>{Vu()});function Hu(){this._compassGeneration=this._generation=(this._generation||0)+1,this._orientation={handler:this,handleEvent:ju};let e=window.DeviceOrientationEvent?.requestPermission,t;try{t=e?e.call(window.DeviceOrientationEvent):"granted"}catch(r){t=Promise.reject(r)}Promise.allSettled([Promise.resolve({handler:this,generation:this._generation}),t]).then(Zu)}var Yu=b(()=>{$u();qu()});function Xu(){this._generation++,window.removeEventListener("deviceorientation",this._orientation),window.removeEventListener("deviceorientationabsolute",this._orientation)}var Ju=b(()=>{});function Ku(e){e[0]?.target._containerResizeMap.invalidateSize()}var Qu=b(()=>{});function ed(){let e=this._map.getContainer();e._containerResizeMap=this._map,this._observer=new ResizeObserver(Ku),this._observer.observe(e)}var td=b(()=>{Qu()});function rd(){let e=this._map.getContainer();this._observer.disconnect(),delete e._containerResizeMap}var od=b(()=>{});function ja(e){let t=Bt.get(this),{map:r,container:o}=t;if(t.touch||e.touches.length!==2||e.target.closest(".leaflet-control")||!xr.get(r).enabled()&&!yr.get(r).enabled())return;let[i,n]=e.touches;if(Math.hypot(n.clientX-i.clientX,n.clientY-i.clientY)<1)return;Oa(r);let a=o.getBoundingClientRect(),s=new d.Point((i.clientX+n.clientX)/2-a.left,(i.clientY+n.clientY)/2-a.top);t.touch={angle:Math.atan2(n.clientY-i.clientY,n.clientX-i.clientX),distance:Math.hypot(n.clientX-i.clientX,n.clientY-i.clientY),middle:s,anchor:r.containerPointToLatLng(s),zoom:r.getZoom(),bearing:k(r),pitch:_(r),zooming:r.touchZoom?.enabled(),dragging:r.dragging?.enabled(),currentMiddle:new d.Point(s.x,s.y)},r.dragging?.disable(),e.preventDefault(),e.stopImmediatePropagation(),t.nativeZoom!==void 0&&(t.touch.zooming=t.nativeZoom),t.touch.snap=r.options.zoomSnap,r.options.zoomSnap=0}var ef=b(()=>{zi();Ai();L();Go();Vm();Z();J()});function $a(e){let t=Bt.get(this),{map:r,container:o,touch:i}=t;if(!i||e.touches.length!==2)return;let[n,a]=e.touches,s=Math.atan2(a.clientY-n.clientY,a.clientX-n.clientX),m=o.getBoundingClientRect(),f=i.currentMiddle;f.x=(n.clientX+a.clientX)/2-m.left,f.y=(n.clientY+a.clientY)/2-m.top;let p=Math.atan2(Math.sin(s-i.angle),Math.cos(s-i.angle))*et;Ne(r,yr.get(r).enabled()?i.pitch-(f.y-i.middle.y)*.25:i.pitch,xr.get(r).enabled()?i.bearing+p:i.bearing);let c=Math.hypot(a.clientX-n.clientX,a.clientY-n.clientY);if(c<1)return;let l=i.zooming?Math.max(r.getMinZoom(),Math.min(r.getMaxZoom(),i.zoom+Math.log2(c/i.distance))):i.zoom;if(r.setView(r.getCenter(),l,{animate:!1}),r.options.touchZoom!=="center"){let u=r.project(i.anchor).subtract(r.project(r.containerPointToLatLng(f)));r.setView(r.unproject(r.project(r.getCenter()).add(u)),r.getZoom(),{animate:!1})}e.preventDefault(),e.stopImmediatePropagation()}var tf=b(()=>{zi();Ai();po();Go();dr()});function Lr(e,t){if(!e.touch||t?.touches?.length>=2)return;let{map:r,container:o,touch:i}=e;i.dragging&&o._leaflet_id&&r.dragging.enable(),r.options.zoomSnap=i.snap,i.zooming&&i.snap&&o._leaflet_id&&r.setZoom(Math.round(r.getZoom()/i.snap)*i.snap,{animate:!1}),e.touch=null}var Di=b(()=>{});function jo(e){Lr(Bt.get(this),e)}var rf=b(()=>{Go();Di()});function Ii(){let e=$r.get(this),{map:t,container:r}=e,o=xr.get(t).enabled()||yr.get(t).enabled();o&&e.nativeZoom===void 0?(e.nativeZoom=t.touchZoom?.enabled(),t.touchZoom?.disable()):!o&&e.nativeZoom!==void 0&&(Lr(e),e.nativeZoom&&r._leaflet_id&&t.touchZoom.enable(),e.nativeZoom=void 0)}var of=b(()=>{Ma();zi();Ai();Di()});function Va(){let e;for(e of Vr)Lr(e)}var nf=b(()=>{Ta();Di()});function id(){let e=$r.get(this);if(!e)return;let{container:t,map:r}=e;Lr(e),t.removeEventListener("touchstart",ja,!0),t.removeEventListener("touchmove",$a,!0),t.removeEventListener("touchend",jo,!0),t.removeEventListener("touchcancel",jo,!0),Vr.delete(e),Vr.size||window.removeEventListener("blur",Va),r.off("cameratouchchange",Ii,r),Ei.get(r)?.remove(),Bt.delete(t),$r.delete(r)}var nd=b(()=>{Ma();zm();Ta();Go();Di();ef();tf();rf();nf();of()});function qr(e,t,r){let o=Io.get(e);o||Io.set(e,o=new Map);let i=new r(e);o.set(t,i),e._handlers.push(i),e.options[t]&&i.enable()}var ad=b(()=>{Em()});var sd={};iv(sd,{cameraControls:()=>nv});function nv(e){if(qr(e,"trackContainerMutation",Rm.value),!e.options.rotate)return;qr(e,"shiftKeyRotate",Dm.value),qr(e,"pitchDrag",Om.value),qr(e,"compassBearing",Am.value),qr(e,"touchRotate",Ba.value),qr(e,"touchPitch",Ba.value),xr.set(e,Io.get(e).get("touchRotate")),yr.set(e,Io.get(e).get("touchPitch"));let t=e.getContainer(),r={map:e,container:t,touch:null,nativeZoom:void 0};$r.set(e,r),Bt.set(t,r),Vr.add(r),t.addEventListener("touchstart",ja,Ri),t.addEventListener("touchmove",$a,Ri),t.addEventListener("touchend",jo,!0),t.addEventListener("touchcancel",jo,!0),window.addEventListener("blur",Va),e.on("cameratouchchange",Ii,e),Ii.call(e),e.options.rotateControl&&(Ei.set(e,new d.Control.Rotate(typeof e.options.rotateControl=="object"?e.options.rotateControl:Ro)),Ei.get(e).addTo(e)),e.once("unload",id,e)}var md=b(()=>{Ma();Em();zm();zi();Ai();L();ou();iu();nu();au();su();Go();Ta();Im();ua();mu();Pu();_u();zu();Du();Gu();Wu();Km();Yu();Ju();td();od();ef();tf();rf();of();nd();nf();ad();Am.value=d.Handler.extend({addHooks:Hu,removeHooks:Xu});Rm.value=d.Handler.extend({addHooks:ed,removeHooks:rd});Om.value=d.Handler.extend({addHooks:Fu,removeHooks:Wa});Dm.value=d.Handler.extend({addHooks:Ou,removeHooks:Iu});Ba.value=d.Handler.extend({addHooks:Gm,removeHooks:Gm});d.Control.Rotate=d.Control.extend({options:{position:"topleft",closeOnZeroBearing:!0,visualizePitch:!0},onAdd:Tu,onRemove:Cu});d.control&&(d.control.rotate=Eu)});L();var Ir={value:void 0};var sn={value:void 0};var mn={value:void 0};L();var W={value:void 0};var Qe={value:void 0};var fn={value:void 0};var pn={value:void 0};var cn={value:void 0};var ln={value:void 0};var un={value:void 0};var dn={value:void 0};var hn={value:void 0};var ue=new WeakMap;var re=new WeakMap;var so=new WeakMap;var rr=new WeakMap;L();var O=new WeakMap;var yt=new WeakMap;function yi(e){let t=yt.get(e.currentTarget);if(!t)return;let r;for(r of t)De(r)}function xi(e){let t=yt.get(e.currentTarget);if(!t)return;let r;for(r of t)r.source.fire("error",{error:new Error("Unable to load native layer image")})}function gn(e,t){let r=yt.get(e);r&&(r.delete(t),r.size||yt.delete(e))}function Ef(e,t){let r=yt.get(e);r||yt.set(e,r=new Set),r.add(t)}var st=new WeakMap;var It=new Set;var F=new WeakMap;var v=new WeakMap;var oe=new WeakMap;var Gt=new WeakMap;var or=new WeakMap;var mt=new WeakMap;var yn=[null];var mo=new WeakMap;var de=new WeakMap;var Ze=new WeakMap;var zf={subtree:!0};var se=new WeakMap;L();function xn(e){let t;for(t of Object.values(e._layers))t instanceof d.Marker?t.update():(t instanceof d.Popup||t instanceof d.Tooltip)&&t._updatePosition()}function Af(e,t){let r=e._map,o=Ze.get(e),i,n;for(n of de.get(e).keys())if(n.effect.target===r._proxy){i=n;break}let a=i?.effect.getComputedTiming().progress??Math.min(1,(t-o.start)/250),s=r.getZoomScale(o.targetZoom,o.zoom),m=1+(s-1)*a,f=r.project(o.from,o.zoom),p=r.project(o.to,o.zoom);se.set(r,{zoom:r.getScaleZoom(m,o.zoom),center:r.unproject(f.add(p.subtract(f).multiplyBy(s*a/m)),o.zoom)}),xn(r)}function Rf(e,t){let r=e._map,o,i,n;if(r._animatingZoom){de.get(e)||de.set(e,new Map);for(o of r.getContainer().getAnimations(zf))!(o instanceof CSSTransition)||o.transitionProperty!=="transform"||!o.effect.target.classList.contains("leaflet-zoom-animated")||de.get(e).has(o)||(i=o.currentTime||0,o.pause(),de.get(e).set(o,{start:t,time:i}));for([o,{start:n,time:i}]of de.get(e))o.currentTime=Math.min(o.effect.getComputedTiming().endTime,i+t-n);Ze.get(e)&&Af(e,t)}}var ir=new WeakMap;var vi={size:[null,null],format:"depth24plus",sampleCount:4,usage:null};var fo={size:[null,null],format:null,sampleCount:4,usage:null};async function Of(e,t,r){try{await r}catch(o){e.fire("error",{error:o})}t.destroy()}function j(e,t){Of(e,t,v.get(e).device.queue.onSubmittedWorkDone())}function Df(e,t){(!ir.get(e)||!ir.get(e).equals(t))&&(v.get(e).width=t.x,v.get(e).height=t.y,v.get(e).canvas.width=Math.round(t.x*v.get(e).dpr),v.get(e).canvas.height=Math.round(t.y*v.get(e).dpr),v.get(e).canvas.style.width=`${t.x}px`,v.get(e).canvas.style.height=`${t.y}px`,v.get(e).depthTexture&&j(e,v.get(e).depthTexture),v.get(e).colorTexture?.destroy(),v.get(e).colorTexture=v.get(e).device.createTexture((fo.size[0]=v.get(e).canvas.width,fo.size[1]=v.get(e).canvas.height,fo.format=v.get(e).format,fo.usage=GPUTextureUsage.RENDER_ATTACHMENT,fo)),v.get(e).depthTexture=v.get(e).device.createTexture((vi.size[0]=v.get(e).canvas.width,vi.size[1]=v.get(e).canvas.height,vi.usage=GPUTextureUsage.RENDER_ATTACHMENT,vi)),ir.set(e,t))}var ee=new WeakMap;var ie=new WeakMap;$();po();var If=2*Math.atan(1/3)*et;var tt=2*Math.PI*6378137;var me=new WeakMap;var Me=new WeakMap;var ft=new WeakMap;var Be=new WeakMap;var rt=new WeakMap;var ge=new WeakMap;L();function Gf(e,t){let r=t?.get(`${Math.floor(e.x/64)}/${Math.floor(e.y/64)}`);if(!r)return null;let o,i,n,a,s,m,f;for(o of r)if(!(e.x<o.min[0]||e.x>o.max[0]||e.y<o.min[1]||e.y>o.max[1])){for([i,n,a]of o.triangles)if(s=(n[1]-a[1])*(i[0]-a[0])+(a[0]-n[0])*(i[1]-a[1]),m=((n[1]-a[1])*(e.x-a[0])+(a[0]-n[0])*(e.y-a[1]))/s,f=((a[1]-i[1])*(e.x-a[0])+(i[0]-a[0])*(e.y-a[1]))/s,m>=0&&f>=0&&m+f<=1)return m*i[2]+f*n[2]+(1-m-f)*a[2]}return null}function wi(e,t,r){let o=Math.floor(t/256),i=Math.floor(r/256),n=e.get(`${o}/${i}`);if(!n)return null;let a=n[(r-i*256)*256+t-o*256];return Number.isFinite(a)&&a>-1e3?a:null}function Gr(e,t){let r=e.x-.5,o=e.y-.5,i=Math.floor(r),n=Math.floor(o),a=r-i,s=o-n,m=wi(t,i,n),f=wi(t,i+1,n),p=wi(t,i,n+1),c=wi(t,i+1,n+1);return!Number.isFinite(m)||!Number.isFinite(f)||!Number.isFinite(p)||!Number.isFinite(c)?Number.isFinite(m)?m:Number.isFinite(f)?f:Number.isFinite(p)?p:Number.isFinite(c)?c:null:(m*(1-a)+f*a)*(1-s)+(p*(1-a)+c*a)*s}function nr(e,t){if(!e._map||!Be.get(e))return null;let r=t instanceof d.Point?t:e._map.project(t,ge.get(e));return Gf(r,ft.get(e))??Gr(r,rt.get(e))}function Uf(e,t){let r=Math.max(0,Math.min(24,Math.round(e.map.getZoom()))),o=new Map,i,n,a,s,m,f,p,c,l,u,h,x,g;for(;r>=0;r--){i=e.map.project(t,r),n=2**r,a=Math.floor(i.x/256),s=Math.floor(i.y/256);for(h of Object.values(e.map._layers))if(x=ue.get(h),!(x?.disposed||x?.terrainStream!==e)&&(g=x.terrainRequests?.get(`${a}:${s}:${r}`),!(!g?.tiles||h._tiles[`${a}:${s}:${r}`]!==g.tile)&&(u=Gr(i,g.tiles),Number.isFinite(u))))return u;for(o.clear(),f=-1;f<=1;f++)for(m=-1;m<=1;m++)p=((a+m)%n+n)%n,c=Math.max(0,Math.min(n-1,s+f)),l=e.terrainCache.get(`${r}/${p}/${c}`),l?.data&&o.set(`${a+m}/${s+f}`,l.data);if(u=Gr(i,o),Number.isFinite(u))return u}return null}function ye(e,t){let r=me.get(e);if(r)return nr(r,t);let o=Me.get(e);return o&&Uf(o,t)}var Ut=new WeakMap;J();Z();var Nf=Math.PI/360;function co(e){e.x||=[0,0,0],e.y||=[0,0,0],e.z||=[0,0,0],e.viewTransform||=new DOMMatrix,e.projectionTransform||=new DOMMatrix,e.projectionViewTransform||=new DOMMatrix;let{position:t,target:r,up:o,x:i,y:n,z:a,viewMatrix:s,projectionMatrix:m,projectionViewMatrix:f}=e,p;a[0]=t[0]-r[0],a[1]=t[1]-r[1],a[2]=t[2]-r[2];let c=Math.hypot(a[0],a[1],a[2])||1;a[0]/=c,a[1]/=c,a[2]/=c,i[0]=o[1]*a[2]-o[2]*a[1],i[1]=o[2]*a[0]-o[0]*a[2],i[2]=o[0]*a[1]-o[1]*a[0];let l=Math.hypot(i[0],i[1],i[2])||1;i[0]/=l,i[1]/=l,i[2]/=l,n[0]=a[1]*i[2]-a[2]*i[1],n[1]=a[2]*i[0]-a[0]*i[2],n[2]=a[0]*i[1]-a[1]*i[0];let u=e.viewTransform;u.m11=i[0],u.m12=i[1],u.m13=i[2],u.m14=0,u.m21=n[0],u.m22=n[1],u.m23=n[2],u.m24=0,u.m31=a[0],u.m32=a[1],u.m33=a[2],u.m34=0,u.m41=t[0],u.m42=t[1],u.m43=t[2],u.m44=1,u.invertSelf(),s[0]=u.m11,s[1]=u.m12,s[2]=u.m13,s[3]=u.m14,s[4]=u.m21,s[5]=u.m22,s[6]=u.m23,s[7]=u.m24,s[8]=u.m31,s[9]=u.m32,s[10]=u.m33,s[11]=u.m34,s[12]=u.m41,s[13]=u.m42,s[14]=u.m43,s[15]=u.m44;for(p of s)if(!Number.isFinite(p))throw new Error("Singular 3D transform");let h=1/Math.tan(e.fov*Nf),x=e.near,g=e.far;m[0]=h/e.aspect,m[1]=0,m[2]=0,m[3]=0,m[4]=0,m[5]=h,m[6]=0,m[7]=0,m[8]=0,m[9]=0,m[10]=g/(x-g),m[11]=-1,m[12]=0,m[13]=0,m[14]=g*x/(x-g),m[15]=0;let y=e.projectionTransform;y.m11=m[0],y.m12=m[1],y.m13=m[2],y.m14=m[3],y.m21=m[4],y.m22=m[5],y.m23=m[6],y.m24=m[7],y.m31=m[8],y.m32=m[9],y.m33=m[10],y.m34=m[11],y.m41=m[12],y.m42=m[13],y.m43=m[14],y.m44=m[15];let w=e.projectionViewTransform;w.m11=y.m11,w.m12=y.m12,w.m13=y.m13,w.m14=y.m14,w.m21=y.m21,w.m22=y.m22,w.m23=y.m23,w.m24=y.m24,w.m31=y.m31,w.m32=y.m32,w.m33=y.m33,w.m34=y.m34,w.m41=y.m41,w.m42=y.m42,w.m43=y.m43,w.m44=y.m44,w.multiplySelf(u),f[0]=w.m11,f[1]=w.m12,f[2]=w.m13,f[3]=w.m14,f[4]=w.m21,f[5]=w.m22,f[6]=w.m23,f[7]=w.m24,f[8]=w.m31,f[9]=w.m32,f[10]=w.m33,f[11]=w.m34,f[12]=w.m41,f[13]=w.m42,f[14]=w.m43,f[15]=w.m44}function ot(e,t,r=!1){let o=se.get(e);if(!o)return t;let i=e.getSize().divideBy(2),n=e.getZoomScale(o.zoom),a=e.project(e.getCenter(),o.zoom).subtract(e.project(o.center,o.zoom));return r?t.subtract(i).subtract(a).divideBy(n).add(i):t.subtract(i).multiplyBy(n).add(a).add(i)}function Ff(e,t){let r=e._map,o=se.get(r)?.zoom??r.getZoom(),i=r.options.crs.scale(o)/(tt*Math.cos(ie.get(e).lat*B)),n=ot(r,W.value.layerPointToContainerPoint.call(r,r.project(ie.get(e)).subtract(r.getPixelOrigin()))),a=t.y*1.5/i,s=(t.x/2-n.x)/i,m=Ut.get(r)?.control?._walk,f=(ye(r,r.getCenter())??0)+(m?.saved?m.state.height:0),p=(t.y/2-n.y)/i,c=_(r)*B,l=k(r)*B,u=ee.get(e);u.fov=If,u.aspect=t.x/t.y,u.near=Math.max(.1,a/1e4),u.far=Math.max(1e4,a*10),u.position[0]=s+Math.sin(l)*Math.sin(c)*a,u.position[1]=f+Math.cos(c)*a,u.position[2]=p+Math.cos(l)*Math.sin(c)*a,u.up[0]=-Math.sin(l)*Math.cos(c),u.up[1]=Math.sin(c),u.up[2]=-Math.cos(l)*Math.cos(c),u.target[0]=s,u.target[1]=f,u.target[2]=p,co(u)}var Ur=new WeakMap;function Wf(e,t){let r,o;if(e.matrix){let i=e._matrixState||=new Float64Array(16);for(r=0;r<16;r++)i[r]!==e.matrix[r]&&(t=!0),i[r]=e.matrix[r]}else{let i=e._transformState||=new Float64Array(9);for(r=0;r<9;r++)o=r<3?e.position[r]:r<6?e.rotation[r-3]:e.scale[r-6],i[r]!==o&&(t=!0),i[r]=o}return t}po();function jf(e){let t=e._localTransform||=new DOMMatrix;return t.m11=1,t.m12=0,t.m13=0,t.m14=0,t.m21=0,t.m22=1,t.m23=0,t.m24=0,t.m31=0,t.m32=0,t.m33=1,t.m34=0,t.m41=0,t.m42=0,t.m43=0,t.m44=1,t.translateSelf(e.position[0],e.position[1],e.position[2]),t.rotateAxisAngleSelf(0,1,0,e.rotation[1]*et),t.rotateAxisAngleSelf(1,0,0,e.rotation[0]*et),t.rotateAxisAngleSelf(0,0,1,e.rotation[2]*et),t.scaleSelf(e.scale[0],e.scale[1],e.scale[2]),t}function Te(e){let t=e.parent,r=t?._worldMatrixVersion||0,o=!!e.matrix,i=e._worldParent!==t||e._parentWorldVersion!==r||e._worldMatrixMode!==o,n;if(i=Wf(e,i),!i){for(n of e.children)Te(n);return}let a,s;e.matrix?a=e.matrix:a=jf(e),s=e._worldTransform||=new DOMMatrix,a instanceof DOMMatrix?(s.m11=a.m11,s.m12=a.m12,s.m13=a.m13,s.m14=a.m14,s.m21=a.m21,s.m22=a.m22,s.m23=a.m23,s.m24=a.m24,s.m31=a.m31,s.m32=a.m32,s.m33=a.m33,s.m34=a.m34,s.m41=a.m41,s.m42=a.m42,s.m43=a.m43,s.m44=a.m44):(s.m11=a[0],s.m12=a[1],s.m13=a[2],s.m14=a[3],s.m21=a[4],s.m22=a[5],s.m23=a[6],s.m24=a[7],s.m31=a[8],s.m32=a[9],s.m33=a[10],s.m34=a[11],s.m41=a[12],s.m42=a[13],s.m43=a[14],s.m44=a[15]),t&&s.preMultiplySelf(t._worldTransform),e.worldMatrix[0]=s.m11,e.worldMatrix[1]=s.m12,e.worldMatrix[2]=s.m13,e.worldMatrix[3]=s.m14,e.worldMatrix[4]=s.m21,e.worldMatrix[5]=s.m22,e.worldMatrix[6]=s.m23,e.worldMatrix[7]=s.m24,e.worldMatrix[8]=s.m31,e.worldMatrix[9]=s.m32,e.worldMatrix[10]=s.m33,e.worldMatrix[11]=s.m34,e.worldMatrix[12]=s.m41,e.worldMatrix[13]=s.m42,e.worldMatrix[14]=s.m43,e.worldMatrix[15]=s.m44,e._worldParent=t,e._parentWorldVersion=r,e._worldMatrixMode=o,e._worldMatrixVersion=(e._worldMatrixVersion||0)+1;for(n of e.children)Te(n)}function Ce(e){let t=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0],o=e.attributes.position.data,i,n,a,s;for(i=0;i<o.length;i+=3)n=o[i],a=o[i+1],s=o[i+2],t[0]=Math.min(t[0],n),r[0]=Math.max(r[0],n),t[1]=Math.min(t[1],a),r[1]=Math.max(r[1],a),t[2]=Math.min(t[2],s),r[2]=Math.max(r[2],s);let m=e.attributes.instanceOffset;if(m){let l,u,h,x;for(l=0;l<3;l++){for(h=1/0,x=-1/0,u=l;u<m.data.length;u+=m.size)h=Math.min(h,m.data[u]),x=Math.max(x,m.data[u]);t[l]=Math.fround(t[l]+h),r[l]=Math.fround(r[l]+x)}}let f=[(t[0]+r[0])/2,(t[1]+r[1])/2,(t[2]+r[2])/2],p=0;for(i=0;!m&&i<o.length;i+=3)n=o[i]-f[0],a=o[i+1]-f[1],s=o[i+2]-f[2],p=Math.max(p,n*n+a*a+s*s);let c=m?Math.hypot(r[0]-t[0],r[1]-t[1],r[2]-t[2])/2:Math.sqrt(p);if(!m&&(p===1/0||p<Number.MIN_VALUE/Number.EPSILON))for(c=0,i=0;i<o.length;i+=3)c=Math.max(c,Math.hypot(o[i]-f[0],o[i+1]-f[1],o[i+2]-f[2]));e.bounds={min:t,max:r,center:f,radius:c}}function $f(e){let t=e.program?.uniforms?.strokeScale?.value??1;return Math.max(0,t-1)*(e.geometry.nativeStrokeRadius||0)}function Vf(e,t,r,o,i){e.geometry.bounds||Ce(e.geometry);let n=e.geometry.bounds,a=e.worldMatrix,s=e._cullingSphere;if(!s||s.bounds!==n||s.matrix!==a||s.version!==e._worldMatrixVersion||e._worldMatrixVersion===void 0){s||=e._cullingSphere={};let h=n.center;s.x=a[0]*h[0]+a[4]*h[1]+a[8]*h[2]+a[12],s.y=a[1]*h[0]+a[5]*h[1]+a[9]*h[2]+a[13],s.z=a[2]*h[0]+a[6]*h[1]+a[10]*h[2]+a[14],s.scale=Math.max(Math.hypot(a[0],a[1],a[2]),Math.hypot(a[4],a[5],a[6]),Math.hypot(a[8],a[9],a[10])),s.radius=n.radius*s.scale,s.bounds=n,s.matrix=a,s.version=e._worldMatrixVersion}let{x:m,y:f,z:p}=s,c=s.radius+$f(e)*s.scale,l=t[2]*m+t[6]*f+t[10]*p+t[14],u=t[3]*m+t[7]*f+t[11]*p+t[15];e._sortDepth=l/u,e._visibleInFrame=r[0][0]*m+r[0][1]*f+r[0][2]*p+r[0][3]>=-c*o[0]&&r[1][0]*m+r[1][1]*f+r[1][2]*p+r[1][3]>=-c*o[1]&&r[2][0]*m+r[2][1]*f+r[2][2]*p+r[2][3]>=-c*o[2]&&r[3][0]*m+r[3][1]*f+r[3][2]*p+r[3][3]>=-c*o[3]&&r[4][0]*m+r[4][1]*f+r[4][2]*p+r[4][3]>=-c*o[4]&&r[5][0]*m+r[5][1]*f+r[5][2]*p+r[5][3]>=-c*o[5],e._visibleInFrame&&i.push(e)}function nm(e,t,r,o,i,n,a){if(!e.visible)return;e.geometry&&(t?.altitude>=3&&!e.tile&&e._appearance!==0&&!e.program.nightLight&&e.program.depthTest!==!1&&a.push(e),Vf(e,r,o,i,n));let s;for(s of e.children)nm(s,t,r,o,i,n,a)}function Zf(e,t,r){let i=ee.get(e).projectionViewMatrix,n=v.get(e),a=n.frustum||=[new Float64Array(4),new Float64Array(4),new Float64Array(4),new Float64Array(4),new Float64Array(4),new Float64Array(4)],s=n.frustumLengths||=new Float64Array(6),m,f,p,c,l;for(m=0;m<6;m++){for(f=Math.floor(m/2),p=a[m],c=0;c<4;c++)l=c*4,p[c]=m===4?i[l+2]:m%2?i[l+3]-i[l+f]:i[l+3]+i[l+f];s[m]=Math.hypot(p[0],p[1],p[2])}let u=Ur.get(e);u||Ur.set(e,u=[]),u.length=0;let h=Gt.get(e);h||Gt.set(e,h=[]),h.length=0,r&&Te(oe.get(e)),nm(oe.get(e),t,i,a,s,u,h)}var A=new WeakMap;var D=new WeakMap;var K=new WeakMap;var Li=new WeakMap;var fe=new WeakMap;var _e=new WeakMap;L();var qf=[];$();var Hf=[];var Yf={x:0,y:0};var Xf={x:1,y:1};var Jf={code:"@group(0)@binding(0)var source:texture_2d<f32>;@group(0)@binding(1)var sourceSampler:sampler;@group(0)@binding(2)var<uniform> opacity:f32;struct Varyings{@builtin(position)position:vec4f,@location(0)uv:vec2f};@vertex fn vertexMain(@builtin(vertex_index)index:u32)-> Varyings{let uv = vec2f(f32(index & 1u),f32(index >> 1u));return Varyings(vec4f(uv.x * 2.0 - 1.0,1.0 - uv.y * 2.0,0.0,1.0),uv);}@fragment fn fragmentMain(input:Varyings)->@location(0)vec4f{let color = textureSample(source,sourceSampler,input.uv);return vec4f(color.rgb,color.a * opacity);}"};var lo={layout:"auto",vertex:{module:null,entryPoint:"vertexMain"},fragment:{module:null,entryPoint:"fragmentMain",targets:[{format:"rgba8unorm",blend:{color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-strip"}};var Kf={magFilter:"linear",minFilter:"linear"};function Qf(e){let t=e.device;if(!e.roofBlit){let r=t.createShaderModule(Jf);e.roofBlit={pipeline:t.createRenderPipeline((lo.vertex.module=r,lo.fragment.module=r,lo)),sampler:t.createSampler(Kf)},lo.vertex.module=null,lo.fragment.module=null}}var Ln={size:null,usage:null};var bn={colorAttachments:[{view:null,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"}]};var Mn={source:null};var Bn={texture:null};var Tn=[null,null];function ep(e,t){let r=t.texture;r.uploaded!==r.image&&(e.queue.copyExternalImageToTexture((Mn.source=t.image,Mn),(Bn.texture=r.texture,Bn),(Tn[0]=r.texture.width,Tn[1]=r.texture.height,Tn)),Mn.source=null,Bn.texture=null,r.uploaded=r.image)}var pt={layout:null,entries:[{binding:0,resource:null},{binding:1,resource:null},{binding:2,resource:{buffer:null,offset:null,size:4}}]};var Pn=[null];var Sn={value:new Float32Array(64)};function tp(e,t){return(e.layer.options.zIndex||0)-(t.layer.options.zIndex||0)||e.tile.coords.z-t.tile.coords.z}function rp(e,t,r,o,i,n,a){let s=v.get(e),m=s.device,f=e._map,p=Math.max(1,t.length)*64;Sn.value.length<p&&(Sn.value=new Float32Array(p));let c=Sn.value,l=m.createBuffer((Ln.size=c.byteLength,Ln.usage=GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,Ln)),u=m.createCommandEncoder(),h=u.beginRenderPass((bn.colorAttachments[0].view=K.get(e).texture.texture.createView(),bn));bn.colorAttachments[0].view=null,h.setPipeline(s.roofBlit.pipeline),t.sort(tp);let x,g,y,w,S,T,P,R;for([x,{tile:g,layer:y}]of t.entries())({coords:w}=g),S=g.texture,ep(m,g),c[x*64]=y.options.opacity,T=256*f.getZoomScale(r,w.z),P=(w.x*T-o.x)*n/i.x,R=(w.y*T-o.y)*a/i.y,h.setViewport(P,R,Math.min(T*n/i.x,n-P),Math.min(T*a/i.y,a-R),0,1),h.setBindGroup(0,m.createBindGroup((pt.layout=s.roofBlit.pipeline.getBindGroupLayout(0),pt.entries[0].resource=S.texture.createView(),pt.entries[1].resource=s.roofBlit.sampler,pt.entries[2].resource.buffer=l,pt.entries[2].resource.offset=x*256,pt))),pt.layout=null,pt.entries[0].resource=null,pt.entries[1].resource=null,pt.entries[2].resource.buffer=null,h.draw(4);h.end(),m.queue.writeBuffer(l,0,c),m.queue.submit((Pn[0]=u.finish(),Pn)),Pn[0]=null,l.destroy()}function op(e,t){let r=-1/0,o,i;for(o of e)for(i of D.get(o).values())i.done&&!i.request.signal.aborted&&i.image&&(i._roofEntry||={tile:i,layer:o},t.push(i._roofEntry),r=Math.max(r,i.coords.z));return r}var ip={size:[null,null],format:"rgba8unorm",usage:null};var np={addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"};function ap(e,t,r,o){let i=v.get(e),n=ip;n.size[0]=r,n.size[1]=o,n.usage=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT,t.texture&&(t.texture.width!==r||t.texture.height!==o)&&(j(e,t.texture.texture),t.texture.texture=i.device.createTexture(n),t.texture.width=r,t.texture.height=o),t.texture||={device:i.device,texture:i.device.createTexture(n),sampler:i.device.createSampler(np),samplerOptions:{addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"},image:null,width:r,height:o,format:"rgba8unorm",srgb:!1,flipY:!1,uploaded:null}}function sp(e,t,r,o){let i=e._map,n=v.get(e),a=Hf;a.length=0;let s=op(t,a),m=1/0,f=1/0,p=-1/0,c=-1/0,l,u;a.length||(s=i.getZoom());for({tile:{coords:l}}of a)u=256*i.getZoomScale(s,l.z),m=Math.min(m,l.x*u),f=Math.min(f,l.y*u),p=Math.max(p,(l.x+1)*u),c=Math.max(c,(l.y+1)*u);let h=i.project(ie.get(e),s),x=Yf,g=Xf;x.x=a.length?m:h.x,x.y=a.length?f:h.y,g.x=a.length?p-m:1,g.y=a.length?c-f:1;let y=Math.min(1,4096/Math.max(g.x,g.y)),w=Math.max(1,Math.ceil(g.x*y)),S=Math.max(1,Math.ceil(g.y*y)),T=i.options.crs.scale(s)/(tt*Math.cos(ie.get(e).lat*B)),P={matrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],texture:K.get(e)?.texture};K.set(e,P),P.signature=r,P.updatedAt=o,P.matrix[0]=T/g.x,P.matrix[10]=T/g.y,P.matrix[12]=(h.x-x.x)/g.x,P.matrix[14]=(h.y-x.y)/g.y,ap(e,P,w,S),Qf(n);try{rp(e,a,s,x,g,w,S)}finally{a.length=0}}function mp(e,t,r){let o=qf;o.length=0;let i=!1,n;for(n of t)o.push(`${d.Util.stamp(n)}:${_e.get(n)||0}:${n.options.opacity}:${n.options.zIndex}`),i||=!!fe.get(n);let a=o.join("|");o.length=0,(!K.get(e)||K.get(e).signature!==a&&(!i||r-K.get(e).updatedAt>=50))&&sp(e,t,a,r)}function fp(e,t){let r=e._map,o=Li.get(e);o||Li.set(e,o=[]),o.length=0;let i=!1,n,a;for(n of F.get(e))if(n.options.roofTexture||n.options.wallTexture){i=!0;break}if(i){for(a of Object.values(r._layers))A.get(a)==="raster"&&D.get(a)&&a.options.opacity>0&&o.push(a);mp(e,o,t)}else K.get(e)&&(j(e,K.get(e).texture.texture),K.set(e,null));return o}function pp(e,t){return e.program.transparent?(e.renderOrder||0)-(t.renderOrder||0)||t._sortDepth-e._sortDepth||e.id-t.id:(e._sortDepth??0)-(t._sortDepth??0)||e.id-t.id}function cp(e,t){return+!!t.ground-+!!e.ground||(e.ground&&t.ground?(e.renderOrder||0)-(t.renderOrder||0)||e.tile.coords.z-t.tile.coords.z:0)||Number(e.program.transparent)-Number(t.program.transparent)||pp(e,t)}var U=new WeakMap;var ar=new WeakMap;$();function lp(e,t,r){let o=t._map,i=e.geometry.bounds,n=e.worldMatrix,a=ar.get(r),s=o.project(ie.get(t),a),m=o.options.crs.scale(a)/(tt*Math.cos(ie.get(t).lat*B)),f=1/0,p=1/0,c=-1/0,l=-1/0,u,h,x,g,y,w,S,T;for(u=0;u<8;u++)h=u&1?i.max[0]:i.min[0],x=u&2?i.max[1]:i.min[1],g=u&4?i.max[2]:i.min[2],y=s.x+(n[0]*h+n[4]*x+n[8]*g+n[12])*m,w=s.y+(n[2]*h+n[6]*x+n[10]*g+n[14])*m,f=Math.min(f,y),p=Math.min(p,w),c=Math.max(c,y),l=Math.max(l,w);return U.get(r).maxLat!==void 0&&U.get(r).minLon!==void 0&&U.get(r).minLat!==void 0&&U.get(r).maxLon!==void 0&&(S=o.project([U.get(r).maxLat,U.get(r).minLon],a),T=o.project([U.get(r).minLat,U.get(r).maxLon],a),f=Math.max(f,S.x),p=Math.max(p,S.y),c=Math.min(c,T.x),l=Math.min(l,T.y),f>=c||p>=l)?null:[f,p,c,l]}function up(e,t,r){let o=256*2**(r-t.coords.z),i=t.coords.x*o,n=t.coords.y*o,a=[],s,m,f,p,c,l,u,h;for([s,m,f,p]of e){if(c=Math.max(s,i),l=Math.max(m,n),u=Math.min(f,i+o),h=Math.min(p,n+o),c>=u||l>=h){a.push([s,m,f,p]);continue}m<l&&a.push([s,m,f,l]),h<p&&a.push([s,h,f,p]),s<c&&a.push([s,l,c,h]),u<f&&a.push([u,l,f,h])}return a}function dp(e,t,r){let o=!1,i=!1,n,a,s,m;for(n of r){if(!U.get(n)){i=!0;continue}if(a=lp(e,t,n),!!a){o=!0,s=[a];for(m of D.get(n).values())if(!(!m.done&&!m.error)&&(s=up(s,m,ar.get(n)),!s.length))return!0}}return!o&&!i}function hp(e,t,r,o){let i,n;if(t.program.uniforms.roofTexture&&!r.length&&(t._roofRevealed=!0),t.program.uniforms.roofTexture&&!t._roofRevealed&&r.length){Ut.get(e._map)?.control?._walk?.saved&&(t._roofRevealed=!0,t.fadeStart=o-(t.fadeDuration||0)),t._roofCoverageSignature!==K.get(e)?.signature&&(t._roofCoverageSignature=K.get(e)?.signature,t._roofCovered=dp(t,e,r)),n=!1;for(i of r)if(!U.get(i)||fe.get(i)>0){n=!0;break}if(!t._roofRevealed&&!t._roofCovered&&n)return t._appearance=0,!1;t._roofRevealed=!0}return!0}function gp(e,t,r,o){let i=Ur.get(e),n=Gt.get(e),a=v.get(e),s=!1,m,f;for(m of i)hp(e,m,t,r)&&(m.fadeDuration&&(m.fadeStart??=m.tile?.loadedAt??r,f=Math.min(1,(r-m.fadeStart)/m.fadeDuration),m._appearance=f*f*(3-2*f),s||=f<1),o.push(m));i.length=0,o.sort(cp);let p=1/0,c=-1/0;for(m of o)m.ground&&(p=Math.min(p,m.tile.coords.z),c=Math.max(c,m.tile.coords.z));a.groundOverlap=p!==c;let l=0;for(m of n)m.visible&&m._appearance!==0&&(n[l++]=m);return n.length=l,s}var kn={size:null,usage:null};function yp(e,t,r){let o=v.get(e);(!o.uniformBuffer||o.uniformBuffer.size<(t.length*2+r.length+1)*256)&&(o.uniformBuffer&&j(e,o.uniformBuffer),o.uniformBuffer=o.device.createBuffer((kn.size=Math.max(64,t.length*4+r.length*2)*256,kn.usage=GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,kn)),o.uniformData=new Float32Array(o.uniformBuffer.size/4))}var M=new WeakMap;var it={layout:null,entries:[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null},{binding:3,resource:{buffer:null}}]};function Cn(e){let t=v.get(e).sunlight;t.bindGroup=v.get(e).device.createBindGroup((it.layout=t.layout,it.entries[0].resource.buffer=t.buffer,it.entries[1].resource=t.texture.createView(),it.entries[2].resource=t.sampler,it.entries[3].resource.buffer=t.lights,it)),it.layout=null,it.entries[0].resource.buffer=null,it.entries[1].resource=null,it.entries[2].resource=null,it.entries[3].resource.buffer=null}function xp(e,t,r,o,i){let n,a;for(n=0,a=o[r]*4;n<8;n++)i[a+n]=e[t+n];o[r]+=2}function vp(e,t,r,o,i,n,a,s){let m=e[t+3],f=e[t]-r,p=e[t+2]-o,c,l,u;for(c=Math.floor((p-m)/i);c<=Math.floor((p+m)/i);c++)for(l=Math.floor((f-m)/i);l<=Math.floor((f+m)/i);l++)u=c*n+l,s?xp(e,t,u,a,s):a[u]++}function am(e,t,r,o,i,n,a){let s,m;for(s of e)for(m=0;m<s.length;m+=8)vp(s,m,t,r,o,i,n,a)}function wp(e,t){let r=0,o,i,n,a;for(o of e)r+=o.length/8;let s=32,m;if(r){let f=1/0,p=1/0,c=-1/0,l=-1/0;for(o of e)for(i=0;i<o.length;i+=8)f=Math.min(f,o[i]-o[i+3]),c=Math.max(c,o[i]+o[i+3]),p=Math.min(p,o[i+2]-o[i+3]),l=Math.max(l,o[i+2]+o[i+3]);let u=Math.ceil((c-f)/s)+1,h=Math.ceil((l-p)/s)+1,x=new Uint32Array(u*h),g=new Uint32Array(u*h);am(e,f,p,s,u,x);let y=0;for(n of x)y+=n;let w=(2+u*h+y*2)*4;if(w*4>t)throw new Error("Streetlight grid exceeds GPU storage limit");m=new Float32Array(w),m[0]=f,m[1]=p,m[2]=s,m[3]=u,m[4]=h,m[5]=r;let S=2+u*h;for(a=0;a<x.length;a++)x[a]&&(m[(2+a)*4]=g[a]=S,m[(2+a)*4+1]=x[a],S+=x[a]*2);am(e,f,p,s,u,g,m)}else m=new Float32Array(8);return{data:m,count:r}}var Lp=.03/(4*Math.PI);function bp(e,t){let r=new Float32Array(e.length*8),o,i,n,a,s,m,f,p;for(o=0;o<e.length;o++)({position:[i,n,a],radius:s,color:m,flux:f}=e[o]),p=t[3]*i+t[7]*n+t[11]*a+t[15],r[o*8]=(t[0]*i+t[4]*n+t[8]*a+t[12])/p,r[o*8+1]=(t[1]*i+t[5]*n+t[9]*a+t[13])/p,r[o*8+2]=(t[2]*i+t[6]*n+t[10]*a+t[14])/p,r[o*8+3]=s,r[o*8+4]=m[0],r[o*8+5]=m[1],r[o*8+6]=m[2],r[o*8+7]=f*Lp;return r}function sm(e,t,r){let o=t?.meshes.length===e.length,i,n,a,s,m,f,p;for(i=0;i<e.length;i++){for(n=e[i],a=n.worldMatrix,s=n.extras.lights,m=n._worldLights,f=!!m,p=0;p<a.length&&f;p++)f=a[p]===m.matrix[p];(!f||m.lights!==s)&&(m=n._worldLights={lights:s,matrix:[...a],data:bp(s,a)}),o&&=t.meshes[i].mesh===n&&t.meshes[i].cache===m}if(o)return t;let c=new Array(e.length),l=new Array(e.length);for(i=0;i<e.length;i++)n=e[i],m=n._worldLights,c[i]=m.data,l[i]={mesh:n,cache:m};return{...wp(c,r),meshes:l}}var sr=[];function mm(e,t,r){if(!e.visible)return;e.extras?.lights&&(e.extras.dynamicLights?r:t).push(e);let o;for(o of e.children||sr)mm(o,t,r)}function Mp(e){let{device:t,sunlight:r}=v.get(e),o=[],i=[],n;for(n of F.get(e))!n.options.nightLight||!M.get(n).visible||mm(M.get(n),o,i);let a=t.limits.maxStorageBufferBindingSize,s=sm(o,r.staticLightGrid,a),m=sm(i,r.dynamicLightGrid,a);if(s===r.staticLightGrid&&m===r.dynamicLightGrid)return;let f=s.data.byteLength+m.data.byteLength;if(f>a)throw new Error("Streetlight grid exceeds GPU storage limit");let p=s!==r.staticLightGrid;r.lights.size<f&&(j(e,r.lights),r.lights=t.createBuffer({size:f,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),Cn(e),p=!0),s.data[6]=s.data.length/4,p&&t.queue.writeBuffer(r.lights,0,s.data),t.queue.writeBuffer(r.lights,s.data.byteLength,m.data),r.lightCount=s.count+m.count,r.staticLightGrid=s,r.dynamicLightGrid=m}function Bp(e,t,r,o){let i=v.get(e),n=ee.get(e),a=n.viewMatrix,s=o?.direction,m=s?s[0]:-300,f=s?s[1]:500,p=s?s[2]:300,c=a[0]*m+a[4]*f+a[8]*p,l=a[1]*m+a[5]*f+a[9]*p,u=a[2]*m+a[6]*f+a[10]*p,h=Math.hypot(c,l,u)||1,x=Math.hypot(a[4],a[5],a[6])||1;yp(e,t,r);let g=i.uniformData;g.set(n.viewMatrix,0),g.set(n.projectionMatrix,16),K.get(e)?.matrix?g.set(K.get(e).matrix,32):(g.fill(0,32,48),g[32]=g[37]=g[42]=g[47]=1),g[48]=c/h,g[49]=l/h,g[50]=u/h,g[51]=o&&o.altitude<=0?0:1,g[52]=a[4]/x,g[53]=a[5]/x,g[54]=a[6]/x;let y=o?Math.max(0,Math.min(1,(3-o.altitude)/9)):0;g[55]=y*y*(3-2*y);let w=o?.tint;g[56]=w?w[0]:1,g[57]=w?w[1]:1,g[58]=w?w[2]:1,g[59]=0,y>0&&Mp(e),i.uniformSlot=1}var mr={colorAttachments:[{view:null,resolveTarget:null,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"}],depthStencilAttachment:{view:null,depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}};var fm=[null];var ve={layout:null,vertex:{module:null,entryPoint:"vertexMain",buffers:null},fragment:{module:null,entryPoint:"fragmentMain",targets:[{format:null,blend:null,writeMask:null}]},primitive:{topology:"triangle-list",cullMode:null,frontFace:null},multisample:{count:4},depthStencil:{format:"depth24plus",depthWriteEnabled:null,depthCompare:null}};var Tp={color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}};function Pp(e,t,r,o){let{program:i}=t,n=i.depthTest===!1||t.ground&&e.groundOverlap?"always":"less-equal",a=`${r}:${o}:${n}`,s=i.pipelineCache.get(a);return s||(s=e.device.createRenderPipeline((ve.layout=i.pipelineLayout,ve.vertex.module=i.vertex,ve.vertex.buffers=i.vertexBuffers,ve.fragment.module=i.fragment,ve.fragment.targets[0].format=e.format,ve.fragment.targets[0].blend=i.transparent?Tp:void 0,ve.fragment.targets[0].writeMask=GPUColorWrite.ALL,ve.primitive.cullMode=r,ve.primitive.frontFace=o,ve.depthStencil.depthWriteEnabled=i.depthWrite,ve.depthStencil.depthCompare=n,ve)),ve.layout=null,ve.vertex.module=null,ve.vertex.buffers=null,ve.fragment.module=null,i.pipelineCache.set(a,s)),s}function Sp(e,t,r){let o=e.uniformData,i=(t._nativeSource||t._rasterSource)?.options.cutout;if(i&&(!Number.isFinite(i.x)||!Number.isFinite(i.y)||!Number.isFinite(i.radius)||i.radius<0))throw new Error("cutout requires finite x, y and a non-negative radius in CSS pixels");o[r+36]=(i?.x??0)*e.dpr,o[r+37]=(i?.y??0)*e.dpr,o[r+38]=(i?.radius??0)*e.dpr,o[r+39]=i?.outside?1:0}function kp(e,t){let r=t.program.uniforms,o=e.uniformSlot++*256,i=e.uniformData,n=o/4;return i.set(t.worldMatrix,n),i.set(r.baseColor.value,n+16),i[n+19]=1,i[n+20]=r.metallic.value,i[n+21]=r.roughness.value,i[n+22]=r.opacity.value*(t.ground?t._appearance??1:1),i[n+23]=r.alphaCutoff.value,i.set(r.emissive.value,n+24),i[n+27]=r.occlusionStrength.value,i[n+28]=t.terrain?.[0]??0,i[n+29]=t.terrain?.[1]??0,i[n+30]=t.terrain?.[2]??0,i[n+31]=t.terrain?.[3]??0,i[n+32]=t.highlight?.[0]??0,i[n+33]=t.highlight?.[1]??0,i[n+34]=t.program.nightSparkle?i[55]:0,i[n+35]=t.ground?1:t._appearance??1,Sp(e,t,n),i[n+40]=r.strokeScale?.value??1,i[n+41]=i[n+42]=i[n+43]=0,o}var Nr={source:null,flipY:null};var uo={texture:null};var ho=[null,null];function Cp(e,t){t.uploaded!==t.image&&(e.queue.copyExternalImageToTexture((Nr.source=t.image,Nr.flipY=!!t.flipY,Nr),(uo.texture=t.texture,uo),(ho[0]=t.image.width,ho[1]=t.image.height,ho)),Nr.source=null,uo.texture=null,t.uploaded=t.image)}var go={layout:null,entries:null};var _p=[];var _n={binding:0,resource:{buffer:null,size:176}};var En={binding:1,resource:{buffer:null,size:240}};var zn={binding:2,resource:null};var bi=[{binding:null,resource:null},{binding:null,resource:null},{binding:null,resource:null},{binding:null,resource:null},{binding:null,resource:null}];var Mi=[{binding:null,resource:null},{binding:null,resource:null},{binding:null,resource:null},{binding:null,resource:null},{binding:null,resource:null}];function Ep(e,t,r){let{program:o}=t,i=_p;i.length=0,_n.resource.buffer=e.uniformBuffer,En.resource.buffer=e.uniformBuffer,i.push(_n,En),o.terrain&&(zn.resource=o.terrain.texture.createView(),i.push(zn)),t.boundBuffer=e.uniformBuffer;let n=t.boundTextures||=[];n.length=r.length;let a,s,m;for(a=0;a<r.length;a++)s=o.bindings[a],m=r[a],bi[a].binding=s.texture,bi[a].resource=m.texture.createView(),Mi[a].binding=s.sampler,Mi[a].resource=m.sampler,i.push(bi[a],Mi[a]),n[a]||=[],n[a][0]=m.texture,n[a][1]=m.sampler;for(t.bindGroup=e.device.createBindGroup((go.layout=o.bindGroupLayout,go.entries=i,go)),go.layout=null,go.entries=null,_n.resource.buffer=null,En.resource.buffer=null,zn.resource=null,a=0;a<r.length;a++)bi[a].resource=null,Mi[a].resource=null;i.length=0}function zp(e,t){let{program:r}=t,{device:o}=e,i=t._textures||=[];i.length=0;let n,a,s;for(n of r.bindings){if(a=r.uniforms[n.name]?.value,!a)throw new Error(`Missing Layer3D texture: ${n.name}`);Cp(o,a),i.push(a)}let m=!t.bindGroup||t.boundBuffer!==e.uniformBuffer||i.length!==t.boundTextures.length;for(s=0;!m&&s<i.length;s++)(i[s].texture!==t.boundTextures[s][0]||i[s].sampler!==t.boundTextures[s][1])&&(m=!0);m&&Ep(e,t,i)}function An(e,t,r,o,i){let{geometry:n}=t,a=v.get(e),{device:s}=a,m=Pp(a,t,o,i),f=kp(a,t);zp(a,t),r.setPipeline(m),r.setBindGroup(0,t.bindGroup,(fm[0]=f,fm)),r.setVertexBuffer(0,n.attributes.position.buffer),r.setVertexBuffer(1,n.attributes.normal.buffer),n.attributes.color&&r.setVertexBuffer(2,n.attributes.color.buffer),n.attributes.uv&&r.setVertexBuffer(3,n.attributes.uv.buffer);let p=n.attributes.instanceOffset;p&&r.setVertexBuffer(4,p.buffer);let c,l;for(c in n.attributes)l=n.attributes[c],l.needsUpdate&&(s.queue.writeBuffer(l.buffer,0,l.data),l.needsUpdate=!1,(c==="position"||c==="instanceOffset")&&(n.bounds=null));let u=n.attributes.index;u?(r.setIndexBuffer(u.buffer,u.indexFormat),r.drawIndexed(n.drawRange.count,p?.count??1,n.drawRange.start,0,0)):r.draw(n.drawRange.count,p?.count??1,n.drawRange.start,0)}function Ap(e,t,r){let o=v.get(e),i=t.beginRenderPass((mr.colorAttachments[0].view=o.colorTexture.createView(),mr.colorAttachments[0].resolveTarget=o.context.getCurrentTexture().createView(),mr.depthStencilAttachment.view=o.depthTexture.createView(),mr));mr.colorAttachments[0].view=null,mr.colorAttachments[0].resolveTarget=null,mr.depthStencilAttachment.view=null,i.setViewport(0,0,o.canvas.width,o.canvas.height,0,1),i.setBindGroup(1,o.sunlight.bindGroup);let n,a,s,m,f,p;for(n of r){if(a=n.worldMatrix,n.texture&&(n.program.uniforms.baseTexture.value=n.texture,n.program.uniforms.opacity.value=n.opacity),s=n.program.uniforms,s.roofTexture&&(s.roofTexture.value=K.get(e)?.texture||o.roofFallbackTexture),!n._frontFace||n._frontFaceWorldVersion!==n._worldMatrixVersion||n._worldMatrixVersion===void 0){if(m=a[0]*(a[5]*a[10]-a[6]*a[9])-a[4]*(a[1]*a[10]-a[2]*a[9])+a[8]*(a[1]*a[6]-a[2]*a[5]),!Number.isFinite(m)||m===0)throw new Error("Singular 3D transform");n._frontFace=m<0?"cw":"ccw",n._frontFaceWorldVersion=n._worldMatrixVersion}f=n._frontFace,p=n.program,p.transparent&&p._layerMaterial.doubleSided&&!n._nativeSource?(An(e,n,i,"front",f),An(e,n,i,"back",f)):An(e,n,i,p.cullMode,f)}i.end()}var Rp=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0]);var Op=new Float32Array(20);function Dp(e,t){let r=e.meshes.get(t),o=t.geometry.drawRange;if(!(r&&r.world===t._worldMatrixVersion&&r.geometry===t.geometry&&r.start===o.start&&r.count===o.count&&r.appearance===(t._appearance??1)))return!1;let i;for(i of Object.values(t.geometry.attributes))if(i.needsUpdate)return!1;return!0}function Ip(e,t,r){let o=e.cache,i=e.enabled&&o?.meshes.size===t.length,n,a;if(i){for(n=0;n<r.direction.length;n++)if(r.direction[n]!==o.direction[n]){i=!1;break}}if(i){for(a of t)if(!Dp(o,a)){i=!1;break}}return i}var Gp={min:[0,0,0],max:[0,0,0]};var Up={position:[0,0,0],target:[0,0,0],up:[0,0,-1],x:[0,0,0],y:[0,0,0],z:[0,0,0],fov:45,aspect:1,near:1,far:500,viewMatrix:[],projectionMatrix:[],projectionViewMatrix:[]};var Np=[0,0,0];var Fp=[0,0,0];function Wp(e,t,r){let o=e._shadowBounds;if(!o||o.version!==e._worldMatrixVersion||o.bounds!==t){o||=e._shadowBounds={min:[1/0,1/0,1/0],max:[-1/0,-1/0,-1/0]},o.version=e._worldMatrixVersion,o.bounds=t,o.min.fill(1/0),o.max.fill(-1/0);let i,n,a,s,m,f,p;for(i=0;i<8;i++)for(n=i&1?t.max[0]:t.min[0],a=i&2?t.max[1]:t.min[1],s=i&4?t.max[2]:t.min[2],m=r[3]*n+r[7]*a+r[11]*s+r[15],f=0;f<3;f++)p=(r[f]*n+r[f+4]*a+r[f+8]*s+r[f+12])/m,o.min[f]=Math.min(o.min[f],p),o.max[f]=Math.max(o.max[f],p)}return o}function jp(e,t={min:[1/0,1/0,1/0],max:[-1/0,-1/0,-1/0]}){let{min:r,max:o}=t;r.fill(1/0),o.fill(-1/0);let i,n,a,s,m;for(i of e)for((!i.geometry.bounds||i.geometry.attributes.position.needsUpdate)&&Ce(i.geometry),n=i.geometry.bounds,a=i.worldMatrix,s=Wp(i,n,a),m=0;m<3;m++)r[m]=Math.min(r[m],s.min[m]),o[m]=Math.max(o[m],s.max[m]);return r[1]=Math.min(0,r[1]),t}function $p(e,t){let{min:r,max:o}=jp(e,Gp),i=Up;i.viewTransform||=new DOMMatrix,i.projectionTransform||=new DOMMatrix,i.projectionViewTransform||=new DOMMatrix;let n=Np,a=Fp,s,m,f,p,c,l,u=Math.max(100,Math.hypot(o[0]-r[0],o[1]-r[1],o[2]-r[2]));for(s=0;s<3;s++)i.target[s]=(r[s]+o[s])/2,i.position[s]=i.target[s]+t.direction[s]*u*2;i.far=u*5,co(i);let h=i.viewMatrix;for(n.fill(1/0),a.fill(-1/0),s=0;s<8;s++)for(f=s&1?o[0]:r[0],p=s&2?o[1]:r[1],c=s&4?o[2]:r[2],m=0;m<3;m++)l=h[m]*f+h[m+4]*p+h[m+8]*c+h[m+12],n[m]=Math.min(n[m],l-20),a[m]=Math.max(a[m],l+20);let x=2/(a[0]-n[0]),g=2/(a[1]-n[1]),y=-1/(a[2]-n[2]),w=new Float32Array(16);for(s=0;s<16;s+=4)w[s]=h[s]*x,w[s+1]=h[s+1]*g,w[s+2]=h[s+2]*y,w[s+3]=h[s+3];return w[12]-=(a[0]+n[0])/(a[0]-n[0]),w[13]-=(a[1]+n[1])/(a[1]-n[1]),w[14]+=a[2]/(a[2]-n[2]),w}var pm={entries:[{binding:0,visibility:null,buffer:{type:"uniform",hasDynamicOffset:!0}}]};var cm={entries:[{binding:0,visibility:null,buffer:{type:"uniform"}}]};var yo={layout:null,entries:[{binding:0,resource:{buffer:null}}]};var Rn={code:null};var xt={layout:null,vertex:{module:null,entryPoint:"main",buffers:null},fragment:{module:null,entryPoint:"fragmentMain",targets:[]},primitive:{topology:"triangle-list",cullMode:"none"},depthStencil:{format:"depth32float",depthWriteEnabled:!0,depthCompare:"less",depthBias:2,depthBiasSlopeScale:2}};var xo={bindGroupLayouts:[null,null]};var vo=Object.freeze({arrayStride:12,attributes:Object.freeze([Object.freeze({shaderLocation:0,offset:0,format:"float32x3"})])});var On=Object.freeze({arrayStride:16,stepMode:"instance",attributes:Object.freeze([Object.freeze({shaderLocation:4,offset:0,format:"float32x4"})])});var Vp=[vo,On];var Zp=[vo];function lm(e,t,r=!1){let o=r?"instancePipeline":"pipeline";if(!t[o]){t.meshLayout||(t.meshLayout=e.createBindGroupLayout((pm.entries[0].visibility=GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,pm)),t.depthLayout=e.createBindGroupLayout((cm.entries[0].visibility=GPUShaderStage.VERTEX,cm)),t.depthBindGroup=e.createBindGroup((yo.layout=t.depthLayout,yo.entries[0].resource.buffer=t.buffer,yo)),yo.layout=null,yo.entries[0].resource.buffer=null);let i=e.createShaderModule((Rn.code=` struct Mesh{world:mat4x4<f32>,padding:array<vec4<f32>,4>,highlight:vec4<f32>};@group(0)@binding(0)var<uniform> mesh:Mesh;@group(1)@binding(0)var<uniform> matrix:mat4x4<f32>;@vertex fn main(@location(0)position:vec3<f32>${r?", @location(4) offset: vec4<f32>":""})->@builtin(position)vec4<f32>{return matrix * mesh.world * vec4<f32>(position${r?" + offset.xyz":""},1.0);}@fragment fn fragmentMain(@builtin(position)position:vec4<f32>){let noise = fract(52.9829189 * fract(dot(floor(position.xy),vec2<f32>(0.06711056,0.00583715))));if(mesh.highlight.w < 1.0 && noise >= mesh.highlight.w){discard;}}`,Rn));Rn.code=null;let n=r?Vp:Zp;t[o]=e.createRenderPipeline((xt.layout=e.createPipelineLayout((xo.bindGroupLayouts[0]=t.meshLayout,xo.bindGroupLayouts[1]=t.depthLayout,xo)),xt.vertex.module=i,xt.vertex.buffers=n,xt.fragment.module=i,xt)),xo.bindGroupLayouts[0]=null,xo.bindGroupLayouts[1]=null,xt.layout=null,xt.vertex.module=null,xt.vertex.buffers=null,xt.fragment.module=null}}var Dn={colorAttachments:[],depthStencilAttachment:{view:null,depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}};var wo={layout:null,entries:[{binding:0,resource:{buffer:null,size:144}}]};var um=[null];function qp(e,t,r){let o=v.get(e),i=o.device,n=o.sunlight,a=t.beginRenderPass((Dn.depthStencilAttachment.view=n.texture.createView(),Dn));Dn.depthStencilAttachment.view=null;let s=n.pipeline;a.setPipeline(s),a.setBindGroup(1,n.depthBindGroup);let m,f,p,c,l,u,h;for(m of r){f=m.geometry.attributes.instanceOffset,p=f?n.instancePipeline:n.pipeline,p!==s&&(s=p,a.setPipeline(s)),c=o.uniformSlot++*256,o.uniformData.set(m.worldMatrix,c/4),o.uniformData[c/4+35]=m._appearance??1,m._shadowBuffer!==o.uniformBuffer&&(m._shadowBuffer=o.uniformBuffer,m._shadowBindGroup=i.createBindGroup((wo.layout=n.meshLayout,wo.entries[0].resource.buffer=o.uniformBuffer,wo)),wo.layout=null,wo.entries[0].resource.buffer=null);for(l of Object.values(m.geometry.attributes))l.needsUpdate&&(i.queue.writeBuffer(l.buffer,0,l.data),l.needsUpdate=!1);a.setBindGroup(0,m._shadowBindGroup,(um[0]=c,um)),a.setVertexBuffer(0,m.geometry.attributes.position.buffer),f&&a.setVertexBuffer(1,f.buffer),u=m.geometry.attributes.index,h=m.geometry.drawRange,u?(a.setIndexBuffer(u.buffer,u.indexFormat),a.drawIndexed(h.count,f?.count??1,h.start,0,0)):a.draw(h.count,f?.count??1,h.start,0)}a.end()}var Bi={size:[null,null],format:"depth32float",usage:null};function In(e,t){let r=v.get(e).device,o=v.get(e).sunlight;o.size!==t&&(o.texture&&j(e,o.texture),o.size=t,o.texture=r.createTexture((Bi.size[0]=t,Bi.size[1]=t,Bi.usage=GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,Bi)),Cn(e))}function Hp(e,t,r,o){let i=v.get(e),n=i.device,a=i.sunlight;if(!r.length||!o||o.altitude<3){if(!a.enabled)return;n.queue.writeBuffer(a.buffer,0,Rp),a.enabled=!1,a.cache=null;return}if(Ip(a,r,o))return;let s=Op;a.enabled=!0,In(e,Math.min(2048,n.limits.maxTextureDimension2D)),s.set($p(r,o)),s[16]=1,n.queue.writeBuffer(a.buffer,0,s),lm(n,a);let m;for(m of r)if(m.geometry.attributes.instanceOffset){lm(n,a,!0);break}qp(e,t,r);let f=new Map,p;for(p of r)f.set(p,{world:p._worldMatrixVersion,geometry:p.geometry,start:p.geometry.drawRange.start,count:p.geometry.drawRange.count,appearance:p._appearance??1});a.cache={direction:[...o.direction],meshes:f}}function Gn(e){let t=st.get(e);It.delete(e),st.set(e,null),!It.size&&t!=null&&cancelAnimationFrame(t)}var Nt=new WeakMap;var Ti=new WeakMap;var Pi=new WeakMap;var pe=new WeakMap;var Un=new WeakMap;function q(e,t){e.parent&&e.parent.children.splice(e.parent.children.indexOf(e),1),e.parent=t,t&&t.children.push(e)}function Lo(e,t){Un.get(e)?.abort();let r=D.get(e).get(t);r&&(q(r,null),E(e),r.texture!==t.texture&&j(e,r.texture.texture),D.get(e).delete(t))}function bo(e,t){let r=`${t.coords.z}/${t.coords.x}/${t.coords.y}`;D.get(e).get(r)===t&&(D.get(e).delete(r),_e.set(e,(_e.get(e)||0)+1),t.request.abort(),pe.get(e)&&Lo(pe.get(e),t),t.mesh&&q(t.mesh,null),t.texture&&j(e,t.texture.texture),t.image?.close(),e.fire("tileunload",{tile:t,coords:t.coords}),E(e))}function Mo(e){let t=or.get(e),r=performance.now();if(Ti.get(e)===_e.get(e)&&Pi.get(e)===t&&r<Nt.get(e))return Number.isFinite(Nt.get(e));Ti.set(e,_e.get(e)),Pi.set(e,t),Nt.set(e,1/0);let o=[],i,n,a,s,m,f;for(i of t)n=D.get(e).get(i),n?.done&&r-n.loadedAt<250&&Nt.set(e,Math.min(Nt.get(e),n.loadedAt+250)),(!n?.done||r-n.loadedAt<250)&&(a=i.split("/"),o.push({z:Number(a[0]),x:Number(a[1]),y:Number(a[2])}));for([i,n]of D.get(e))if(!t.has(i)){s=!1;for(m of o)if(f=Math.min(m.z,n.coords.z),Math.floor(m.x/2**(m.z-f))===Math.floor(n.coords.x/2**(n.coords.z-f))&&Math.floor(m.y/2**(m.z-f))===Math.floor(n.coords.y/2**(n.coords.z-f))){s=!0;break}s||bo(e,n)}return Number.isFinite(Nt.get(e))}L();function Bo(e){return ue.get(e.source)===e&&e.map.hasLayer(e.source)}L();var fr=Object.freeze([1,1,1]);var Fr=new WeakMap;L();function Ft(e,t,r,o){let{source:i,marker:n,paneOrder:a,order:s}=e;t.program.uniforms.baseColor.value=r,t.program.uniforms.opacity.value=o,i instanceof d.GridLayer&&(t.opacity=o);let m=n?i._zIndex+(Fr.get(i)||0):i.options.zIndex;t.renderOrder=a*1e6+(m||0)*1e3+s,t._nativeSource=i,t._nativeUsed=!0}var Yp=Object.freeze([0,2,1,1,2,3]);var dm=Object.freeze([0,0,1,0,0,1,1,1]);var Xp=Object.freeze({minFilter:"linear",magFilter:"linear"});function Ie(e,t){if(!t)return;q(t,null),E(e);let r;for(r of Object.values(t.geometry.attributes))r.buffer.destroy()}async function Kp(e,t,r,o,i,n,a){let s;try{if(s=await createImageBitmap(o),!Bo(e)||e.textures.get(t)!==r)return;i.queue.copyExternalImageToTexture({source:s},{texture:r.texture},[n,a]),r.uploaded=o,r.pending=!1,De(e)}catch(m){e.failed=!0,e.source.fire("error",{error:m})}finally{s?.close()}}function Qp(e,t,r,o,i,n,a){try{i.queue.copyExternalImageToTexture({source:o},{texture:r.texture},[n,a])}catch(s){throw r.texture.destroy(),e.textures.delete(t),s}r.uploaded=o}function Nn(e,t,r){if(!(r instanceof HTMLImageElement)&&!(r instanceof HTMLCanvasElement))throw new Error("WebGPU native raster layers require image or canvas tiles");let{backend:o,textures:i,meshes:n}=e,a=i.get(t),s=r.currentSrc||r.src;if(!a||a.image!==r||a.url!==s){if(a){let c=n.get(t);c&&Ie(o,c),n.delete(t),j(o,a.texture),i.delete(t)}let m=r.naturalWidth||r.width,f=r.naturalHeight||r.height;if(!m||!f)return;let{device:p}=v.get(o);a={device:p,image:r,url:s,format:"rgba8unorm",uploaded:null,texture:p.createTexture({size:[m,f],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),sampler:p.createSampler(Xp)},i.set(t,a),r instanceof HTMLCanvasElement?(a.pending=!0,Kp(e,t,a,r,p,m,f)):Qp(e,t,a,r,p,m,f)}return a.used=!0,a.uploaded===r?a:void 0}L();L();var To=Object.freeze({});var Fn={size:null,usage:null};var vt={value:0};function Ee(){return{position:[0,0,0],rotation:[0,0,0],scale:[1,1,1],worldMatrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],children:[],highlightRange:[0,0],visible:!0}}var Wn={code:null};var jn={code:null};var Po={bindGroupLayouts:[null,null]};var ec=" fn demSample(pixel:vec2<i32>)-> f32{if(any(pixel < vec2<i32>(0))|| any(pixel >= vec2<i32>(textureDimensions(dem)))){return -1e9;}return textureLoad(dem,pixel,0).r;}fn elevation(pixel:vec2<f32>,base:f32)-> f32{let p = pixel - vec2<f32>(0.5);let f = fract(p);let i = vec2<i32>(floor(p));let v00 = demSample(i);let v10 = demSample(i + vec2<i32>(1,0));let v01 = demSample(i + vec2<i32>(0,1));let v11 = demSample(i + vec2<i32>(1,1));if(v00 > -1000.0 && v10 > -1000.0 && v01 > -1000.0 && v11 > -1000.0){return mix(mix(v00,v10,f.x),mix(v01,v11,f.x),f.y);}if(v00 > -1000.0){return v00;}if(v10 > -1000.0){return v10;}if(v01 > -1000.0){return v01;}if(v11 > -1000.0){return v11;}return base;}";var tc=Object.freeze({arrayStride:12,attributes:Object.freeze([Object.freeze({shaderLocation:1,offset:0,format:"float32x3"})])});var rc=Object.freeze({arrayStride:12,attributes:Object.freeze([Object.freeze({shaderLocation:2,offset:0,format:"float32x3"})])});var oc=Object.freeze({arrayStride:8,attributes:Object.freeze([Object.freeze({shaderLocation:3,offset:0,format:"float32x2"})])});var $n={entries:null};var ic=[];var hm={binding:0,visibility:null,buffer:{type:"uniform",hasDynamicOffset:!0}};var gm={binding:1,visibility:null,buffer:{type:"uniform"}};var ym={binding:2,visibility:null,texture:{sampleType:"unfilterable-float",viewDimension:"2d"}};var nc=[{binding:null,visibility:null,texture:{sampleType:"float",viewDimension:"2d"}},{binding:null,visibility:null,texture:{sampleType:"float",viewDimension:"2d"}},{binding:null,visibility:null,texture:{sampleType:"float",viewDimension:"2d"}},{binding:null,visibility:null,texture:{sampleType:"float",viewDimension:"2d"}},{binding:null,visibility:null,texture:{sampleType:"float",viewDimension:"2d"}}];var ac=[{binding:null,visibility:null,sampler:{type:"filtering"}},{binding:null,visibility:null,sampler:{type:"filtering"}},{binding:null,visibility:null,sampler:{type:"filtering"}},{binding:null,visibility:null,sampler:{type:"filtering"}},{binding:null,visibility:null,sampler:{type:"filtering"}}];function sc(e,t){let r=ic;r.length=0,hm.visibility=GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,gm.visibility=GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,r.push(hm,gm),t.hasTerrain&&(ym.visibility=GPUShaderStage.VERTEX,r.push(ym));let o,i,n=0;for(o of t.bindings)i=nc[n],i.binding=o.texture,i.visibility=GPUShaderStage.FRAGMENT,r.push(i),i=ac[n++],i.binding=o.sampler,i.visibility=GPUShaderStage.FRAGMENT,r.push(i);let a=e.createBindGroupLayout(($n.entries=r,$n));return $n.entries=null,a}function Vn(e){let t={baseColor:{value:e.color||[1,1,1]},metallic:{value:e.metallic??0},roughness:{value:e.roughness??.85},opacity:{value:e.opacity??1},alphaCutoff:{value:e.alphaCutoff??.5},occlusionStrength:{value:e.occlusionStrength??1},emissive:{value:e.emissive||[0,0,0]}};return e.baseTexture&&(t.baseTexture={value:e.baseTexture}),e.metalTexture&&(t.metalTexture={value:e.metalTexture}),e.emissiveTexture&&(t.emissiveTexture={value:e.emissiveTexture}),e.occlusionTexture&&(t.occlusionTexture={value:e.occlusionTexture}),(e.roofTexture||e.wallTexture)&&(t.roofTexture={value:null}),e.nativeStroke&&(t.strokeScale={value:1}),t}function So(e,t,r){if(!r)return"";let o=3+e.length*2;return e.push({name:t,texture:o,sampler:o+1}),`@group(0)@binding(${o})var ${t}:texture_2d<f32>;@group(0)@binding(${o+1})var ${t}Sampler:sampler;`}function mc(e){let t,r;for(t of["roofTexture","wallTexture"])if(r=e[t],r!==void 0&&typeof r!="boolean"&&(!Number.isFinite(r)||r<0||r>1))throw new Error(`${t} must be a boolean or a finite number between 0 and 1`)}function fc(e){let t=Number(e.roofTexture??0);return` output.roofUv =(frame.roofMatrix * world).xz;output.roof = select(0.0,select(${Number(e.wallTexture??0).toFixed(8)},${t.toFixed(8)},input.normal.y >= 0.5),((${!!e.roofTexture} && input.normal.y >= 0.5)||(${!!e.wallTexture} && abs(input.normal.y)< 0.5))&& !highlighted);`}function pc(e){return{position:e.nativeStroke?"position = input.normal + (input.position - input.normal) * u.nativeStroke.x;":"",normal:e.nativeStroke?"let sourceNormal = vec3<f32>(0.0, 1.0, 0.0);":"let sourceNormal = input.normal;"}}function cc(e,t,r,o,i,n){let a=e.instanced?" + input.instanceOffset.xyz":"",s=pc(e);return` struct Mesh{worldMatrix:mat4x4<f32>,baseColor:vec4<f32>,material:vec4<f32>,emissive:vec4<f32>,terrain:vec4<f32>,highlight:vec4<f32>,cutout:vec4<f32>,nativeStroke:vec4<f32>,};struct Frame{viewMatrix:mat4x4<f32>,projectionMatrix:mat4x4<f32>,roofMatrix:mat4x4<f32>,lightDirection:vec4<f32>,skyDirection:vec4<f32>,atmosphereTint:vec4<f32>,};@group(0)@binding(0)var<uniform> u:Mesh;@group(0)@binding(1)var<uniform> frame:Frame;struct Solar{matrix:mat4x4<f32>,params:vec4<f32>};@group(1)@binding(0)var<uniform> solar:Solar;${o?`@group(0)@binding(2)var dem:texture_2d<f32>;${r}`:""} struct VertexInput{@location(0)position:vec3<f32>,@location(1)normal:vec3<f32>,${e.instanced?"@location(4) instanceOffset: vec4<f32>,":""} ${e.vertexColors?"@location(2) color: vec3<f32>,":""} ${i?"@location(3) uv: vec2<f32>,":""}};struct VertexOutput{@builtin(position)position:vec4<f32>,@location(0)color:vec3<f32>,@location(1)normal:vec3<f32>,@location(2)viewPosition:vec3<f32>,@location(6)shadowPosition:vec4<f32>,@location(7)worldPosition:vec3<f32>,${t?"@location(8) localPosition: vec3<f32>,":""} ${i?"@location(3) uv: vec2<f32>,":""} ${n?"@location(4) roofUv: vec2<f32>, @location(5) roof: f32,":""}};@vertex fn vertexMain(input:VertexInput,@builtin(vertex_index)vertexIndex:u32)-> VertexOutput{var output:VertexOutput;var position = input.position${a};${s.position} ${o?"position.y = elevation(u.terrain.xy + input.uv * u.terrain.z, u.terrain.w) - u.terrain.w;":""} let featureVertex = f32(vertexIndex)${e.instanced?" + input.instanceOffset.w":""};let highlighted = featureVertex >= u.highlight.x && featureVertex < u.highlight.y;output.color = ${e.vertexColors?"select(input.color, vec3<f32>(72.0 / 255.0, 217.0 / 255.0, 1.0), highlighted)":"u.baseColor.rgb"};let m = mat3x3<f32>(u.worldMatrix[0].xyz,u.worldMatrix[1].xyz,u.worldMatrix[2].xyz);${s.normal} let normal =(cross(m[1],m[2])* sourceNormal.x + cross(m[2],m[0])* sourceNormal.y + cross(m[0],m[1])* sourceNormal.z)/ determinant(m);output.normal =(frame.viewMatrix * vec4<f32>(normal,0.0)).xyz;let world = u.worldMatrix * vec4<f32>(position,1.0);output.shadowPosition = solar.matrix * world;output.worldPosition = world.xyz / world.w;${t?`output.localPosition = input.position${a};`:""} let viewPosition = frame.viewMatrix * world;output.viewPosition = viewPosition.xyz;${i?"output.uv = input.uv;":""} ${n?fc(e):""} output.position = frame.projectionMatrix * viewPosition;return output;}`}function lc(e,t,r){return` var normal = normalize(input.normal)* select(-1.0,1.0,frontFacing);let texel = ${t?"textureSample(baseTexture, baseTextureSampler, input.uv)":"vec4<f32>(1.0)"};let alpha = u.material.z * texel.a;${e.alphaMode==="MASK"?"if (alpha < u.material.w) { discard; }":""} ${e.alphaMode==="BLEND"?"if (alpha < 0.01) { discard; }":""} var base = ${e.vertexColors?"toLinear(min(input.color, vec3<f32>(1.0)))":"input.color"} * ${e.baseTexture?.srgb?"texel.rgb":"toLinear(texel.rgb)"};${r?" if(input.roof > 0.0 && all(input.roofUv >= vec2<f32>(0.0))&& all(input.roofUv <= vec2<f32>(1.0))){let roof = textureSampleLevel(roofTexture,roofTextureSampler,input.roofUv,0.0);base = mix(base,toLinear(roof.rgb),roof.a * input.roof);}":""}`}function uc(e,t,r,o,i,n,a){return e.unlit?` let rasterTexel = ${r?"textureSample(baseTexture, baseTextureSampler, input.uv)":"vec4<f32>(input.color, 1.0)"};return vec4<f32>(toSRGB(toLinear(rasterTexel.rgb)*(frame.atmosphereTint.rgb *(0.55 + 0.45 * sunlight)+ artificial)),${e.alphaMode==="BLEND"?"u.material.z * rasterTexel.a":"1.0"});`:`${lc(e,r,a)} let mr = ${o?"textureSample(metalTexture, metalTextureSampler, input.uv)":"vec4<f32>(1.0)"};let metal = clamp(u.material.x * mr.b,0.0,1.0);let rough = clamp(u.material.y * mr.g,0.08,1.0);let view = normalize(-input.viewPosition);let halfVector = normalize(view + frame.lightDirection.xyz);let nl = max(dot(normal,frame.lightDirection.xyz),0.0)* frame.lightDirection.w * sunlight;let nv = max(dot(normal,view),0.001);let nh = max(dot(normal,halfVector),0.0);let vh = max(dot(view,halfVector),0.0);let a2 = pow(rough,4.0);let d = a2 / max(PI * pow(nh * nh *(a2 - 1.0)+ 1.0,2.0),0.0001);let gv = nl * sqrt(nv * nv *(1.0 - a2)+ a2);let gl = nv * sqrt(nl * nl *(1.0 - a2)+ a2);let visibility = 0.5 / max(gv + gl,0.0001);let f0 = mix(vec3<f32>(0.04),base,metal);let fresnel = f0 +(1.0 - f0)* pow(1.0 - vh,5.0);let specular = d * visibility * fresnel;let diffuse =(1.0 - metal)* base / PI;let sky = dot(normal,frame.skyDirection.xyz)* 0.5 + 0.5;let ambient = mix(toLinear(vec3<f32>(0.455,0.412,0.322)),vec3<f32>(1.0),sky)*(2.0 / PI);let ao = ${n?"mix(1.0, textureSample(occlusionTexture, occlusionTextureSampler, input.uv).r, u.emissive.w)":"1.0"};${t?" let lattice =(fract(input.localPosition / 2.5)- 0.5)* 2.5;let pointGlow =(1.0 - smoothstep(0.16,0.42,length(lattice)))* u.highlight.z;":""} let glow = ${t?"vec3<f32>(3.0, 2.6, 1.8) * pointGlow +":""}${e.vertexColors?" max(input.color - vec3<f32>(1.0), vec3<f32>(0.0)) * (0.3 + 5.0 * frame.skyDirection.w) +":""} u.emissive.rgb * ${i?e.emissiveTexture.srgb?"textureSample(emissiveTexture, emissiveTextureSampler, input.uv).rgb":"toLinear(textureSample(emissiveTexture, emissiveTextureSampler, input.uv).rgb)":"vec3<f32>(1.0)"};var color = ambient * base *(1.0 - metal)* ao +(diffuse + specular)* nl * toLinear(vec3<f32>(1.0,0.937,0.835))* 3.0 + glow;${e.vertexColors?"color = base * (ambient + toLinear(vec3<f32>(1.0, 0.937, 0.835)) * (3.0 / PI) * nl) + glow;":""} color =(color - glow)* frame.atmosphereTint.rgb + base * artificial *(1.0 - metal * 0.5)+ glow;appearance(input.position.xy);return vec4<f32>(toSRGB(color),${e.alphaMode==="BLEND"?"alpha":"1.0"});`}function dc(e=To,t=!1,r=""){let o=!!e.baseTexture,i=!!e.metalTexture,n=!!e.emissiveTexture,a=!!e.occlusionTexture,s=!!(e.roofTexture||e.wallTexture);mc(e);let m=!!e.terrain,f=o||i||n||a||e.nightLight,p=cc(e,t,r,m,f,s),c=[],l=So(c,"baseTexture",o),u=So(c,"metalTexture",i),h=So(c,"emissiveTexture",n),x=So(c,"occlusionTexture",a),g=So(c,"roofTexture",s),y=` struct Mesh{worldMatrix:mat4x4<f32>,baseColor:vec4<f32>,material:vec4<f32>,emissive:vec4<f32>,terrain:vec4<f32>,highlight:vec4<f32>,cutout:vec4<f32>,nativeStroke:vec4<f32>,};struct Frame{viewMatrix:mat4x4<f32>,projectionMatrix:mat4x4<f32>,roofMatrix:mat4x4<f32>,lightDirection:vec4<f32>,skyDirection:vec4<f32>,atmosphereTint:vec4<f32>,};struct Solar{matrix:mat4x4<f32>,params:vec4<f32>,};@group(0)@binding(0)var<uniform> u:Mesh;@group(0)@binding(1)var<uniform> frame:Frame;@group(1)@binding(0)var<uniform> solar:Solar;@group(1)@binding(1)var shadowTexture:texture_depth_2d;@group(1)@binding(2)var shadowSampler:sampler_comparison;@group(1)@binding(3)var<storage,read> lightGrid:array<vec4<f32>>;${l}${u}${h}${x}${g} struct FragmentInput{@builtin(position)position:vec4<f32>,@location(0)color:vec3<f32>,@location(1)normal:vec3<f32>,@location(2)viewPosition:vec3<f32>,@location(6)shadowPosition:vec4<f32>,@location(7)worldPosition:vec3<f32>,${t?"@location(8) localPosition: vec3<f32>,":""} ${f?"@location(3) uv: vec2<f32>,":""} ${s?"@location(4) roofUv: vec2<f32>, @location(5) roof: f32,":""}};const PI:f32 = 3.14159265;fn toLinear(c:vec3<f32>)-> vec3<f32>{return select(c / 12.92,pow((c + vec3<f32>(0.055))/ 1.055,vec3<f32>(2.4)),c >= vec3<f32>(0.04045));}fn toSRGB(c:vec3<f32>)-> vec3<f32>{return select(c * 12.92,1.055 * pow(max(c,vec3<f32>(0.0)),vec3<f32>(1.0 / 2.4))- vec3<f32>(0.055),c >= vec3<f32>(0.0031308));}fn sunVisibility(position:vec4<f32>)-> f32{let p = position.xyz / position.w;let uv = vec2<f32>(p.x * 0.5 + 0.5,0.5 - p.y * 0.5);if(solar.params.x < 0.5 || any(uv < vec2<f32>(0.0))|| any(uv > vec2<f32>(1.0))|| p.z < 0.0 || p.z > 1.0){return 1.0;}return textureSampleCompareLevel(shadowTexture,shadowSampler,uv,p.z - 0.0003);}fn gridLighting(position:vec3<f32>,normal:vec3<f32>,offset:u32)-> vec3<f32>{let grid = lightGrid[offset];if(grid.w < 1.0){return vec3<f32>(0.0);}let cell = vec2<i32>(floor((position.xz - grid.xy)/ grid.z));if(any(cell < vec2<i32>(0))|| cell.x >= i32(grid.w)|| cell.y >= i32(lightGrid[offset + 1u].x)){return vec3<f32>(0.0);}let header = lightGrid[offset + 2u + u32(cell.y)* u32(grid.w)+ u32(cell.x)];var light = vec3<f32>(0.0);for(var i = 0u;i < u32(header.y);i++){let source = lightGrid[offset + u32(header.x)+ i * 2u];let colour = lightGrid[offset + u32(header.x)+ i * 2u + 1u];let delta = source.xyz - position;let distance2 = max(dot(delta,delta),1.0);let falloff = max(0.0,1.0 - distance2 /(source.w * source.w));let lambert = max(0.0,dot(normal,delta / sqrt(distance2)));light += toLinear(colour.rgb)* colour.w * lambert * falloff * falloff / distance2;}return light;}fn localLighting(position:vec3<f32>,normal:vec3<f32>)-> vec3<f32>{if(frame.skyDirection.w <= 0.0){return vec3<f32>(0.0);}var light = gridLighting(position,normal,0u);let moving = u32(lightGrid[1].z);if(moving > 0u){light += gridLighting(position,normal,moving);}return light * frame.skyDirection.w;}fn appearance(position:vec2<f32>){let noise = fract(52.9829189 * fract(dot(floor(position),vec2<f32>(0.06711056,0.00583715))));if(u.highlight.w < 1.0 && noise >= u.highlight.w){discard;}}@fragment fn fragmentMain(input:FragmentInput,@builtin(front_facing)frontFacing:bool)->@location(0)vec4<f32>{let cutoutDistance = distance(input.position.xy,u.cutout.xy);if(select((cutoutDistance < u.cutout.z),(cutoutDistance >= u.cutout.z),u.cutout.w > 0.0)){discard;}${e.nightLight?" if(input.uv.x <= 2.0){let radial = max(0.0,1.0 - dot(input.uv,input.uv));let alpha = radial * radial * frame.skyDirection.w * 0.65;if(alpha < 0.005){discard;}appearance(input.position.xy);return vec4<f32>(input.color,alpha);}":""} let sunlight = sunVisibility(input.shadowPosition);let worldNormal = normalize(transpose(mat3x3<f32>(frame.viewMatrix[0].xyz,frame.viewMatrix[1].xyz,frame.viewMatrix[2].xyz))* normalize(input.normal))* select(-1.0,1.0,frontFacing);let artificial = localLighting(input.worldPosition,worldNormal);${uc(e,t,o,i,n,a,s)}}`;return{vertex:p,fragment:y,bindings:c,textured:f,hasTerrain:m}}async function hc(e,t){let r,o;try{let i=await Promise.all(t),n="",a=0;for(r of i)for(o of r.messages)o.type==="error"&&(n+=`${a++?`
2
- `:""}${o.message}`);a&&e.fire("error",{error:new Error(`Unable to compile Layer3D WGSL: ${n}`)})}catch(i){e.fire("error",{error:i})}}function Ge(e,t=To){let r=dc(t,!!e.options.nightSparkle,t.terrain?ec:""),o=v.get(e).device.createShaderModule((Wn.code=r.vertex,Wn));Wn.code=null;let i=v.get(e).device.createShaderModule((jn.code=r.fragment,jn));jn.code=null,hc(e,[o.getCompilationInfo(),i.getCompilationInfo()]);let n=[vo,tc,t.vertexColors?rc:null,r.textured?oc:null];t.instanced&&n.push(On);let a=sc(v.get(e).device,r),s=v.get(e).device.createPipelineLayout((Po.bindGroupLayouts[0]=a,Po.bindGroupLayouts[1]=v.get(e).sunlight.layout,Po));Po.bindGroupLayouts[0]=null,Po.bindGroupLayouts[1]=null;let m=Vn(t);return{device:v.get(e).device,vertex:o,fragment:i,bindings:r.bindings,vertexBuffers:n,bindGroupLayout:a,pipelineLayout:s,pipelineCache:new Map,cullMode:t.doubleSided?"none":"back",transparent:t.alphaMode==="BLEND",depthWrite:t.depthWrite??t.alphaMode!=="BLEND",depthTest:t.depthTest!==!1,terrain:t.terrain,nightLight:!!t.nightLight,nightSparkle:!!e.options.nightSparkle,uniforms:m,_layerMaterial:t}}function pr(e,t,r=To,o=0,i){let{device:n}=v.get(e),a={},s,m,f,p,c;for([s,m]of Object.entries(t))f=new Float32Array(m),p=s==="uv"?2:3,c=n.createBuffer((Fn.size=Math.max(4,f.byteLength),Fn.usage=GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST|o,Fn)),n.queue.writeBuffer(c,0,f),a[s]={size:p,data:f,count:f.length/p,buffer:c};let l={...Ee(),device:n,geometry:{device:n,attributes:a,drawRange:{start:0,count:a.position.count}},program:i||Ge(e,{vertexColors:!0,doubleSided:!0,...r}),id:vt.value++,renderOrder:0,extras:{}};return q(l,M.get(e)),E(e),l}var xm=new WeakMap;function vm(e,t){let r=v.get(e),o=xm.get(r);o||(o=new Map,xm.set(r,o));let i=`${!!t.baseTexture}:${!!t.nativeStroke}:${!!t.depthWrite}`,n=o.get(i);return n||(n=Ge(e,{doubleSided:!0,...t}),o.set(i,n)),{...n,uniforms:Vn(t),_layerMaterial:t}}function yc(e,t,r,o,i,n,a,s,m){let{backend:f,source:p,meshes:c}=e,l=m?e.strokeAnchors:[],u,h=c.get(t);if(!m)for(u=0;u<r.length;u++)l.push(u%3===1?1:0);let x={position:r,normal:l};a&&(x.uv=a);let g={vertexColors:!1,color:o,opacity:i,unlit:!0,alphaMode:"BLEND",depthWrite:s,nativeStroke:m};return n&&(g.baseTexture=n),h&&Ie(f,h),h=pr(f,x,g,0,p instanceof d.GridLayer?(s?e.terrainRasterProgram:e.rasterProgram)||vm(f,g):vm(f,g)),p instanceof d.GridLayer&&(s?e.terrainRasterProgram||=h.program:e.rasterProgram||=h.program,h.texture=n),c.set(t,h),h}function xc(e){let t=e.geometry.attributes,r=t.position.data,o=t.normal.data,i,n=0;for(i=0;i<r.length;i+=3)n=Math.max(n,Math.hypot(r[i]-o[i],r[i+1]-o[i+1],r[i+2]-o[i+2]));e.geometry.nativeStrokeRadius=n}function ko(e,t,r,o,i,n,a,s=!1){let{source:m,meshes:f}=e;if(!r.length)return;let p=t==="stroke"&&!!e.strokeCoordinates&&m.options.interactive===!1,c=f.get(t);if(!c||c.geometry.attributes.position.data.length!==r.length||m instanceof d.GridLayer&&c.program.depthWrite!==s||c.program.uniforms.baseTexture?.value!==n||!!c.program._layerMaterial.nativeStroke!==p)c=yc(e,t,r,o,i,n,a,s,p);else{let l=c.geometry.attributes.position;l.data.set(r),l.needsUpdate=!0,c.geometry.bounds=null,p&&(c.geometry.attributes.normal.data.set(e.strokeAnchors),c.geometry.attributes.normal.needsUpdate=!0)}return p&&xc(c),c.program.uniforms.strokeScale&&(c.program.uniforms.strokeScale.value=1),Ft(e,c,o,i),c}function Co(e,t,r,o,i){let n=Nn(e,t,r);if(!n)return;let a=Yp,s=[],m=[],f;for(f of a)s.push(...o[f]),m.push(dm[f*2],dm[f*2+1]);return ko(e,t,s,fr,i,n,m)}var I=new WeakMap;$();function Wt(e,t){let{map:r,backend:o}=e,i=r.options.crs,n=i.project(I.get(o)),a=i.project(t),s=Math.cos(I.get(o).lat*B);return[(a.x-n.x)*s,0,-(a.y-n.y)*s]}function Zn(e,t){let r=[],o,i;for(o=0;o<4;o++)i=o===0?t.getNorthWest():o===1?t.getNorthEast():o===2?t.getSouthWest():t.getSouthEast(),r.push(Wt(e,i));return r}async function vc(e,t,r,o){let i=2**t;r=(r%i+i)%i,o=Math.max(0,Math.min(i-1,o));let n=`${t}/${r}/${o}`,a=e.terrainCache.get(n);a?(e.terrainCache.delete(n),e.terrainCache.set(n,a)):(a={promise:e.layer.options.getTile(t,r,o,e.terrainController.signal)},e.terrainCache.set(n,a));try{if(a.data||(a.data=await a.promise),!(a.data instanceof Float32Array)||a.data.length!==65536)throw new Error(`Invalid elevation tile ${n}: expected 256x256 Float32Array`);if(!a.range){let s=1/0,m=-1/0,f;for(f of a.data)!Number.isFinite(f)||f<=-1e3||(s=Math.min(s,f),m=Math.max(m,f));a.range=[s,m]}}catch(s){throw e.terrainCache.get(n)===a&&e.terrainCache.delete(n),s}for(;e.terrainCache.size>256;)e.terrainCache.delete(e.terrainCache.keys().next().value);return a.data}async function wc(e,t,r,o){let{x:i,y:n,z:a}=r.coords,s=o.stream,m=[],f=new Map,p,c,l=0;try{for(c=-1;c<=1;c++)for(p=-1;p<=1;p++)m.push(vc(s,a,i+p,n+c));let u=await Promise.all(m);if(e.disposed||s.terrainController.signal.aborted||e.source._tiles[t]!==r||e.terrainRequests.get(t)!==o)return;for(c=-1;c<=1;c++)for(p=-1;p<=1;p++)f.set(`${i+p}/${n+c}`,u[l++]);o.tiles=f,De(e),e.map.fire("terrainchange"),e.source._update()}catch(u){!e.disposed&&!s.terrainController.signal.aborted&&e.source._tiles[t]===r&&(o.error=u,s.layer.fire("error",{error:u,coords:r.coords}))}}function Lc(e,t,r,o,i){let n=Nn(e,t,r.el);if(!n)return;let{x:a,y:s,z:m}=r.coords,f=32,p=Wt(e,e.map.unproject([a*256,s*256],m)),c=Wt(e,e.map.unproject([(a+1)*256,(s+1)*256],m)),l=[],u=[],h=[],x=M.get(e.backend).position[1],g,y,w,S,T,P,R,Q,N,G;for(g=0;g<=f;g++)for(y=0;y<=f;y++){if(w=y/f,S=g/f,T=Gr({x:(a+w)*256,y:(s+S)*256},o.tiles),!Number.isFinite(T))throw new Error(`Missing elevation sample in ${m}/${a}/${s}`);l.push([p[0]+(c[0]-p[0])*w,T-x,p[2]+(c[2]-p[2])*S,w,S])}for(g=0;g<f;g++)for(y=0;y<f;y++){P=g*(f+1)+y,R=P+1,Q=P+f+1,N=Q+1;for(G of[P,Q,R,R,Q,N])u.push(l[G][0],l[G][1],l[G][2]),h.push(l[G][3],l[G][4])}let V=ko(e,t,u,fr,i,n,h,!0);return V._terrainRequest=o,V}function bc(e){let{source:t,textures:r,meshes:o}=e,i=Me.get(e.map);e.terrainStream!==i&&(e.terrainStream=i,e.terrainRequests=i?new Map:null);let n,a,s,m,f,p,c,l,u=!1;if(e.terrainRequests)for(n of e.terrainRequests.keys())t._tiles[n]||e.terrainRequests.delete(n);for(n in t._tiles)if(Object.hasOwn(t._tiles,n)){if(a=t._tiles[n],!a.loaded||a.el instanceof HTMLImageElement&&!a.el.naturalWidth){i&&(u=!0);continue}if(s=(t.options.opacity??1)*(a._gpuOpacity??1),m=r.get(n),f=o.get(n),e.terrainRequests){if(l=e.terrainRequests.get(n),(!l||l.tile!==a)&&(l={tile:a,stream:i},e.terrainRequests.set(n,l),wc(e,n,a,l)),!l.tiles){u=!0,f&&m?.image===a.el&&(m.used=!0,Ft(e,f,fr,s));continue}f&&f._terrainRequest===l&&m?.image===a.el&&m.url===(a.el.currentSrc||a.el.src)?(m.used=!0,Ft(e,f,fr,s)):f=Lc(e,n,a,l,s)}else f&&!f._terrainRequest&&m?.image===a.el&&m.url===(a.el.currentSrc||a.el.src)?(m.used=!0,Ft(e,f,fr,s)):([p,c]=t._tileCoordsToNwSe(a.coords),f=Co(e,n,a.el,Zn(e,new d.LatLngBounds(p,c)),s));f&&(f.renderOrder+=a.coords.z/100)}if(i&&(u||!Object.keys(t._tiles).length))for([n,f]of o)t._tiles[n]||!f._terrainRequest||(m=r.get(n),m&&(m.used=!0,f._nativeUsed=!0))}function Mc(e){let{source:t}=e;t._image?.complete&&t._image.naturalWidth&&Co(e,"image",t._image,Zn(e,t.getBounds()),t.options.opacity??1)}var Bc=Object.freeze(["m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44"]);L();$();Z();function qn(e,t,r){let o=e.options.rotation+(e.options.rotateWithView?k(e._map)*B:0);e.options.keepUpright&&Math.cos(o)<0&&(o+=Math.PI);let i=e.options.scale;return new d.Point((t*Math.cos(o)-r*Math.sin(o))*i,(t*Math.sin(o)+r*Math.cos(o))*i)}function Si(e,t,r,o,i,n){return e.x=t.m11*r+t.m21*o+t.m31*i+t.m41*n,e.y=t.m12*r+t.m22*o+t.m32*i+t.m42*n,e.z=t.m13*r+t.m23*o+t.m33*i+t.m43*n,e.w=t.m14*r+t.m24*o+t.m34*i+t.m44*n,e}function Tc(e,t,r){let o=e.source.options.icon.options,i=o[t==="shadow"?"shadowSize":"iconSize"],n=e.markerImageBounds||=[0,0,0,0];n[0]=i?i.x??i[0]:r.naturalWidth,n[1]=i?i.y??i[1]:r.naturalHeight;let a=t==="shadow"&&o.shadowAnchor||o.iconAnchor;return n[2]=a?a.x??a[0]:Math.floor(n[0]/2),n[3]=a?a.y??a[1]:Math.floor(n[1]/2),n}function Pc(e,t,r){let{source:o,map:i,backend:n}=e,a=Wt(e,o.getLatLng());if(Me.get(i)){let gi=M.get(n),an=ye(i,o.getLatLng());Number.isFinite(an)&&(a[1]=(an-gi.position[1])/gi.scale[1])}let s=i.getSize(),m=e.markerMatrices||={root:new DOMMatrix,camera:new DOMMatrix,point:{x:0,y:0,z:0,w:1}},f=m.root,p=m.camera,c=m.point,l=M.get(n).worldMatrix,u=ee.get(n).projectionViewMatrix,h,x;for(h=0;h<16;h++)x=Bc[h],f[x]=l[h],p[x]=u[h];Si(c,f,a[0],a[1],a[2],1),Si(c,p,c.x,c.y,c.z,c.w);let g=c.x,y=c.y,w=c.z,S=c.w;p.invertSelf(),f.invertSelf();let[T,P,R,Q]=Tc(e,t,r),N=(g/S+1)*s.x/2,G=(1-y/S)*s.y/2,V=N-R,le=G-Q,be=[],at,ke,gt,Ve,hi;for(h=0;h<4;h++)at=V+(h%2?T:0),ke=le+(h<2?0:P),gt=qn(o,at-N,ke-G),Ve=N+gt.x,hi=G+gt.y,Si(c,p,Ve/s.x*2-1,1-hi/s.y*2,w/S,1),Si(c,f,c.x/c.w,c.y/c.w,c.z/c.w,1),be.push([c.x,c.y,c.z]);return be}function Sc(e){let{source:t}=e,r,o,i,n;for(r=0;r<2;r++)o=r?"icon":"shadow",i=r?t._icon:t._shadow,!(!(i instanceof HTMLImageElement)||!i.complete||!i.naturalWidth)&&(n=Co(e,o,i,Pc(e,o,i),t.options.opacity??1),o==="shadow"&&n&&(n.renderOrder-=100*1e6))}function Hn(e){return e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055}function Yn(e,t,r,o){let i=(e+t*12)%12;return r-o*Math.max(-1,Math.min(i-3,9-i,1))}function wt(e){if(e&&typeof e=="object"&&"h"in e){let n=e.s*Math.min(e.l,1-e.l);return{r:Hn(Yn(0,e.h,e.l,n)),g:Hn(Yn(8,e.h,e.l,n)),b:Hn(Yn(4,e.h,e.l,n))}}if(e&&typeof e=="object"&&"r"in e)return e;if(typeof e=="number")return{r:(e>>16&255)/255,g:(e>>8&255)/255,b:(e&255)/255};if(typeof e!="string"||!CSS.supports("color",e))throw new Error("Invalid 3D color");let t=document.createElement("canvas").getContext("2d");t.fillStyle=e,t.fillRect(0,0,1,1);let[r,o,i]=t.getImageData(0,0,1,1).data;return{r:r/255,g:o/255,b:i/255}}function kc(e){let{source:t,meshes:r,strokeCoordinates:o,strokeAnchors:i}=e,n=r.get("stroke"),a,s,m,f,p;if(n){let c=2**(e.strokeZoom-e.map.getZoom())*Number(t.options.weight)/e.strokeWeight,l=n.geometry.attributes.position;if(n.program.uniforms.strokeScale)n.program.uniforms.strokeScale.value=c;else{for(a=0;a<o.length;a++)l.data[a]=i[a]+(o[a]-i[a])*c;l.needsUpdate=!0,n.geometry.bounds=null}({r:s,g:m,b:f}=wt(t.options.color)),Ft(e,n,[s,m,f],t.options.opacity??1)}p=r.get("fill"),p&&({r:s,g:m,b:f}=wt(t.options.fillColor||t.options.color),Ft(e,p,[s,m,f],t.options.fillOpacity??1))}var _o=[];L();L();L();function Ue(e,t,r,o,i,n,a,s){return t.push(...e(r,n),...e(o,a),...e(i,s))}var ki=2*Math.PI;L();function wm(e,t,r,o,i){return new d.Point(e.x+t*Math.cos(i*ki/o),e.y+r*Math.sin(i*ki/o))}function Wr(e,t,r,o,i=r){if(!(r>0)||!(i>0))return;let n=Math.max(12,Math.min(128,Math.ceil(Math.PI*Math.sqrt(r)))),a;for(a=0;a<n;a++)Ue(e,o,t,wm(t,r,i,n,a),wm(t,r,i,n,a+1),t,t,t)}function Xn(e,t,r,o,i){let{options:n,width:a,stroke:s,point:m}=e,f=a/2,p=t,c=r,l=t.distanceTo(r);if(!l)return;let u=r.subtract(t).divideBy(l),h=new d.Point(-u.y*f,u.x*f);n.lineCap==="square"&&(o&&(t=t.subtract(u.multiplyBy(f))),i&&(r=r.add(u.multiplyBy(f)))),Ue(m,s,t.add(h),t.subtract(h),r.add(h),p,p,c),Ue(m,s,r.add(h),t.subtract(h),r.subtract(h),c,p,c),n.lineCap==="round"&&(o&&Wr(m,t,f,s),i&&Wr(m,r,f,s))}L();function Cc(e,t,r,o,i){let{options:n,width:a,point:s,stroke:m}=e,f=t[r],p=a/2;if(n.lineJoin==="round"){Wr(s,f,p,m);return}let c=f.subtract(t[(r+t.length-1)%t.length]),l=Math.hypot(c.x,c.y);if(!l||!i)return;let u=c.divideBy(l),h=o.subtract(f).divideBy(i),x=u.x*h.y-u.y*h.x>0?-1:1,g=new d.Point(-u.y*x,u.x*x),y=new d.Point(-h.y*x,h.x*x),w=f.add(g.multiplyBy(p)),S=f.add(y.multiplyBy(p)),T=1+g.x*y.x+g.y*y.y,P=T>0?g.add(y).multiplyBy(p/T):null;Ue(s,m,w,f,S,f,f,f),n.lineJoin==="miter"&&P&&Math.hypot(P.x,P.y)<=p*4&&Ue(s,m,w,f.add(P),S,f,f,f)}function _c(e,t,r,o,i,n){let a=e.dash,s=0,m=(i%n+n)%n,f=0,p,c,l=0;for(;f<a.length-1&&m>=a[f];)m-=a[f++];let u=Math.max(0,a[f]-m);for(;s<o;){if(p=Math.min(o,s+u),p>s&&f%2===0&&(c=r.subtract(t).divideBy(o),Xn(e,t.add(c.multiplyBy(s)),t.add(c.multiplyBy(p)),!0,!0)),p<=s){if(++l>=a.length)throw new Error("Leaflet dashArray is too small for these coordinates")}else l=0;s=p,f=(f+1)%a.length,u=a[f]}}function Jn(e,t,r){let{options:o,width:i,dash:n}=e;if(!o.stroke||i<=0||t.length<2)return;let a=Number(o.dashOffset)||0,s=0,m,f,p,c,l;for(m of n)s+=m;for(f=0;f<t.length-(r?0:1);f++)p=t[f],c=t[(f+1)%t.length],l=p.distanceTo(c),n.length?_c(e,p,c,l,a,s):(Xn(e,p,c,!r&&f===0,!r&&f===t.length-2),(r||f>0)&&Cc(e,t,f,c,l)),a+=l}function Ec(e){let t=1/0,r;for(r of e)t=Math.min(t,r.x);return t}function zc(e,t,r,o){let i=Math.min(r+o,e.length),n=Math.min(r+o*2,e.length),a=r,s=i,m;for(m=r;m<n;m++)a<i&&(s>=n||e[a].x<=e[s].x)?t[m]=e[a++]:t[m]=e[s++]}function Ac(e){if(e.length<2)return e;let t=new Array(e.length),r=[],o,i,n,a,s;for(o of e)r.push({ring:o,x:Ec(o)});let m=r,f=t;for(i=1;i<r.length;i*=2){for(n=0;n<r.length;n+=i*2)zc(m,f,n,i);a=m,m=f,f=a}for(s=0;s<e.length;s++)e[s]=m[s].ring;return e}function Pe(e,t,r){return(t.x-e.x)*(r.y-e.y)-(t.y-e.y)*(r.x-e.x)}function ct(e,t){return e.x===t.x&&e.y===t.y}function Rc(e){let t=!0,r,o,i,n;for(;t&&e.length>3;)for(t=!1,r=0;r<e.length;r++)if(o=e[(r+e.length-1)%e.length],i=e[r],n=e[(r+1)%e.length],ct(o,i)||Math.abs(Pe(o,i,n))<1e-10){e.splice(r,1),t=!0;break}if(e.length<3)throw new Error("Degenerate polygon ring");return e}function Oc(e){let t=0,r,o,i;for(r=0;r<e.length;r++)o=e[r],i=e[(r+1)%e.length],t+=o.x*i.y-i.x*o.y;return t<0}function Dc(e,t){let r=[],o=0,i,n,a;for(i=0;i<e.length;i++)n=e[i],a=Rc(t.slice(o,o+=n.length)),Oc(a)!==!!i&&a.reverse(),r.push(a);return r}function Kn(e,t){let r=!1,o,i,n,a;for(o=0,i=t.length-1;o<t.length;i=o++)n=t[o],a=t[i],n.y>e.y!=a.y>e.y&&e.x<(a.x-n.x)*(e.y-n.y)/(a.y-n.y)+n.x&&(r=!r);return r}function Ic(e,t){let r;for(r=1;r<t.length;r++)if(Kn(e,t[r]))return!0;return!1}function Ci(e,t,r){return Math.min(e.x,t.x)<=r.x&&r.x<=Math.max(e.x,t.x)&&Math.min(e.y,t.y)<=r.y&&r.y<=Math.max(e.y,t.y)}function Gc(e,t,r,o){if(ct(e,r)||ct(e,o)||ct(t,r)||ct(t,o))return!1;let i=Pe(e,t,r),n=Pe(e,t,o),a=Pe(r,o,e),s=Pe(r,o,t);return i*n<0&&a*s<0||i===0&&Ci(e,t,r)||n===0&&Ci(e,t,o)||a===0&&Ci(r,o,e)||s===0&&Ci(r,o,t)}function Lm(e,t,r){let o;for(o=0;o<r.length;o++)if(Gc(e,t,r[o],r[(o+1)%r.length]))return!0;return!1}function Uc(e,t,r,o){if(Lm(e,t,r))return!0;let i;for(i=1;i<o.length;i++)if(Lm(e,t,o[i]))return!0;return!1}function Nc(e,t,r,o){let i=-1,n=-1,a=1/0,s,m,f,p,c;for(s=0;s<t.length;s++)for(m=0;m<e.length;m++)f=t[s],p=e[m],c=(f.x-p.x)**2+(f.y-p.y)**2,!(c>=a)&&(o.x=(f.x+p.x)/2,o.y=(f.y+p.y)/2,!(!Kn(o,r[0])||Ic(o,r))&&(Uc(f,p,e,r)||(i=s,n=m,a=c)));if(i<0)throw new Error("Unable to connect polygon hole");return[...e.slice(0,n+1),...t.slice(i),...t.slice(0,i+1),e[n],...e.slice(n+1)]}function Fc(e,t,r,o){let i;for(i of e)if(!ct(i,t)&&!ct(i,r)&&!ct(i,o)&&Pe(t,r,i)>=0&&Pe(r,o,i)>=0&&Pe(o,t,i)>=0)return!0;return!1}function Wc(e){let t=[],r,o,i,n,a,s;for(;e.length>3;){for(r=!1,o=0;o<e.length;o++)if(i=e[(o+e.length-1)%e.length],n=e[o],a=e[(o+1)%e.length],!(Pe(i,n,a)<=1e-10)&&!Fc(e,i,n,a)){t.push([i.index,n.index,a.index]),e.splice(o,1),r=!0;break}if(!r)throw new Error("Unable to triangulate polygon: invalid or self-intersecting rings")}if(Pe(...e)>1e-10){let m=[];for(s of e)m.push(s.index);t.push(m)}return t}function bm(e){let t=0,r,o,i;for(r=0;r<e.length;r++)o=e[r],i=e[(r+1)%e.length],t+=o.x*i.y-i.x*o.y;return Math.abs(t)/2}function jc(e,t,r){let o=0,i=0,n,a;for(n=1;n<e.length;n++)o+=bm(e[n]);let s=bm(e[0])-o;for(a of r)i+=Pe(t[a[0]],t[a[1]],t[a[2]])/2;if(s<=0||Math.abs(i-s)>Math.max(1e-7,s*1e-8))throw new Error("Polygon triangulation area mismatch")}function Qn(e,t=sr){let r=[e,...t],o=r.flat(),i,n,a;for(i of o)if(!Number.isFinite(i.x)||!Number.isFinite(i.y))throw new Error("Invalid polygon coordinates");let s=[];for(n=0;n<o.length;n++)i=o[n],s.push({x:i.x-e[0].x,y:i.y-e[0].y,index:n});let m=Dc(r,s),f=m[0].slice(),p=Ac(m.slice(1)),c=p.length?{x:0,y:0}:null;for(a of p)f=Nc(f,a,m,c);let l=Wc(f);return jc(m,s,l),l}function $c(e,t){let{options:r,fill:o,point:i}=e;if(r.triangulated){if(t.length!==1||t[0].length!==3)throw new Error("triangulated polygons require three vertices per polygon and no holes");Ue(i,o,t[0][0],t[0][1],t[0][2]);return}let n=[],a,s;for(a of t)a.length>=3&&n.push(a);let m=n.flat();for(s of Qn(n[0],n.slice(1)))Ue(i,o,m[s[0]],m[s[1]],m[s[2]])}function Mm(e,t,r){let{options:o,map:i}=e,n=[],a,s,m;for(a of t){s=[];for(m of a)s.push(i.project(m));n.push(s)}r&&o.fill&&n[0]?.length>=3&&$c(e,n);for(a of n)Jn(e,a,r)}function Bm(e,t,r){if(!t.length)return;let o;if(t[0]instanceof d.LatLng)Mm(e,[t],r);else if(r&&t[0][0]instanceof d.LatLng)Mm(e,t,r);else for(o of t)Bm(e,o,r)}function Vc(e){let t=Array.isArray(e.dashArray)?e.dashArray:String(e.dashArray||"").trim().split(/[ ,]+/),r=[],o,i=!0;for(o of t)r.push(Number(o));for(o of r){if(!Number.isFinite(o)||o<0)throw new Error("Invalid Leaflet dashArray");o!==0&&(i=!1)}return i&&(r.length=0),r.length%2&&r.push(...r),r}L();L();function cr(e,t,r,o,i,n=0){let a=i*ki/o;return new d.Point(e.x+Math.max(0,t+n)*Math.cos(a),e.y+Math.max(0,r+n)*Math.sin(a))}function Zc(e,t){let{map:r,point:o,fill:i,stroke:n,options:a,dash:s,width:m}=t,f=r.project(e.getLatLng()),p=e.getRadius(),c=p,l,u;if(e instanceof d.Circle){e._project();let x=e._point.add(r.getPixelOrigin());f.x=x.x,f.y=x.y,p=e._radius,c=e._radiusY||p}a.fill&&Wr(o,f,p,i,c);let h=Math.max(12,Math.min(128,Math.ceil(Math.PI*Math.sqrt(Math.max(p,c)))));if(s.length){let x=[];for(l=0;l<h;l++)x.push(cr(f,p,c,h,l));Jn(t,x,!0)}else if(a.stroke&&m>0)for(u=0;u<h;u++)Ue(o,n,cr(f,p,c,h,u,m/2),cr(f,p,c,h,u,-m/2),cr(f,p,c,h,u+1,m/2)),Ue(o,n,cr(f,p,c,h,u+1,m/2),cr(f,p,c,h,u,-m/2),cr(f,p,c,h,u+1,-m/2))}function qc(e,t,r){let o=[],i=[],n=e.options,a=Number(n.weight)||0,s=Vc(n),m={fill:o,stroke:i,options:n,width:a,dash:s,point:r,map:t};if(e instanceof d.CircleMarker)Zc(e,m);else{let f=e instanceof d.Polygon;Bm(m,e.getLatLngs(),f)}return{fill:o,stroke:i}}function Tm(e,t){if(e.pixelProjection){let{transformation:r,scale:o,origin:i,metres:n}=e.pixelProjection,a=r.untransform(t,o);return[(a.x-i.x)*n,0,-(a.y-i.y)*n]}return Wt(e,e.map.unproject(t))}function Hc(e,t){let r=_o[_o.length-1];return t&&r.strokeAnchors&&r.strokeAnchors.push(...Tm(r,t)),Tm(r,e)}$();L();function Yc(e){let{source:t}=e;e.strokeCoordinates=null,e.strokeAnchors=t instanceof d.Polyline&&!t.options.dashArray?[]:null;let r=e.map.options.crs,o=I.get(e.backend);e.pixelProjection={transformation:r.transformation,scale:r.scale(e.map.getZoom()),origin:r.project(o),metres:Math.cos(o.lat*B)},_o.push(e);try{return qc(t,e.map,Hc)}finally{_o.pop()}}function Xc(e,t){let{source:r}=e;e.strokeAnchors?.length===t.length&&t.length?(r.options.interactive===!1?e.strokeCoordinates=t:(e.strokeCoordinates=new Float64Array(t),e.strokeAnchors=new Float64Array(e.strokeAnchors)),e.strokeZoom=e.map.getZoom(),e.strokeWeight=Number(r.options.weight)):e.strokeAnchors=null}function Jc(e){let{source:t}=e;if(e.zoomOnly){kc(e),e.zoomOnly=!1;return}let{fill:r,stroke:o}=Yc(e);Xc(e,o);let i,n,a,s,m,f,p,c,l;for(i=0;i<2;i++)n=i?"stroke":"fill",a=i?o:r,s=i?t.options.color:t.options.fillColor||t.options.color,m=i?t.options.opacity:t.options.fillOpacity,a.length&&({r:f,g:p,b:c}=wt(s),ko(e,n,a,[f,p,c],m??1),n==="stroke"&&t.options.interactive===!1&&e.strokeCoordinates&&(l=e.meshes.get(n).geometry.attributes,e.strokeCoordinates=l.position.data,e.strokeAnchors=l.normal.data))}function Kc(e){let{meshes:t,textures:r,backend:o}=e,i,n,a;for([a,i]of t)i._nativeUsed||(Ie(o,i),t.delete(a),n=r.get(a),n&&j(o,n.texture),r.delete(a));for([a,n]of r)n.used||(j(o,n.texture),r.delete(a))}function ea(e){let{source:t,meshes:r,textures:o}=e;if(!Bo(e)||!v.get(e.backend)||e.failed||!e.dirty&&(!e.marker||!e.viewDirty))return;e.dirty=!1,e.viewDirty=!1;let i,n;for(i of r.values())i._nativeUsed=!1;for(n of o.values())n.used=!1;t instanceof d.GridLayer?bc(e):t instanceof d.ImageOverlay?Mc(e):e.marker?Sc(e):Jc(e),Kc(e)}function Qc(e){try{ea(e);let t=e.meshes.get("stroke")?.program.uniforms.strokeScale;if(t){let r=se.get(e.map)?.zoom??e.map.getZoom();t.value=2**(e.strokeZoom-r)*Number(e.source.options.weight)/e.strokeWeight}}catch(t){e.failed=!0,e.source.fire("error",{error:t})}}function lr(e){if(Gn(e),O.get(e)!==e||!v.get(e))return;let t=e._map,r=performance.now(),o=t.getSize();if(!o.x||!o.y)return;Rf(e,r),Df(e,o),Ff(e,o),Te(oe.get(e));let i=!1,n,a;for(n of F.get(e))a=mo.get(n),a&&(Qc(a),i=!0);let s=mt.get(t);Zf(e,s,i);let m=Gt.get(e),f=v.get(e),p=fp(e,r),c=f.frameMeshes||=[];c.length=0;let l=gp(e,p,r,c),u=f.device.createCommandEncoder();Bp(e,c,m,s),Hp(e,u,m,s),Ap(e,u,c),f.device.queue.writeBuffer(f.uniformBuffer,0,f.uniformData,0,f.uniformSlot*64),f.device.queue.submit((yn[0]=u.finish(),yn)),yn[0]=null;for(n of F.get(e))or.get(n)&&(l=Mo(n)||l);(t._animatingZoom||l)&&E(e)}function el(){let e=[...It];It.clear();let t,r;for(r of e)if(st.set(r,null),!(O.get(r)!==r||!v.get(r)))try{lr(r)}catch(o){t||=o}if(t)throw t}function E(e){let t=O.get(e);if(!t)return e;if(t!==e)return E(t),e;if(st.get(e)!=null)return e;let r=It.values().next().value;return It.add(e),st.set(e,r?st.get(r):requestAnimationFrame(el)),e}L();function ta(e){let{source:t}=e,r=t instanceof d.Marker&&t.options.icon instanceof d.DivIcon,o=r?null:t._icon,i=r?null:t._shadow,n,a;for(a of e.hidden)a===o||a===i||(a.classList.remove("leaflet-webgpu-target"),e.hidden.delete(a));for(n=0;n<2;n++)a=n?i:o,!(!a||e.hidden.has(a))&&(a.classList.add("leaflet-webgpu-target"),e.hidden.add(a))}function De(e=this){e.zoomOnly=!1,e.dirty=!0,e.viewDirty=!0,e.failed=!1,ta(e);let t=e.source,r,o;for(o of e.images)o===t._icon||o===t._shadow||o===t._image||(o.removeEventListener("load",yi),o.removeEventListener("error",xi),gn(o,e),e.images.delete(o));for(r=0;r<3;r++)o=r===0?t._icon:r===1?t._shadow:t._image,!(!(o instanceof HTMLImageElement)||e.images.has(o))&&(e.images.add(o),Ef(o,e),o.addEventListener("load",yi),o.addEventListener("error",xi));O.get(e.backend)&&E(e.backend)}L();var tl=new Set(["color","opacity","weight","fillColor","fillOpacity"]);function rl(e,t,r){let{source:o}=t;if(e!=="setStyle"||o.options.interactive!==!1||t.dirty&&!t.zoomOnly)return!1;let i=t.strokeCoordinates&&t.meshes.get("stroke")?.program.uniforms.strokeScale,n=o instanceof d.Polygon&&!o.options.stroke&&t.meshes.has("fill");if(!i&&!n)return!1;let a;if(r[0]){for(a of Object.keys(r[0]))if(!tl.has(a))return!1}return!0}L();function ol(e,t){let{source:r}=e;if(!(r instanceof d.GridLayer)||t!=="bringToFront"&&t!=="bringToBack")return;let o=t==="bringToFront"?-1/0:1/0,i,n;for(i of Object.values(e.map._layers))i===r||!(i instanceof d.GridLayer)||i.getPane()!==r.getPane()||(n=i.options.zIndex||0,o=t==="bringToFront"?Math.max(o,n):Math.min(o,n));let a=t==="bringToFront"?o+1:o-1;Number.isFinite(a)&&r.setZIndex(a)}function H(e,t,r){let o=ue.get(t),i=o.methods.get(e).original,n=rl(e,o,r),a=i.apply(t,r);return ol(o,e),e==="bringToFront"&&(o.order=rr.get(o.map)+1,rr.set(o.map,o.order)),e==="bringToBack"&&(o.order=so.get(o.map)-1,so.set(o.map,o.order)),De(o),n&&(!t.options.stroke||Number(t.options.weight)>0)&&(o.zoomOnly=!0),a}function il(...e){return H("setLatLng",this,e)}function nl(...e){return H("setLatLngs",this,e)}function al(...e){return H("addLatLng",this,e)}function sl(...e){return H("setRadius",this,e)}function ml(...e){return H("setStyle",this,e)}function fl(...e){return H("redraw",this,e)}function pl(...e){return H("setIcon",this,e)}function cl(...e){return H("setUrl",this,e)}function ll(...e){return H("setBounds",this,e)}function ul(...e){return H("setOpacity",this,e)}function dl(...e){return H("setZIndex",this,e)}function hl(...e){return H("setZIndexOffset",this,e)}function gl(...e){return H("bringToFront",this,e)}function yl(...e){return H("bringToBack",this,e)}var Pm={setLatLng:il,setLatLngs:nl,addLatLng:al,setRadius:sl,setStyle:ml,redraw:fl,setIcon:pl,setUrl:cl,setBounds:ll,setOpacity:ul,setZIndex:dl,setZIndexOffset:hl,bringToFront:gl,bringToBack:yl};L();var Eo=Object.freeze({});function ra(e=Eo){return new d.Layer(e)}L();var jr=new WeakMap;var ne=new WeakMap;var Lt=new WeakMap;function xl(e,t,r,o){let i=Math.min(r+o,e.length),n=Math.min(r+o*2,e.length),a=r,s=i,m;for(m=r;m<n;m++)a<i&&(s>=n||!(e[s].distance<e[a].distance))?t[m]=e[a++]:t[m]=e[s++]}function vl(e){if(e.length<2)return e;let t=new Array(e.length),r=e,o=t,i,n,a,s;for(i=1;i<e.length;i*=2){for(n=0;n<e.length;n+=i*2)xl(r,o,n,i);a=r,r=o,o=a}if(r!==e)for(s=0;s<e.length;s++)e[s]=r[s];return e}function wl(e,t,r,o){let n=new DOMMatrix(t.worldMatrix).invertSelf().toFloat64Array(),a,s,m,f,p;for(a of n)if(!Number.isFinite(a))throw new Error("Singular 3D transform");s=e.origin[0],m=e.origin[1],f=e.origin[2],p=n[3]*s+n[7]*m+n[11]*f+n[15],r[0]=(n[0]*s+n[4]*m+n[8]*f+n[12])/p,r[1]=(n[1]*s+n[5]*m+n[9]*f+n[13])/p,r[2]=(n[2]*s+n[6]*m+n[10]*f+n[14])/p,s=e.direction[0],m=e.direction[1],f=e.direction[2],o[0]=n[0]*s+n[4]*m+n[8]*f,o[1]=n[1]*s+n[5]*m+n[9]*f,o[2]=n[2]*s+n[6]*m+n[10]*f;let c=Math.hypot(...o)||1;o[0]/=c,o[1]/=c,o[2]/=c}function Ll(e,t,r){e.geometry.bounds||Ce(e.geometry);let o=0,i=1/0,n,a,s;for(n=0;n<3;n++)if(Math.abs(r[n])<1e-12){if(t[n]<e.geometry.bounds.min[n]||t[n]>e.geometry.bounds.max[n]){i=-1/0;break}}else a=(e.geometry.bounds.min[n]-t[n])/r[n],s=(e.geometry.bounds.max[n]-t[n])/r[n],o=Math.max(o,Math.min(a,s)),i=Math.min(i,Math.max(a,s));return!(i<o)}function oa(e,t){return t?.count??t?.data.length??e.count??e.data.length/(e.size??3)}function ia(e,t,r,o,i){let{position:n,index:a,instanceOffset:s}=e.geometry.attributes,m=n.size??3,f=oa(n,a),p=s?t%f:t,c=s?Math.floor(t/f)*s.size:0,l=s?.data[c]??0,u=s?.data[c+1]??0,h=s?.data[c+2]??0,x=(a?a.data[p]:p)*m,g=(a?a.data[p+1]:p+1)*m,y=(a?a.data[p+2]:p+2)*m;r[0]=n.data[x],r[1]=n.data[x+1],r[2]=n.data[x+2],o[0]=n.data[g],o[1]=n.data[g+1],o[2]=n.data[g+2],i[0]=n.data[y],i[1]=n.data[y+1],i[2]=n.data[y+2],s&&(r[0]=Math.fround(r[0]+l),r[1]=Math.fround(r[1]+u),r[2]=Math.fround(r[2]+h),o[0]=Math.fround(o[0]+l),o[1]=Math.fround(o[1]+u),o[2]=Math.fround(o[2]+h),i[0]=Math.fround(i[0]+l),i[1]=Math.fround(i[1]+u),i[2]=Math.fround(i[2]+h))}function bl(e,t,r,o,i){if(!e.program.nightLight)return!1;let{index:n,uv:{data:a}}=e.geometry.attributes,s=n?n.data[t]:t,m=n?n.data[t+1]:t+1,f=n?n.data[t+2]:t+2,p=a[s*2]*(1-r-o)+a[m*2]*r+a[f*2]*o,c=a[s*2+1]*(1-r-o)+a[m*2+1]*r+a[f*2+1]*o;return p<=2&&(!i||p*p+c*c>.9)}function Ml(e,t,r,o,i,n,a,s){let m=o[0]-r[0],f=o[1]-r[1],p=o[2]-r[2],c=i[0]-r[0],l=i[1]-r[1],u=i[2]-r[2],h=a[1]*u-a[2]*l,x=a[2]*c-a[0]*u,g=a[0]*l-a[1]*c,y=m*h+f*x+p*g;if(e.program.cullMode==="none"||e.program.cullFace===null?Math.abs(y)<1e-9:y<1e-9)return 1/0;let w=n[0]-r[0],S=n[1]-r[1],T=n[2]-r[2],P=(w*h+S*x+T*g)/y;if(P<0||P>1)return 1/0;let R=S*p-T*f,Q=T*m-w*p,N=w*f-S*m,G=(a[0]*R+a[1]*Q+a[2]*N)/y;return G<0||P+G>1||bl(e,t,P,G,s)?1/0:(c*R+l*Q+u*N)/y}function Bl(e,t,r,o,i,n){let a=o[0]*i+r[0],s=o[1]*i+r[1],m=o[2]*i+r[2],f=t.worldMatrix,p=f[3]*a+f[7]*s+f[11]*m+f[15],c=[(f[0]*a+f[4]*s+f[8]*m+f[12])/p,(f[1]*a+f[5]*s+f[9]*m+f[13])/p,(f[2]*a+f[6]*s+f[10]*m+f[14])/p];return{faceIndex:n,object:t,point:c,distance:Math.hypot(c[0]-e.origin[0],c[1]-e.origin[1],c[2]-e.origin[2])}}function na(e,t,r=0){let o=[],i=[0,0,0],n=[0,0,0],a=[0,0,0],s=[0,0,0],m=[0,0,0],f,p,c,l,u,h,x,g,y;for(f of t)if(wl(e,f,s,m),!!Ll(f,s,m)){for({position:p,index:c,instanceOffset:l}=f.geometry.attributes,u=c?.count||p.count,h=1/0,x=void 0,g=0;g<u*(l?.count??1);g+=3)ia(f,g,i,n,a),y=Ml(f,g,i,n,a,s,m,r),y>0&&y<h&&(h=y,x=g/3);x!==void 0&&o.push(Bl(e,f,s,m,h,x))}return vl(o)}function jt(e,t,r){if(t(e,r))return;let o;for(o of e.children)jt(o,t,r)}function aa(e,t){if(!e.visible)return!0;e.geometry&&e._appearance!==0&&t.push(e)}function Tl(e,t,r,o){let i=1,n=t.length-1,a;for(;i<n;)a=i+Math.floor((n-i)/2),t[a]<r?i=a+1:n=a;let s=e[i-1],m=e[i],f=t[i]-t[i-1]||1,p=(r-t[i-1])/f;return o||={},o.x=s[0]+(m[0]-s[0])*p,o.y=(s[2]??0)+((m[2]??0)-(s[2]??0))*p,o.z=s[1]+(m[1]-s[1])*p,o.dx=(m[0]-s[0])/f,o.dz=(m[1]-s[1])/f,o}function zo(e,t,r){let{points:o,lengths:i,length:n}=t.lane,a=t.distance+e.elapsed*t.speed;a-=n*Math.floor(a/n);let s=Tl(o,i,a,r);return s.x-=s.dz*e.side,s.z+=s.dx*e.side,s}function Pl(e){if(!e.mesh||!e.stale)return;e.stale=!1;let{position:t,normal:r}=e.mesh.geometry.attributes,o=e.position||={},i,n,a,s,m,f,p,c,l,u,h,x,g;for(i=0;i<e.trips.length;i++)for(n=e.trips[i],{x:a,y:s,z:m,dx:f,dz:p}=zo(e,n,o),c=0,l=i*e.stride;c<e.stride;c+=3,l+=3)u=e.template.position[c],h=e.template.position[c+2],x=e.template.normal[c],g=e.template.normal[c+2],t.data[l]=a-u*p-h*f,t.data[l+1]=s+e.template.position[c+1],t.data[l+2]=m+u*f-h*p,r.data[l]=-x*p-g*f,r.data[l+1]=e.template.normal[c+1],r.data[l+2]=x*f-g*p}function Sl(e){let t,r;for(t=1;t<=4;t++)for(r=1;r<=4;r++)if(!Number.isFinite(e[`m${t}${r}`]))throw new Error("Singular 3D transform")}function sa(e,t,r=M.get(e).children,o=!0){if(!v.get(e))return[];let i=Lt.get(e);i&&Pl(i);let n=e._map.getContainer().getBoundingClientRect();Te(oe.get(e)),co(ee.get(e));let a=ne.get(e).inverse,s=ee.get(e).projectionViewMatrix;a.m11=s[0],a.m12=s[1],a.m13=s[2],a.m14=s[3],a.m21=s[4],a.m22=s[5],a.m23=s[6],a.m24=s[7],a.m31=s[8],a.m32=s[9],a.m33=s[10],a.m34=s[11],a.m41=s[12],a.m42=s[13],a.m43=s[14],a.m44=s[15],a.invertSelf();let m=(t.clientX-n.left)/n.width*2-1,f=-((t.clientY-n.top)/n.height)*2+1,p=a.m11*m+a.m21*f+a.m41,c=a.m12*m+a.m22*f+a.m42,l=a.m13*m+a.m23*f+a.m43,u=a.m14*m+a.m24*f+a.m44,h;Sl(a),ne.get(e).origin[0]=ee.get(e).position[0],ne.get(e).origin[1]=ee.get(e).position[1],ne.get(e).origin[2]=ee.get(e).position[2],ne.get(e).direction[0]=p/u-ne.get(e).origin[0],ne.get(e).direction[1]=c/u-ne.get(e).origin[1],ne.get(e).direction[2]=l/u-ne.get(e).origin[2];let x=ne.get(e).direction,g=Math.hypot(x[0],x[1],x[2])||1;ne.get(e).direction[0]/=g,ne.get(e).direction[1]/=g,ne.get(e).direction[2]/=g;let y=ne.get(e).meshes;y.length=0;for(h of r)o?jt(h,aa,y):h.geometry&&h.visible&&h._appearance!==0&&y.push(h);return na(ne.get(e),y,v.get(e).uniformData?.[55])}function kl(){let{map:e,descriptor:t,handle:r}=this;e._fireDOMEvent===r&&(t?Object.defineProperty(e,"_fireDOMEvent",t):delete e._fireDOMEvent)}var te=new WeakMap;var Cl=new Set(["click","preclick","dblclick","contextmenu","mousedown","mouseup","mousemove","mouseover","mouseout","pointerdown","pointerup","pointermove","pointerover","pointerout"]);L();function _l(e,t){return t.object.renderOrder-e.object.renderOrder||e.distance-t.distance}function El(e,t,r){let o=[],i,n,a;if(r!==e.out)for(i of e.states)({source:n,backend:a}=i),!(n instanceof d.Marker||n.options.interactive===!1||!(n instanceof d.Path)&&!n.options.interactive)&&o.push(...sa(a,t,i.meshes.values(),!1));return o.sort(_l),o[0]?.object._nativeSource||null}function ma(e,t,r,o){t.hovered!==o&&(t.hovered&&t.fireDOMEvent.call(e,r,t.out,[t.hovered]),t.hovered=o,o&&t.fireDOMEvent.call(e,r,t.over,[o]),e.getContainer().style.cursor=o?"pointer":"")}function zl(e,t,r,o){let i=r.target,n=i instanceof Element&&i.closest(".leaflet-marker-icon,.leaflet-popup,.leaflet-tooltip,.leaflet-control");return n&&t.hovered&&(o===t.move||o===t.out)&&ma(e,t,r,null),n||o===t.move&&(e.dragging?.moving()||e._animatingZoom)}function Sm(e,t=e.type,r){let o=this,i=jr.get(o),n=i.fireDOMEvent,a=te.get(o);if(!v.get(a)||r||!Cl.has(t))return n.call(this,e,t,r);if(zl(o,i,e,t))return n.call(this,e,t,r);let s=El(i,e,t);return(t==="click"||t==="preclick")&&s&&o._draggableMoved(s)&&(s=null),(t===i.move||t===i.out)&&ma(o,i,e,s),n.call(this,e,t,s?[s]:void 0)}function Al(e){let{map:t}=e,r=jr.get(t);if(!r){r={map:t,states:new Set,hovered:null};let o=d.version.startsWith("2");r.move=o?"pointermove":"mousemove",r.out=o?"pointerout":"mouseout",r.over=o?"pointerover":"mouseover",r.descriptor=Object.getOwnPropertyDescriptor(t,"_fireDOMEvent"),r.fireDOMEvent=t._fireDOMEvent,r.handle=Sm,r.restore=kl,jr.set(t,r),t._fireDOMEvent=Sm}r.states.add(e),e._nativeEventContext=r}L();function Ao(e){if(!(e?.type==="zoomend"&&this.source instanceof d.Polyline&&(!this.source.options.stroke||!(Number(this.source.options.weight)>0)))){if(e?.type==="zoomend"&&this.strokeCoordinates&&(!this.dirty||this.zoomOnly)){this.zoomOnly=!0,this.dirty=!0,E(this.backend);return}e?.type==="terrainchange"&&this.marker&&this.source.update(),De(this)}}function fa(){this.viewDirty=!0,O.get(this.backend)&&E(this.backend)}function Rl(e){let t=e._nativeEventContext;if(!t)return;let{map:r}=t;t.states.delete(e),t.hovered===e.source&&(t.hovered=null,r.getContainer().style.cursor=""),e._nativeEventContext=null,!t.states.size&&(t.restore(),jr.delete(r))}function _i(){let e=this;if(e.disposed)return;e.disposed=!0;let{source:t,map:r,backend:o,meshes:i,textures:n,images:a}=e;t.off("load tileload tileunload move drag",Ao,e),r.off("zoomend terrainchange",Ao,e),e.marker&&r.off("move zoom rotate pitch resize viewreset",fa,e),Rl(e);let m,f,p,c,l;for([m,f]of e.methods)f.own?Object.defineProperty(t,m,f.own):delete t[m];for(p of i.values())Ie(o,p);i.clear();for(c of n.values())j(o,c.texture);n.clear();for(l of a)l.removeEventListener("load",yi),l.removeEventListener("error",xi),gn(l,e);mo.delete(o),o.remove()}function Ol(){this.ready.resolve()}function Dl({error:e}){this.ready.reject(e)}function Il({error:e}){this.source.fire("error",{error:e})}async function Gl(e){let{source:t,map:r}=e,o=e.backend=ra({source:{type:"vector"}});e.meshes=new Map,e.textures=new Map,e.methods=new Map,e.images=new Set,rr.get(r)||rr.set(r,0),so.get(r)||so.set(r,0),e.dirty=!0,e.viewDirty=!0,e.failed=!1,e.order=rr.get(r)+1,rr.set(r,e.order),e.marker=t instanceof d.Marker,e.paneOrder=Number(getComputedStyle(t.getPane()).zIndex)||0,e.disposed=!1,t.on("load tileload tileunload move drag",Ao,e),r.on("zoomend terrainchange",Ao,e),e.marker&&r.on("move zoom rotate pitch resize viewreset",fa,e),Al(e);let n,a,s;for(n in Pm)typeof t[n]=="function"&&(a=Object.getOwnPropertyDescriptor(t,n),s=t[n],e.methods.set(n,{own:a,original:s}),t[n]=Pm[n]);let m=e.ready=Promise.withResolvers();o.once("ready",Ol,e),o.once("error",Dl,e),o.on("error",Il,e),De(e),o.addTo(r);try{await m.promise}catch(f){throw _i.call(e),f}if(!Bo(e))return t;mo.set(o,e);try{ea(e)}catch(f){throw _i.call(e),f}return E(e.backend),t}function Ul(e){ue.get(e.source)===e&&ue.set(e.source,null),e.backend&&_i.call(e);let t;for(t of e.hidden)t.classList.remove("leaflet-webgpu-target")}function Nl(e){return ue.get(e.source)!==e?e.source:Gl(e)}function qe(e,t){e.fire("error",{error:t})}function pa(e,t){if(ue.get(e))return;if(!document.getElementById("leaflet-webgpu-targets")){let o=document.createElement("style");o.id="leaflet-webgpu-targets",o.textContent=".leaflet-webgpu-target{opacity:0!important}",document.head.append(o)}let r={source:e,map:t,hidden:new Set};ue.set(e,r),ta(r),e.once("remove",Ul.bind(null,r)),re.set(e,Promise.resolve().then(Nl.bind(null,r))),re.get(e).catch(qe.bind(null,e))}var ca=[1,0,1,0];L();function ce(e){return new d.Point(Array.isArray(e)?e[0]:e.x,Array.isArray(e)?e[1]:e.y)}$();Z();J();function la(e,t){let r=k(e)*B,o=_(e)*B;return t||=[],t[0]=Math.cos(r),t[1]=Math.sin(r),t[2]=Math.cos(o),t[3]=Math.sin(o),t}function ze(e,t,r=!1,o=!1,i=0){let n=e.getSize(),a=n.x/2,s=n.y/2,m=n.y*1.5,f=ce(t);if(!m)return f;let[p,c,l,u]=la(e,ca),h=f.x-a,x=f.y-s;if(r){let S=n.y*e.options.pitchMaxDistance,T=l*m+u*x,P=T*l>0?(x*(m-l*i)+m*u*i)/T:-S;o&&(P=Math.max(-S,Math.min(S,P)));let R=h*(m-u*P-l*i)/m;return f.x=p*R+c*P+a,f.y=-c*R+p*P+s,f}let g=p*h-c*x,y=c*h+p*x,w=m/(m-u*y-l*i);return f.x=g*w+a,f.y=(l*y-u*i)*w+s,f}function Fl(e){return ze(this,ot(this,W.value.layerPointToContainerPoint.call(this,e)))}function Wl(e){return W.value.containerPointToLayerPoint.call(this,ot(this,ze(this,e,!0),!0))}function jl(){return W.value.containerPointToLayerPoint.call(this,this.getSize().divideBy(2))}function $l(e,t){let r=this.getSize().divideBy(2),o=r.subtract(ze(this,r.subtract(ce(e)),!0));return W.value.panBy.call(this,o,t)}L();J();Z();function Vl(e,t,r){if(!_(this)&&!k(this))return W.value.setZoomAround.call(this,e,t,r);t=this._limitZoom(t);let o=this.getZoomScale(t),i=this.getSize().divideBy(2),n=e instanceof d.Point?e:this.latLngToContainerPoint(e),a=this.containerPointToLayerPoint(i),s=this.containerPointToLayerPoint(n),m=a.add(s.subtract(a).multiplyBy(1-1/o));return this.setView(this.layerPointToLatLng(m),t,{zoom:r})}var bt=Object.freeze([0,0]);J();Z();function Zl(e,t={}){if(!_(this)&&!k(this))return W.value.panInside.call(this,e,t);let r=ce(t.paddingTopLeft||t.padding||bt),o=this.getSize().subtract(ce(t.paddingBottomRight||t.padding||bt)),i=this.latLngToContainerPoint(e),n=r;if(n.x=Math.max(r.x,Math.min(o.x,i.x)),n.y=Math.max(r.y,Math.min(o.y,i.y)),n.equals(i))return this;let a=this.latLngToLayerPoint(e).subtract(this.containerPointToLayerPoint(n));return this.panTo(this.unproject(this.project(this.getCenter()).add(a)),t)}L();J();Z();L();function ur(e,t=bt,r=0){let o=ce(t).divideBy(2),i=e.getSize().subtract(o),n=new d.Bounds,a=o.x,s=o.y,m;for(m=0;m<4;m++)o.x=m%2?i.x:a,o.y=m<2?s:i.y,n.extend(ze(e,o,!0,!0,r));return n}function ql(e,t,r){if(!r||!this._loaded||!_(this)&&!k(this))return W.value._limitCenter.call(this,e,t,r);let o=this.getSize().divideBy(2),i=ur(this),n=this.project(e,t),a=new d.Bounds(n.add(i.min.subtract(o)),n.add(i.max.subtract(o))),s=this._getBoundsOffset(a,r,t);return Math.abs(s.x)<=1&&Math.abs(s.y)<=1?e:this.unproject(n.add(s),t)}J();Z();function Hl(e,t){if(!t||!_(this)&&!k(this))return W.value._limitOffset.call(this,e,t);let r=this.getSize().divideBy(2),o=r.subtract(ze(this,r.subtract(e),!0)),i=this.project(this.getCenter()),n=this.project(this._limitCenter(this.unproject(i.add(o)),this.getZoom(),t));return r.subtract(ze(this,r.subtract(n.subtract(i))))}J();Z();L();ua();function km(e,t,r,o,i){return t*r+o*e>0?Math.max(-i,Math.min(i,e*r/(t*r+o*e))):-i}function da(e,t,r=Ro){t=t.getBounds?t.getBounds():t instanceof d.LatLngBounds?t:new d.LatLngBounds(t);let o=e.getZoom()??0,i=e.getSize().divideBy(2),n=e.getSize().y*1.5,a=ce(r.paddingTopLeft||r.padding||bt).subtract(i),s=i.subtract(ce(r.paddingBottomRight||r.padding||bt)),[m,f,p,c]=la(e,ca);if(p<0){let rv=a.y;a.y=-s.y,s.y=-rv}let l=e.getSize().y*e.options.pitchMaxDistance,u=km(a.y,Math.abs(p),n,c,l),h=km(s.y,Math.abs(p),n,c,l),x=e.project(t.getNorthWest(),o).add(e.project(t.getSouthEast(),o)).divideBy(2),g=1/0,y=-1/0,w=a.x*c/n,S=s.x*c/n,T=S-w,P=1/0,R=-1/0,Q=[t.getNorthWest(),t.getNorthEast(),t.getSouthWest(),t.getSouthEast()],N,G,V,le,be;for(N=0;N<4;N++)G=Q[N],V=e.project(G,o).subtract(x),le=m*V.x-f*V.y,be=f*V.x+m*V.y,g=Math.min(g,be),y=Math.max(y,be),P=Math.min(P,le+w*be),R=Math.max(R,le+S*be);let at=Math.min((h-u)/(y-g),(s.x-a.x-T*u)/(R-P-T*g)),ke=e.getScaleZoom(at,o),gt=e.options.zoomSnap;if(gt&&(ke=Math.floor(Math.round(ke/(gt/100))/100)*gt),ke=Math.max(e.getMinZoom(),Math.min(e.getMaxZoom(),r.maxZoom??1/0,ke)),!Number.isFinite(ke))return{center:t.getCenter(),zoom:ke};let Ve=e.getZoomScale(ke,o),hi=y*Ve-h,gi=g*Ve-u,an=Math.max(hi,T?(Ve*(R-P)-s.x+a.x)/T:hi),rm=(Math.min(gi,an)+gi)/2,_f=(Ve*(P+R)-a.x-s.x-(w+S)*rm)/2;return x.x+=(m*_f+f*rm)/Ve,x.y+=(-f*_f+m*rm)/Ve,{center:e.unproject(x,o),zoom:ke}}function Yl(e,t){return _(this)||k(this)?da(this,e,t):W.value._getBoundsCenterZoom.call(this,e,t)}L();J();Z();function Xl(e,t,r){if(!_(this)&&!k(this))return W.value.getBoundsZoom.call(this,e,t,r);if(!t)return da(this,e,{padding:ce(r||bt).divideBy(2)}).zoom;e=e instanceof d.LatLngBounds?e:new d.LatLngBounds(e);let o=ur(this,r).getSize(),i=this.project(e.getSouthEast()).subtract(this.project(e.getNorthWest())),n=this.getScaleZoom(Math.max(o.x/i.x,o.y/i.y)),a=this.options.zoomSnap;return Math.max(this.getMinZoom(),Math.min(this.getMaxZoom(),a?Math.ceil(n/a)*a:n))}function Jl(e,t){let r=this._getCenterOffset(e)._trunc();return t?.animate!==!0&&!this.getSize().contains(r)?!1:(W.value.panBy.call(this,r,t),!0)}L();J();Z();function Kl(){if(!_(this)&&!k(this))return W.value.getBounds.call(this);let e=ur(this),t=new d.LatLngBounds,r,o,i;for(r=0;r<2;r++)o=r?e.max:e.min,i=W.value.containerPointToLayerPoint.call(this,ot(this,o,!0)),t.extend(this.layerPointToLatLng(i));return t}var Ql=new WeakSet;var Cm=new WeakMap;dr();_m();function eu(){this.options.maxBounds&&this._panInsideMaxBounds()}var hr=new WeakMap;ha();La();J();Z();function ba(){let e=this,t=hr.get(e);if(!_(e)&&!k(e))return;let r=e.getSize().divideBy(2),o=t._newPos.subtract(t._startPos),i=r.subtract(ze(e,r.subtract(o),!0));t._newPos=t._startPos.add(i)}function tu(){Do(this),He.get(this)?.remove(),hr.get(this)&&(hr.get(this).off("predrag",ba,this),hr.delete(this))}function ru(){let e=this.dragging?._draggable;e&&(hr.set(this,e),e.on("predrag",ba,this))}async function fd(e){try{let{cameraControls:t}=await Promise.resolve().then(()=>(md(),sd));e._container?._leaflet_id&&t(e)}catch(t){throw e.fire("error",{error:t}),t}}function Ye(){}function pd(){if(Ql.add(this),!document.getElementById("leaflet-camera-zoom-style")){let e=document.createElement("style");e.id="leaflet-camera-zoom-style",e.textContent=".leaflet-camera-zoom .leaflet-marker-icon,.leaflet-camera-zoom .leaflet-marker-shadow,.leaflet-camera-zoom .leaflet-popup,.leaflet-camera-zoom .leaflet-tooltip{transition:none!important}",document.head.append(e)}Ne(this,this.options.pitch,this.options.bearing),this.on("load resize pitch",ga),this.on("rotate pitch",eu,this),this.once("unload",tu,this),this.whenReady(ru,this),(this.options.rotate||this.options.trackContainerMutation)&&(Cm.set(this,fd(this)),Cm.get(this).catch(Ye))}L();function cd(e){e instanceof d.DivIcon||(e.options.crossOrigin||=!0);let t=Qe.value.setIcon.call(this,e);return this._map&&!(e instanceof d.DivIcon)&&pa(this,this._map),t}function ld(){let e=Qe.value.getEvents.call(this);return e.rotate=e.pitch=e.move=this.update,e}$();function $o(e,t,r){let o=te.get(e),i=o&&ie.get(o);if(!Me.get(e)||!i)return e.layerPointToContainerPoint(t).subtract(e._getMapPanePos());let n=ye(e,r||e.layerPointToLatLng(t))??0,a=ye(e,e.getCenter())??0,s=se.get(e)?.zoom??e.getZoom(),m=(n-a)*e.options.crs.scale(s)/(tt*Math.cos(i.lat*B)),f=ot(e,W.value.layerPointToContainerPoint.call(e,t));return ze(e,f,!1,!1,m).subtract(e._getMapPanePos())}function ud(e){Qe.value._setPos.call(this,$o(this._map,e,this.getLatLng()));let t,r,o,i,n,a;for(t=0;t<2;t++)r=t?this._shadow:this._icon,o=t?"shadowAnchor":"iconAnchor",r&&(i=qn(this,1,0),n=this.options.icon.options,a=n[o]||n.iconAnchor,r.style.transformOrigin=a?`${a.x??a[0]}px ${a.y??a[1]}px`:"center",r.style.transform+=` rotate(${Math.atan2(i.y,i.x)}rad) scale(${this.options.scale})`)}function Tt(e=this){let t=ue.get(e);t?.backend&&!t.disposed&&De(t)}function dd(e){Qe.value._updateZIndex.call(this,e);let t=Fr.get(this)!==e;Fr.set(this,e),t&&Tt(this)}var Hr=new WeakMap;L();function hd(e){let t=this._marker._map,r=d.DomUtil.getPosition(this._marker._icon).add(t._getMapPanePos()),o=t.containerPointToLayerPoint(r);d.DomUtil.setPosition(this._marker._icon,o),Hr.get(this)._cameraOriginalOnDrag.call(this,e),this._marker._setPos(o)}L();J();Z();var Gi=new Map;var Vo={value:null};function gd(){Vo.value=null;let e=[...Gi];Gi.clear();let t,r;for([t,r]of e)t._panRequest=null,t._adjustPan(r)}function yd(e,t){Gi.set(e,t),Vo.value===null&&(Vo.value=requestAnimationFrame(gd)),e._panRequest=Vo.value}function xd(e){let t=this._marker,r=t._map;if(!_(r)&&!k(r))return Hr.get(this)._cameraOriginalAdjustPan.call(this,e);let o=d.DomUtil.getPosition(t._icon).add(r._getMapPanePos()),i=r.getSize(),n=ce(t.options.autoPanPadding),a=t.options.autoPanSpeed,s=o;if(s.x=(Math.max(0,o.x-i.x+n.x)-Math.max(0,n.x-o.x))/Math.max(1,n.x)*a,s.y=(Math.max(0,o.y-i.y+n.y)-Math.max(0,n.y-o.y))/Math.max(1,n.y)*a,!s.x&&!s.y)return;let m=r._getMapPanePos();r.panBy(s,{animate:!1});let f=m.subtract(r._getMapPanePos());this._draggable._newPos._add(f),this._draggable._startPos._add(f),d.DomUtil.setPosition(t._icon,this._draggable._newPos),this._onDrag(e),yd(this,e)}function vd(){if(!this.dragging||Hr.has(this.dragging))return;let e=this.dragging,t=e._onDrag,r=e._adjustPan;Hr.set(e,{_cameraOriginalOnDrag:t,_cameraOriginalAdjustPan:r}),e._onDrag=hd,e._adjustPan=xd,e.enabled()&&(e._draggable.off("drag",t,e),e._draggable.on("drag",e._onDrag,e))}function wd(){let e=Qe.value._initInteraction.call(this);return vd.call(this),e}function Ld(){let e=fn.value.call(this);return e.rotate=e.pitch=e.move=e.terrainchange=this._updatePosition,e}function bd(){let e=pn.value.call(this);return e.rotate=e.pitch=e.move=e.terrainchange=this._updatePosition,e}J();Z();function Md(){let e=this._map;if(!_(e)&&!k(e))return ln.value.call(this);if(!this.options.autoPan)return;if(e._panAnim&&e._panAnim.stop(),this._autopanning){this._autopanning=!1;return}let t=this._container.getBoundingClientRect(),r=e.getContainer().getBoundingClientRect(),o=ce(this.options.autoPanPaddingTopLeft||this.options.autoPanPadding),i=e.getSize().subtract(ce(this.options.autoPanPaddingBottomRight||this.options.autoPanPadding)),n=t.left-r.left,a=t.top-r.top,s=t.right-r.left,m=t.bottom-r.top,f=Math.min(0,n-o.x)||Math.max(0,s-i.x),p=Math.min(0,a-o.y)||Math.max(0,m-i.y);if(!f&&!p)return;this.options.keepInView&&(this._autopanning=!0);let c=e.latLngToContainerPoint(this._latlng);c.x-=f,c.y-=p;let l=e.latLngToLayerPoint(this._latlng).subtract(e.containerPointToLayerPoint(c));e.fire("autopanstart"),e.panTo(e.unproject(e.project(e.getCenter()).add(l)))}L();function Bd(){if(cn.value.call(this),!this._map)return;let e=this._map.latLngToLayerPoint(this._latlng),t=$o(this._map,e,this._latlng).subtract(e);this._zoomAnimated?d.DomUtil.setPosition(this._container,d.DomUtil.getPosition(this._container).add(t)):(this._container.style.left=`${this._containerLeft+t.x}px`,this._container.style.bottom=`${this._containerBottom-t.y}px`)}L();function Td(e){un.value.call(this,e);let t=$o(this._map,e,this._latlng).subtract(e);d.DomUtil.setPosition(this._container,d.DomUtil.getPosition(this._container).add(t))}L();function Pd(){let e=hn.value.call(this);return e.rotate=e.pitch=d.Util.throttle(this._onMoveEnd,this.options.updateInterval,this),e}L();Z();J();$();function Sd(e){let t=this._map,r=Me.get(t);if(!r&&!k(t)&&!_(t))return dn.value.call(this,e);let o=t.getBounds(),i=new d.Bounds(t.project(o.getNorthWest(),this._tileZoom),t.project(o.getSouthEast(),this._tileZoom)),n=te.get(t),a=n&&ie.get(n);if(!r||!a)return i;let s=1/0,m=-1/0,f,p;for([f,p]of r.terrainCache)!f.startsWith(`${this._tileZoom}/`)||!p.range||(s=Math.min(s,p.range[0]),m=Math.max(m,p.range[1]));if(!Number.isFinite(s)||!Number.isFinite(m))return i;let c=se.get(t)?.zoom??t.getZoom(),l=t.options.crs.scale(c)/(tt*Math.cos(a.lat*B)),u=ye(t,t.getCenter())??0,h,x,g,y,w;for(h=0;h<2;h++)for(g=ur(t,void 0,((h?m:s)-u)*l),x=0;x<2;x++)y=x?g.max:g.min,w=W.value.containerPointToLayerPoint.call(t,ot(t,y,!0)),i.extend(t.project(t.layerPointToLatLng(w),this._tileZoom));return i}W.value=Object.defineProperties({},Object.getOwnPropertyDescriptors(d.Map.prototype));d.Map.mergeOptions({rotate:!0,bearing:0,pitch:0,maxPitch:85,pitchMaxDistance:3,rotateControl:!0,shiftKeyRotate:!0,pitchDrag:!0,touchRotate:!1,touchPitch:!1,compassBearing:!1});d.Map.include({layerPointToContainerPoint:Fl,containerPointToLayerPoint:Wl,_getCenterLayerPoint:jl,panBy:$l,setZoomAround:Vl,panInside:Zl,_limitCenter:ql,_limitOffset:Hl,_getBoundsCenterZoom:Yl,getBoundsZoom:Xl,_tryAnimatedPan:Jl,getBounds:Kl});d.Map.addInitHook(pd);Qe.value=Object.defineProperties({},Object.getOwnPropertyDescriptors(d.Marker.prototype));d.Marker.mergeOptions({rotation:0,rotateWithView:!1,keepUpright:!1,scale:1});d.Marker.include({setIcon:cd,getEvents:ld,_setPos:ud,_updateZIndex:dd,_initInteraction:wd});fn.value=d.Popup.prototype.getEvents;d.Popup.include({getEvents:Ld});pn.value=d.Tooltip.prototype.getEvents;d.Tooltip.include({getEvents:bd});cn.value=d.Popup.prototype._updatePosition;ln.value=d.Popup.prototype._adjustPan;d.Popup.include({_adjustPan:Md,_updatePosition:Bd});un.value=d.Tooltip.prototype._setPosition;d.Tooltip.include({_setPosition:Td});dn.value=d.GridLayer.prototype._getTiledPixelBounds;hn.value=d.GridLayer.prototype.getEvents;d.GridLayer.include({getEvents:Pd,_getTiledPixelBounds:Sd});L();var Zo=new WeakMap;var Ui=new WeakMap;var Ni=new WeakMap;L();ha();$();J();Z();function kd(e,t,r,o,i){let[n,a,s]=e,m=-n*Math.sin(o)*Math.sin(r)-a*Math.cos(r)-s*Math.cos(o)*Math.sin(r);return m>0?(i||={},i.left=t.x/2+t.y*1.5*(n*Math.cos(o)-s*Math.sin(o))/m,i.top=t.y/2-t.y*1.5*(-n*Math.sin(o)*Math.cos(r)+a*Math.sin(r)-s*Math.cos(o)*Math.cos(r))/m,i):null}function af(e,t,r,o,i,n,a){if(e.hidden=!0,!r||!t||t.altitude<=0)return;e.parentNode!==r&&r.append(e);let s=kd(t.direction,o,i,n,a);if(!s)return;let{left:m,top:f}=s;e.hidden=m<0||m>o.x||f<0||f>r.clientHeight||r.style.display==="none",e.style.left=`${m}px`,e.style.top=`${f}px`}function Zt({map:e,originalSky:t,sunDisc:r,moonDisc:o,projection:i}){let n=mt.get(e),a=He.get(e);n?e.getContainer().style.setProperty("--leaflet-sky-background",n.background):t?e.getContainer().style.setProperty("--leaflet-sky-background",t):e.getContainer().style.removeProperty("--leaflet-sky-background");let s=e.getSize(),m=_(e)*B,f=k(e)*B;af(r,n,a,s,m,f,i),af(o,n?.moon,a,s,m,f,i)}var Cd=[[-18,[3,7,20],[17,28,54],[.025,.04,.09]],[-6,[37,53,84],[182,106,86],[.12,.1,.14]],[0,[101,131,171],[246,170,115],[.38,.24,.18]],[10,[74,147,208],[197,221,237],[.8,.75,.68]],[25,[53,144,213],[223,238,250],[1,1,1]]];var sf=[0,0,0];function Za(e,t,r,o){o||=[],o.length=e.length;let i;for(i=0;i<e.length;i++)o[i]=e[i]+(t[i]-e[i])*r;return o}function mf(e){let t="",r;for(r=0;r<e.length;r++)r&&(t+=", "),t+=Math.round(e[r]);return`rgb(${t})`}function _d(e){if(!Number.isFinite(e))throw new Error("Invalid solar altitude");let t=Cd,r=-1,o;for(o=0;o<t.length;o++)if(t[o][0]>=e){r=o;break}let i=t[r<0?t.length-1:r],n=t[Math.max(0,r-1)],a=n===i||r<0?1:(e-n[0])/(i[0]-n[0]);return{background:`linear-gradient(${mf(Za(n[1],i[1],a,sf))}, ${mf(Za(n[2],i[2],a,sf))})`,tint:Za(n[3],i[3],a)}}function qa(e,t,r){let o=e instanceof Date?Date.prototype.getTime.call(e):typeof e=="string"?Date.parse(e):new Date(e).getTime();if(!Number.isFinite(o)||!Number.isFinite(t)||Math.abs(t)>90||!Number.isFinite(r)||Math.abs(r)>180)throw new Error("Invalid solar date or location");return o}$();function Ha(e,t,r,o,i){let n=(280.16+360.9856235*e+r)*B-o,a=t*B,s=Math.asin(Math.sin(a)*Math.sin(i)+Math.cos(a)*Math.cos(i)*Math.cos(n)),f=(Math.atan2(Math.sin(n),Math.cos(n)*Math.sin(a)-Math.tan(i)*Math.cos(a))/B+180+360)%360;return{altitude:s/B,azimuth:f,direction:[Math.sin(f*B)*Math.cos(s),Math.sin(s),-Math.cos(f*B)*Math.cos(s)]}}$();$();var Fi=Math.sin(23.4397*B);$();var Wi=Math.cos(23.4397*B);function Ed(e,t,r){let o=qa(e,t,r)/864e5-10957.5,i=(134.963+13.064993*o)*B,n=(218.316+13.176396*o+6.289*Math.sin(i))*B,a=5.128*Math.sin((93.272+13.22935*o)*B)*B,s=Math.cos(a)*Math.cos(n),m=Math.cos(a)*Math.sin(n)*Wi-Math.sin(a)*Fi,f=Math.cos(a)*Math.sin(n)*Fi+Math.sin(a)*Wi;return Ha(o,t,r,Math.atan2(m,s),Math.asin(f))}$();function zd(e,t,r){let i=qa(e,t,r)/864e5-10957.5,n=(357.5291+.98560028*i)*B,a=n+(1.9148*Math.sin(n)+.02*Math.sin(2*n)+3e-4*Math.sin(3*n)+102.9372+180)*B,s=Math.asin(Math.sin(a)*Fi),m=Math.atan2(Math.sin(a)*Wi,Math.cos(a));return Ha(i,t,r,m,s)}function Yr(e){let t=te.get(e);t&&E(t)}function br(e){let{control:t,map:r,date:o,slider:i,output:n,status:a}=e;try{t.live&&(t.time=new Date);let s=t.time.toISOString();o.value=s.slice(0,10),i.value=String(t.time.getUTCHours()*60+t.time.getUTCMinutes()),n.textContent=`${s.slice(11,16)} UTC${t.live?" \xB7 now":""}`;let m=r.getCenter(),f=zd(t.time,m.lat,m.lng);mt.set(r,f),Object.assign(f,_d(f.altitude)),f.moon=Ed(t.time,m.lat,m.lng),a.textContent=f.altitude<=0?"Night \xB7 no direct sunlight":f.altitude<3?"Low sun \xB7 shadows paused":`Sun altitude ${f.altitude.toFixed(1)}\xB0`,r.fire("simulationtimechange",{time:new Date(t.time),live:t.live}),Zt(e),Yr(r)}catch(s){mt.delete(r),Zt(e),Yr(r),a.textContent=`Error: ${s.message}`,console.error("Solar simulation",s)}}function Ad(e){e.control.live=!0,br(e)}function Rd(e){let{control:t,map:r,date:o,slider:i,status:n}=e;if(t.live=!1,!o.value||!o.validity.valid){t.time=new Date(NaN),r.fire("simulationtimechange",{time:null,live:!1}),mt.delete(r),Zt(e),Yr(r),n.textContent="Error: choose a valid solar date";return}t.time=new Date(`${o.value}T00:00:00Z`),t.time.setUTCMinutes(Number(i.value)),br(e)}function Od(e){let t="position:absolute;width:18px;height:18px;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;",r=d.DomUtil.create("div","sunlight-sun"),o=d.DomUtil.create("div","sunlight-moon");r.style.cssText=t+"background:#fff3bd;box-shadow:0 0 18px 7px #ffd27699;",o.style.cssText=t+"background:#dce5f2;box-shadow:0 0 10px 2px #cbdcff55;",r.setAttribute("role","img"),r.setAttribute("aria-label","Sun"),o.setAttribute("role","img"),o.setAttribute("aria-label","Moon");let i=d.DomUtil.create("div","sunlight-control");i.style.cssText="color:#222;width:min(200px,calc(100vw - 60px));font:12px/1.4 sans-serif;";let n=document.createElement("input");n.type="date",n.style.cssText="width:100%;box-sizing:border-box;",n.setAttribute("aria-label","Solar date (UTC)");let a=document.createElement("input");a.type="range",a.style.cssText="width:100%;box-sizing:border-box;margin:10px 0 4px;cursor:pointer;",a.min="0",a.max="1439",a.step="1",a.setAttribute("aria-label","Time of day (UTC)");let s=document.createElement("output");s.style.cssText="font-weight:bold;font-variant-numeric:tabular-nums;",s.setAttribute("aria-live","off");let m=document.createElement("button");m.type="button",m.textContent="Now";let f=document.createElement("div");f.className="sunlight-time",f.style.cssText="display:flex;justify-content:space-between;align-items:center;",f.append(s,m);let p=document.createElement("div");p.className="sunlight-status",p.style.marginTop="5px",p.setAttribute("role","status");let c=document.createElement("small");c.style.color="#555",i.append(n,a,f,p,c);let l={control:null,map:e,originalSky:"",container:i,sunDisc:r,moonDisc:o,date:n,slider:a,output:s,status:p,projection:{left:0,top:0}};return l.update=br.bind(null,l),l.updateSky=Zt.bind(null,l),m.onclick=Ad.bind(null,l),n.onchange=a.oninput=Rd.bind(null,l),d.DomEvent.disableClickPropagation(i),d.DomEvent.disableScrollPropagation(i),l}function Dd(e){e.control.live&&br(e)}function Id(e,t){let r=Ni.get(t);if(r?.control&&r.control!==e)throw e._map=null,e.layer._map===t&&t.removeLayer(e.layer),new Error("Only one Time control can be active per map");return r||(r=Od(t),Ni.set(t,r)),r.control=e,r.originalSky=t.getContainer().style.getPropertyValue("--leaflet-sky-background"),Zo.set(t,e),Ui.set(e,r),r.update(),r.timer=setInterval(Dd,6e4,r),t.on("moveend",r.update),t.on("move rotate pitch resize",r.updateSky),r.container}L();L();function Gd(e,t,r){let o=e.closest("label");if(r.classList.contains("layer-count"))e.hasAttribute("aria-label")||e.setAttribute("aria-label",o.textContent.trim()),r.id=`leaflet-layer-count-${d.Util.stamp(t)}`,e.setAttribute("aria-describedby",r.id),o.append(r);else if(r.classList.contains("traffic-status")){let i=o.nextElementSibling;i?.classList.contains("traffic-status-group")||(i=d.DomUtil.create("div","traffic-status-group"),i.style.cssText="display:flex;flex-wrap:wrap;gap:4px 8px;max-width:200px;margin:2px 0 6px 20px;",i.setAttribute("role","group"),i.setAttribute("aria-label","Traffic counts"),o.after(i)),i.append(r)}else o.after(r)}function Ud(e,t,r){let o,i;for(o of e.getContainer().querySelectorAll(".leaflet-control-layers-selector"))if(i=e._layers[o.layerId],o.layerId===d.Util.stamp(t)||i instanceof d.LayerGroup&&i.hasLayer(t))return Gd(o,t,r),!0;return!1}function Ya(e){let t=Ud(e.map,e.layer,e.element),r=e.onPlace;return r?.(t),t}var Xa=[];function Nd(){let e=Xa.shift();e?.map.hasLayer(e.layer)&&Ya(e)}function Ja(){Xa.push(this),queueMicrotask(Nd)}function Fd(){this.map.off("layeradd layerremove",Ja,this);let e=this.element.parentElement;this.element.remove(),e?.classList.contains("traffic-status-group")&&!e.childElementCount&&e.remove()}function qo(e,t,r){let o={map:e._map,layer:e,element:t,onPlace:r};return o.map.on("layeradd layerremove",Ja,o),e.once("remove",Fd,o),Ya(o)}var Pt=new WeakMap;L();function Wd(e){return Pt.get(this).addTo(e)}L();function jd(){return d.Control.prototype.remove.call(Pt.get(this))}function $d(e){d.Util.setOptions(this,e),this.live=!0,this.layer=new d.Layer,Pt.set(this.layer,this),A.set(this.layer,"time")}function Vd(e){return Id(this,e)}L();function ff(e,t){e.classList.toggle("leaflet-control",!t),e.classList.toggle("leaflet-bar",!t),e.style.background=t?"":"#fff",e.style.padding=t?"2px 0 6px 20px":"8px",e.style.margin=t?"0":""}function Zd(e){d.Control.prototype.addTo.call(this,e);let t=this.getContainer();return this.layer._map===e?qo(this.layer,t,ff.bind(null,t)):ff(t,!1),this}L();function qd(){return this._map?.hasLayer(this.layer)?(this._map.removeLayer(this.layer),this):d.Control.prototype.remove.call(this)}function Hd(e){let{map:t,timer:r,sunDisc:o,moonDisc:i}=e,n=Ni.get(t);clearInterval(r),Zo.delete(t),t.fire("simulationtimechange",{time:null,live:!1}),t.off("moveend",e.update),t.off("move rotate pitch resize",e.updateSky),mt.delete(t),Zt(e),o.remove(),i.remove(),Yr(t),n===e&&(n.control=null)}function Yd(){let e=Ui.get(this);e&&(Hd(e),Ui.delete(this))}d.Control.Time=d.Control.extend({options:{position:"bottomright"},initialize:$d,onAdd:Vd,onRemove:Yd,addTo:Zd,remove:qd});L();L();var qt=new WeakMap;var Ka=new WeakMap;L();var we=new WeakMap;var Y=new WeakMap;var Mr=new WeakMap;var Br=new WeakMap;var X=new WeakMap;var Xe=new WeakMap;var We=new WeakMap;var Tr=new WeakMap;var ae=new WeakMap;L();var Qa=new WeakMap;var ji=new WeakMap;var St=new WeakSet;var pf=["rootDirectoryOffset","rootDirectoryLength","jsonMetadataOffset","jsonMetadataLength","leafDirectoryOffset","leafDirectoryLength","tileDataOffset","tileDataLength","numAddressedTiles","numTileEntries","numTileContents"];var cf=["clustered","internalCompression","tileCompression","tileType","minZoom","maxZoom"];var lf=["minLon","minLat","maxLon","maxLat"];function Xd(e){let t=e.byteLength>=127?new DataView(e):null;if(!t||t.getUint32(0,!0)!==1767132496||t.getUint32(4,!0)!==57894252)throw new Error("Expected a PMTiles v3 archive");let r={},o;for(o=0;o<pf.length;o++)r[pf[o]]=Number(t.getBigUint64(8+o*8,!0));for(o=0;o<cf.length;o++)r[cf[o]]=t.getUint8(96+o);for(o=0;o<lf.length;o++)r[lf[o]]=t.getInt32(102+o*4,!0)/1e7;return r.centerZoom=t.getUint8(118),r.centerLon=t.getInt32(119,!0)/1e7,r.centerLat=t.getInt32(123,!0)/1e7,r}var Ho=new WeakMap;async function Yo(e,t,r,o){if(o?.throwIfAborted(),!Number.isSafeInteger(t)||!Number.isSafeInteger(r)||t<0||r<=0||!Number.isSafeInteger(t+r))throw new Error("Invalid PMTiles byte range");let i=await fetch(ae.get(e),{headers:{Range:`bytes=${t}-${t+r-1}`},signal:o});if(!i.ok)throw new Error(`Unable to read PMTiles: HTTP ${i.status}`);let n=i.headers.get("ETag");if(Ho.get(e)&&n!==Ho.get(e))throw new Error("PMTiles archive changed; recreate the layer");n&&Ho.set(e,n);let a=await i.arrayBuffer();if(i.status===200)a=a.slice(t,t+r);else if(i.status!==206||!i.headers.get("Content-Range")?.startsWith(`bytes ${t}-${t+r-1}/`))throw new Error("Invalid PMTiles range response");if(a.byteLength!==r)throw new Error("Truncated PMTiles range");return a}function Xr(e){if(!St.has(e))return e.getHeader();if(e.options.archive&&e.options.archive!==e)return Xr(e.options.archive);let t=ji.get(e);return t||(t=Yo(e,0,127).then(Xd),ji.set(e,t)),t}var ut=new WeakMap;var kt=new WeakMap;$();function es(e,t=!0){let r={enabled:t,loaded:0,skipped:0,pending:0,errors:[]},o;for(o of Y.get(e).values())o.error?r.errors.push(o.error):o.done||r.pending++,r.loaded+=o.buildings??0,r.skipped+=o.skipped??0;e.fire("progress",r)}function Jd(e){let{backend:t,area:r}=e;if(!e.positions.length){r.mesh=null,r.buildings=0,r.skipped=e.skipped,r.done=!0;return}let o=v.get(t).device,i=e.preparedGeometry,n={position:{size:3,data:i.positions},normal:{size:3,data:i.normals},color:{size:3,data:i.colors}};i.instanceOffsets&&(n.instanceOffset={size:4,data:i.instanceOffsets}),t.options.nightLight&&(n.uv={size:2,data:i.uvs});let a,s;for(a in n)s=n[a],s.count=s.data.length/s.size,s.buffer=o.createBuffer({size:Math.max(4,s.data.byteLength),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST}),o.queue.writeBuffer(s.buffer,0,s.data);let m={device:o,bounds:i.bounds,attributes:n,drawRange:{start:0,count:n.position.count}};r.mesh={...Ee(),device:o,geometry:m,program:Ge(t,{instanced:!!i.instanceOffsets,vertexColors:!0,roofTexture:t.options.roofTexture,wallTexture:t.options.wallTexture,nightLight:!!t.options.nightLight,alphaMode:t.options.nightLight?"BLEND":void 0,doubleSided:!!t.options.nightLight}),id:vt.value++,renderOrder:0,fadeDuration:250,extras:{featureFaces:e.featureFaces,lights:e.lights}},r.buildings=e.featureFaces.length,r.skipped=e.skipped,r.done=!0,q(r.mesh,M.get(t)),E(t)}var Kd=new TextDecoder;function Qd(e,t,r){if(!Number.isInteger(e)||!Number.isInteger(t)||!Number.isInteger(r)||e<0||e>26||t<0||r<0||t>=2**e||r>=2**e)throw new Error("Invalid PMTiles tile coordinates");let o=(4**e-1)/3,i=2**e,n,a,s,m;for(n=i/2;n>=1;n/=2)a=t&n?1:0,s=r&n?1:0,o+=n*n*(3*a^s),s||(a&&(t=i-1-t,r=i-1-r),m=t,t=r,r=m);return o}var eh={bytes:null,cursor:0};function Xo(e){let{bytes:t}=e,r=0,o,i;for(o=1;o<=2**49;o*=128){if(e.cursor>=t.length)throw new Error("Truncated PMTiles directory");if(i=t[e.cursor++],r+=(i&127)*o,!Number.isSafeInteger(r))throw new Error("Invalid PMTiles directory integer");if(i<128)return r}throw new Error("Invalid PMTiles directory integer")}function th(e){let t=eh,r=new Uint8Array(e);t.bytes=r,t.cursor=0;try{let o=Xo(t);if(o>(r.length-t.cursor)/4)throw new Error("Invalid PMTiles directory count");let i=new Array(o),n=0,a,s,m;for(a=0;a<o;a++){if(n+=Xo(t),!Number.isSafeInteger(n)||a&&n<=i[a-1].tileId)throw new Error("Invalid PMTiles directory tile IDs");i[a]={tileId:n,runLength:0,length:0,offset:0}}for(s of i)s.runLength=Xo(t);for(s of i)if(s.length=Xo(t),!s.length)throw new Error("Invalid PMTiles directory length");for(a=0;a<i.length;a++){if(s=i[a],m=Xo(t),!m&&!a)throw new Error("Invalid PMTiles directory offset");s.offset=m?m-1:i[a-1].offset+i[a-1].length}if(t.cursor!==r.length)throw new Error("Trailing PMTiles directory data");return i}finally{t.bytes=null,t.cursor=0}}async function ts(e,t){if(t===1)return e;if(t!==2)throw new Error(`Unsupported PMTiles compression: ${t}`);let r=new Blob([e]),o=new DecompressionStream("gzip");return new Response(r.stream().pipeThrough(o)).arrayBuffer()}async function rh(e,t,r,o){return th(await ts(await Yo(e,t,r),o))}async function oh(e,t,r,o){let i=Br.get(e),n=`${t}:${r}`;i.has(n)||(i.size>=32&&i.delete(i.keys().next().value),i.set(n,rh(e,t,r,o)));let a=i.get(n);try{return await a}catch(s){throw i.get(n)===a&&i.delete(n),s}}function ih(e,t){let r=0,o=e.length-1,i;for(;r<=o;)i=r+o>>1,e[i].tileId<=t?r=i+1:o=i-1;return e[o]}async function nh(e,t,r,o,i){if(o-r.tileId>=r.runLength)return;if(r.offset+r.length>t.tileDataLength)throw new Error("PMTiles tile outside data section");let n=await ts(await Yo(e,t.tileDataOffset+r.offset,r.length,i),t.tileCompression);return i?.throwIfAborted(),{data:n}}async function ah(e,t,r,o){let i=t.rootDirectoryOffset,n=t.rootDirectoryLength,a=-1,s=-1,m=-1,f,p,c,l;for(f=0;f<4;f++){if(i===a||i===s||i===m)throw new Error("Cyclic PMTiles directory");if(f===0?a=i:f===1?s=i:f===2&&(m=i),p=await oh(e,i,n,t.internalCompression),o?.throwIfAborted(),c=ih(p,r),!c)return;if(c.runLength)return l=await nh(e,t,c,r,o),l;if(c.offset+c.length>t.leafDirectoryLength)throw new Error("PMTiles directory outside leaf section");i=t.leafDirectoryOffset+c.offset,n=c.length}throw new Error("PMTiles directory depth exceeds four levels")}async function Jr(e,t,r,o,i){if(!St.has(e))return e.getZxy(t,r,o,i);if(e.options.archive&&e.options.archive!==e)return Jr(e.options.archive,t,r,o,i);let n=Qd(t,r,o);i?.throwIfAborted();let a=await Xr(e);if(i?.throwIfAborted(),!(t<a.minZoom||t>a.maxZoom))return ah(e,a,n,i)}async function sh(e,t){if(X.get(e)){let{data:o,url:i}=e.options;if(o!==void 0&&i)throw new Error("GeoJSON source requires either data or url");if(o!==void 0)return o;if(!i)throw new Error("GeoJSON source requires either data or url");let n=new URL(i,document.baseURI),a=await fetch(n,{signal:t.request.signal});if(!a.ok)throw new Error(`Unable to load GeoJSON: HTTP ${a.status}`);return a.json()}let r=await Jr(e,t.coords.z,t.coords.x,t.coords.y,t.request.signal);return r?JSON.parse(Kd.decode(r.data)):{type:"FeatureCollection",features:[]}}$();function mh(e,t,r){let o=r.options.crs,i=o.project(I.get(e));return{backend:e,area:t,map:r,crs:o,origin:i,metres:Math.cos(I.get(e).lat*B),jobs:[],featureFaces:[],skipped:0}}var rs=new URL("leaflet-city-mapper-worker.js",document.currentScript?.src||document.baseURI).href;function fh(e,t){if(t.type==="abort")e.reject(e.signal.reason);else if(t.type==="error")e.reject(new Error(`Geometry worker failed: ${t.message}`));else if(t.type==="messageerror")e.reject(new Error("Unable to receive geometry worker buffers"));else if(t.data?.error){let r=new Error(t.data.error.message);r.name=t.data.error.name,e.reject(r)}else e.resolve(t.data)}function ph(e,t,r){if(e.resolve=t,e.reject=r,e.onEvent=fh.bind(null,e),e.worker.addEventListener("message",e.onEvent),e.worker.addEventListener("error",e.onEvent),e.worker.addEventListener("messageerror",e.onEvent),e.signal.addEventListener("abort",e.onEvent,{once:!0}),e.signal.aborted){r(e.signal.reason);return}e.worker.postMessage(e.input)}var uf=new WeakMap;function ch(e){e.closed=!0;let t;for(t of e.entries)t.closed=!0,t.worker.terminate(),t.task&&t.task.reject(new DOMException("Map removed","AbortError"));e.entries.clear(),e.idle.length=0}function os(e,t){if(typeof Worker>"u")throw new Error("Web Workers are required to prepare source geometry");let r=e,o,i;if(globalThis.location){let a=new URL(e,location.href);(a.protocol==="https:"||a.protocol==="http:")&&a.origin!==location.origin&&(o=URL.createObjectURL(new Blob([`import ${JSON.stringify(a.href)};`],{type:"text/javascript"})),r=o)}try{i=new Worker(r,{type:"module"})}finally{!i&&o&&URL.revokeObjectURL(o)}let n={url:e,pool:t,worker:i,blobUrl:o};return t&&t.entries.add(n),n}function lh(e,t){let r=e&&uf.get(e);e&&!r&&(r={entries:new Set,idle:[],closed:!1},uf.set(e,r),e.once("unload",ch.bind(null,r)));let o,i;if(r){if(r.closed)throw new DOMException("Map removed","AbortError");for(i=0;i<r.idle.length;i++)if(r.idle[i].url===t)return o=r.idle[i],r.idle.splice(i,1),o;o=r.idle.pop(),o&&(o.closed=!0,o.worker.terminate(),r.entries.delete(o))}return os(t,r)}async function Jo(e,t,r,o=new AbortController().signal){o.throwIfAborted();let i=lh(e,t||rs),{worker:n,pool:a}=i,s={worker:n,signal:o,input:r};i.task=s;let m=!1;try{let f=await new Promise(ph.bind(null,s));return m=!0,f}finally{n.removeEventListener("message",s.onEvent),n.removeEventListener("error",s.onEvent),n.removeEventListener("messageerror",s.onEvent),o.removeEventListener("abort",s.onEvent),i.task=null,m&&a&&!a.closed&&!o.aborted?a.idle.push(i):(i.closed||n.terminate(),a&&a.entries.delete(i)),i.blobUrl&&(URL.revokeObjectURL(i.blobUrl),i.blobUrl=null)}}async function uh(e,t){try{let r=await Jo(e.map||e.backend._map,e.backend.options.workerUrl,{jobs:e.jobs,nightLight:!!e.backend.options.nightLight},t),o;for(o=0;o<r.ranges.length;o++)Object.assign(e.featureFaces[o],r.ranges[o]);e.positions=r.positions,e.uvs=r.uvs,e.lights=r.lights,e.preparedGeometry=r}finally{e.jobs=null}}function dh(e,t){let r=e?.geometry,o=r?.type==="Point";if(t&&!o)throw new Error("Night lights require Point geometry");if(r?.type!=="Polygon"&&r?.type!=="MultiPolygon"&&!o)throw new Error("Unsupported GeoJSON geometry");let i=o?r.coordinates:r.type==="Polygon"?r.coordinates[0]?.[0]:r.coordinates[0]?.[0]?.[0];if(!Number.isFinite(i?.[0])||!Number.isFinite(i?.[1]))throw new Error("Invalid GeoJSON coordinates");return i}function hh(e,t){let r=e.options.style(t);if(r===null)return null;if(!r||typeof r!="object")throw new Error("style must return an extrusion style or null");let{top:o,bottom:i=0}=r;if(!Number.isFinite(o)||!Number.isFinite(i)||i<0||o<=i)throw new Error("Invalid extrusion heights: expected top > bottom >= 0");return r}L();function gh(e,t,r){let{backend:o,crs:i,origin:n,metres:a,map:s}=e,m=new d.LatLng(r,t),f=i.project(m),p=ye(s,m),c=M.get(o);return{x:(f.x-n.x)*a,y:(f.y-n.y)*a,ground:Number.isFinite(p)&&Number.isFinite(c.position[1])?p-c.position[1]:0}}L();function yh(e,t){let{backend:r,crs:o,origin:i,metres:n,map:a}=e;if(t.length<4)throw new Error("Invalid GeoJSON polygon ring");let s=[],m=M.get(r),f,p,c,l,u,h;for(f=0;f<t.length-1;f++){if(p=t[f][0],c=t[f][1],!Number.isFinite(p)||!Number.isFinite(c))throw new Error("Invalid GeoJSON coordinates");l=new d.LatLng(c,p),u=o.project(l),h=ye(a,l),s.push({x:(u.x-i.x)*n,y:(u.y-i.y)*n,ground:Number.isFinite(h)&&Number.isFinite(m.position[1])?h-m.position[1]:0})}return s}function xh(e,t){let r=t.type==="Polygon"?[t.coordinates]:t.type==="MultiPolygon"?t.coordinates:[],o=[],i,n,a;for(i of r){if(!i.length)throw new Error("Empty GeoJSON polygon");a=[];for(n of i)a.push(yh(e,n));o.push(a)}return o}function vh(e,t,r,o,i,n){let a=t.geometry,s=xh(e,a),m=a.type==="Point"?gh(e,r,o):null,f=e.backend.options.nightLight,p=m?wt(i.color??(f?void 0:5210683)):n,c=m&&!f?wt(i.trunkColor??7491898):null;e.jobs.push({point:m,polygons:s,baseColor:{r:n.r,g:n.g,b:n.b},support:t.properties?.cod_ouvrag||`${r},${o}`,style:{top:i.top,bottom:i.bottom??0,color:{r:p.r,g:p.g,b:p.b},trunkColor:c?{r:c.r,g:c.g,b:c.b}:void 0,trunkRadius:i.trunkRadius,crownRadius:i.crownRadius,crownBottom:i.crownBottom,crownShape:i.crownShape,poleRadius:i.poleRadius,lightRadius:i.lightRadius,lightFlux:i.lightFlux}})}L();function wh(e,t,r,o){if(!t)return!0;let i=e.project(new d.LatLng(o,r),t.z);return Math.floor(i.x/256)===t.x&&Math.floor(i.y/256)===t.y}function Lh(e,t){let{backend:r,area:o,map:i}=e,n=o.coords,a=dh(t,r.options.nightLight),s=t.geometry,m=a[0],f=a[1];if(!wh(i,n,m,f))return;let p=hh(r,t);if(p===null){e.skipped++;return}let{color:c=14267276}=p,l=wt(c);vh(e,t,m,f,p,l),e.featureFaces.push({id:t.id??t.properties?.objectid??JSON.stringify(s),properties:t.properties,baseColor:l})}async function bh(e,t,r){let o=performance.now()+4,i;for(i of r){if(t.request.signal.aborted)return;if(performance.now()>=o){if(await new Promise(requestAnimationFrame),t.request.signal.aborted)return;o=performance.now()+4}Lh(e,i)}}async function Mh(e,t,r){try{if(await new Promise(requestAnimationFrame),await se.get(r),t.request.signal.aborted)return;let o=await sh(e,t);if(t.request.signal.aborted)return;if(o?.type!=="FeatureCollection"||!Array.isArray(o.features))throw new Error("Invalid GeoJSON response");if(X.get(e)&&typeof e.options.style!="function")throw new Error("style must be a function");if(e.options.worker===!1)throw new Error("worker: false is no longer supported; GeoJSON geometry requires Web Workers");let i=mh(e,t,r);if(await bh(i,t,o.features),t.request.signal.aborted||(await uh(i,t.request.signal),t.request.signal.aborted))return;Jd(i)}catch(o){t.request.signal.aborted||(t.error=o.message,e.fire("error",{error:o}))}finally{Xe.set(e,Xe.get(e)-1),$i(e,r)}}function is(e,t){return e.distance-t.distance}function Bh(e,t){let r=[],o,i,n;for(o of e)for(i of Y.get(o).values())i.started||i.request.signal.aborted||(n=i.coords&&t.project(t.getCenter(),i.coords.z).divideBy(256),r.push({layer:o,area:i,distance:n?Math.hypot(i.coords.x+.5-n.x,i.coords.y+.5-n.y)/2**i.coords.z:0}));return r.sort(is),r}function $i(e,t=e._map){let r=t&&te.get(t);if(!r)return;let o=[],i,n,a;for(i of F.get(r))Number.isFinite(Xe.get(i))&&Y.get(i)&&(ae.get(i)||X.get(i))&&o.push(i);let s=Bh(o,t),m=0;for(i of o)m+=Xe.get(i);for({layer:a,area:n}of s){if(m>=4)break;Xe.get(a)>=2||(n.started=!0,Xe.set(a,Xe.get(a)+1),m++,Mh(a,n,t))}for(i of o)es(i)}var nt=new WeakMap;var Se=new WeakMap;function Ct(e,t){t?.model&&(t=null),!(nt.get(e)?.mesh===t?.mesh&&nt.get(e)?.vertexStart===t?.vertexStart)&&(nt.get(e)&&(nt.get(e).mesh.highlight=null),nt.set(e,t),t&&(t.mesh.highlightRange[0]=t.vertexStart,t.mesh.highlightRange[1]=t.vertexEnd,t.mesh.highlight=t.mesh.highlightRange),E(e))}var Ae=new WeakMap;var Pr=new WeakMap;var Re=new WeakMap;function _t(e,t,r){let o=Re.get(e);if(!o)return;if(t){o.replaceChildren(e.options.tooltip(t)),o.hidden=!1;let a=Ae.get(e).getBoundingClientRect(),s=r.clientX-a.left,m=r.clientY-a.top;o.style.left=`${s+o.offsetWidth+16>a.width?s-o.offsetWidth-12:s+12}px`,o.style.top=`${m+o.offsetHeight+16>a.height?m-o.offsetHeight-12:m+12}px`}else o.hidden=!0;let i=O.get(e),n;if(i){let a=!1;for(n of F.get(i))if(Re.get(n)&&!Re.get(n).hidden){a=!0;break}a?(Pr.get(i)===void 0&&Pr.set(i,Ae.get(e).style.cursor),Ae.get(e).style.cursor="pointer"):Pr.get(i)!==void 0&&(Ae.get(e).style.cursor=Pr.get(i),Pr.delete(i))}}function Kr(e,t){t.request.abort();let r;if(t.mesh){nt.get(e)?.mesh===t.mesh&&(Ct(e,null),Se.set(e,null),_t(e,null)),q(t.mesh,null),E(e);let o=t.mesh.geometry;for(r of Object.values(o.attributes))r.buffer.destroy();t.mesh.program.pipelineCache.clear()}}function Th(e,t){return e.distance-t.distance}function Qr(e){if(!e._map||!O.get(e))return;if(X.get(e)){Y.get(e).has("geojson")||Y.get(e).set("geojson",{request:new AbortController}),$i(e);return}if(!U.get(e))return;let t=U.get(e).minZoom,r=e._map.project(e._map.getCenter(),t).divideBy(256).floor(),o=e._map.getBounds(),i=e._map.project(o.getNorthWest(),t).divideBy(256).floor(),n=e._map.project(o.getSouthEast(),t).divideBy(256).floor(),a=e._map.project([U.get(e).maxLat,U.get(e).minLon],t).divideBy(256).floor(),s=e._map.project([U.get(e).minLat,U.get(e).maxLon],t).divideBy(256).floor(),m=new Map,f,p,c,l,u;for(f=Math.max(0,i.x-1,a.x);f<=Math.min(2**t-1,n.x+1,s.x);f++)for(p=Math.max(0,i.y-1,a.y);p<=Math.min(2**t-1,n.y+1,s.y);p++)m.set(`${f}/${p}`,{z:t,x:f,y:p});for([c,l]of Y.get(e))m.has(c)||(Kr(e,l),Y.get(e).delete(c));let h=[];for([c,u]of m)u.distance=Math.hypot(u.x+.5-r.x,u.y+.5-r.y)/2**t,h.push(u);h.sort(Th);for(u of h)c=`${u.x}/${u.y}`,Y.get(e).has(c)||Y.get(e).set(c,{coords:u,request:new AbortController});$i(e)}function Ko(e){if(!M.get(e)||!I.get(e))return;kt.get(e)==null&&kt.set(e,M.get(e).position[1]);let t=me.get(e._map),r=t&&nr(t,I.get(e)),o=Number.isFinite(r)?e.options.terrainOffset??0:0;M.get(e).position[1]=kt.get(e)+(r??0)+o}function Ph(e,t){e.attributes.index?.data instanceof Uint8Array&&(e.attributes.index.data=new Uint16Array(e.attributes.index.data));let r,o,i;for(r in e.attributes)o=e.attributes[r],o.size||=1,o.count=o.data.length/o.size,o.indexFormat=o.data instanceof Uint32Array?"uint32":"uint16",i=o.buffer,o.buffer=t.createBuffer({size:Math.max(4,o.data.byteLength),usage:r==="index"?GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST}),t.queue.writeBuffer(o.buffer,0,o.data),i?.destroy();e.device=t,e.drawRange.count=e.attributes.index?.count||e.attributes.position.count}function Sh(e,t){let r,o;for(r in e)r!=="baseTexture"&&r!=="metalTexture"&&r!=="emissiveTexture"&&r!=="occlusionTexture"||(o=e[r],!(!o||o.device===t)&&(o.device=t,o.texture=t.createTexture({size:[o.image.width,o.image.height],format:o.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),o.sampler=t.createSampler(o.samplerOptions),o.uploaded=null))}function kh(e,t){let r=O.get(t),o;if(e.geometry&&e.geometry.device!==v.get(r).device){let i=e.geometry,n=e.program._layerMaterial,a=v.get(r).device;Ph(i,a),e.bindGroup=null,e.boundTextures?e.boundTextures.length=0:e.boundTextures=[],Sh(n,a),e.program.pipelineCache.clear(),e.program=Ge(t,n),e.device=a}e.texture&&e.texture.device!==v.get(r).device&&(o=e.texture,o.device=v.get(r).device,o.texture=v.get(r).device.createTexture({size:[e.texture.image.width,e.texture.image.height],format:e.texture.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),o.sampler=v.get(r).device.createSampler(o.samplerOptions),o.uploaded=null)}var Qo=new WeakMap;function Ch(e){let t=e.getContainer();if(t.querySelector(".leaflet-webgpu-warning"))return;let r=document.createElement("div");r.className="leaflet-webgpu-warning",r.setAttribute("role","alert"),r.style.cssText="position:absolute;z-index:1000;top:50%;left:50%;transform:translate(-50%,-50%);max-width:calc(100% - 32px);box-sizing:border-box;padding:12px 16px;border:1px solid #c98b24;border-radius:6px;background:#fff8e6;box-shadow:0 3px 12px #0005;color:#30251d;font:14px/1.5 sans-serif;text-align:center;pointer-events:auto",r.append("WebGPU is not available in this browser or device. ");let o=document.createElement("a");o.href="https://developer.mozilla.org/en-US/docs/Web/API/WebGPU_API#browser_compatibility",o.target="_blank",o.rel="noopener noreferrer",o.textContent="Learn more",r.append(o),t.append(r)}function Sr(e,t,r){throw Ch(r),ut.get(t).reject(e),te.delete(r),e}async function _h(e,t){let r;try{r=await navigator.gpu.requestAdapter()}catch(o){Sr(o,e,t)}return r||Sr(new Error("Unable to acquire a WebGPU adapter"),e,t),r}async function Eh(e,t,r){try{return await e.requestDevice()}catch(o){Sr(o,t,r)}}function zh(e){let t=Qo.get(e.currentTarget),r=te.get(t);if(v.get(r)?.device!==e.currentTarget||!F.get(r))return;let o;for(o of F.get(r))o.fire("error",{error:e.error})}function Ah([e,t]){let r=Qo.get(t),o=te.get(r);if(!o||v.get(o)?.device!==t)return;let i=new Error(`WebGPU device lost: ${e.message||e.reason}`),n;for(n of F.get(o))n.fire("error",{error:i})}function Rh(){return{position:[0,0,0],up:[0,1,0],target:[0,0,0],x:[0,0,0],y:[0,0,0],z:[0,0,0],viewMatrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],projectionMatrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],projectionViewMatrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],viewTransform:new DOMMatrix,projectionTransform:new DOMMatrix,projectionViewTransform:new DOMMatrix,fov:45,aspect:1,near:.1,far:1e4}}var ei=new Float32Array(20);ei[0]=ei[5]=ei[10]=ei[15]=1;function Oh(e,t){let r=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"comparison"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}}]}),o=v.get(e).device.createBuffer({size:80,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),i=v.get(e).device.createSampler({compare:"less-equal",minFilter:"linear",magFilter:"linear"}),n=v.get(e).device.createBuffer({size:32,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});v.get(e).sunlight={layout:r,buffer:o,sampler:i,lights:n,size:0},v.get(e).device.queue.writeBuffer(o,0,ei),In(e,1);let a=document.createElement("canvas");a.width=1,a.height=1,v.get(e).roofFallbackTexture={device:t,texture:t.createTexture({size:[1,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),sampler:t.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),image:a,format:"rgba8unorm",srgb:!1,uploaded:null}}var eo=new WeakMap;var ns=[];function Dh(){let e=ns.shift();eo.set(e,!1),!(O.get(e)!==e||!v.get(e))&&(e._map._animatingZoom?E(e):lr(e))}function Vi(){let e=this;eo.get(e)||(eo.set(e,!0),ns.push(e),queueMicrotask(Dh))}var ti=new WeakMap;function Zi(){ti.set(this,null)}var as=[];function Ih(){let e=as.shift();O.get(e)===e&&v.get(e)&&lr(e)}function qi(e){let t=this._map;e&&!Ze.get(this)&&(Ze.set(this,{from:t.getCenter(),zoom:t.getZoom(),to:e.center,targetZoom:e.zoom,start:performance.now()}),t.getContainer().classList.add("leaflet-camera-zoom")),as.push(this),queueMicrotask(Ih)}function Hi(){let e=this,t;if(de.get(e))for(t of de.get(e).keys())t.finish();de.set(e,null),Ze.set(e,null),se.delete(e._map),e._map.getContainer().classList.remove("leaflet-camera-zoom"),xn(e._map),ti.set(e,null),E(e)}function Gh(e,t,r){ir.set(e,null),r.className="leaflet-3d",r.style.cssText="position:absolute;top:0;left:0;z-index:1;pointer-events:none",r.setAttribute("role","img"),r.setAttribute("aria-label",e.options.ariaLabel??"3D scene"),t.getPane("mapPane").before(r),t.on("move zoom rotate pitch resize viewreset layeradd layerremove",Vi,e),t.on("zoomstart",Zi,e),t.on("zoomanim",qi,e),t.on("zoomend",Hi,e)}async function Uh(e,t){let r=document.createElement("canvas");navigator.gpu||Sr(new Error("Layer3D requires WebGPU"),e,t);let o=await _h(e,t),i=await Eh(o,e,t);Qo.set(i,t),i.addEventListener("uncapturederror",zh),Promise.all([i.lost,Promise.resolve(i)]).then(Ah);let n=r.getContext("webgpu");n||(i.destroy(),Sr(new Error("Unable to create a WebGPU canvas context"),e,t));let a=navigator.gpu.getPreferredCanvasFormat();n.configure({device:i,format:a,alphaMode:"premultiplied"}),t.getContainer().querySelector(".leaflet-webgpu-warning")?.remove(),O.set(e,e),F.set(e,new Set),ie.set(e,I.get(e)),oe.set(e,Ee()),ee.set(e,Rh()),v.set(e,{device:i,context:n,format:a,canvas:r,dpr:Math.min(window.devicePixelRatio,2)}),Oh(e,i),Gh(e,t,r)}async function ri(e,t){let r=te.get(t);ut.get(r)&&await ut.get(r).promise,r||(r=e,ut.set(e,Promise.withResolvers()),ut.get(e).promise.catch(Ye),te.set(t,r),await Uh(e,t),ut.get(e).resolve(),ut.delete(r),lr(r),te.set(t,r));let o=t.options.crs.project(ie.get(r)),i=t.options.crs.project(I.get(e)),n=Math.cos(ie.get(r).lat*B);kt.get(e)==null&&kt.set(e,M.get(e).position[1]),M.get(e).position[0]=(i.x-o.x)*n,M.get(e).position[1]=kt.get(e),M.get(e).position[2]=-(i.y-o.y)*n,Ko(e),M.get(e).scale.fill(n/Math.cos(I.get(e).lat*B)),O.set(e,r),v.set(e,v.get(r)),oe.set(e,oe.get(r)),ee.set(e,ee.get(r)),F.get(r).add(e),q(M.get(e),oe.get(r)),jt(M.get(e),kh,e),E(r),(U.get(e)&&A.get(e)!=="raster"||X.get(e))&&Qr(e)}var je=new WeakMap;$();L();function Nh(e,t){let r=new Float32Array(e.length),o,i,n,a,s,m,f,p,c,l,u,h,x,g,y,w;for(o=0;o<(t?.length||e.length/3);o+=3)for(i=t?t[o]:o,n=t?t[o+1]:o+1,a=t?t[o+2]:o+2,s=e[n*3]-e[i*3],m=e[n*3+1]-e[i*3+1],f=e[n*3+2]-e[i*3+2],p=e[a*3]-e[i*3],c=e[a*3+1]-e[i*3+1],l=e[a*3+2]-e[i*3+2],h=m*l-f*c,x=f*p-s*l,g=s*c-m*p,u=0;u<3;u++)y=u===0?i:u===1?n:a,r[y*3]+=h,r[y*3+1]+=x,r[y*3+2]+=g;for(o=0;o<r.length;o+=3)for(w=Math.hypot(r[o],r[o+1],r[o+2])||1,u=0;u<3;u++)r[o+u]/=w;return r}function df(e,t){e.geometry?.attributes.position&&t.push(e);let r;for(r of e.children)df(r,t)}function oi(e,t){if(!je.get(e))return;let r=[];df(je.get(e),r);let o,i,n,a,s,m,f,p,c,l,u,h,x,g,y,w,S,T,P,R;if(!Be.get(t)||!e.options.terrainConform){for(o of r)i=o.geometry._terrainBasePositions,i&&(n=o.geometry,a=n.attributes.position,a.data.set(i),o.device.queue.writeBuffer(a.buffer,0,i),s=n._terrainBaseNormals,s&&(n.attributes.normal.data.set(s),o.device.queue.writeBuffer(n.attributes.normal.buffer,0,s)),Ce(n));return}Te(M.get(e));let Q=e._map,N=Q.options.crs,G=N.project(ie.get(O.get(e))),V=Math.cos(ie.get(O.get(e)).lat*B),le=N.scale(ge.get(t));for(o of r){for(n=o.geometry,m=n.attributes.position,n._terrainBasePositions||=m.data.slice(),f=n.attributes.normal,n._terrainBaseNormals||=f.data.slice(),m.data.set(n._terrainBasePositions),p=o.worldMatrix,c=new DOMMatrix(p).inverse().toFloat64Array(),l=0;l<m.data.length;l+=3)u=m.data[l],h=m.data[l+1],x=m.data[l+2],g=p[1]*u+p[5]*h+p[9]*x+p[13],y=Math.max(0,Math.min(1,1-(g-M.get(e).position[1])/8)),y&&(w=p[0]*u+p[4]*h+p[8]*x+p[12],S=p[2]*u+p[6]*h+p[10]*x+p[14],T=N.transformation.transform(new d.Point(G.x+w/V,G.y-S/V),le),P=nr(t,T),Number.isFinite(P)&&(R=(P-g)*y,m.data[l]+=c[4]*R,m.data[l+1]+=c[5]*R,m.data[l+2]+=c[6]*R));o.device.queue.writeBuffer(m.buffer,0,m.data),f.data.set(Nh(m.data,n.attributes.index?.data)),o.device.queue.writeBuffer(f.buffer,0,f.data),Ce(n)}E(e)}function Fh(e){return{addressModeU:e?.wrapS===33071?"clamp-to-edge":e?.wrapS===33648?"mirror-repeat":"repeat",addressModeV:e?.wrapT===33071?"clamp-to-edge":e?.wrapT===33648?"mirror-repeat":"repeat",magFilter:e?.magFilter===9728?"nearest":"linear",minFilter:e?.minFilter===9728||e?.minFilter===9984||e?.minFilter===9986?"nearest":"linear"}}function Yi(e,t,r=!1){let{backend:o,description:i,images:n,textures:a}=e;if(!t)return null;if((t.texCoord||0)!==0||t.extensions)throw new Error("Model textures currently require untransformed TEXCOORD_0 UVs");let s=v.get(o).device,m=`${t.index}:${r}`;if(!a.has(m)){let f=i.textures[t.index],p=i.samplers?.[f.sampler],c=n[f.source],l=r?"rgba8unorm-srgb":"rgba8unorm",u=Fh(p);a.set(m,{device:s,texture:s.createTexture({size:[c.width,c.height],format:l,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),sampler:s.createSampler(u),samplerOptions:u,format:l,srgb:r,image:c,flipY:!1,uploaded:null})}return a.get(m)}function Wh(e,t){let{backend:r}=e,o=t.pbrMetallicRoughness;return{color:o?.baseColorFactor?o.baseColorFactor.slice(0,3):[1,1,1],opacity:o?.baseColorFactor?.[3]??1,metallic:o?.metallicFactor??1,roughness:o?.roughnessFactor??1,baseTexture:Yi(e,o?.baseColorTexture,!0),metalTexture:Yi(e,o?.metallicRoughnessTexture),emissiveTexture:Yi(e,t.emissiveTexture,!0),occlusionTexture:Yi(e,t.occlusionTexture),emissive:t.emissiveFactor||[0,0,0],occlusionStrength:t.occlusionTexture?.strength??1,alphaMode:r.options.alphaMode||t.alphaMode||"OPAQUE",alphaCutoff:t.alphaCutoff??.5,doubleSided:t.doubleSided}}function jh(e,t,r){let o={backend:e,description:t,images:r,textures:new Map,materials:[],active:new Set,resources:[]},i;for(i of t.materials||sr)o.materials.push(Wh(o,i));return o}var $h=[0,0,0,1];var Vh=[1,1,1];var Zh=[0,0,0];function qh(e){if(e.matrix)return Array.from(e.matrix);let[t,r,o,i]=e.rotation||$h,[n,a,s]=e.scale||Vh;return[(1-2*(r*r+o*o))*n,2*(t*r+o*i)*n,2*(t*o-r*i)*n,0,2*(t*r-o*i)*a,(1-2*(t*t+o*o))*a,2*(r*o+t*i)*a,0,2*(t*o+r*i)*s,2*(r*o-t*i)*s,(1-2*(t*t+r*r))*s,0,...e.translation||Zh,1]}function Hh(e,t,r){let o=e.materials[t.material]||{color:[1,1,1],metallic:1};if((o.baseTexture||o.metalTexture||o.emissiveTexture||o.occlusionTexture)&&!r.uv)throw new Error("Textured model mesh requires UV coordinates");let i=Ge(e.backend,o);e.resources.push(i);let n=v.get(e.backend).device,a,s;for([a,s]of Object.entries(r))s.size||=1,s.count=s.data.length/s.size,s.indexFormat=s.data instanceof Uint32Array?"uint32":"uint16",s.buffer=n.createBuffer({size:Math.max(4,s.data.byteLength),usage:a==="index"?GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST}),n.queue.writeBuffer(s.buffer,0,s.data);let m={device:n,attributes:r,drawRange:{start:0,count:r.index?.count||r.position.count}};return e.resources.push(m),{device:n,geometry:m,program:i}}function hf(e,t){let{backend:r,description:o,active:i}=e;if(i.has(t))throw new Error("Cyclic glTF nodes");let n=o.nodes[t];if(!n)throw new Error("Invalid glTF node");i.add(t);let a={...Ee(),name:n.name};a.matrix=qh(n);let s,m,f,p,c;if(n.mesh!==void 0)for(s of o.meshes[n.mesh].primitives)m=structuredClone(s.preparedAttributes),f=Hh(e,s,m),p={...Ee(),device:f.device,geometry:f.geometry,program:f.program,fadeDuration:250,id:vt.value++,renderOrder:0},p.name=o.meshes[n.mesh].name,p.extras=n.extras||{},q(p,a);for(c of n.children||sr)q(hf(e,c),a);return i.delete(t),a}function Yh(e){let t,r;for(t of e.resources)if(t.attributes)for(r of Object.values(t.attributes))r.buffer.destroy();else t.pipelineCache.clear()}function Xh(e,t){let r=[],o;try{for(o of t.nodes)r.push(hf(e,o))}catch(i){throw Yh(e),i}return r}function Jh(e){let t=je.get(e);if(e.options.rotation){let[r,o=r,i=r]=e.options.rotation;t.rotation[0]=r,t.rotation[1]=o,t.rotation[2]=i}if(e.options.scale){let[r,o=r,i=r]=e.options.scale;t.scale[0]=r,t.scale[1]=o,t.scale[2]=i}}async function Kh(e){await we.get(e).promise;let t=new URL(We.get(e),document.baseURI).href,{description:r,images:o}=await Jo(e._map,e.options.workerUrl,{type:"model",url:t});await we.get(e).promise,await se.get(e._map);let i=jh(e,r,o),n=r.scenes?.[r.scene||0];if(!n)throw new Error("Missing glTF scene");let a=Xh(i,n),s={...Ee(),id:t,extras:r.extras||{}};if(!a.length)throw new Error("Expected a glTF model with a non-empty scene");let m;for(m of a)q(m,s);je.set(e,s),Jh(e),q(je.get(e),M.get(e)),oi(e,me.get(e._map))}async function Qh(e){try{return M.set(e,Ee()),ne.set(e,{origin:[0,0,0],direction:[0,0,0],inverse:new DOMMatrix,meshes:[]}),(ae.get(e)||X.get(e))&&(Qa.set(e,M.get(e)),ae.get(e)&&U.set(e,await Xr(e))),e._map&&(await ri(e,e._map),we.get(e).resolve()),We.get(e)&&await Kh(e),O.get(e)&&E(e),e.fire("ready"),e}catch(t){throw e.fire("error",{error:t}),t}}function eg(e,t,r,o){return o?`Unable to load: ${typeof o=="string"?o:o.message}`:`${t} loaded ${We.get(e)?"models":"elements"} in the current area${r?`; ${r} blocks loading`:""}`}function tg(e,t,r,o){let i=Mr.get(e),n=We.get(e),a=je.get(e);n&&(t=a?1:0);let s=r||(n?!a:!U.get(e)&&!X.get(e)),m=t.toLocaleString("en-US"),f=o?"Error":`${m}${s?"\u2026":""}`,p=eg(e,m,r,o);i.textContent!==f&&(i.textContent=f),i.title!==p&&(i.title=p),o&&i.getAttribute("role")!=="alert"?i.setAttribute("role","alert"):!o&&i.hasAttribute("role")&&i.removeAttribute("role")}function gf(e){let t=e.target,r=Mr.get(t);if(!t._map)return;e.type==="add"&&qo(t,r);let o=0,i=0,n=e.error,a;if(Number.isFinite(e.loaded))o=e.loaded,i=e.pending??0,n||=e.errors?.[0];else for(a of Y.get(t).values())o+=a.buildings??0,!a.done&&!a.error&&i++,n||=a.error;tg(t,o,i,n)}function Et(e,t=Eo){Tr.set(e,!0),d.Util.setOptions(e,{ariaLabel:"3D scene",...t}),A.set(e,"3d");let r=!X.get(e)&&/\.(glb|gltf)(?:[?#]|$)/i.test(e.options.url);if(We.set(e,r?e.options.url:null),ae.set(e,e.options.url&&!r&&!X.get(e)?new URL(e.options.url,document.baseURI).href:null),Br.set(e,new Map),e.options.center&&I.set(e,new d.LatLng(e.options.center[0],e.options.center[1])),Y.set(e,new Map),Xe.set(e,0),ae.get(e)||X.get(e)||r){let o=d.DomUtil.create("small","layer-count");o.style.cssText="float:right;margin-left:12px;color:#555;font-variant-numeric:tabular-nums",Mr.set(e,o),e.on("add error",gf),e.on("ready progress",d.Util.throttle(gf,250,e))}we.set(e,Promise.withResolvers()),re.set(e,Promise.resolve().then(Qh.bind(null,e))),re.get(e).catch(Ye)}function rg(){this.keys.clear()}var Xi={KeyW:[1,0],ArrowUp:[1,0],KeyS:[-1,0],ArrowDown:[-1,0],KeyD:[0,1],ArrowRight:[0,1],KeyA:[0,-1],ArrowLeft:[0,-1]};L();Oi();dr();J();Z();function og(e){let t=this.layer._map;if(e.type==="pointerdown"){if(e.button!==0||e.target.closest(".leaflet-control"))return;this.dragX=e.clientX,this.dragY=e.clientY,this.dragging=!0,t.getContainer().setPointerCapture(e.pointerId)}else this.dragging&&e.type==="pointermove"?(Ne(t,Math.max(20,Math.min(85,_(t)-(e.clientY-this.dragY)*.2)),k(t)-(e.clientX-this.dragX)*.25),this.dragX=e.clientX,this.dragY=e.clientY):this.dragging=!1}var Ji=[["body",0,0,0],["leg",-.09,.9,1],["leg",.09,.9,-1],["arm",-.25,1.42,-1],["arm",.25,1.42,1]];$();function zt(e){let{layer:t,state:r}=this,o=t._map,i=o.options.crs,n=I.get(t),a=M.get(t),s=i.project(n),m=Math.cos(n.lat*B),f=i.project(r.latlng),p=ye(o,r.latlng)||0;return e[0]=(f.x-s.x)*m,e[1]=p+(r.height??0)-a.position[1],e[2]=-(f.y-s.y)*m,e}function ss(){let[e,t,r]=zt.call(this,this.local),o=-this.state.heading,i=Math.cos(o),n=Math.sin(o),a,s,m,f,p;for(a=0;a<Ji.length;a++)[,s,m,f]=Ji[a],p=this.meshes[a],p.position[0]=e+s*i,p.position[1]=t+m,p.position[2]=r-s*n,p.rotation[0]=f*this.swing*Math.sin(this.state.phase),p.rotation[1]=o;E(this.layer)}function ig(){this.meshes&&ss.call(this)}function ms(){let e=this.layer._map;cancelAnimationFrame(this.frame),this.keys.clear(),this.dragging=!1,this.state.height=this.verticalSpeed=0,d.DomEvent.off(document,"keydown keyup",this.onKey),d.DomEvent.off(window,"blur",this.onBlur);let t,r;if(this.meshes)for(t of this.meshes)Ie(this.layer,t);if(this.meshes=null,this.button.setAttribute("aria-pressed","false"),this.button.style.background="#fff",this.hint.style.display="none",!(!e||!this.saved)){d.DomEvent.off(e.getContainer(),"pointerdown pointermove pointerup pointercancel",this.onPointer),e.off("terrainchange",this.onTerrain),e.options.scrollWheelZoom=this.saved.scrollWheelZoom;for(r of this.saved.handlers)e[r].enable();e.setView(this.state.latlng,this.saved.zoom,{animate:!1}),Vt(e,this.saved.pitch),this.saved=null}}function ng(e){if(e.type==="keyup"&&e.code==="Space"&&this.keys.delete("Space"),!(e.target.closest?.("input:not([type=checkbox], [type=radio]), select, textarea, [contenteditable]")||e.ctrlKey||e.altKey||e.metaKey)){if(e.type==="keydown"&&e.code==="Escape"){this.stop();return}!Xi[e.code]&&e.code!=="Space"||(e.preventDefault(),e.type==="keydown"?this.keys.add(e.code):this.keys.delete(e.code))}}$();L();var ag=["dragging","keyboard","doubleClickZoom","boxZoom"];J();Z();Oi();function C(e,t,r,o){return[[e,r],[t,r],[t,o],[e,o]]}var Ht=[.16,.2,.32];var yf=[.75,.2,.15];var dt=[.85,.64,.5];var Yt=[.08,.07,.06];var fs={body:[[C(-.17,.17,-.1,.1),.82,.95,Ht],[C(-.19,.19,-.11,.11),.95,1.44,yf],[C(-.05,.05,-.05,.05),1.44,1.5,dt],[C(-.1,.1,-.11,.1),1.5,1.72,dt],[C(-.105,.105,-.06,.115),1.58,1.77,Yt],[C(-.105,.105,-.115,-.06),1.7,1.77,Yt]],leg:[[C(-.07,.07,-.07,.07),-.82,0,Ht],[C(-.07,.07,-.17,.07),-.9,-.82,Yt]],arm:[[C(-.05,.05,-.05,.05),-.55,0,yf],[C(-.045,.045,-.045,.045),-.66,-.55,dt]]};function Ki(e,t,r,o,i,n,a){let s=i[0]-o[0],m=i[1]-o[1],f=i[2]-o[2],p=n[0]-o[0],c=n[1]-o[1],l=n[2]-o[2],u=m*l-f*c,h=f*p-s*l,x=s*c-m*p,g=Math.hypot(u,h,x),y,w;for(y=0;y<3;y++)w=y===0?o:y===1?i:n,e.push(...w),t.push(u/g,h/g,x/g),r.push(...a)}function ii(e){let t=[],r=[],o=[],i=[],n=[],a,s,m,f,p,c,l,u,h;for([a,s,m,f,p=a]of e){i.length=n.length=0;for([c,l]of a)i.push([c,s,l]);for([c,l]of p)n.push([c,m,l]);for(u=0;u<a.length;u++)h=(u+1)%a.length,Ki(t,r,o,i[u],i[h],n[h],f),Ki(t,r,o,i[u],n[h],n[u],f);for(u=1;u<a.length-1;u++)Ki(t,r,o,n[0],n[u],n[u+1],f),Ki(t,r,o,i[0],i[u+1],i[u],f)}return{position:t,normal:r,color:o}}function sg(e){return this.keys.has("Space")?(this.verticalSpeed=6,this.state.height+=this.verticalSpeed*e,!0):!this.verticalSpeed&&!this.state.height?!1:(this.state.height=Math.max(0,this.state.height+this.verticalSpeed*e-9.81*e*e/2),this.verticalSpeed=this.state.height>0?this.verticalSpeed-9.81*e:0,!0)}L();var xf=new WeakMap;function mg(e,t,r){let o,i,n;for(o=Math.floor(Math.min(t[0],t[3],t[6])/8);o<=Math.floor(Math.max(t[0],t[3],t[6])/8);o++)for(i=Math.floor(Math.min(t[2],t[5],t[8])/8);i<=Math.floor(Math.max(t[2],t[5],t[8])/8);i++)n=o+","+i,e.has(n)||e.set(n,[]),e.get(n).push(r)}function ps(e){let t=xf.get(e.geometry);if(t)return t;let r=e.worldMatrix,{position:o,index:i,normal:n,uv:a,instanceOffset:s}=e.geometry.attributes,m=oa(o,i),f=m*(s?.count??1),p=[],c=[],l=new Map,u=[0,0,0],h=[0,0,0],x=[0,0,0],g=[],y,w,S,T,P,R,Q,N,G,V,le,be,at,ke,gt,Ve=-1/0;for(y=0;y<f;y+=3)w=i?i.data[y%m]:y%m,!(e.program.nightLight&&a&&a.data[w*2]<=2)&&(ia(e,y,u,h,x),g[0]=r[0]*u[0]+r[4]*u[1]+r[8]*u[2]+r[12],g[1]=r[1]*u[0]+r[5]*u[1]+r[9]*u[2]+r[13],g[2]=r[2]*u[0]+r[6]*u[1]+r[10]*u[2]+r[14],g[3]=r[0]*h[0]+r[4]*h[1]+r[8]*h[2]+r[12],g[4]=r[1]*h[0]+r[5]*h[1]+r[9]*h[2]+r[13],g[5]=r[2]*h[0]+r[6]*h[1]+r[10]*h[2]+r[14],g[6]=r[0]*x[0]+r[4]*x[1]+r[8]*x[2]+r[12],g[7]=r[1]*x[0]+r[5]*x[1]+r[9]*x[2]+r[13],g[8]=r[2]*x[0]+r[6]*x[1]+r[10]*x[2]+r[14],T=g[3]-g[0],P=g[4]-g[1],R=g[5]-g[2],Q=g[6]-g[0],N=g[7]-g[1],G=g[8]-g[2],V=P*G-R*N,le=T*N-P*Q,be=R*Q-T*G,at=Math.hypot(V,be,le),!(!at||Math.abs(be)>.9*at)&&(n&&(S=w*3,(r[0]*n.data[S]+r[4]*n.data[S+1]+r[8]*n.data[S+2])*V+(r[2]*n.data[S]+r[6]*n.data[S+1]+r[10]*n.data[S+2])*le<0&&(V=-V,le=-le)),ke=Math.hypot(V,le),gt=c.length/2,p.push(...g),Ve=Math.max(Ve,g[0],g[3],g[6]),c.push(V/ke,le/ke),mg(l,g,gt)));return t={tri:Float32Array.from(p),nrm:Float32Array.from(c),cells:l,maxX:Ve,origin:[r[12],r[13],r[14]]},xf.set(e.geometry,t),t}function cs(e,t,r,o,i,n,a){let s=t*9,m=e[s+3]-e[s],f=e[s+4]-e[s+1],p=e[s+5]-e[s+2],c=e[s+6]-e[s],l=e[s+7]-e[s+1],u=e[s+8]-e[s+2],h=-a*l,x=a*c-n*u,g=n*l,y=m*h+f*x+p*g;if(Math.abs(y)<1e-9)return-1;let w=r-e[s],S=o-e[s+1],T=i-e[s+2],P=(w*h+S*x+T*g)/y;if(P<0||P>1)return-1;let R=S*p-T*f,Q=T*m-w*p,N=w*f-S*m,G=(n*R+a*N)/y;return G<0||P+G>1?-1:(c*R+l*Q+u*N)/y}function fg(e,t,r,o,i,n,a,s){let m,f,p,c;for(m=Math.floor(t/8);m<=a;m++)if(f=e.cells.get(`${m},${s}`),!!f)for(p of f)i.has(p)||(i.add(p),c=cs(e.tri,p,t,r,o,1,0),c>1e-4&&n.push(c))}function pg(e){let t,r,o;for(t=1;t<e.length;t++){for(o=e[t],r=t-1;r>=0&&e[r]>o;)e[r+1]=e[r--];e[r+1]=o}let i=0,n=-1/0;for(o of e)o-n>1e-4&&i++,n=o;return i}function vf(e,t,r,o,i,n){let a=e.geometry;if(!e.visible||!a?.attributes?.position?.data||e.program?.depthTest===!1)return!1;a.bounds||Ce(a);let s=a.bounds,m=e.worldMatrix,f=s.center,p=m[0]*f[0]+m[4]*f[1]+m[8]*f[2]+m[12],c=m[1]*f[0]+m[5]*f[1]+m[9]*f[2]+m[13],l=m[2]*f[0]+m[6]*f[1]+m[10]*f[2]+m[14],u=s.radius*Math.max(Math.hypot(m[0],m[1],m[2]),Math.hypot(m[4],m[5],m[6]),Math.hypot(m[8],m[9],m[10]));if(Math.hypot(p-t,c-r,l-o)>u)return!1;let h=ps(e),x=Math.floor(h.maxX/8);if(t>=h.maxX)return!1;let g=Math.floor(o/8),y=n;return y.length=0,i.clear(),fg(h,t,r,o,i,y,x,g),pg(y)%2===1}function cg(e,t,r,o,i,n){o<1e-6?(e.normal[0]=-i,e.normal[1]=-n):(e.normal[0]=t/o,e.normal[1]=r/o)}function ls(e,t,r,o,i,n,a,s){let m=Lt.get(e);if(!m?.mesh||!m.trips.length)return!1;let f=m.collisionBounds;if(!f){f=m.collisionBounds={radius:0,minY:1/0,maxY:-1/0};let V,le,be,at;for(V=0;V<m.template.position.length;V+=3)le=m.template.position[V],be=m.template.position[V+1],at=m.template.position[V+2],f.radius=Math.max(f.radius,Math.hypot(le,at)),f.minY=Math.min(f.minY,be),f.maxY=Math.max(f.maxY,be)}let p=M.get(e),c=m.position||={},l=Math.max(p.scale[0],p.scale[1],p.scale[2]),u=f.radius*l+.35,h,x,g,y,w,S,T,P,R,Q,N,G;for(h of m.trips)if({x:N,y:R,z:G}=zo(m,h,c),R=p.position[1]+(R+f.minY)*p.scale[1],Q=p.position[1]+(c.y+f.maxY)*p.scale[1],!(R>r+1.7*l||Q<r+.2*l)&&(N=p.position[0]+N*p.scale[0],G=p.position[2]+G*p.scale[2],x=(N-t)*i+(G-o)*n,g=Math.max(0,Math.min(a,x)),y=t+g*i-N,w=o+g*n-G,S=y*y+w*w,!(S>=u*u))){if(a===0){s.found=!0,P=Math.hypot(t-N,o-G),s.normal[0]=P?(t-N)/P:0,s.normal[1]=P?(o-G)/P:0;continue}T=Math.max(0,x-Math.sqrt(u*u-S)),!(T>a||T>=s.best)&&(s.best=T,s.found=!0,P=Math.hypot(t+T*i-N,o+T*n-G),cg(s,t+T*i-N,o+T*n-G,P,i,n))}return s.found}function wf(e){let{layer:t,local:r,hitData:o}=e,i=O.get(t);if(!i||!F.get(i))return!1;Te(oe.get(t));let n=M.get(t),a=zt.call(e,r),s=n.position[0]+a[0]*n.scale[0],m=n.position[1]+a[1]*n.scale[1],f=n.position[2]+a[2]*n.scale[2],p=F.get(i),c,l,u,h;for(c of p)if(!(c===t||A.get(c)==="terrain")){if(A.get(c)==="traffic"){if(o.best=0,o.found=!1,ls(c,s,m,f,0,0,0,o))return!0;continue}for(h=o.nodes,h.length=0,M.get(c)&&h.push(M.get(c));h.length;)if(l=h.pop(),!!l.visible){if(l.geometry&&(vf(l,s,m+.45*n.scale[1],f,o.seen,o.intersections)||vf(l,s,m+1.35*n.scale[1],f,o.seen,o.intersections)))return!0;for(u of l.children)h.push(u)}}return!1}function us(){if(!this.saved||!wf(this))return!1;let e=this.layer._map,t=this.state.latlng,r=this.state.height,o,i,n;for(o=.5;o<=20;o+=.5)for(i=0;i<Math.PI*2;i+=Math.PI/4)if(n=new d.LatLng(t.lat+Math.cos(i)*o/111320,t.lng+Math.sin(i)*o/(111320*Math.cos(t.lat*Math.PI/180))),this.state.latlng=n,this.state.height=0,!wf(this))return this.verticalSpeed=0,e.setView(n,e.getZoom(),{animate:!1}),!0;return this.state.latlng=t,this.state.height=r,!1}function ds(e){return Math.atan2(Math.sin(e),Math.cos(e))}function lg(e,t){return e===t||qt.get(e)==="terrain"||qt.get(e)==="traffic"}function ug(e){let t=ne.get(this.layer),r=zt.call(this,this.local),o=M.get(this.layer),i=o.position[0]+r[0]*o.scale[0],n=o.position[1]+r[1]*o.scale[1],a=o.position[2]+r[2]*o.scale[2];if(n>e||this.verticalSpeed>0)return;Te(oe.get(this.layer)),t.origin[0]=i,t.origin[1]=e+.01,t.origin[2]=a,t.direction[0]=0,t.direction[1]=-1,t.direction[2]=0,t.meshes.length=0;let s,m;for(s of F.get(O.get(this.layer)))lg(s,this.layer)||A.get(s)==="raster"||s.options.nightLight||jt(M.get(s),aa,t.meshes);for(m of na(t,t.meshes)){if(m.point[1]<n-.001)break;this.state.height+=(m.point[1]-n)/o.scale[1],this.verticalSpeed=0;break}t.meshes.length=0}L();$();function dg(e,t,r,o,i,n){let{dx:a,dz:s,seen:m}=r,f,p,c;for(f of e)if(!(m.has(f)||a*t.nrm[f*2]+s*t.nrm[f*2+1]>=0))for(m.add(f),p=.4;p<2;p+=1.1)c=cs(t.tri,f,o,i+p,n,a,s),c>=0&&c<r.best&&(r.best=c,r.found=!0,r.normal[0]=t.nrm[f*2],r.normal[1]=t.nrm[f*2+1])}function hg(e,t){if(!e.visible)return!0;if(!e.geometry?.attributes?.position?.data||e.program?.depthTest===!1)return;e.geometry.bounds||Ce(e.geometry);let r=e.worldMatrix,{center:o,radius:i}=e.geometry.bounds,{x:n,y:a,z:s,dx:m,dz:f,reach:p}=t;if(Math.hypot(r[0]*o[0]+r[4]*o[1]+r[8]*o[2]+r[12]-n,r[2]*o[0]+r[6]*o[1]+r[10]*o[2]+r[14]-s)>i*Math.hypot(r[0],r[1],r[2])+p)return;let c=ps(e),l=n-r[12]+c.origin[0],u=a-r[13]+c.origin[1],h=s-r[14]+c.origin[2];t.seen.clear();let g,y,w;for(g=Math.floor(Math.min(l,l+m*p)/8);g<=Math.floor(Math.max(l,l+m*p)/8);g++)for(y=Math.floor(Math.min(h,h+f*p)/8);y<=Math.floor(Math.max(h,h+f*p)/8);y++)w=c.cells.get(g+","+y),w&&dg(w,c,t,l,u,h)}function gg(e,t,r,o,i,n,a,s){Te(oe.get(e)),s.x=t,s.y=r,s.z=o,s.dx=i,s.dz=n,s.reach=a,s.best=a,s.found=!1;let m;for(m of F.get(O.get(e)))if(!(m===e||A.get(m)==="terrain")){if(A.get(m)==="traffic"){ls(m,t,r,o,i,n,a,s);continue}jt(M.get(m),hg,s)}return s.found?s.normal:null}function Lf(e,t,r){let o=Math.hypot(e,t);return o>1e-6&&gg(this.layer,r[0],r[1],r[2],e/o,-t/o,o+.3,this.hitData)}function yg(e,t){let r=e*this.speed*t,{lat:o,lng:i}=this.state.latlng,{position:n,scale:a}=M.get(this.layer),s=Math.sin(this.state.heading)*r,m=Math.cos(this.state.heading)*r,f=zt.call(this,this.local),p;for(p=0;p<f.length;p++)f[p]=n[p]+a[p]*f[p];let c=Lf.call(this,s,m,f);if(c){let l=s*c[0]-m*c[1];s-=l*c[0],m+=l*c[1],Lf.call(this,s,m,f)&&(s=m=0)}this.state.latlng=new d.LatLng(o+m/111320,i+s/(111320*Math.cos(o*B))),this.state.phase+=Math.hypot(s,m)/1.6*Math.PI}po();$();Z();dr();J();function xg(e,t,r){let o=this.layer._map;if(e||t){let n=k(o)*B,a=ds(-this.state.heading-n);Math.abs(a)>.001&&Ne(o,_(o),(n+a*Math.min(1,r*4))*et),o.setView(this.state.latlng,o.getZoom(),{animate:!1})}let i=e?.9:0;return Math.abs(this.swing-i)>.001?(this.swing+=(i-this.swing)*Math.min(1,r*10),!0):!1}function vg(e,t,r,o,i,n){o&&(e.state.heading=ds(e.state.heading+o*2.5*i),n=!0),r&&(yg.call(e,r,i),n=!0),n&&ug.call(e,t),xg.call(e,r,o,i)&&(n=!0),n&&ss.call(e)}function wg(e){let t=this.layer;this.frame=requestAnimationFrame(this.step);let r=Math.min(.1,(e-(this.last??e))/1e3);if(this.last=e,!v.get(t))return;let o=!1,i,n;if(e>=this.nextClearanceCheck&&(this.nextClearanceCheck=e+250,us.call(this)&&(o=!0)),!this.meshes){this.meshes=[];for([i]of Ji)this.meshes.push(pr(t,ii(fs[i])));o=!0}let a=M.get(t).position[1]+zt.call(this,this.local)[1]*M.get(t).scale[1];sg.call(this,r)&&(o=!0);let s=0,m=0;for(n of this.keys)s+=Xi[n]?.[0]||0,m+=Xi[n]?.[1]||0;s=Math.sign(s),m=Math.sign(m),vg(this,a,s,m,r,o)}function hs(){let e=this.layer._map;if(this.saved||!e)return;this.state.latlng=e.getCenter(),this.state.height=this.verticalSpeed=0;let t=e.getSize().y*1.5/this.distance,r=Math.min(e.getMaxZoom(),Math.log2(t*tt*Math.cos(this.state.latlng.lat*B)/256)),o;this.saved={zoom:e.getZoom(),pitch:_(e),scrollWheelZoom:e.options.scrollWheelZoom,handlers:[]};for(o of ag)e[o]?.enabled()&&this.saved.handlers.push(o);for(o of this.saved.handlers)e[o].disable();e.options.scrollWheelZoom=this.saved.scrollWheelZoom&&"center",this.state.heading=-k(e)*B,e.setView(this.state.latlng,r,{animate:!1}),Vt(e,75),us.call(this),d.DomEvent.on(document,"keydown keyup",this.onKey),d.DomEvent.on(window,"blur",this.onBlur),d.DomEvent.on(e.getContainer(),"pointerdown pointermove pointerup pointercancel",this.onPointer),e.on("terrainchange",this.onTerrain),this.button.setAttribute("aria-pressed","true"),this.button.style.background="#e4e4e4",this.hint.style.display="",this.last=void 0,this.nextClearanceCheck=0,this.frame=requestAnimationFrame(this.step)}function Lg(){this.saved?ms.call(this):hs.call(this)}function bg(e,{speed:t,distance:r,...o}){let i=new d.Layer;qt.set(i,"walk"),Et(i,o);let n=new Set,a=d.DomUtil.create("div","leaflet-bar leaflet-control");a.style.cssText="display:flex;align-items:center;background:#fff;";let s=d.DomUtil.create("button","",a);s.type="button",s.title="Walk",s.setAttribute("aria-label","Walk"),s.setAttribute("aria-pressed","false"),s.textContent="\u{1F6B6}",s.style.cssText="width:30px;height:30px;padding:0;border:0;border-radius:4px;background:#fff;font-size:18px;line-height:30px;cursor:pointer;";let m=d.DomUtil.create("small","",a);m.style.cssText="display:none;padding:0 8px;color:#333;white-space:nowrap;",m.textContent="W/S: run \xB7 A/D: turn \xB7 hold Space: ascend \xB7 drag: look around \xB7 Esc: exit",d.DomEvent.disableClickPropagation(a);let f={layer:i,speed:t,distance:r,keys:n,container:a,button:s,hint:m,meshes:null,frame:null,last:void 0,nextClearanceCheck:0,swing:0,verticalSpeed:0,saved:null,hitData:null,local:null,state:e.walker={latlng:null,heading:0,phase:0,height:0}};Ka.set(i,f.state),f.step=wg.bind(f),f.onKey=ng.bind(f),f.onBlur=rg.bind(f),f.onPointer=og.bind(f),f.onTerrain=ig.bind(f),f.start=hs.bind(f),f.stop=ms.bind(f),f.toggle=Lg.bind(f),e._walk=f,d.DomEvent.on(s,"click",f.toggle)}function Mg(e){d.Util.setOptions(this,e),bg(this,this.options)}function Bg(e){let t=Ut.get(e);if(t?.control&&t.control!==this)throw this._map=null,new Error("Only one Walk control can be active per map");return t||(t={control:null,hitData:{x:0,y:0,z:0,dx:0,dz:0,reach:0,best:0,found:!1,seen:new Set,intersections:[],nodes:[],normal:[0,0]},local:[0,0,0]},Ut.set(e,t)),t.control=this,t.local.fill(0),t.hitData.seen.clear(),t.hitData.normal.fill(0),this._walk.hitData=t.hitData,this._walk.local=t.local,this._walk.layer.addTo(e),this._walk.container}function Tg(e){let t=Ut.get(e);t?.control===this&&(this._walk.stop(),this._walk.layer.remove(),t.control=null,t.hitData.seen.clear(),this._walk.hitData=null,this._walk.local=null)}d.Control.Walk=d.Control.extend({options:{position:"bottomright",speed:70,distance:20},initialize:Mg,onAdd:Bg,onRemove:Tg});var to=new WeakMap;var kr=new WeakMap;L();function Pg(){to.get(this).off(kr.get(this),this),to.set(this,null),kr.set(this,null)}var Cr=new WeakMap;L();function gs(e,t){let r=je.get(e);if(!M.get(e)||!ee.get(e))return null;let o,i,n,a,s,m,f;for(o of sa(e,t,M.get(e).children,!!r)){if(r){for(i=o.object;i&&i!==r;)i=i.parent;if(i===r)return{id:r.id,properties:r.extras,model:r,mesh:o.object,point:o.point}}if(n=o.object.extras?.featureFaces,!!n)for(a=0,s=n.length-1;a<=s;)if(m=a+s>>1,f=n[m],o.faceIndex<f.faceStart)s=m-1;else if(o.faceIndex>=f.faceEnd)a=m+1;else return{...f,mesh:o.object,point:o.point}}return null}function ni(e){Se.set(e,null),Ct(e,null),_t(e,null),e.fire("featurehover",{feature:null})}function kg(e,t){if(t.buttons||e._map.dragging?.moving()||e._map._animatingZoom){Se.get(e)&&ni(e);return}Se.set(e,gs(e,t)),Ct(e,Se.get(e)),_t(e,Se.get(e),t),e.fire("featurehover",{feature:Se.get(e),originalEvent:t})}function Cg(e){kg(this,e)}function _g(e,t){let r=gs(e,t);Se.set(e,r),Ct(e,r),_t(e,r,t),e.fire("featureclick",{feature:r,originalEvent:t})}function Eg(e){_g(this,e)}function zg(){ni(this)}async function Ag(e,t){try{await ri(e,t),we.get(e).resolve()}catch(r){e.fire("error",{error:r})}}function Qi(e,t){if(!I.get(e)){let r=t.getCenter();I.set(e,new d.LatLng(r.lat,r.lng))}(ae.get(e)||X.get(e)||e.options.tooltip||We.get(e))&&(Ae.set(e,t.getContainer()),Cr.get(e)||Cr.set(e,{mousemove:Cg,click:Eg,mouseleave:zg}),e.options.tooltip&&(Re.set(e,d.DomUtil.create("div","leaflet-3d-tooltip",Ae.get(e))),Re.get(e).hidden=!0,Re.get(e).setAttribute("role","tooltip"),Re.get(e).setAttribute("aria-live","polite"),Re.get(e).style.cssText="position:absolute;z-index:600;max-width:220px;padding:10px 12px;border:1px solid #6b5140;border-radius:6px;background:#fffaf0;box-shadow:0 3px 12px #0005;color:#30251d;font:13px/1.45 sans-serif;pointer-events:none"),d.DomEvent.on(Ae.get(e),Cr.get(e),e)),M.get(e)&&Ag(e,t)}var Xt=new WeakMap;var Je=new WeakMap;var Jt=new WeakMap;$();var ys={x:0,y:0};var Oe=new WeakMap;var he=new WeakMap;var At=new WeakMap;var en={size:[null,null],format:"r32float",usage:null};var xs={texture:null};var bf={bytesPerRow:null};var vs=[null,null];function Rg(e,t,r,o){let i,n,a;for(i=0;i<256;i++)for(n=0;n<256;n++)a=t[i*256+n],!(!Number.isFinite(a)||a<=-1e3)&&(e.elevations[r+i*o*256+n]=a,e.low=Math.min(e.low,a),e.high=Math.max(e.high,a))}function Og(e,t){let r=t.max.x-t.min.x+1,o=t.max.y-t.min.y+1,n={elevations:new Float32Array(r*o*65536).fill(-1e9),low:1/0,high:-1/0},a,s,m,f,p,c;for([a,s]of e)m=a.split("/"),f=Number(m[0]),p=Number(m[1]),c=(p-t.min.y)*256*r*256+(f-t.min.x)*256,Rg(n,s,c,r);return n}function Dg(e,t){let r=v.get(e).device;if(he.get(e)?.device===r)return he.get(e);let o=Xt.get(e),i=o.max.x-o.min.x+1,n=o.max.y-o.min.y+1,{elevations:a,low:s,high:m}=Og(rt.get(e),o);return Oe.get(e)&&j(e,Oe.get(e).texture),Oe.set(e,{texture:r.createTexture((en.size[0]=i*256,en.size[1]=n*256,en.usage=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST,en)),low:Number.isFinite(s)?s:Je.get(e),high:Number.isFinite(m)?m:Je.get(e)}),r.queue.writeTexture((xs.texture=Oe.get(e).texture,xs),a,(bf.bytesPerRow=i*1024,bf),(vs[0]=i*256,vs[1]=n*256,vs)),xs.texture=null,At.set(e,new Map),he.set(e,Ge(e,{baseTexture:t,unlit:!0,terrain:Oe.get(e),alphaMode:"BLEND",depthWrite:!0,doubleSided:e.options.doubleSided})),he.get(e)}var ws={size:null,usage:null};function Ig(e){let t=(e+1)**2,r=new Float32Array(t*3),o=new Float32Array(t*3),i=new Float32Array(t*2),n=new Uint16Array(e*e*6),a,s,m,f,p,c,l=0,u=0;for(a=0;a<=e;a++)for(s=0;s<=e;s++)r[l*3]=s/e,r[l*3+2]=a/e,o[l*3+1]=1,i[l*2]=s/e,i[l*2+1]=a/e,l++,a<e&&s<e&&(m=a*(e+1)+s,f=m+1,p=m+e+1,c=p+1,n[u++]=m,n[u++]=p,n[u++]=f,n[u++]=f,n[u++]=p,n[u++]=c);return{position:{size:3,data:r},normal:{size:3,data:o},uv:{size:2,data:i},index:{data:n}}}function Gg(e,t){let r=v.get(e).device,o=At.get(e).get(t);if(!o){o=Ig(t);let i,n;for([i,n]of Object.entries(o))n.size||=1,n.count=n.data.length/n.size,n.indexFormat="uint16",n.buffer=r.createBuffer((ws.size=Math.max(4,n.data.byteLength),ws.usage=i==="index"?GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,ws)),r.queue.writeBuffer(n.buffer,0,n.data);At.get(e).set(t,o)}return o}function Ug(e,t,r,o){let i=Je.get(e),n=Math.min(Oe.get(e).low,i)-i,a=Math.max(Oe.get(e).high,i)-i;return{device:v.get(e).device,attributes:t,drawRange:{start:0,count:t.index.count},bounds:{min:[0,n,0],max:[1,a,1],center:[.5,(n+a)/2,.5],radius:Math.hypot(r,a-n,o)/2/Math.max(r,1,o)}}}async function Ng(e,t,r,o){if(!await Jt.get(e)||!e._map||me.get(e._map)!==e||pe.get(t)!==e||o.request.signal.aborted||!D.get(t).has(`${r.z}/${r.x}/${r.y}`)||D.get(e).has(o))return;let n=Math.max(1,Math.min(64,256/2**(r.z-ge.get(e)))),a=e._map,s=a.options.crs,m=s.project(I.get(e)),f=Math.cos(I.get(e).lat*B),p=s.scale(r.z),c=2**(ge.get(e)-r.z),l=ys;l.x=r.x*256,l.y=r.y*256;let u=s.transformation.untransform(l,p);l.x=(r.x+1)*256,l.y=(r.y+1)*256;let h=s.transformation.untransform(l,p),x=v.get(e).device,g=o.texture,y=Dg(e,g),w=Gg(e,n),S=Je.get(e),T=(h.x-u.x)*f,P=-(h.y-u.y)*f,R=Ug(e,w,T,P),Q={position:[(u.x-m.x)*f,0,-(u.y-m.y)*f],rotation:[0,0,0],scale:[T,1,P],worldMatrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],children:[],visible:!0,device:x,geometry:R,program:y,texture:g,terrain:[r.x*256*c-Xt.get(e).min.x*256,r.y*256*c-Xt.get(e).min.y*256,256*c,S],tile:o,opacity:t.options.opacity??1,id:vt.value++,renderOrder:t.options.zIndex||0,fadeDuration:250,fadeStart:o.loadedAt,ground:!0,_rasterSource:t};o.mesh.visible=!1,q(Q,M.get(e)),E(e),D.get(e).set(o,Q)}async function Ls(e,t,r){if(pe.get(e)&&r.done&&!r.request.signal.aborted&&D.get(e).get(`${t.z}/${t.x}/${t.y}`)===r)try{await Ng(pe.get(e),e,t,r)}catch(o){e.fire("tileerror",{tile:r,coords:t,error:o})}}function ai(e,t){if(!D.get(e)||pe.get(e)===t)return;let r;for(r of D.get(e).values())pe.get(e)&&Lo(pe.get(e),r),r.mesh&&(r.mesh.visible=!0,q(r.mesh,M.get(e)));if(pe.set(e,t||null),t)for(r of D.get(e).values())r.done&&Ls(e,r.coords,r)}async function Fg(e,t,r){try{await r,we.get(e).resolve(),ai(e,me.get(t))}catch(o){e.fire("error",{error:o})}}var Wg=new Map;var jg=new Map;function $g(e,t){return e.tile.coords.z-t.tile.coords.z||e.distance-t.distance}var tn=[null];var Rt=new WeakMap;$();var rn={size:[null,null],format:"rgba8unorm",usage:null};var Vg={addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",magFilter:"linear",minFilter:"linear"};var bs={size:null,usage:null};var Zg=[0,0,0,1,0,0,0,0,1,1,0,1];var qg=[0,1,0,0,1,0,0,1,0,0,1,0];var Hg=[0,0,1,0,0,1,1,1];var Yg=[0,2,1,1,2,3];function Xg(e){let t={position:{size:3,data:new Float32Array(Zg)},normal:{size:3,data:new Float32Array(qg)},uv:{size:2,data:new Float32Array(Hg)},index:{data:new Uint16Array(Yg)}},r,o;for([r,o]of Object.entries(t))o.count=o.data.length/(o.size||1),o.indexFormat="uint16",o.buffer=e.createBuffer((bs.size=o.data.byteLength,bs.usage=r==="index"?GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,bs)),e.queue.writeBuffer(o.buffer,0,o.data);return{device:e,attributes:t,drawRange:{start:0,count:t.index.count}}}function Jg(e,t){let r=v.get(e).device,o={device:r,texture:r.createTexture((rn.size[0]=t.image.width,rn.size[1]=t.image.height,rn.usage=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT,rn)),sampler:r.createSampler(Vg),image:t.image,format:"rgba8unorm",srgb:!1,uploaded:null},i=Nr,n=uo,a=ho;i.source=t.image,i.flipY=!1,n.texture=o.texture,a[0]=t.image.width,a[1]=t.image.height,r.queue.copyExternalImageToTexture(i,n,a),i.source=null,n.texture=null,o.uploaded=t.image,he.get(e)||he.set(e,Ge(e,{baseTexture:o,unlit:!0,alphaMode:"BLEND",doubleSided:e.options.doubleSided})),Rt.get(e)||Rt.set(e,Xg(r));let{coords:s}=t,m=e._map.options.crs,f=m.project(I.get(e)),p=Math.cos(I.get(e).lat*B),c=m.scale(s.z),l=ys;l.x=s.x*256,l.y=s.y*256;let u=m.transformation.untransform(l,c);l.x=(s.x+1)*256,l.y=(s.y+1)*256;let h=m.transformation.untransform(l,c),x=(h.x-u.x)*p,g=-(h.y-u.y)*p;t.texture=o,t.mesh={position:[(u.x-f.x)*p,0,-(u.y-f.y)*p],rotation:[0,0,0],scale:[x,1,g],worldMatrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],children:[],visible:!0,device:r,geometry:Rt.get(e),program:he.get(e),texture:o,opacity:e.options.opacity,id:vt.value++,renderOrder:e.options.zIndex||0,tile:t,fadeDuration:250,ground:!0,_rasterSource:e},q(t.mesh,M.get(e))}async function Kg(e,t){try{await re.get(e);let r=await Jr(e.options.archive,t.coords.z,t.coords.x,t.coords.y,t.request.signal);if(t.request.signal.aborted){r?.image?.close();return}if(!r)throw new Error(`Tile ${t.coords.z}/${t.coords.x}/${t.coords.y} is not in the offline archive`);try{if(r.image)t.image=r.image;else{tn[0]=r.data;let o=new Blob(tn);tn[0]=null,t.image=await createImageBitmap(o)}}catch{throw tn[0]=null,new Error(`Unable to decode tile ${t.coords.z}/${t.coords.x}/${t.coords.y}`)}if(t.request.signal.aborted){t.image.close(),t.image=null;return}Jg(e,t),t.loadedAt=performance.now(),t.done=!0,_e.set(e,(_e.get(e)||0)+1),Ls(e,t.coords,t),e.fire("tileload",{tile:t,coords:t.coords}),E(e)}catch(r){if(t.request.signal.aborted)return;t.error=r.message,_e.set(e,(_e.get(e)||0)+1),e.fire("tileerror",{tile:t,coords:t.coords,error:r}),e.fire("error",{error:r,coords:t.coords})}finally{fe.set(e,fe.get(e)-1),e._map&&(Ms(e),Mo(e),fe.get(e)||e.fire("load"),E(e))}}function Qg(e,t){t.started=!0;let r=fe.get(e)===0;return fe.set(e,fe.get(e)+1),e.fire("tileloadstart",{tile:t,coords:t.coords}),r&&e.fire("loading"),Kg(e,t)}function Ms(e){let t=e._map;if(!t)return;let r=t.project(t.getCenter(),0).divideBy(256),o=[],i,n;for(i of D.get(e).values())i.started||i.request.signal.aborted||({coords:n}=i,o.push({tile:i,distance:Math.hypot((n.x+.5)/2**n.z-r.x,(n.y+.5)/2**n.z-r.y)}));o.sort($g);for({tile:i}of o){if(fe.get(e)>=4)break;Qg(e,i)}}function ey(e,t){let r=D.get(e),o,i,n;for([o,i]of r)!t.has(o)&&!i.done&&bo(e,i);for([o,n]of t)r.has(o)||(i={coords:n,request:new AbortController,done:!1},r.set(o,i))}var _r=[0,0];var Er=[0,0];function ty(e,t,r){let o=e.getBounds(),i=e.project(o.getNorthWest(),r).divideBy(256).floor(),n=e.project(o.getSouthEast(),r).divideBy(256).floor();_r[0]=t.maxLat,_r[1]=t.minLon,Er[0]=t.minLat,Er[1]=t.maxLon;let a=t.maxLat===void 0||t.minLon===void 0?null:e.project(_r,r).divideBy(256).floor(),s=t.minLat===void 0||t.maxLon===void 0?null:e.project(Er,r).divideBy(256).floor(),m=e.project(e.getCenter(),r).divideBy(256).floor();return{minX:Math.max(0,i.x,a?.x??0,m.x-6),maxX:Math.min(2**r-1,n.x,s?.x??2**r-1,m.x+6),minY:Math.max(0,i.y,a?.y??0,m.y-6),maxY:Math.min(2**r-1,n.y,s?.y??2**r-1,m.y+6)}}function Ts(e){let t=e._map;if(!t||!O.get(e)||!U.get(e))return;let r=Math.max(U.get(e).minZoom??0,Math.min(Math.round(t.getZoom()),e.options.maxZoom,e.options.maxNativeZoom));ar.set(e,r);let o=ty(t,U.get(e),r),i=Wg;i.clear();let n,a,s,m,f;for(n=o.minX;n<=o.maxX;n++)for(a=o.minY;a<=o.maxY;a++)i.set(`${r}/${n}/${a}`,{z:r,x:n,y:a});or.set(e,new Set(i.keys()));let p=jg;p.clear();let c=Math.max(U.get(e).minZoom??0,r-2),l=2**(r-c);if(c<r)for([s,m]of i)D.get(e).get(s)?.done||(f={z:c,x:Math.floor(m.x/l),y:Math.floor(m.y/l)},p.set(`${f.z}/${f.x}/${f.y}`,f));let u=new Map(p);for([s,m]of i)u.set(s,m);i.clear(),p.clear(),ey(e,u),Ms(e),Mo(e)}async function ry(e,t,r){try{await Promise.all([r,re.get(e)]),e._map===t&&t.hasLayer(e)&&Ts(e)}catch(o){e.fire("error",{error:o})}}function oy(e,t){I.get(e)||I.set(e,t.getCenter());let r=ri(e,t);Fg(e,t,r),ry(e,t,r)}var Ps=new WeakMap;var Ss=new WeakMap;var si=new WeakMap;var zr=new WeakMap;var ro=new WeakMap;var ks=new WeakMap;async function iy(e){let{backend:t,archive:r,controller:o,tiles:i}=e,n,a;for(;e.next<i.length;){if(o.signal.throwIfAborted(),n=i[e.next++],a=await Jr(r,n.z,n.x,n.y,o.signal),!a||a.data.byteLength!==256*256*4)throw new Error(`Missing or invalid Float32 terrain tile ${n.z}/${n.x}/${n.y}`);rt.get(t).set(`${n.x}/${n.y}`,new Float32Array(a.data))}}function ny(e){if(!e.ok)throw new Error(`Bridges: HTTP ${e.status}`);return e.json()}L();function ay(e,t){let r=e._map;ge.set(e,t.maxZoom),_r[0]=t.maxLat,_r[1]=t.minLon;let o=r.project(_r,ge.get(e)).divideBy(256).floor();Er[0]=t.minLat,Er[1]=t.maxLon;let i=r.project(Er,ge.get(e)).divideBy(256).floor();Xt.set(e,new d.Bounds(o,i));let n=[],a=r.project(r.getCenter(),ge.get(e)).divideBy(256),s,m;for(s=o.x;s<=i.x;s++)for(m=o.y;m<=i.y;m++)n.push({z:ge.get(e),x:s,y:m,distance:Math.hypot(s+.5-a.x,m+.5-a.y)});return n.sort(is),n}var oo=new WeakMap;$();L();function sy([e,t,r],o,i,n,a){let s=o.project(new d.LatLng(t,e));return[(s.x-i.x)*n,r-a,-(s.y-i.y)*n]}function my(e,t){let r=[],o=0,i,n,a;for(i of e){for(n=[],a=0;a<i.length;a++)n.push({x:t[o+a][0],y:t[o+a][1]});r.push(n),o+=i.length}return r}function fy(e,t,r){let o=[],i=1/0,n=1/0,a=-1/0,s=-1/0,m,f,p,c,l,u,h,x;for(m of r){f=[];for(p of m)f.push(t[p]);o.push(f)}for(c of t)i=Math.min(i,c[0]),n=Math.min(n,c[1]),a=Math.max(a,c[0]),s=Math.max(s,c[1]);let g={triangles:o,min:[i,n],max:[a,s]};for(l=Math.floor(g.min[0]/64);l<=Math.floor(g.max[0]/64);l++)for(u=Math.floor(g.min[1]/64);u<=Math.floor(g.max[1]/64);u++)h=`${l}/${u}`,x=ft.get(e).get(h),x||ft.get(e).set(h,x=[]),x.push(g)}function py(e,t,r){let{position:o,normal:i,color:n}=e,a,s,m,f,p,c,l,u,h;for([a,s,m]of r)for(f=t[a],p=t[s],c=t[m],(p[2]-f[2])*(c[0]-f[0])-(p[0]-f[0])*(c[2]-f[2])<0&&(l=s,s=m,m=l),u=0;u<6;u++)l=u===0||u===3?a:u===1||u===5?s:m,h=t[l],o.push(h[0],h[1]-(u>=3?1.2:0),h[2]),i.push(0,u>=3?-1:1,0),n.push(.6,.58,.54)}function cy(e,t,r){let{position:o,normal:i,color:n}=e,a=Math.hypot(r[0]-t[0],r[2]-t[2])||1,s=(r[2]-t[2])/a,m=-(r[0]-t[0])/a,f,p;for(f=0;f<6;f++)p=f===0||f===3||f===5?t:r,o.push(p[0],p[1]-(f===2||f>=4?1.2:0),p[2]),i.push(s,0,m),n.push(.6,.58,.54)}function ly(e,t,r){let o=0,i,n;for(i of r){for(n=0;n<i.length;n++)cy(e,t[o+n],t[o+(n+1)%i.length]);o+=i.length}}function uy(e,t){let{backend:r,map:o,zoom:i,crs:n,origin:a,metres:s,base:m}=e,f=[],p,c,l,u,h,x,g,y,w,S,T;for(p of t)c=p.slice(0,-1),c.length>=3&&f.push(c);if(!f.length)return;let P=[],R=[];for(p of f)for([l,u,h]of p)x=o.project([u,l],i),P.push([x.x,x.y,h]);for(p of f)for(g of p)R.push(sy(g,n,a,s,m));try{y=my(f,P),[w,...S]=y,T=Qn(w,S)}catch{return}fy(r,P,T),py(e,R,T),ly(e,R,f)}function dy(e,t){let r=e._map,o=r.options.crs,i=ge.get(e),n=o.project(I.get(e)),a=Math.cos(I.get(e).lat*B),s=M.get(e).position[1],m=[],f=[],p=[];ft.set(e,new Map);let c={backend:e,map:r,crs:o,zoom:i,origin:n,metres:a,base:s,position:m,normal:f,color:p},l,u,h;for({geometry:l}of t.features)if(!(l.type!=="Polygon"&&l.type!=="MultiPolygon"))for(u=l.coordinates,h=0;h<(l.type==="Polygon"?1:u.length);h++)uy(c,l.type==="Polygon"?u:u[h]);m.length&&oo.set(e,pr(e,{position:m,normal:f,color:p}))}function hy(e,t,r){Be.set(e,!0),Je.set(e,nr(e,I.get(e))??0);let o;for(o of Object.values(t._layers))Ko(o),oi(o,e);r&&dy(e,r),t.fire("terrainchange"),E(e),e.fire("terrainready")}async function Cs(e){if(zr.get(e)||!e._map)return;zr.set(e,!0),Be.set(e,!1);let t=new AbortController;si.set(e,t);let r;try{if(!ro.get(e))throw new Error("Terrain layer requires a PMTiles or COG elevation archive");let o=ra({source:{type:"raster",url:ro.get(e),archive:e.options.archive,asset:e.options.asset,workerUrl:e.options.workerUrl}});ks.set(o,e._map),Ss.set(e,o),await re.get(o);let i=U.get(o);if(i.tileType!==0||i.minZoom!==i.maxZoom)throw new Error("Expected a single-zoom Float32 terrain archive");let n=e._map,a=ay(e,i),s={backend:e,archive:o,controller:t,tiles:a,next:0},m=[];for(r=0;r<Math.min(4,a.length);r++)m.push(iy(s));await Promise.all(m);let f=e.options.bridges&&await fetch(e.options.bridges,{signal:t.signal}).then(ny);return t.signal.aborted||e._map!==n?void 0:(hy(e,n,f),!0)}catch(o){return t.signal.aborted||e.fire("error",{error:o}),!1}finally{zr.set(e,!1)}}function gy(){Cs(this.backend).then(this.resolve,this.reject)}function yy(e){A.get(e)==="raster"&&ai(e,this)}function xy(e,t){if(Me.get(t)||me.get(t)&&me.get(t)!==e)throw new Error("Only one terrain layer can be active per map");if(Ps.get(e)){Me.set(t,{layer:e,map:t,terrainCache:new Map,terrainController:new AbortController}),Qi(e,t),t.fire("terrainchange");return}if(me.set(t,e),Qi(e,t),M.get(e))Jt.set(e,Cs(e));else{let r=Promise.withResolvers();Jt.set(e,r.promise),e.once("ready",gy,{backend:e,...r})}t.eachLayer(yy,e),t.fire("terrainchange")}var _s=[];function vy(){_s.shift()?.fire("load")}function wy(){this._image||this._initImage(),this._image.complete&&this._image.naturalWidth&&(_s.push(this),queueMicrotask(vy))}function Ly(e,t){switch(A.get(e)){case"3d":return Qi(e,t);case"raster":return oy(e,t);case"terrain":return xy(e,t);case"image":return wy.call(e,t);case"time":return Wd.call(e,t)}}function by(e){if(!e._map)return;let t;for(t of Y.get(e).values())Kr(e,t);Y.get(e).clear(),Qr(e)}function My(e){let t={};return ae.get(e)&&(t.moveend=t.zoomend=t.rotate=t.pitch=t.resize=Qr.bind(null,e)),(X.get(e)||ae.get(e))&&(t.terrainchange=by.bind(null,e)),t}function By(e){let t=Ts.bind(null,e);return{moveend:t,zoomend:t,rotate:t,pitch:t,resize:t}}function Ty(){return{}}L();function Py(e){return!Tr.get(e)&&(e instanceof d.GridLayer||e instanceof d.Polyline||e instanceof d.CircleMarker||e instanceof d.Marker&&!(e.options.icon instanceof d.DivIcon)||e instanceof d.ImageOverlay&&!(e instanceof d.VideoOverlay)&&!(e instanceof d.SVGOverlay))}function Sy(e){let t=Py(this);t&&((this instanceof d.GridLayer||this instanceof d.ImageOverlay)&&(this.options.crossOrigin||=!0),this instanceof d.Marker&&(this.options.icon.options.crossOrigin||=!0));let r=e.target;r.hasLayer(this)&&(A.get(this)?(this._map=r,this._zoomAnimated=r._zoomAnimated,A.get(this)!=="pending"&&A.get(this)!=="time"&&(kr.set(this,A.get(this)==="raster"?By(this):Tr.get(this)?My(this):Ty()),to.set(this,r),r.on(kr.get(this),this),this.once("remove",Pg,this)),Ly(this,r),this.fire("add"),r.fire("layeradd",{layer:this})):Ir.value._layerAdd.call(this,e),!(!t||!e.target.hasLayer(this))&&pa(this,e.target))}L();var Es=[];var zs={value:Promise.resolve()};function ky(e,t){X.set(e,!0),Et(e,t)}function Cy(e){return e.data===void 0&&(e.tileJSON!==void 0||typeof e.url=="string"&&/\{[zxy]\}|%7B[zxy]%7D/i.test(e.url))}L();var Le=new WeakMap;async function _y(e){let t=new URL(e.tileJSON,document.baseURI).href,r=await fetch(t);if(!r.ok)throw new Error(`TileJSON: HTTP ${r.status}`);let o=await r.json();if(!o||!Array.isArray(o.tiles)||!o.tiles.length||typeof o.tiles[0]!="string")throw new Error("TileJSON requires a tile URL template");return{...e,url:new URL(o.tiles[0],t).href,minNativeZoom:e.minNativeZoom??o.minzoom,maxNativeZoom:e.maxNativeZoom??o.maxzoom,attribution:e.attribution??o.attribution}}function Ey(e){let t="",r=!1,o=!1,i=0,n="";for(i=0;i<e.length;i++)n=e[i],!(!r&&n===","&&/^\s*[\]}]/.test(e.slice(i+1)))&&(t+=n,o?o=!1:r&&n==="\\"?o=!0:n==='"'&&(r=!r));return t}function zy(e,t){if(t.quoted)return t.escaped?(t.escaped=!1,e==="'"?e:"\\"+e):e==="\\"?(t.escaped=!0,""):e===t.quoted?(t.quoted="",'"'):e==='"'?'\\"':e;if(e==='"'||e==="'")return t.quoted=e,'"'}function Ay(e,t,r){if(r==="/"){for(;t<e.length&&e[t]!==`
3
- `;)t++;return t}let o=e.indexOf("*/",t+2);if(o<0)throw new Error("Unterminated style comment");return o+1}function Ry(e){let t="",r=0,o="",i="",n,a={quoted:"",escaped:!1};for(r=0;r<e.length;r++){if(o=e[r],i=e[r+1],n=zy(o,a),n!==void 0){t+=n;continue}o==="/"&&(i==="/"||i==="*")?(r=Ay(e,r,i),t+=i==="/"?`
4
- `:" "):t+=o}return t}function Oy(e){let t=0,r=null;if(!Array.isArray(e))throw new Error("Invalid vector style layers");for(t=0;t<e.length;t++)if(r=e[t],!r||typeof r.id!="string"||typeof r.type!="string")throw new Error("Invalid vector style layers")}function Dy(e){let t=/^\s*(?:const|let|var)\s+otm_layers\s*=\s*/.exec(e);t&&(e=e.slice(t[0].length));let r=Ey(Ry(e).trim().replace(/;$/,"")),o=JSON.parse(r),i=o.layers??o;return Oy(i),i}async function Iy(e){if(typeof e=="string"){let r=await fetch(e);if(!r.ok)throw new Error(`Vector style: HTTP ${r.status}`);e=Dy(await r.text())}else e=e?.layers??e;if(!Array.isArray(e))throw new Error("Invalid vector style layers");let t;for(t of e)if(!t||typeof t.id!="string"||typeof t.type!="string")throw new Error("Invalid vector style layers");return e}function Gy(e,t,r){if(!Number.isInteger(e)||!Number.isInteger(t)||!Number.isInteger(r)||e<0||t<e||r<t||r>24)throw new Error("Invalid vector tile zoom range")}async function Uy(e){if(!e||typeof e!="object")throw new TypeError("Vector tiles require source options");e.tileJSON&&(e=await _y(e));let{url:t,style:r,minNativeZoom:o=0,maxNativeZoom:i=14,maxZoom:n=19}=e,a;typeof t=="string"&&(t=t.replaceAll(/%7B([zxy])%7D/gi,"{$1}"));for(a of["{z}","{x}","{y}"])if(typeof t!="string"||!t.includes(a))throw new Error("Vector tiles require an XYZ URL template");return Gy(o,i,n),r=await Iy(r),{...e,url:t,style:r,minNativeZoom:o,maxNativeZoom:i,maxZoom:n}}async function Ny(e){let t=await fetch(`${e}.json`);if(!t.ok)throw new Error(`Sprite ${e}.json: HTTP ${t.status}`);return{url:`${e}.png`,index:await t.json()}}var As="move zoom rotate pitch resize viewreset";function Fy(e,t,r,o,i){let n=0;if(e==="all"){for(n=0;n<t.length;n++)if(!z(t[n],r,o,i))return!1;return!0}if(e==="any"){for(n=0;n<t.length;n++)if(z(t[n],r,o,i))return!0;return!1}throw new Error(`Unsupported vector style expression: ${e}`)}function Wy(e,t,r,o,i){let n=0,a=null;if(e==="coalesce"){for(n=0;n<t.length;n++)if(a=z(t[n],r,o),a!=null)return a;return null}if(e==="case"){for(n=0;n<t.length-1;n+=2)if(z(t[n],r,o))return z(t[n+1],r,o);return z(t[t.length-1],r,o)}throw new Error(`Unsupported vector style expression: ${e}`)}function Ar(e,t,r,o){return o&&typeof e=="string"?t[e]:z(e,t,r)}function jy(e,t,r,o,i){let n=Ar(t[0],r,o,i),a=z(t[1],r,o);switch(e){case"==":return n===a;case"!=":return n!==a;case"<=":return n<=a;case">=":return n>=a;case"<":return n<a;case">":return n>a;default:throw new Error(`Unsupported vector style expression: ${e}`)}}var Mf={black:[0,0,0,1],white:[255,255,255,1],gray:[128,128,128,1],blue:[0,0,255,1],red:[255,0,0,1],green:[0,128,0,1]};function $y(e){let t=/^rgba?\(([^)]+)\)$/.exec(e);if(t){let r=t[1].split(","),o=0,i=!0;for(o=0;o<r.length;o++)r[o]=Number(r[o]);for(r.length===3&&r.push(1),o=0;o<r.length;o++)Number.isFinite(r[o])||(i=!1);if(r.length===4&&i)return r}throw new Error(`Unsupported interpolated style color: ${e}`)}function Vy(e){let t=0,r=0;e.length===4&&(e="#"+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]);let o=[];for(t=1;t<6;t+=2)r=parseInt(e.slice(t,t+2),16),o.push(r);return o.push(1),o}function Rr(e){return Object.hasOwn(Mf,e)?Mf[e]:/^#[0-9a-f]{3}$/i.test(e)||/^#[0-9a-f]{6}$/i.test(e)?Vy(e):$y(e)}function Zy(e,t,r){let o=z(e[1],t,r),i=e[0][0]==="exponential"?e[0][1]:1,n=0,a=0,s=0,m=0,f=null,p=null,c=0,l="";if(o<=e[2])return z(e[3],t,r);for(n=4;n<e.length;n+=2)if(!(o>e[n])){if(a=e[n-2],s=e[n],m=i===1?(o-a)/(s-a):(i**(o-a)-1)/(i**(s-a)-1),f=z(e[n-1],t,r),p=z(e[n+1],t,r),typeof f=="number"&&typeof p=="number")return f+(p-f)*m;for(f=Rr(f),p=Rr(p),c=0;c<3;c++)c&&(l+=","),l+=Math.round(f[c]+(p[c]-f[c])*m);return`rgba(${l},${f[3]+(p[3]-f[3])*m})`}return z(e.at(-1),t,r)}function Bf(e,t,r,o){let i=0,n=null;for(i=t;i<r;i++)if(n=e[i],n===o||n!==n&&o!==o)return!0;return!1}function Rs(e,t,r,o,i){let n=null;if(e==="!in")return n=Ar(t[0],r,o,i),!Bf(t,1,t.length,n);if(i)return n=Ar(t[0],r,o,!0),Bf(t,1,t.length,n);let a=z(t[1],r,o);return n=Ar(t[0],r,o,!1),a.includes(n)}function qy(e,t,r,o,i){if(e==="in")return Rs(e,t,r,o,i);if(e==="interpolate")return Zy(t,r,o);throw new Error(`Unsupported vector style expression: ${e}`)}function Hy(e,t,r,o){let i=0,n=0;if(e==="+"){for(i=0;i<t.length;i++)n+=z(t[i],r,o);return n}if(e==="-")return t.length===1?-z(t[0],r,o):z(t[0],r,o)-z(t[1],r,o);throw new Error(`Unsupported vector style expression: ${e}`)}function Yy(e,t,r){let o=z(e[0],t,r),i=0,n=!1;for(i=1;i<e.length-1;i+=2)if(Array.isArray(e[i])?n=e[i].includes(o):n=e[i]===o,n)return z(e[i+1],t,r);return z(e[e.length-1],t,r)}function Xy(e,t,r,o,i){if(e==="!")return!z(t[0],r,o,i);if(e==="!=")return Ar(t[0],r,o,i)!==z(t[1],r,o);if(e==="!in")return Rs(e,t,r,o,i);throw new Error(`Unsupported vector style expression: ${e}`)}function Jy(e,t,r,o){switch(e){case"literal":return t[0];case"get":return r[t[0]];case"has":return Object.hasOwn(r,t[0]);case"zoom":return o;default:throw new Error(`Unsupported vector style expression: ${e}`)}}function Ky(e,t,r){let o=z(e[0],t,r),i=e[1],n=0;for(n=2;n<e.length&&!(o<e[n]);n+=2)i=e[n+1];return z(i,t,r)}function Qy(e,t,r,o){if(e==="to-boolean")return!!z(t[0],r,o);if(e==="to-number"){let i=0,n=0;for(i=0;i<t.length;i++)if(n=Number(z(t[i],r,o)),Number.isFinite(n))return n;throw new Error("Invalid numeric style expression")}throw new Error(`Unsupported vector style expression: ${e}`)}function z(e,t,r,o=!1){if(!Array.isArray(e))return e;let i=e[0],n=e.slice(1),a=String(i);if(/^(?:literal|get|has|zoom)$/.test(a))return Jy(i,n,t,r);switch(a[0]){case"a":return Fy(i,n,t,r,o);case"!":return Xy(i,n,t,r,o);case"=":case"<":case">":return jy(i,n,t,r,o);case"i":return qy(i,n,t,r,o);case"t":return Qy(i,n,t,r,o);case"c":return Wy(i,n,t,r,o);case"m":return Yy(n,t,r);case"s":return Ky(n,t,r);default:return Hy(i,n,t,r)}}function Ke(e){return e._map.getZoom()+(Le.get(e).styleZoomOffset??0)}function ex(){clearTimeout(this.timer),this.changedAt=performance.now(),this.timer=setTimeout(this.update.bind(this),180)}$();function Os(e,t){if(!Number.isFinite(t))throw new TypeError("Marker rotation must be finite");return e.options.rotation=t,e.update(),Tt(e),e}function on(e,t,r){if(!r.along)return;let o=e.latLngToContainerPoint(r.along[0]),i=e.latLngToContainerPoint(r.along[1]),n=Math.atan2(i.y-o.y,i.x-o.x)/B;n>90?n-=180:n<-90&&(n+=180),t.options.rotation!==n*B&&Os(t,n*B)}function tx(){let e;for(e of this.labels.values())e._mvtLabel&&on(this._map,e,e._mvtLabel)}var mi=new WeakMap;function fi(e){let t=mi.get(e);t?.blobUrl&&(URL.revokeObjectURL(t.blobUrl),t.blobUrl=null)}function rx({data:e}){fi(this);let t=this.waiting.get(e.id);t&&(this.waiting.delete(e.id),e.error?t.reject(new Error(e.error)):t.resolve(e))}function ox(e){fi(this);let t=new Error(`Worker MVT: ${e.message}`),r;for(r of this.waiting.values())r.reject(t);this.waiting.clear(),qe(this,t)}function ix(e){let{style:t,pane:r}=Le.get(this),o,i;for([o]of t.entries())(e.getPane(`${r}-${o}`)||e.createPane(`${r}-${o}`)).style.zIndex=200+o;for(i of t)if(i.type==="background"){e.getContainer().style.background=z(i.paint["background-color"],{},Ke(this));break}this.session={},this.tiles=new Map,this.labels=new Map,this.waiting=new Map,this.retiring=new Set,this.inflight=0,this.sequence=0,this.changedAt=0,this.paintZoom=null;let n=os(this.options.workerUrl||rs);mi.set(this,n),this.worker=n.worker,this.worker.onmessage=rx.bind(this),this.worker.onerror=ox.bind(this),this.refresh=ex.bind(this),this.rotateLabels=tx.bind(this),e.on(As,this.refresh),e.on("move rotate pitch",this.rotateLabels),this.update()}function nx(e){e.off(As,this.refresh),e.off("move rotate pitch",this.rotateLabels),clearTimeout(this.timer),this.session=null,this.worker.terminate(),fi(this),mi.delete(this);let t,r,o,i;for(t of this.waiting.values())t.reject(new DOMException("Layer removed","AbortError"));this.waiting.clear();for(r of this.tiles.values())r.controller.abort(),r.group?.remove();for(o of this.retiring)o.remove();for(i of this.labels.values())i.remove();this.tiles.clear(),this.labels.clear(),this.retiring.clear()}function ax(){if(!this.session)return;let{minNativeZoom:e,maxNativeZoom:t}=Le.get(this),r=Math.max(e,Math.min(t,Math.floor(Ke(this)))),o=this._map.getBounds(),i=2**r,n=this._map.project(o.getNorthWest(),r).divideBy(256),a=this._map.project(o.getSouthEast(),r).divideBy(256),s,m,f,p;for(s of this.tiles.values())s.needed=!1;for(m=Math.floor(n.x);m<=Math.floor(a.x);m++)for(f=Math.max(0,Math.floor(n.y));f<=Math.min(i-1,Math.floor(a.y));f++)p=`${r}/${m}/${f}`,s=this.tiles.get(p),s||(s={key:p,coords:{z:r,x:m,y:f},controller:new AbortController},this.tiles.set(p,s)),s.needed=!0;this.prune(),this.pump(),this.updatePaint().catch(qe.bind(null,this)),this.updateLabels().catch(qe.bind(null,this))}function Or(e,t,r,o,i){return e[t]===void 0?r:z(e[t],o,i)}function sx(e,t,r){let o=Rr(Or(e,"fill-color","#000",t,r)),i=Or(e,"fill-outline-color",null,t,r),n=i===null?null:Rr(i),a=Or(e,"fill-opacity",1,t,r)*o[3],s={r:o[0]/255,g:o[1]/255,b:o[2]/255},m=n?{r:n[0]/255,g:n[1]/255,b:n[2]/255}:null;return{fillColor:s,fillOpacity:a,color:m,weight:.5}}function mx(e,t,r,o){if(!e)return;let i=e,n=0,a="";if(typeof e[0]!="number"&&(i=z(e,r,o)),!Array.isArray(i))throw new TypeError("Style dash array must be an array");for(n=0;n<i.length;n++)n&&(a+=" "),a+=i[n]*t;return a}function fx(e,t,r,o){let i=Or(t,"line-width",1,r,o),n=Rr(Or(t,"line-color","#000",r,o)),a=Or(t,"line-opacity",1,r,o)*n[3],s=mx(t["line-dasharray"],i,r,o),m=e.layout?.["line-cap"]||"butt",f=e.layout?.["line-join"]||"miter";return{color:{r:n[0]/255,g:n[1]/255,b:n[2]/255},opacity:a,weight:i,dashArray:s,lineCap:m,lineJoin:f}}function px(e,t,r){let o=e.paint||{};return e.type==="fill"?sx(o,t,r):fx(e,o,t,r)}function Ds(e,t,r){return r>=(e.minzoom??0)&&r<(e.maxzoom??1/0)&&e.layout?.visibility!=="none"&&(!e.filter||z(e.filter,t,r,!0))}function Is(e,t){let r=px(e.entry,e.properties,t);return Ds(e.entry,e.properties,t)||(r.opacity=0,r.fillOpacity=0),r}function cx(e,t){let r=Is(e,t),{layer:o}=e;e.kind==="line"?r.dashArray!==o.options.dashArray?o.setStyle(r):o.setStyle({color:r.color,opacity:r.opacity,weight:r.weight}):(JSON.stringify(r.fillColor)!==JSON.stringify(o.options.fillColor)||r.fillOpacity!==o.options.fillOpacity)&&o.setStyle({fillColor:r.fillColor,fillOpacity:r.fillOpacity})}function io(e,t){return e.session===t&&performance.now()-(e.changedAt||0)>=180}function ht(e=0){let t=Promise.withResolvers();return setTimeout(t.resolve,e),t.promise}async function lx(){let e=Ke(this),t=this.session;if(this.paintZoom===e)return;let r=this.paintRevision=(this.paintRevision||0)+1,o=0,i,n;for(i of this.tiles.values())if(i.rendered)for(n of i.rendered){if(!io(this,t)||this.paintRevision!==r||Ke(this)!==e)return;cx(n,e),++o%32===0&&await ht()}this.paintZoom=e}function ux(e,t){return e.priority-t.priority}function dx(e){let t=[],r,o;for(r of e.tiles.values())if(!(!r.needed||!r.labelCandidates))for(o of r.labelCandidates)t.push(o);return t.sort(ux)}function hx(e,t,r){let o=e._map,i=Ke(e);if(!Ds(t.entry,t.properties,i)||(t.size=z(t.entry.layout?.["text-size"]??12,t.properties,i),!(t.size>0))||t.icon&&!Le.get(e).spriteSheet?.index[t.icon]||(t.color=z(t.entry.paint?.["text-color"]??"#000",t.properties,i),t.halo=z(t.entry.paint?.["text-halo-color"]??"#fff",t.properties,i),t.haloWidth=z(t.entry.paint?.["text-halo-width"]??0,t.properties,i),t.along&&t.pixelBase*2**o.getZoom()<t.text.length*t.size*.6))return null;let n=o.latLngToContainerPoint(t.latlng);if(n.x<0||n.y<0||n.x>r.x||n.y>r.y)return null;let a=t.text.length*t.size*.65+16,s=[],m,f;for(m=Math.floor((n.x-a/2)/32);m<=Math.floor((n.x+a/2)/32);m++)for(f=Math.floor((n.y-t.size)/24);f<=Math.floor((n.y+t.size)/24);f++)s.push(`${m}:${f}`);return s}function gx(e,t){let r;for(r of e)if(t.has(r))return!1;for(r of e)t.add(r);return!0}L();L();L();function yx(e,t){let{x:r,y:o,width:i,height:n}=t.index[e.icon],[a,s]=e.iconOffset;return new d.DivIcon({className:"",html:`<div style="width:${i}px;height:${n}px;background:url(${t.url}) -${r}px -${o}px"></div>`,iconSize:[i,n],iconAnchor:[i/2-a,n/2-s]})}function xx(e){let t=Math.floor(19.23076923076923),r=[],o="",i;for(i of e.split(" "))o&&Array.from(`${o} ${i}`).length>t?(r.push(o),o=i):o=o?`${o} ${i}`:i;return r.push(o),r}function Tf(e,t){if(e.icon)return yx(e,t);let r=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=e.along?[e.text]:xx(e.text),i=0,n,a,s,m;for(n of o)i=Math.max(i,Array.from(n).length);let f=Math.max(40,i*e.size*.65+12),p=e.size*1.2,c=o.length*p+12;r.setAttribute("width",f),r.setAttribute("height",c);let l={x:f/2,"text-anchor":"middle","font-family":"sans-serif","font-size":e.size,fill:e.color,stroke:e.halo,"stroke-width":e.haloWidth*2,"paint-order":"stroke"};for(m=0;m<o.length;m++){s=document.createElementNS(r.namespaceURI,"text");for(a of Object.keys(l))s.setAttribute(a,l[a]);s.setAttribute("y",c/2+(m-(o.length-1)/2)*p+e.size*.35),s.textContent=o[m],r.append(s)}return new d.Icon({iconUrl:`data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(r))}`,iconSize:[f,c],iconAnchor:[f/2,c/2]})}function Gs({error:e}){qe(this,e)}function vx(e,t,r){let o=JSON.stringify([t.size,t.color,t.halo,t.haloWidth,t.icon]),i=Le.get(e).spriteSheet,n=e.labels.get(r);if(n){if(n._mvtLabel=t,n._mvtLabelStyle===o)return on(e._map,n,t),!1;n.setIcon(Tf(t,i))}else{let{pane:a}=Le.get(e);n=new d.Marker(t.latlng,{icon:Tf(t,i),pane:`${a}-${t.order}`,title:t.text,alt:t.text,interactive:!1,keyboard:!1,rotateWithView:!1}).on("error",Gs,e).addTo(e._map),e.labels.set(r,n)}return n._mvtLabelStyle=o,n._mvtLabel=t,on(e._map,n,t),!0}async function wx(){let e=this.session,t=this.labelRevision=(this.labelRevision||0)+1;this.labelsReady=!1;let r=dx(this),o=this._map.getSize(),i=new Set,n=new Set,a=0,s,m,f,p;for(s of r){if(++a%128===0&&await ht(),!io(this,e)||this.labelRevision!==t)return;f=hx(this,s,o),!(!f||!s.allowOverlap&&!gx(f,i))&&(m=`${s.text}${s.icon||""}:${s.latlng.join(":")}`,n.add(m),vx(this,s,m)&&await ht())}for([m,p]of this.labels){if(!io(this,e)||this.labelRevision!==t)return;n.has(m)||(p.remove(),this.labels.delete(m),await ht())}this.labelsReady=!0}function Lx(e,t){let r=e.z-t.z;return r>=0?e.x>>r===t.x&&e.y>>r===t.y:t.x>>-r===e.x&&t.y>>-r===e.y}function bx(e,t){let r;for(r of e.tiles.values())if(r.needed&&!r.group&&Lx(r.coords,t.coords))return!0;return!1}function Mx(){let e,t;for([t,e]of this.tiles)e.needed||e.group&&bx(this,e)||(e.controller.abort(),this.tiles.delete(t),e.group&&this.retire(e.group).catch(qe.bind(null,this)))}async function Bx(e){let t=this.session;this.retiring.add(e);let r=0,o;for(o of e.getLayers()){if(this.session!==t)return;e.removeLayer(o),++r%8===0&&await ht()}e.remove(),this.retiring.delete(e)}function Tx(e,t){return e.distance-t.distance}function Px(){if(!this.session)return;let e=this._map.getCenter(),t=[],r,o;for(r of this.tiles.values())!r.needed||r.started||(o=this._map.project(e,r.coords.z).divideBy(256),r.distance=(r.coords.x-o.x)**2+(r.coords.y-o.y)**2,t.push(r));t.sort(Tx);for(r of t){if(this.inflight>=4)break;r.started=!0,this.inflight++,this.load(r)}}L();L();function Sx(e,t,r,o){let{pane:i}=Le.get(e),a={...Is(o,Ke(e)),pane:`${i}-${o.order}`,interactive:!1,smoothFactor:0},s=o.kind==="fill"?new d.Polygon(o.paths,{...a,stroke:!1,triangulated:!0}):new d.Polyline(o.paths,a);s.on("error",Gs,e),t.rendered.push({layer:s,kind:o.kind,entry:o.entry,properties:o.properties}),r.addLayer(s)}async function kx(e,t,r,o,i){let n,a=performance.now();for(n of o){for(;!io(e,i)&&e.session===i&&!t.controller.signal.aborted;)await ht(50);if(t.controller.signal.aborted||e.session!==i)return!1;Sx(e,t,r,n),performance.now()-a>8&&(await ht(),a=performance.now())}return!0}async function Cx(e){let{coords:t,controller:r}=e,o=this.session,{url:i,style:n,sourceId:a,maxZoom:s,maxNativeZoom:m}=Le.get(this),f=2**t.z,p=(t.x%f+f)%f,c;try{let l=d.Util.template(i,{z:t.z,x:p,y:t.y}),u=await fetch(l,{signal:r.signal});if(!u.ok)throw new Error(`Tile ${e.key}: HTTP ${u.status}`);let h=await u.arrayBuffer();if(r.signal.aborted)return;let x=++this.sequence,g=Promise.withResolvers();this.waiting.set(x,g),this.worker.postMessage({type:"vector",id:x,buffer:h,coords:t,style:n,source:a,maxZoom:s,zoom:Ke(this),mapZoom:t.z>=m?s:this._map.getZoom()},[h]);let y=await g.promise;if(r.signal.aborted||this.session!==o)return;if(c=new d.LayerGroup().addTo(this._map),e.rendered=[],!await kx(this,e,c,y.batches,o)){c.remove();return}e.group=c,e.labelCandidates=y.labels,this.fire("tileload",{coords:t,group:c}),this.prune(),this.refresh()}catch(l){c?.remove(),!r.signal.aborted&&this.session===o&&this.fire("error",{error:l})}finally{this.session===o&&(this.inflight--,this.pump())}}async function _x(e,t){let r=await Uy(t);typeof r.sprite=="string"&&(r.spriteSheet=await Ny(r.sprite));let{url:o,tileJSON:i,style:n,sourceId:a,minNativeZoom:s,maxNativeZoom:m,maxZoom:f,...p}=r;return d.Util.setOptions(e,p),r.pane=`mvt-${d.Util.stamp(e)}`,Le.set(e,r),Object.assign(e,{onAdd:ix,onRemove:nx,update:ax,updatePaint:lx,updateLabels:wx,prune:Mx,retire:Bx,pump:Px,load:Cx}),e}function Ex(e){let t=e._map;return t?.removeLayer(e),A.delete(e),t?.addLayer(e),e.fire("ready"),e}function Us(e,t){throw e.fire("error",{error:t}),t}function zx(e,t){A.set(e,"pending");let r=_x(e,t).then(Ex.bind(null,e)).catch(Us.bind(null,e));re.set(e,r),r.catch(Ye)}L();async function Ax(e,t){let r=await Xr(t);return e.options.archive=t,U.set(e,r),e.options.maxNativeZoom===void 0&&(e.options.maxNativeZoom=r.maxZoom),e.options.maxZoom=Math.max(e.options.minZoom||0,e.options.maxZoom),e.fire("ready"),e}function Rx(e){let t,r;for(t of D.get(e).values())bo(e,t);if(he.get(e)?.pipelineCache.clear(),he.set(e,null),Rt.get(e)){for(r of Object.values(Rt.get(e).attributes))j(e,r.buffer);Rt.set(e,null)}}var Dr=new WeakMap;var pi=new WeakMap;var Ns={_3d:Tr,_added:we,_areas:Y,_bridgeMesh:oo,_bridges:ft,_cameraZIndexOffset:Fr,_countStatus:Mr,_cursor:Pr,_dem:Oe,_directories:Br,_etag:Ho,_fadeFrame:Dr,_fadeVersion:pi,_frame:st,_geojson:X,_header:ji,_inflight:Xe,_layers:F,_loadingTiles:fe,_nativeGPU:ue,_pointerEvents:Cr,_pruneAfter:Nt,_pruneVersion:Ti,_pruneWanted:Pi,_queued:eo,_rasterGeometry:Rt,_rasterProgram:he,_rasterTiles:D,_rasterVersion:_e,_rendererReady:ut,_roofRaster:K,_roofRasters:Li,_sceneOrigin:ie,_shadowMeshes:Gt,_shared:O,_size:ir,_terrain3D:pe,_terrainArchive:Ss,_terrainBaseY:kt,_terrainBounds:Xt,_terrainController:si,_terrainGrids:At,_terrainLoading:zr,_terrainOriginElevation:Je,_terrainPromise:Jt,_terrainReady:Be,_terrainRequest:Un,_terrainTiles:rt,_terrainZoom:ge,_tileZoom:ar,_tooltip:Re,_type:qt,_visibleMeshes:Ur,_wantedRasterTiles:or,_zoomLevel:ti,_zoomTransitions:de,_zoomView:Ze,camera:ee,container:Ae,control:Pt,eventMap:to,events:kr,group:Qa,header:U,highlightedFeature:nt,hoveredFeature:Se,kind:A,location:I,model:je,modelUrl:We,raycaster:ne,ready:re,renderer:v,root:M,scene:oe,terrainSource:ro,url:ae,walker:Ka};L();var Ox=["_layers","_sceneOrigin","_size","_zoomLevel","_zoomTransitions","_zoomView","_cursor","_roofRaster"];var Dx=["_layers","_sceneOrigin","_size","_zoomLevel","_cursor"];async function Ix(e,t){try{await e.device.queue.onSubmittedWorkDone(),e.depthTexture?.destroy(),e.colorTexture?.destroy(),e.roofFallbackTexture?.texture?.destroy(),e.uniformBuffer?.destroy(),e.sunlight?.texture?.destroy(),e.sunlight?.buffer?.destroy(),e.sunlight?.lights?.destroy()}catch(r){t.fire("error",{error:r})}e.device.destroy()}function Gx(e,t){if(K.get(e)&&j(e,K.get(e).texture.texture),K.set(e,null),de.get(e)){let i;for(i of de.get(e).keys())i.play()}de.set(e,null),Ze.set(e,null),se.delete(t),t.getContainer().classList.remove("leaflet-camera-zoom");let r=v.get(e);r.canvas.remove(),Ix(r,e),te.delete(t);let o;for(o of Dx)Ns[o].delete(e)}function no(e,t){we.set(e,Promise.withResolvers()),Ae.get(e)&&(ni(e),d.DomEvent.off(Ae.get(e),Cr.get(e),e),Ae.set(e,null));let r,o,i,n;for(r of Y.get(e).values())Kr(e,r);Y.get(e).clear(),Re.get(e)?.remove(),Re.set(e,null),(ae.get(e)||X.get(e))&&es(e,!1);let a=O.get(e);if(a){if(q(M.get(e),null),F.get(a).delete(e),a===e)if(t.off("move zoom rotate pitch resize viewreset layeradd layerremove",Vi,e),t.off("zoomstart",Zi,e),t.off("zoomanim",qi,e),t.off("zoomend",Hi,e),Gn(e),F.get(e).size){let s=F.get(e).values().next().value;for(o of Ox)n=Ns[o],n.set(s,n.get(e)),n.delete(e);for(i of F.get(s))O.set(i,s);te.set(t,s),t.on("move zoom rotate pitch resize viewreset layeradd layerremove",Vi,s),t.on("zoomstart",Zi,s),t.on("zoomanim",qi,s),t.on("zoomend",Hi,s),E(s)}else Gx(e,t);else E(a);O.set(e,null),v.set(e,null),oe.set(e,null),ee.set(e,null)}}function Ux(e,t){Rx(e),pe.set(e,null),no(e,t)}L();function Fs(e,t){A.set(e,"raster"),t={ariaLabel:"PMTiles raster",maxZoom:18,opacity:1,zIndex:0,...t},d.Util.setOptions(e,t),M.set(e,Ee()),Y.set(e,new Map),D.set(e,new Map),fe.set(e,0),we.set(e,Promise.withResolvers()),ae.set(e,new URL(t.url,document.baseURI).href),Br.set(e,new Map),re.set(e,Promise.resolve(e.options.archive||e).then(Ax.bind(null,e)).catch(Us.bind(null,e)))}var Nx=Object.freeze([]);function Fx(e){A.get(e)==="raster"&&ai(e,null)}function Wx(e,t){let r=Me.get(t);if(r?.layer===e){Me.delete(t),r.terrainController.abort(),r.terrainCache.clear(),t.fire("terrainchange"),no(e,t);return}si.get(e)?.abort(),zr.set(e,!1),Be.set(e,!1),t.eachLayer(Fx);let o,i,n,a;for(o of D.get(e).keys())Lo(e,o);me.get(t)===e&&me.delete(t);for(i of Object.values(t._layers))oi(i,null),Ko(i);t.fire("terrainchange"),rt.get(e).clear(),Je.set(e,0),Jt.set(e,null),he.get(e)&&he.get(e).pipelineCache.clear(),he.set(e,null),Oe.get(e)&&j(e,Oe.get(e).texture),Oe.set(e,null);for(n of At.get(e)?.values()||Nx)for(a of Object.values(n))j(e,a.buffer);At.set(e,null),ft.set(e,null),Ie(e,oo.get(e)),oo.set(e,null),no(e,t)}function jx(e,t){if(t.getTile!==void 0&&typeof t.getTile!="function")throw new Error("Streamed terrain requires a getTile function");let r=t.url,o={...t};delete o.url,Et(e,o),ro.set(e,r),rt.set(e,new Map),D.set(e,new Map),Be.set(e,!1),t.getTile&&Ps.set(e,!0),A.set(e,"terrain")}L();var Ws=Object.freeze({});var Kt=[[.86,.86,.88],[.1,.1,.12],[.5,.53,.57],[.65,.1,.08],[.12,.25,.55],[.85,.7,.15]];function $x(e){let t=Kt[e%Kt.length];return[[C(-.045,.045,-.85,-.25),.02,.62,Yt],[C(-.045,.045,.25,.85),.02,.62,Yt],[C(-.06,.06,-.5,.5),.4,.65,t],[C(-.32,.32,-.58,-.5),.95,1.02,Yt],[C(-.1,.1,.15,.4),.85,.92,Yt],[C(-.18,.18,-.12,.28),1,1.5,t],[C(-.11,.11,-.22,0),1.5,1.72,dt],[C(-.13,.13,-.23,.01),1.72,1.8,t],[C(-.25,-.15,-.5,-.05),1,1.25,dt],[C(.15,.25,-.5,-.05),1,1.25,dt],[C(-.2,-.08,0,.32),.3,1,Ht],[C(.08,.2,-.25,.07),.3,1,Ht]]}function Vx(e){let t=fs.body.slice();return t[1]=[t[1][0],t[1][1],t[1][2],Kt[e%Kt.length]],t.push([C(-.16,-.02,-.07,.07),.08,.9,Ht],[C(.02,.16,-.07,.07),.08,.9,Ht],[C(-.3,-.2,-.05,.05),.76,1.42,dt],[C(.2,.3,-.05,.05),.76,1.42,dt]),t}function ci(e){let t=e?.route_color;if(!/^[\da-f]{6}$/i.test(t))return[.1,.55,.65];let r=Number.parseInt(t,16);return[(r>>16&255)/255,(r>>8&255)/255,(r&255)/255]}var ao=[.12,.15,.18];var Ot=[.92,.93,.92];var li=[.05,.05,.05];var js=[1.9,1.85,1.7];var $s=[1.7,.06,.05];function ui(e,t,r){let o=e-t/2,i=e+t/2;return[[C(-1.25,1.25,o,i),.45,1.25,r],[C(-1.2,1.2,o+.15,i-.15),1.25,2.65,ao],[C(-1.25,1.25,o,i),2.65,3.1,Ot],[C(-1.15,-.85,o+1,o+2),0,.7,li],[C(.85,1.15,i-2,i-1),0,.7,li],[C(-.9,.9,o-.03,o),.8,1.05,js],[C(-.9,.9,i,i+.03),.8,1.05,$s]]}function Zx(e,t){return ui(0,12,ci(t))}function qx(e,t){let r=ci(t),o=[],i;for(i=0;i<5;i++)o.push(...ui((i-2)*6.5,6,r));return o}function Hx(e,t){let r=ci(t),o=[],i;for(i=0;i<5;i++)o.push(...ui((i-2)*15,14,r));return o}function Qt(e,t,r,o,...i){return[[C(e,t,r,o),...i],[C(-t,-e,r,o),...i]]}function Yx(e){let t=Kt[e%Kt.length];return[...Qt(.7,.92,-1.68,-1.02,0,.64,li),...Qt(.7,.92,1.02,1.68,0,.64,li),[[[-.9,-1.95],[-.72,-2.25],[.72,-2.25],[.9,-1.95],[.9,2.05],[.76,2.25],[-.76,2.25],[-.9,2.05]],.28,.82,t],[C(-.84,.84,-.75,1.6),.82,1.38,ao,C(-.7,.7,-.05,1.3)],[C(-.71,.71,-.06,1.31),1.38,1.46,t],...Qt(.38,.8,-2.3,-2.16,.56,.76,js),[C(-.78,.78,2.16,2.3),.6,.76,$s]]}var Pf=[[-5.5,30],[5.5,30],[5.5,-20],[4,-26],[1.5,-30],[-1.5,-30],[-4,-26],[-5.5,-20]];function Xx(){let e=[],t;for(t=0;t<12;t++)e.push(...Qt(.5,3.8,-12+t*3,-11.3+t*3,3.9,4.4,[.62,.1,.1]));return e}function Jx(){return[[Pf,0,.8,[.1,.16,.26]],[Pf,.8,1.4,Ot],[C(-5,5,-18,26),1.4,3.7,ao,C(-4.6,4.6,-17.4,25.6)],...Qt(4.64,4.74,-17,25,3.25,3.45,[1.6,1.25,.8]),[C(-4.8,4.8,-17.8,25.8),3.7,3.9,Ot],...Xx(),...Qt(4.65,4.8,-13.6,25.8,3.9,4.8,Ot),[C(-4.8,4.8,25.65,25.8),3.9,4.8,Ot],[C(-2.2,2.2,-17.6,-14),3.9,4.7,Ot],[C(-2.2,2.2,-17.6,-14),4.7,5.5,ao],[C(-2.5,2.5,-18,-13.6),5.5,5.7,Ot],[C(-2.45,-2.2,-16.2,-15.8),5,5.3,[2,.15,.1]],[C(2.2,2.45,-16.2,-15.8),5,5.3,[.1,2,.4]],[C(-.1,.1,-15.9,-15.7),5.7,6.6,Ot],[C(-.15,.15,-15.95,-15.65),6.6,6.8,[2,2,1.9]]]}var Kx={bicycle:{side:.4,model:$x},pedestrian:{side:.3,model:Vx},bus:{side:1.5,model:Zx},tram:{side:0,model:qx},metro:{side:0,model:Hx},car:{side:1.8,model:Yx,lights:[{position:[0,1.2,-6],radius:10,color:[1,.94,.82],flux:800}]},boat:{side:0,model:Jx,lights:[{position:[0,8,4],radius:30,color:[1,.8,.55],flux:2e4}]}};var Qx=" struct Params{seconds:f32,side:f32,vertices:u32,total:u32}struct Vehicle{start:u32,count:u32,base:f32,speed:f32}@group(0)@binding(0)var<uniform> params:Params;@group(0)@binding(1)var<storage,read> model:array<f32>;@group(0)@binding(2)var<storage,read> points:array<vec4f>;@group(0)@binding(3)var<storage,read> vehicles:array<Vehicle>;@group(0)@binding(4)var<storage,read_write> position:array<f32>;@group(0)@binding(5)var<storage,read_write> normal:array<f32>;var<workgroup> center:vec3f;var<workgroup> heading:vec2f;@compute@workgroup_size(64)fn main(@builtin(workgroup_id)group:vec3u,@builtin(local_invocation_index)thread:u32){let vehicleIndex = group.x;if(thread == 0u){let vehicle = vehicles[vehicleIndex];let last = vehicle.start + vehicle.count - 1u;let length = points[last].w;var s = vehicle.base + params.seconds * vehicle.speed;s -= length * floor(s / length);var i = vehicle.start + 1u;var end = last;while(i < end){let middle = i +(end - i)/ 2u;if(points[middle].w < s){i = middle + 1u;}else{end = middle;}}let a = points[i - 1u];let b = points[i];let d = select(b.w - a.w,1.0,b.w == a.w);let t =(s - a.w)/ d;heading =(b.xy - a.xy)/ d;center = vec3f(a.x +(b.x - a.x)* t - heading.y * params.side,a.z +(b.z - a.z)* t,a.y +(b.y - a.y)* t + heading.x * params.side);}workgroupBarrier();for(var vertex = thread;vertex < params.vertices;vertex += 64u){let k = vertex * 3u;let n = params.vertices * 3u + k;let o =(vehicleIndex * params.vertices + vertex)* 3u;position[o]= center.x - model[k]* heading.y - model[k + 2u]* heading.x;position[o + 1u]= center.y + model[k + 1u];position[o + 2u]= center.z + model[k]* heading.x - model[k + 2u]* heading.y;normal[o]= -model[n]* heading.y - model[n + 2u]* heading.x;normal[o + 1u]= model[n + 1u];normal[o + 2u]= model[n]* heading.x - model[n + 2u]* heading.y;}}";function e0({properties:e}){let t=document.createElement("div");t.style.whiteSpace="pre-line";let r=e.name?String(e.name):"";return e.departure&&(r+=`${r?`
1
+ (()=>{var Pv=Object.defineProperty;var b=(e,t,r)=>()=>{if(r)throw r[0];try{return e&&(t=e(e=0)),t}catch(o){throw r=[o],o}};var Sv=(e,t)=>{for(var r in t)Pv(e,r,{get:t[r],enumerable:!0})};var d,L=b(()=>{d=globalThis.L});var B,$=b(()=>{B=Math.PI/180});var tt,yo=b(()=>{tt=180/Math.PI});var Tn,gm=b(()=>{Tn=new WeakMap});function _(e){return Tn.get(e)??0}var J=b(()=>{gm()});var Pn,ym=b(()=>{Pn=new WeakMap});function k(e){return Pn.get(e)??0}var Z=b(()=>{ym()});var No,va=b(()=>{No=Object.freeze({})});var Ye,La=b(()=>{Ye=new WeakMap});function ba(){let e=this.getSize().y,t=_(this)*B,r=e*this.options.pitchMaxDistance,o=e*1.5,i=e/2-r*Math.abs(Math.cos(t))*o/(o+Math.sin(t)*r);i>0&&!Ye.get(this)&&(Ye.set(this,d.DomUtil.create("div","leaflet-pitch-sky",this.getContainer())),Ye.get(this).setAttribute("aria-hidden","true"),Ye.get(this).style.cssText="position:absolute;inset:0 0 auto;height:0;z-index:0;pointer-events:none;background:var(--leaflet-sky-background,linear-gradient(#9ec5e8,#dfe9f0))"),Ye.get(this)&&(Ye.get(this).style.inset=t>Math.PI/2?"auto 0 0":"0 0 auto",Ye.get(this).style.height=`${Math.max(0,Math.ceil(i))}px`,Ye.get(this).style.display=i>0?"":"none")}var $m=b(()=>{La();L();$();J()});function Fe(e,t,r){if(!Number.isFinite(t)||!Number.isFinite(r))throw new TypeError("Camera angles must be finite numbers");if(!Number.isFinite(e.options.maxPitch)||e.options.maxPitch<0||e.options.maxPitch>180)throw new TypeError("maxPitch must be between 0 and 180 degrees");let o=_(e),i=k(e);return Tn.set(e,Math.max(0,Math.min(e.options.maxPitch,t))),Pn.set(e,(r%360+360)%360),e._loaded&&(ba.call(e),i!==k(e)&&e.fire("rotate",{bearing:k(e)}),o!==_(e)&&e.fire("pitch",{pitch:_(e)})),e}var vr=b(()=>{ym();gm();J();Z();$m()});var qt,Ma=b(()=>{qt=new WeakMap});var Fo,Ba=b(()=>{Fo=new WeakMap});var Lr,Ta=b(()=>{Lr=new Map});var St,Pa=b(()=>{St={value:null}});function jo(e){Lr.delete(e),qt.set(e,null),Fo.set(e,null),!Lr.size&&St.value!==null&&(cancelAnimationFrame(St.value),St.value=null)}var Sa=b(()=>{Ma();Ba();Ta();Pa()});var qr,Ca=b(()=>{qr=new WeakMap});var Wo,Vm=b(()=>{Wo=new WeakMap});var Gi,Zm=b(()=>{Gi=new WeakMap});var br,Ui=b(()=>{br=new WeakMap});var Mr,Ni=b(()=>{Mr=new WeakMap});var qm,Pu=b(()=>{qm={value:void 0}});var Hm,Su=b(()=>{Hm={value:void 0}});var Ym,ku=b(()=>{Ym={value:void 0}});var Xm,Cu=b(()=>{Xm={value:void 0}});var _a,_u=b(()=>{_a={value:void 0}});var kt,$o=b(()=>{kt=new WeakMap});var Hr,Ea=b(()=>{Hr=new Set});var Fi,Jm=b(()=>{Fi=Object.freeze({capture:!0,passive:!1})});function Km(){this._map.fire("cameratouchchange")}var Eu=b(()=>{});var Vo,Oa=b(()=>{Vo=Object.freeze([.8,.5])});var Ou,zu=b(()=>{Ou=Object.freeze([.8,0])});var za,Qm=b(()=>{za=Object.freeze({preventScroll:!0})});var Aa,ef=b(()=>{Aa=Object.freeze({animate:!0})});function Au(e){St.value=null;let t=[...Lr];Lr.clear();let r,o,i,n,a;for([o,i]of t)if(Fo.set(o,null),qt.get(o)===i){n=i.duration?Math.min(1,(e-i.start)/(i.duration*1e3)):1,a=1-(1-n)**3;try{Fe(o,i.fromPitch+(Math.max(0,Math.min(o.options.maxPitch,i.pitch))-i.fromPitch)*a,i.fromBearing+i.delta*a),n<1&&qt.get(o)===i?Ra(o,i):qt.get(o)===i&&qt.set(o,null)}catch(s){r||=s}}if(r)throw r}var Ru=b(()=>{Ma();Ba();Pa();Ta();vr();tf()});function Ra(e,t){Lr.set(e,t),St.value===null&&(St.value=requestAnimationFrame(Au)),Fo.set(e,St.value)}var tf=b(()=>{Ba();Ta();Pa();Ru()});function Zo(e,t,r,o=No){if(jo(e),!Number.isFinite(t)||!Number.isFinite(r))throw new TypeError("Camera angles must be finite numbers");if(!o.animate||matchMedia("(prefers-reduced-motion: reduce)").matches)return Fe(e,t,r);let i=o.duration??.3;if(!Number.isFinite(i)||i<0)throw new TypeError("Camera duration must be nonnegative");let n=performance.now(),a=_(e),s=k(e),m=((r-s)%360+540)%360-180,f={duration:i,start:n,fromPitch:a,fromBearing:s,pitch:t,delta:m};return qt.set(e,f),Ra(e,f),e}var Ia=b(()=>{Ma();va();vr();J();Z();Sa();tf()});function Iu(e,t=Aa){return Zo(e,0,0,t)}var Du=b(()=>{ef();Ia()});function dt(e,t,r){return Zo(e,_(e),t,r)}var qo=b(()=>{Ia();J()});function Gu(e,t=Aa){return dt(e,0,t)}var Uu=b(()=>{ef();qo()});function Nu(e){let t=this._rotateControl,r=t._map;e.preventDefault(),t.options.visualizePitch?Iu(r):Gu(r),e.detail&&r.getContainer().focus(za)}var Fu=b(()=>{Qm();Du();Uu()});function Ht(e,t,r){return Zo(e,t,k(e),r)}var ji=b(()=>{Ia();Z()});function ju(e){let t=this._rotateControl,r=t._map,o=e.shiftKey?15:5;if(e.key==="ArrowLeft")dt(r,k(r)-o);else if(e.key==="ArrowRight")dt(r,k(r)+o);else if(e.key==="ArrowUp"&&t.options.visualizePitch)Ht(r,_(r)+o);else if(e.key==="ArrowDown"&&t.options.visualizePitch)Ht(r,_(r)-o);else if(e.key==="Home"||e.key===" ")this.click();else return;e.preventDefault(),e.stopPropagation()}var Wu=b(()=>{qo();Z();ji();J()});function Da(){let e=this._map,t=this.options.visualizePitch?_(e):0;this._arrow.style.transform=`scale(${1/Math.sqrt(Math.max(.01,Math.abs(Math.cos(t*B))))}) rotateX(${t}deg) rotate(${k(e)}deg)`,this._button.setAttribute("aria-description",`Bearing ${Math.round(k(e))} degrees, pitch ${Math.round(_(e))} degrees. Arrow keys adjust the camera; Home resets it.`),this._container.style.display=this.options.closeOnZeroBearing&&!k(e)&&!t&&!this._container.contains(document.activeElement)?"none":""}var rf=b(()=>{$();J();Z()});var je,Br=b(()=>{je={value:new WeakMap}});var Yr,Ga=b(()=>{Yr={value:new Set}});function Ua(e){return e.closest?.('input,textarea,select,[contenteditable="true"]')}var of=b(()=>{});function Na(e){let t=je.value.get(this);if(t.drag||!t.accept(e)||Ua(e.target))return;e.preventDefault(),e.stopPropagation(),t.moved=!1;let r=t.map.getContainer().getBoundingClientRect();t.drag={id:e.pointerId,x:e.clientX,y:e.clientY,cursor:t.element.style.cursor,cx:r.left+r.width/2,cy:r.top+r.height/2,dragging:t.map.dragging?.enabled()},t.map.dragging?.disable(),t.element.focus?.(za),t.element.setPointerCapture(e.pointerId),t.element.style.cursor="grabbing"}var nf=b(()=>{Br();Qm();of()});function Fa(e){return jo(e),e}var af=b(()=>{Sa()});function ja(e){let t=je.value.get(this);if(!t.drag||t.drag.id!==e.pointerId)return;let r=e.clientX-t.drag.x,o=e.clientY-t.drag.y;if(Math.hypot(r,o)<3&&!t.moved)return;Fa(t.map),t.moved=!0,e.preventDefault();let i=r*t.sensitivity[0];if(t.orbit)if(Math.abs(t.drag.cy-t.drag.y)>100){let n=Math.atan2(e.clientY-t.drag.cy,e.clientX-t.drag.cx)-Math.atan2(e.clientY-t.drag.cy,t.drag.x-t.drag.cx);i=Math.atan2(Math.sin(n),Math.cos(n))*tt}else i*=e.clientY<t.drag.cy?1:-1;Fe(t.map,_(t.map)-o*t.sensitivity[1],k(t.map)+i),t.drag.x=e.clientX,t.drag.y=e.clientY}var sf=b(()=>{yo();Br();af();vr();J();Z()});function Ho(e,t){if(!e?.drag||t?.pointerId!==void 0&&t.pointerId!==e.drag.id)return;let r=e.drag;e.drag=null,e.element.hasPointerCapture?.(r.id)&&e.element.releasePointerCapture(r.id),r.dragging&&e.map.getContainer()._leaflet_id&&e.map.dragging.enable(),e.element.style.cursor=r.cursor}var Wa=b(()=>{});function Tr(e){Ho(je.value.get(this),e)}var mf=b(()=>{Br();Wa()});function $a(e){let t=je.value.get(this);t.moved&&(e.preventDefault(),e.stopPropagation(),t.moved=!1)}var ff=b(()=>{Br()});function Va(e){let t=je.value.get(this);!t.drag&&!t.moved||(e.preventDefault(),e.stopPropagation())}var pf=b(()=>{Br()});function Za(){let e;for(e of Yr.value)Ho(e)}var cf=b(()=>{Ga();Wa()});function qa(e,t,r,o=Vo,i=!1){let n={map:e,element:t,accept:r,sensitivity:o,orbit:i,drag:null,moved:!1};return je.value.set(t,n),Yr.value.add(n),t.addEventListener("pointerdown",Na,!0),t.addEventListener("pointermove",ja),t.addEventListener("pointerup",Tr),t.addEventListener("pointercancel",Tr),t.addEventListener("lostpointercapture",Tr),t.addEventListener("click",$a,!0),t.addEventListener("contextmenu",Va),window.addEventListener("blur",Za),n}var lf=b(()=>{Oa();Br();Ga();nf();sf();mf();ff();pf();cf()});function $u(e){return e.button===0}var Vu=b(()=>{});function Zu(){Da.call(this._rotateControl)}var qu=b(()=>{rf()});function Hu(e){let t=d.DomUtil.create("div","leaflet-control-rotate leaflet-bar"),r=d.DomUtil.create("a","leaflet-control-rotate-toggle",t);this._map=e,this._container=t,this._button=r,r._rotateControl=this,r.href="#",r.draggable=!1,r.setAttribute("role","button"),r.title=this.options.visualizePitch?"Reset bearing and pitch":"Reset bearing to north",r.setAttribute("aria-label",r.title),r.style.cssText="cursor:grab;touch-action:none";let o=d.DomUtil.create("span","leaflet-control-rotate-arrow",r);return this._arrow=o,o.setAttribute("aria-hidden","true"),o.style.cssText="display:block;width:100%;height:100%;pointer-events:none;background: no-repeat center / 29px 29px",o.style.backgroundImage='url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 29 29%27%3E%3Cpath fill=%27%23333%27 d=%27M10.5 14 14.5 6 18.5 14Z%27/%3E%3Cpath fill=%27%23ccc%27 d=%27M10.5 16 14.5 24 18.5 16Z%27/%3E%3C/svg%3E")',r.onclick=Nu,r.onkeydown=ju,this._refresh=Da,e.on("rotate pitch",this._refresh,this),this._refresh(),this._dragState=qa(e,r,$u,this.options.visualizePitch?Vo:Ou),r.addEventListener("focusout",Zu),d.DomEvent.on(r,"dblclick contextmenu",d.DomEvent.stop),d.DomEvent.disableClickPropagation(t),d.DomEvent.disableScrollPropagation(t),t}var Yu=b(()=>{L();Oa();zu();Fu();Wu();rf();lf();Vu();qu()});function Xu(e){Ho(e);let{element:t}=e;t.removeEventListener("pointerdown",Na,!0),t.removeEventListener("pointermove",ja),t.removeEventListener("pointerup",Tr),t.removeEventListener("pointercancel",Tr),t.removeEventListener("lostpointercapture",Tr),t.removeEventListener("click",$a,!0),t.removeEventListener("contextmenu",Va),je.value.delete(t),Yr.value.delete(e),Yr.value.size||window.removeEventListener("blur",Za)}var Ju=b(()=>{Br();Ga();Wa();nf();sf();mf();ff();pf();cf()});function Ha(){Xu(this._dragState)}var uf=b(()=>{Ju()});function Ku(e){e.off("rotate pitch",this._refresh,this),Ha.call(this)}var Qu=b(()=>{uf()});function ed(e){return new d.Control.Rotate(e)}var td=b(()=>{L()});function rd(e){let t=this._cameraShiftRotate;!e.shiftKey||Ua(e.target)||e.target.closest(".leaflet-control")||(e.preventDefault(),e.stopImmediatePropagation(),dt(t._map,k(t._map)+Math.sign(e.deltaY)*5))}var od=b(()=>{qo();Z();of()});function id(){let e=this._map.getContainer();e._cameraShiftRotate=this,this._wheel=rd,e.addEventListener("wheel",this._wheel,Fi)}var nd=b(()=>{Jm();od()});function ad(){let e=this._map.getContainer();e.removeEventListener("wheel",this._wheel,!0),delete e._cameraShiftRotate}var sd=b(()=>{});function md(e){return!e.target.closest(".leaflet-control,.leaflet-marker-icon,.leaflet-popup")&&(e.button===2||e.button===0&&e.ctrlKey)}var fd=b(()=>{});function pd(){this._dragState=qa(this._map,this._map.getContainer(),md,Vo,!0)}var cd=b(()=>{Oa();lf();fd()});function ld(e){let t=this.handler,r=Number.isFinite(e.webkitCompassHeading)?-e.webkitCompassHeading:e.alpha,o=e.absolute?0:screen.orientation?.angle??window.orientation??0;Number.isFinite(r)&&dt(t._map,r-o)}var ud=b(()=>{qo()});function df(e,t){e.disable(),e._map.fire("error",{error:t})}var dd=b(()=>{});function hd([e,t]){let{handler:r,generation:o}=e.value;if(!(!r.enabled()||r._generation!==o)){if(!window.DeviceOrientationEvent||t.status!=="fulfilled"||t.value!=="granted")return df(r,t.status==="rejected"?t.reason:new Error("Device compass permission unavailable or denied"));try{window.addEventListener("deviceorientation",r._orientation),window.addEventListener("deviceorientationabsolute",r._orientation)}catch(i){df(r,i)}}}var gd=b(()=>{dd()});function yd(){this._compassGeneration=this._generation=(this._generation||0)+1,this._orientation={handler:this,handleEvent:ld};let e=window.DeviceOrientationEvent?.requestPermission,t;try{t=e?e.call(window.DeviceOrientationEvent):"granted"}catch(r){t=Promise.reject(r)}Promise.allSettled([Promise.resolve({handler:this,generation:this._generation}),t]).then(hd)}var xd=b(()=>{ud();gd()});function vd(){this._generation++,window.removeEventListener("deviceorientation",this._orientation),window.removeEventListener("deviceorientationabsolute",this._orientation)}var wd=b(()=>{});function Ld(e){e[0]?.target._containerResizeMap.invalidateSize()}var bd=b(()=>{});function Md(){let e=this._map.getContainer();e._containerResizeMap=this._map,this._observer=new ResizeObserver(Ld),this._observer.observe(e)}var Bd=b(()=>{bd()});function Td(){let e=this._map.getContainer();this._observer.disconnect(),delete e._containerResizeMap}var Pd=b(()=>{});function Ya(e){let t=kt.get(this),{map:r,container:o}=t;if(t.touch||e.touches.length!==2||e.target.closest(".leaflet-control")||!Mr.get(r).enabled()&&!br.get(r).enabled())return;let[i,n]=e.touches;if(Math.hypot(n.clientX-i.clientX,n.clientY-i.clientY)<1)return;Fa(r);let a=o.getBoundingClientRect(),s=new d.Point((i.clientX+n.clientX)/2-a.left,(i.clientY+n.clientY)/2-a.top);t.touch={angle:Math.atan2(n.clientY-i.clientY,n.clientX-i.clientX),distance:Math.hypot(n.clientX-i.clientX,n.clientY-i.clientY),middle:s,anchor:r.containerPointToLatLng(s),zoom:r.getZoom(),bearing:k(r),pitch:_(r),zooming:r.touchZoom?.enabled(),dragging:r.dragging?.enabled(),currentMiddle:new d.Point(s.x,s.y)},r.dragging?.disable(),e.preventDefault(),e.stopImmediatePropagation(),t.nativeZoom!==void 0&&(t.touch.zooming=t.nativeZoom),t.touch.snap=r.options.zoomSnap,r.options.zoomSnap=0}var hf=b(()=>{Ui();Ni();L();$o();af();Z();J()});function Xa(e){let t=kt.get(this),{map:r,container:o,touch:i}=t;if(!i||e.touches.length!==2)return;let[n,a]=e.touches,s=Math.atan2(a.clientY-n.clientY,a.clientX-n.clientX),m=o.getBoundingClientRect(),f=i.currentMiddle;f.x=(n.clientX+a.clientX)/2-m.left,f.y=(n.clientY+a.clientY)/2-m.top;let p=Math.atan2(Math.sin(s-i.angle),Math.cos(s-i.angle))*tt;Fe(r,br.get(r).enabled()?i.pitch-(f.y-i.middle.y)*.25:i.pitch,Mr.get(r).enabled()?i.bearing+p:i.bearing);let c=Math.hypot(a.clientX-n.clientX,a.clientY-n.clientY);if(c<1)return;let l=i.zooming?Math.max(r.getMinZoom(),Math.min(r.getMaxZoom(),i.zoom+Math.log2(c/i.distance))):i.zoom;if(r.setView(r.getCenter(),l,{animate:!1}),r.options.touchZoom!=="center"){let u=r.project(i.anchor).subtract(r.project(r.containerPointToLatLng(f)));r.setView(r.unproject(r.project(r.getCenter()).add(u)),r.getZoom(),{animate:!1})}e.preventDefault(),e.stopImmediatePropagation()}var gf=b(()=>{Ui();Ni();yo();$o();vr()});function Pr(e,t){if(!e.touch||t?.touches?.length>=2)return;let{map:r,container:o,touch:i}=e;i.dragging&&o._leaflet_id&&r.dragging.enable(),r.options.zoomSnap=i.snap,i.zooming&&i.snap&&o._leaflet_id&&r.setZoom(Math.round(r.getZoom()/i.snap)*i.snap,{animate:!1}),e.touch=null}var Wi=b(()=>{});function Yo(e){Pr(kt.get(this),e)}var yf=b(()=>{$o();Wi()});function $i(){let e=qr.get(this),{map:t,container:r}=e,o=Mr.get(t).enabled()||br.get(t).enabled();o&&e.nativeZoom===void 0?(e.nativeZoom=t.touchZoom?.enabled(),t.touchZoom?.disable()):!o&&e.nativeZoom!==void 0&&(Pr(e),e.nativeZoom&&r._leaflet_id&&t.touchZoom.enable(),e.nativeZoom=void 0)}var xf=b(()=>{Ca();Ui();Ni();Wi()});function Ja(){let e;for(e of Hr)Pr(e)}var vf=b(()=>{Ea();Wi()});function Sd(){let e=qr.get(this);if(!e)return;let{container:t,map:r}=e;Pr(e),t.removeEventListener("touchstart",Ya,!0),t.removeEventListener("touchmove",Xa,!0),t.removeEventListener("touchend",Yo,!0),t.removeEventListener("touchcancel",Yo,!0),Hr.delete(e),Hr.size||window.removeEventListener("blur",Ja),r.off("cameratouchchange",$i,r),Gi.get(r)?.remove(),kt.delete(t),qr.delete(r)}var kd=b(()=>{Ca();Zm();Ea();$o();Wi();hf();gf();yf();vf();xf()});function Xr(e,t,r){let o=Wo.get(e);o||Wo.set(e,o=new Map);let i=new r(e);o.set(t,i),e._handlers.push(i),e.options[t]&&i.enable()}var Cd=b(()=>{Vm()});function ht(e){return d.version.startsWith("2.")?e:e.extend({})}var Ka=b(()=>{L()});var _d={};Sv(_d,{cameraControls:()=>kv});function kv(e){if(Xr(e,"trackContainerMutation",Hm.value),!e.options.rotate)return;Xr(e,"shiftKeyRotate",Xm.value),Xr(e,"pitchDrag",Ym.value),Xr(e,"compassBearing",qm.value),Xr(e,"touchRotate",_a.value),Xr(e,"touchPitch",_a.value),Mr.set(e,Wo.get(e).get("touchRotate")),br.set(e,Wo.get(e).get("touchPitch"));let t=e.getContainer(),r={map:e,container:t,touch:null,nativeZoom:void 0};qr.set(e,r),kt.set(t,r),Hr.add(r),t.addEventListener("touchstart",Ya,Fi),t.addEventListener("touchmove",Xa,Fi),t.addEventListener("touchend",Yo,!0),t.addEventListener("touchcancel",Yo,!0),window.addEventListener("blur",Ja),e.on("cameratouchchange",$i,e),$i.call(e),e.options.rotateControl&&(Gi.set(e,new d.Control.Rotate(typeof e.options.rotateControl=="object"?e.options.rotateControl:No)),Gi.get(e).addTo(e)),e.once("unload",Sd,e)}var Qa,es,ts,rs,os,Xo,Ed=b(()=>{Ca();Vm();Zm();Ui();Ni();L();Pu();Su();ku();Cu();_u();$o();Ea();Jm();va();Eu();Yu();Qu();td();nd();sd();cd();uf();xd();wd();Bd();Pd();hf();gf();yf();xf();kd();vf();Cd();Ka();Qa=class extends ht(d.Handler){};Object.assign(Qa.prototype,{addHooks:yd,removeHooks:vd});qm.value=Qa;es=class extends ht(d.Handler){};Object.assign(es.prototype,{addHooks:Md,removeHooks:Td});Hm.value=es;ts=class extends ht(d.Handler){};Object.assign(ts.prototype,{addHooks:pd,removeHooks:Ha});Ym.value=ts;rs=class extends ht(d.Handler){};Object.assign(rs.prototype,{addHooks:id,removeHooks:ad});Xm.value=rs;os=class extends ht(d.Handler){};Object.assign(os.prototype,{addHooks:Km,removeHooks:Km});_a.value=os;Xo=class extends ht(d.Control){static defaultOptions={position:"topleft",closeOnZeroBearing:!0,visualizePitch:!0}};Object.assign(Xo.prototype,{onAdd:Hu,onRemove:Ku});d.version.startsWith("1.")&&(Xo.prototype.options=Object.assign(Object.create(d.Control.prototype.options),Xo.defaultOptions));d.Control.Rotate=Xo;d.control&&(d.control.rotate=ed)});L();var mt={value:void 0};var dn={value:void 0};L();var j={value:void 0};var et={value:void 0};var hn={value:void 0};var gn={value:void 0};var yn={value:void 0};var xn={value:void 0};var vn={value:void 0};var wn={value:void 0};var Ln={value:void 0};var de=new WeakMap;var re=new WeakMap;var uo=new WeakMap;var ar=new WeakMap;L();var R=new WeakMap;var wt=new WeakMap;function Bi(e){let t=wt.get(e.currentTarget);if(!t)return;let r;for(r of t)De(r)}function Ti(e){let t=wt.get(e.currentTarget);if(!t)return;let r;for(r of t)r.source.fire("error",{error:new Error("Unable to load native layer image")})}function bn(e,t){let r=wt.get(e);r&&(r.delete(t),r.size||wt.delete(e))}function Yf(e,t){let r=wt.get(e);r||wt.set(e,r=new Set),r.add(t)}var ft=new WeakMap;var Nt=new Set;var F=new WeakMap;var w=new WeakMap;var oe=new WeakMap;var Ft=new WeakMap;var sr=new WeakMap;var pt=new WeakMap;var Mn=[null];var ho=new WeakMap;var he=new WeakMap;var qe=new WeakMap;var Xf={subtree:!0};var se=new WeakMap;L();function Bn(e){let t;for(t of Object.values(e._layers))t instanceof d.Marker?t.update():(t instanceof d.Popup||t instanceof d.Tooltip)&&t._updatePosition()}function Jf(e,t){let r=e._map,o=qe.get(e),i,n;for(n of he.get(e).keys())if(n.effect.target===r._proxy){i=n;break}let a=i?.effect.getComputedTiming().progress??Math.min(1,(t-o.start)/250),s=r.getZoomScale(o.targetZoom,o.zoom),m=1+(s-1)*a,f=r.project(o.from,o.zoom),p=r.project(o.to,o.zoom);se.set(r,{zoom:r.getScaleZoom(m,o.zoom),center:r.unproject(f.add(p.subtract(f).multiplyBy(s*a/m)),o.zoom)}),Bn(r)}function Kf(e,t){let r=e._map,o,i,n;if(r._animatingZoom){he.get(e)||he.set(e,new Map);for(o of r.getContainer().getAnimations(Xf))!(o instanceof CSSTransition)||o.transitionProperty!=="transform"||!o.effect.target.classList.contains("leaflet-zoom-animated")||he.get(e).has(o)||(i=o.currentTime||0,o.pause(),he.get(e).set(o,{start:t,time:i}));for([o,{start:n,time:i}]of he.get(e))o.currentTime=Math.min(o.effect.getComputedTiming().endTime,i+t-n);qe.get(e)&&Jf(e,t)}}var mr=new WeakMap;var Pi={size:[null,null],format:"depth24plus",sampleCount:4,usage:null};var go={size:[null,null],format:null,sampleCount:4,usage:null};async function Qf(e,t,r){try{await r}catch(o){e.fire("error",{error:o})}t.destroy()}function W(e,t){Qf(e,t,w.get(e).device.queue.onSubmittedWorkDone())}function ep(e,t){let r=w.get(e);(!mr.get(e)||!mr.get(e).equals(t))&&(r.width=t.x,r.height=t.y,r.canvas.width=Math.round(t.x*r.dpr),r.canvas.height=Math.round(t.y*r.dpr),r.canvas.style.width=`${t.x}px`,r.canvas.style.height=`${t.y}px`,r.depthTexture&&W(e,r.depthTexture),r.colorTexture?.destroy(),r.colorTexture=r.device.createTexture((go.size[0]=r.canvas.width,go.size[1]=r.canvas.height,go.format=r.format,go.usage=GPUTextureUsage.RENDER_ATTACHMENT,go)),r.depthTexture=r.device.createTexture((Pi.size[0]=r.canvas.width,Pi.size[1]=r.canvas.height,Pi.usage=GPUTextureUsage.RENDER_ATTACHMENT,Pi)),mr.set(e,t))}var ee=new WeakMap;var ie=new WeakMap;$();yo();var tp=2*Math.atan(1/3)*tt;var rt=2*Math.PI*6378137;var me=new WeakMap;var Be=new WeakMap;var ct=new WeakMap;var Te=new WeakMap;var ot=new WeakMap;var ye=new WeakMap;L();function rp(e,t){let r=t?.get(`${Math.floor(e.x/64)}/${Math.floor(e.y/64)}`);if(!r)return null;let o,i,n,a,s,m,f;for(o of r)if(!(e.x<o.min[0]||e.x>o.max[0]||e.y<o.min[1]||e.y>o.max[1])){for([i,n,a]of o.triangles)if(s=(n[1]-a[1])*(i[0]-a[0])+(a[0]-n[0])*(i[1]-a[1]),m=((n[1]-a[1])*(e.x-a[0])+(a[0]-n[0])*(e.y-a[1]))/s,f=((a[1]-i[1])*(e.x-a[0])+(i[0]-a[0])*(e.y-a[1]))/s,m>=0&&f>=0&&m+f<=1)return m*i[2]+f*n[2]+(1-m-f)*a[2]}return null}function Si(e,t,r){let o=Math.floor(t/256),i=Math.floor(r/256),n=e.get(`${o}/${i}`);if(!n)return null;let a=n[(r-i*256)*256+t-o*256];return Number.isFinite(a)&&a>-1e3?a:null}function fr(e,t){let r=e.x-.5,o=e.y-.5,i=Math.floor(r),n=Math.floor(o),a=r-i,s=o-n,m=Si(t,i,n),f=Si(t,i+1,n),p=Si(t,i,n+1),c=Si(t,i+1,n+1);return!Number.isFinite(m)||!Number.isFinite(f)||!Number.isFinite(p)||!Number.isFinite(c)?Number.isFinite(m)?m:Number.isFinite(f)?f:Number.isFinite(p)?p:Number.isFinite(c)?c:null:(m*(1-a)+f*a)*(1-s)+(p*(1-a)+c*a)*s}function pr(e,t){if(!e._map||!Te.get(e))return null;let r=t instanceof d.Point?t:e._map.project(t,ye.get(e));return rp(r,ct.get(e))??fr(r,ot.get(e))}function op(e,t,r,o,i){let n,a,s,m,f=`${r}:${o}:${i}`;for(n of Object.values(e.map._layers))if(a=de.get(n),!(a?.disposed||a?.terrainStream!==e)&&(s=a.terrainRequests?.get(f),!(!s?.tiles||n._tiles[f]!==s.tile)&&(m=fr(t,s.tiles),Number.isFinite(m))))return m;return null}function ip(e,t){let r=Math.max(0,Math.min(24,Math.round(e.map.getZoom()))),o=new Map,i,n,a,s,m,f,p,c,l,u,h;for(;r>=0;r--){if(i=e.map.project(t,r),n=2**r,a=Math.floor(i.x/256),s=Math.floor(i.y/256),h=op(e,i,a,s,r),Number.isFinite(h))return h;for(o.clear(),m=0;m<9;m++)f=m%3-1,p=Math.floor(m/3)-1,c=((a+f)%n+n)%n,l=Math.max(0,Math.min(n-1,s+p)),u=e.terrainCache.get(`${r}/${c}/${l}`),u?.data&&o.set(`${a+f}/${s+p}`,u.data);if(h=fr(i,o),Number.isFinite(h))return h}return null}function xe(e,t){let r=me.get(e);if(r)return pr(r,t);let o=Be.get(e);return o&&ip(o,t)}var jt=new WeakMap;J();Z();var np=Math.PI/360;function xo(e){e.x||=[0,0,0],e.y||=[0,0,0],e.z||=[0,0,0],e.viewTransform||=new DOMMatrix,e.projectionTransform||=new DOMMatrix,e.projectionViewTransform||=new DOMMatrix;let{position:t,target:r,up:o,x:i,y:n,z:a,viewMatrix:s,projectionMatrix:m,projectionViewMatrix:f}=e,p;a[0]=t[0]-r[0],a[1]=t[1]-r[1],a[2]=t[2]-r[2];let c=Math.hypot(a[0],a[1],a[2])||1;a[0]/=c,a[1]/=c,a[2]/=c,i[0]=o[1]*a[2]-o[2]*a[1],i[1]=o[2]*a[0]-o[0]*a[2],i[2]=o[0]*a[1]-o[1]*a[0];let l=Math.hypot(i[0],i[1],i[2])||1;i[0]/=l,i[1]/=l,i[2]/=l,n[0]=a[1]*i[2]-a[2]*i[1],n[1]=a[2]*i[0]-a[0]*i[2],n[2]=a[0]*i[1]-a[1]*i[0];let u=e.viewTransform;u.m11=i[0],u.m12=i[1],u.m13=i[2],u.m14=0,u.m21=n[0],u.m22=n[1],u.m23=n[2],u.m24=0,u.m31=a[0],u.m32=a[1],u.m33=a[2],u.m34=0,u.m41=t[0],u.m42=t[1],u.m43=t[2],u.m44=1,u.invertSelf(),s[0]=u.m11,s[1]=u.m12,s[2]=u.m13,s[3]=u.m14,s[4]=u.m21,s[5]=u.m22,s[6]=u.m23,s[7]=u.m24,s[8]=u.m31,s[9]=u.m32,s[10]=u.m33,s[11]=u.m34,s[12]=u.m41,s[13]=u.m42,s[14]=u.m43,s[15]=u.m44;for(p of s)if(!Number.isFinite(p))throw new Error("Singular 3D transform");let h=1/Math.tan(e.fov*np),x=e.near,g=e.far;m[0]=h/e.aspect,m[1]=0,m[2]=0,m[3]=0,m[4]=0,m[5]=h,m[6]=0,m[7]=0,m[8]=0,m[9]=0,m[10]=g/(x-g),m[11]=-1,m[12]=0,m[13]=0,m[14]=g*x/(x-g),m[15]=0;let y=e.projectionTransform;y.m11=m[0],y.m12=m[1],y.m13=m[2],y.m14=m[3],y.m21=m[4],y.m22=m[5],y.m23=m[6],y.m24=m[7],y.m31=m[8],y.m32=m[9],y.m33=m[10],y.m34=m[11],y.m41=m[12],y.m42=m[13],y.m43=m[14],y.m44=m[15];let v=e.projectionViewTransform;v.m11=y.m11,v.m12=y.m12,v.m13=y.m13,v.m14=y.m14,v.m21=y.m21,v.m22=y.m22,v.m23=y.m23,v.m24=y.m24,v.m31=y.m31,v.m32=y.m32,v.m33=y.m33,v.m34=y.m34,v.m41=y.m41,v.m42=y.m42,v.m43=y.m43,v.m44=y.m44,v.multiplySelf(u),f[0]=v.m11,f[1]=v.m12,f[2]=v.m13,f[3]=v.m14,f[4]=v.m21,f[5]=v.m22,f[6]=v.m23,f[7]=v.m24,f[8]=v.m31,f[9]=v.m32,f[10]=v.m33,f[11]=v.m34,f[12]=v.m41,f[13]=v.m42,f[14]=v.m43,f[15]=v.m44}function it(e,t,r=!1){let o=se.get(e);if(!o)return t;let i=e.getSize().divideBy(2),n=e.getZoomScale(o.zoom),a=e.project(e.getCenter(),o.zoom).subtract(e.project(o.center,o.zoom));return r?t.subtract(i).subtract(a).divideBy(n).add(i):t.subtract(i).multiplyBy(n).add(a).add(i)}function ap(e,t){let r=e._map,o=se.get(r)?.zoom??r.getZoom(),i=r.options.crs.scale(o)/(rt*Math.cos(ie.get(e).lat*B)),n=it(r,j.value.layerPointToContainerPoint.call(r,r.project(ie.get(e)).subtract(r.getPixelOrigin()))),a=t.y*1.5/i,s=(t.x/2-n.x)/i,m=jt.get(r)?.control?._walk,f=(xe(r,r.getCenter())??0)+(m?.saved?m.state.height:0),p=(t.y/2-n.y)/i,c=_(r)*B,l=k(r)*B,u=Math.sin(c),h=Math.cos(c),x=Math.sin(l),g=Math.cos(l),y=ee.get(e);y.fov=tp,y.aspect=t.x/t.y,y.near=Math.max(.1,a/1e4),y.far=Math.max(1e4,a*10),y.position[0]=s+x*u*a,y.position[1]=f+h*a,y.position[2]=p+g*u*a,y.up[0]=-x*h,y.up[1]=u,y.up[2]=-g*h,y.target[0]=s,y.target[1]=f,y.target[2]=p,xo(y)}var jr=new WeakMap;function sp(e,t){let r,o;if(e.matrix){let i=e._matrixState||=new Float64Array(16);for(r=0;r<16;r++)i[r]!==e.matrix[r]&&(t=!0),i[r]=e.matrix[r]}else{let i=e._transformState||=new Float64Array(9);for(r=0;r<9;r++)o=r<3?e.position[r]:r<6?e.rotation[r-3]:e.scale[r-6],i[r]!==o&&(t=!0),i[r]=o}return t}yo();function mp(e){let t=e._localTransform||=new DOMMatrix;return t.m11=1,t.m12=0,t.m13=0,t.m14=0,t.m21=0,t.m22=1,t.m23=0,t.m24=0,t.m31=0,t.m32=0,t.m33=1,t.m34=0,t.m41=0,t.m42=0,t.m43=0,t.m44=1,t.translateSelf(e.position[0],e.position[1],e.position[2]),t.rotateAxisAngleSelf(0,1,0,e.rotation[1]*tt),t.rotateAxisAngleSelf(1,0,0,e.rotation[0]*tt),t.rotateAxisAngleSelf(0,0,1,e.rotation[2]*tt),t.scaleSelf(e.scale[0],e.scale[1],e.scale[2]),t}function Pe(e){let t=e.parent,r=t?._worldMatrixVersion||0,o=!!e.matrix,i=e._worldParent!==t||e._parentWorldVersion!==r||e._worldMatrixMode!==o,n;if(i=sp(e,i),!i){for(n of e.children)Pe(n);return}let a,s;e.matrix?a=e.matrix:a=mp(e),s=e._worldTransform||=new DOMMatrix,a instanceof DOMMatrix?(s.m11=a.m11,s.m12=a.m12,s.m13=a.m13,s.m14=a.m14,s.m21=a.m21,s.m22=a.m22,s.m23=a.m23,s.m24=a.m24,s.m31=a.m31,s.m32=a.m32,s.m33=a.m33,s.m34=a.m34,s.m41=a.m41,s.m42=a.m42,s.m43=a.m43,s.m44=a.m44):(s.m11=a[0],s.m12=a[1],s.m13=a[2],s.m14=a[3],s.m21=a[4],s.m22=a[5],s.m23=a[6],s.m24=a[7],s.m31=a[8],s.m32=a[9],s.m33=a[10],s.m34=a[11],s.m41=a[12],s.m42=a[13],s.m43=a[14],s.m44=a[15]),t&&s.preMultiplySelf(t._worldTransform),e.worldMatrix[0]=s.m11,e.worldMatrix[1]=s.m12,e.worldMatrix[2]=s.m13,e.worldMatrix[3]=s.m14,e.worldMatrix[4]=s.m21,e.worldMatrix[5]=s.m22,e.worldMatrix[6]=s.m23,e.worldMatrix[7]=s.m24,e.worldMatrix[8]=s.m31,e.worldMatrix[9]=s.m32,e.worldMatrix[10]=s.m33,e.worldMatrix[11]=s.m34,e.worldMatrix[12]=s.m41,e.worldMatrix[13]=s.m42,e.worldMatrix[14]=s.m43,e.worldMatrix[15]=s.m44,e._worldParent=t,e._parentWorldVersion=r,e._worldMatrixMode=o,e._worldMatrixVersion=(e._worldMatrixVersion||0)+1;for(n of e.children)Pe(n)}function _e(e){let t=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0],o=e.attributes.position.data,i,n,a,s;for(i=0;i<o.length;i+=3)n=o[i],a=o[i+1],s=o[i+2],t[0]=Math.min(t[0],n),r[0]=Math.max(r[0],n),t[1]=Math.min(t[1],a),r[1]=Math.max(r[1],a),t[2]=Math.min(t[2],s),r[2]=Math.max(r[2],s);let m=e.attributes.instanceOffset;if(m){let l,u,h,x;for(l=0;l<3;l++){for(h=1/0,x=-1/0,u=l;u<m.data.length;u+=m.size)h=Math.min(h,m.data[u]),x=Math.max(x,m.data[u]);t[l]=Math.fround(t[l]+h),r[l]=Math.fround(r[l]+x)}}let f=[(t[0]+r[0])/2,(t[1]+r[1])/2,(t[2]+r[2])/2],p=0;for(i=0;!m&&i<o.length;i+=3)n=o[i]-f[0],a=o[i+1]-f[1],s=o[i+2]-f[2],p=Math.max(p,n*n+a*a+s*s);let c=m?Math.hypot(r[0]-t[0],r[1]-t[1],r[2]-t[2])/2:Math.sqrt(p);if(!m&&(p===1/0||p<Number.MIN_VALUE/Number.EPSILON))for(c=0,i=0;i<o.length;i+=3)c=Math.max(c,Math.hypot(o[i]-f[0],o[i+1]-f[1],o[i+2]-f[2]));e.bounds={min:t,max:r,center:f,radius:c}}function fp(e){let t=e.program?.uniforms?.strokeScale?.value??1;return Math.max(0,t-1)*(e.geometry.nativeStrokeRadius||0)}function pp(e,t,r,o,i){e.geometry.bounds||_e(e.geometry);let n=e.geometry.bounds,a=e.worldMatrix,s=e._cullingSphere;if(!s||s.bounds!==n||s.matrix!==a||s.version!==e._worldMatrixVersion||e._worldMatrixVersion===void 0){s||=e._cullingSphere={};let h=n.center;s.x=a[0]*h[0]+a[4]*h[1]+a[8]*h[2]+a[12],s.y=a[1]*h[0]+a[5]*h[1]+a[9]*h[2]+a[13],s.z=a[2]*h[0]+a[6]*h[1]+a[10]*h[2]+a[14],s.scale=Math.max(Math.hypot(a[0],a[1],a[2]),Math.hypot(a[4],a[5],a[6]),Math.hypot(a[8],a[9],a[10])),s.radius=n.radius*s.scale,s.bounds=n,s.matrix=a,s.version=e._worldMatrixVersion}let{x:m,y:f,z:p}=s,c=s.radius+fp(e)*s.scale,l=t[2]*m+t[6]*f+t[10]*p+t[14],u=t[3]*m+t[7]*f+t[11]*p+t[15];e._sortDepth=l/u,e._visibleInFrame=r[0][0]*m+r[0][1]*f+r[0][2]*p+r[0][3]>=-c*o[0]&&r[1][0]*m+r[1][1]*f+r[1][2]*p+r[1][3]>=-c*o[1]&&r[2][0]*m+r[2][1]*f+r[2][2]*p+r[2][3]>=-c*o[2]&&r[3][0]*m+r[3][1]*f+r[3][2]*p+r[3][3]>=-c*o[3]&&r[4][0]*m+r[4][1]*f+r[4][2]*p+r[4][3]>=-c*o[4]&&r[5][0]*m+r[5][1]*f+r[5][2]*p+r[5][3]>=-c*o[5],e._visibleInFrame&&i.push(e)}function xm(e,t,r,o,i,n,a){if(!e.visible)return;e.geometry&&(t?.altitude>=3&&!e.tile&&e._appearance!==0&&!e.program.nightLight&&e.program.depthTest!==!1&&a.push(e),pp(e,r,o,i,n));let s;for(s of e.children)xm(s,t,r,o,i,n,a)}function cp(e,t,r){let i=ee.get(e).projectionViewMatrix,n=w.get(e),a=n.frustum||=[new Float64Array(4),new Float64Array(4),new Float64Array(4),new Float64Array(4),new Float64Array(4),new Float64Array(4)],s=n.frustumLengths||=new Float64Array(6),m,f,p,c,l;for(m=0;m<6;m++){for(f=Math.floor(m/2),p=a[m],c=0;c<4;c++)l=c*4,p[c]=m===4?i[l+2]:m%2?i[l+3]-i[l+f]:i[l+3]+i[l+f];s[m]=Math.hypot(p[0],p[1],p[2])}let u=jr.get(e);u||jr.set(e,u=[]),u.length=0;let h=Ft.get(e);h||Ft.set(e,h=[]),h.length=0,r&&Pe(oe.get(e)),xm(oe.get(e),t,i,a,s,u,h)}var z=new WeakMap;var I=new WeakMap;var K=new WeakMap;var ki=new WeakMap;var fe=new WeakMap;var Ee=new WeakMap;L();var lp=[];$();var up=[];var dp={x:0,y:0};var hp={x:1,y:1};var gp={code:"@group(0)@binding(0)var source:texture_2d<f32>;@group(0)@binding(1)var sourceSampler:sampler;@group(0)@binding(2)var<uniform> opacity:f32;struct Varyings{@builtin(position)position:vec4f,@location(0)uv:vec2f};@vertex fn vertexMain(@builtin(vertex_index)index:u32)-> Varyings{let uv = vec2f(f32(index & 1u),f32(index >> 1u));return Varyings(vec4f(uv.x * 2.0 - 1.0,1.0 - uv.y * 2.0,0.0,1.0),uv);}@fragment fn fragmentMain(input:Varyings)->@location(0)vec4f{let color = textureSample(source,sourceSampler,input.uv);return vec4f(color.rgb,color.a * opacity);}"};var vo={layout:"auto",vertex:{module:null,entryPoint:"vertexMain"},fragment:{module:null,entryPoint:"fragmentMain",targets:[{format:"rgba8unorm",blend:{color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}}}]},primitive:{topology:"triangle-strip"}};var yp={magFilter:"linear",minFilter:"linear"};function xp(e){let t=e.device;if(!e.roofBlit){let r=t.createShaderModule(gp);e.roofBlit={pipeline:t.createRenderPipeline((vo.vertex.module=r,vo.fragment.module=r,vo)),sampler:t.createSampler(yp)},vo.vertex.module=null,vo.fragment.module=null}}var Sn={size:null,usage:null};var kn={colorAttachments:[{view:null,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"}]};var Cn={source:null};var _n={texture:null};var En=[null,null];function vp(e,t){let r=t.texture;r.uploaded!==r.image&&(e.queue.copyExternalImageToTexture((Cn.source=t.image,Cn),(_n.texture=r.texture,_n),(En[0]=r.texture.width,En[1]=r.texture.height,En)),Cn.source=null,_n.texture=null,r.uploaded=r.image)}var lt={layout:null,entries:[{binding:0,resource:null},{binding:1,resource:null},{binding:2,resource:{buffer:null,offset:null,size:4}}]};var On=[null];var zn={value:new Float32Array(64)};function wp(e,t){return(e.layer.options.zIndex||0)-(t.layer.options.zIndex||0)||e.tile.coords.z-t.tile.coords.z}function Lp(e,t,r,o,i,n,a){let s=w.get(e),m=s.device,f=e._map,p=Math.max(1,t.length)*64;zn.value.length<p&&(zn.value=new Float32Array(p));let c=zn.value,l=m.createBuffer((Sn.size=c.byteLength,Sn.usage=GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,Sn)),u=m.createCommandEncoder(),h=u.beginRenderPass((kn.colorAttachments[0].view=K.get(e).texture.texture.createView(),kn));kn.colorAttachments[0].view=null,h.setPipeline(s.roofBlit.pipeline),t.sort(wp);let x,g,y,v,S,T,P,A;for([x,{tile:g,layer:y}]of t.entries())({coords:v}=g),S=g.texture,vp(m,g),c[x*64]=y.options.opacity,T=256*f.getZoomScale(r,v.z),P=(v.x*T-o.x)*n/i.x,A=(v.y*T-o.y)*a/i.y,h.setViewport(P,A,Math.min(T*n/i.x,n-P),Math.min(T*a/i.y,a-A),0,1),h.setBindGroup(0,m.createBindGroup((lt.layout=s.roofBlit.pipeline.getBindGroupLayout(0),lt.entries[0].resource=S.texture.createView(),lt.entries[1].resource=s.roofBlit.sampler,lt.entries[2].resource.buffer=l,lt.entries[2].resource.offset=x*256,lt))),lt.layout=null,lt.entries[0].resource=null,lt.entries[1].resource=null,lt.entries[2].resource.buffer=null,h.draw(4);h.end(),m.queue.writeBuffer(l,0,c),m.queue.submit((On[0]=u.finish(),On)),On[0]=null,l.destroy()}function bp(e,t){let r=-1/0,o,i;for(o of e)for(i of I.get(o).values())i.done&&!i.request.signal.aborted&&i.image&&(i._roofEntry||={tile:i,layer:o},t.push(i._roofEntry),r=Math.max(r,i.coords.z));return r}var Mp={size:[null,null],format:"rgba8unorm",usage:null};var Bp={addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"};function Tp(e,t,r,o){let i=w.get(e),n=Mp;n.size[0]=r,n.size[1]=o,n.usage=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT,t.texture&&(t.texture.width!==r||t.texture.height!==o)&&(W(e,t.texture.texture),t.texture.texture=i.device.createTexture(n),t.texture.width=r,t.texture.height=o),t.texture||={device:i.device,texture:i.device.createTexture(n),sampler:i.device.createSampler(Bp),samplerOptions:{addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"},image:null,width:r,height:o,format:"rgba8unorm",srgb:!1,flipY:!1,uploaded:null}}function Pp(e,t,r,o){let i=e._map,n=w.get(e),a=up;a.length=0;let s=bp(t,a),m=1/0,f=1/0,p=-1/0,c=-1/0,l,u;a.length||(s=i.getZoom());for({tile:{coords:l}}of a)u=256*i.getZoomScale(s,l.z),m=Math.min(m,l.x*u),f=Math.min(f,l.y*u),p=Math.max(p,(l.x+1)*u),c=Math.max(c,(l.y+1)*u);let h=i.project(ie.get(e),s),x=dp,g=hp;x.x=a.length?m:h.x,x.y=a.length?f:h.y,g.x=a.length?p-m:1,g.y=a.length?c-f:1;let y=Math.min(1,4096/Math.max(g.x,g.y)),v=Math.max(1,Math.ceil(g.x*y)),S=Math.max(1,Math.ceil(g.y*y)),T=i.options.crs.scale(s)/(rt*Math.cos(ie.get(e).lat*B)),P={matrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],texture:K.get(e)?.texture};K.set(e,P),P.signature=r,P.updatedAt=o,P.matrix[0]=T/g.x,P.matrix[10]=T/g.y,P.matrix[12]=(h.x-x.x)/g.x,P.matrix[14]=(h.y-x.y)/g.y,Tp(e,P,v,S),xp(n);try{Lp(e,a,s,x,g,v,S)}finally{a.length=0}}function Sp(e,t,r){let o=lp;o.length=0;let i=!1,n;for(n of t)o.push(`${d.Util.stamp(n)}:${Ee.get(n)||0}:${n.options.opacity}:${n.options.zIndex}`),i||=!!fe.get(n);let a=o.join("|");o.length=0,(!K.get(e)||K.get(e).signature!==a&&(!i||r-K.get(e).updatedAt>=50))&&Pp(e,t,a,r)}function kp(e,t){let r=e._map,o=ki.get(e);o||ki.set(e,o=[]),o.length=0;let i=!1,n,a;for(n of F.get(e))if(n.options.roofTexture||n.options.wallTexture){i=!0;break}if(i){for(a of Object.values(r._layers))z.get(a)==="raster"&&I.get(a)&&a.options.opacity>0&&o.push(a);Sp(e,o,t)}else K.get(e)&&(W(e,K.get(e).texture.texture),K.set(e,null));return o}function Cp(e,t){return e.program.transparent?(e.renderOrder||0)-(t.renderOrder||0)||t._sortDepth-e._sortDepth||e.id-t.id:(e._sortDepth??0)-(t._sortDepth??0)||e.id-t.id}function _p(e,t){return+!!t.ground-+!!e.ground||(e.ground&&t.ground?(e.renderOrder||0)-(t.renderOrder||0)||e.tile.coords.z-t.tile.coords.z:0)||Number(e.program.transparent)-Number(t.program.transparent)||Cp(e,t)}var U=new WeakMap;var cr=new WeakMap;$();function Ep(e,t,r){let o=t._map,i=e.geometry.bounds,n=e.worldMatrix,a=cr.get(r),s=o.project(ie.get(t),a),m=o.options.crs.scale(a)/(rt*Math.cos(ie.get(t).lat*B)),f=1/0,p=1/0,c=-1/0,l=-1/0,u,h,x,g,y,v,S,T;for(u=0;u<8;u++)h=u&1?i.max[0]:i.min[0],x=u&2?i.max[1]:i.min[1],g=u&4?i.max[2]:i.min[2],y=s.x+(n[0]*h+n[4]*x+n[8]*g+n[12])*m,v=s.y+(n[2]*h+n[6]*x+n[10]*g+n[14])*m,f=Math.min(f,y),p=Math.min(p,v),c=Math.max(c,y),l=Math.max(l,v);return U.get(r).maxLat!==void 0&&U.get(r).minLon!==void 0&&U.get(r).minLat!==void 0&&U.get(r).maxLon!==void 0&&(S=o.project([U.get(r).maxLat,U.get(r).minLon],a),T=o.project([U.get(r).minLat,U.get(r).maxLon],a),f=Math.max(f,S.x),p=Math.max(p,S.y),c=Math.min(c,T.x),l=Math.min(l,T.y),f>=c||p>=l)?null:[f,p,c,l]}function Op(e,t,r){let o=256*2**(r-t.coords.z),i=t.coords.x*o,n=t.coords.y*o,a=[],s,m,f,p,c,l,u,h;for([s,m,f,p]of e){if(c=Math.max(s,i),l=Math.max(m,n),u=Math.min(f,i+o),h=Math.min(p,n+o),c>=u||l>=h){a.push([s,m,f,p]);continue}m<l&&a.push([s,m,f,l]),h<p&&a.push([s,h,f,p]),s<c&&a.push([s,l,c,h]),u<f&&a.push([u,l,f,h])}return a}function zp(e,t,r){let o=!1,i=!1,n,a,s,m;for(n of r){if(!U.get(n)){i=!0;continue}if(a=Ep(e,t,n),!!a){o=!0,s=[a];for(m of I.get(n).values())if(!(!m.done&&!m.error)&&(s=Op(s,m,cr.get(n)),!s.length))return!0}}return!o&&!i}function Ap(e,t,r,o){let i,n;if(t.program.uniforms.roofTexture&&!r.length&&(t._roofRevealed=!0),t.program.uniforms.roofTexture&&!t._roofRevealed&&r.length){jt.get(e._map)?.control?._walk?.saved&&(t._roofRevealed=!0,t.fadeStart=o-(t.fadeDuration||0)),t._roofCoverageSignature!==K.get(e)?.signature&&(t._roofCoverageSignature=K.get(e)?.signature,t._roofCovered=zp(t,e,r)),n=!1;for(i of r)if(!U.get(i)||fe.get(i)>0){n=!0;break}if(!t._roofRevealed&&!t._roofCovered&&n)return t._appearance=0,!1;t._roofRevealed=!0}return!0}function Rp(e,t,r,o){let i=jr.get(e),n=Ft.get(e),a=w.get(e),s=!1,m,f;for(m of i)Ap(e,m,t,r)&&(m.fadeDuration&&(m.fadeStart??=m.tile?.loadedAt??r,f=Math.min(1,(r-m.fadeStart)/m.fadeDuration),m._appearance=f*f*(3-2*f),s||=f<1),o.push(m));i.length=0,o.sort(_p);let p=1/0,c=-1/0;for(m of o)m.ground&&(p=Math.min(p,m.tile.coords.z),c=Math.max(c,m.tile.coords.z));a.groundOverlap=p!==c;let l=0;for(m of n)m.visible&&m._appearance!==0&&(n[l++]=m);return n.length=l,s}var An={size:null,usage:null};function Ip(e,t,r){let o=w.get(e);(!o.uniformBuffer||o.uniformBuffer.size<(t.length*2+r.length+1)*256)&&(o.uniformBuffer&&W(e,o.uniformBuffer),o.uniformBuffer=o.device.createBuffer((An.size=Math.max(64,t.length*4+r.length*2)*256,An.usage=GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,An)),o.uniformData=new Float32Array(o.uniformBuffer.size/4))}var M=new WeakMap;var nt={layout:null,entries:[{binding:0,resource:{buffer:null}},{binding:1,resource:null},{binding:2,resource:null},{binding:3,resource:{buffer:null}}]};function Rn(e){let t=w.get(e).sunlight;t.bindGroup=w.get(e).device.createBindGroup((nt.layout=t.layout,nt.entries[0].resource.buffer=t.buffer,nt.entries[1].resource=t.texture.createView(),nt.entries[2].resource=t.sampler,nt.entries[3].resource.buffer=t.lights,nt)),nt.layout=null,nt.entries[0].resource.buffer=null,nt.entries[1].resource=null,nt.entries[2].resource=null,nt.entries[3].resource.buffer=null}function Dp(e,t,r,o,i){let n,a;for(n=0,a=o[r]*4;n<8;n++)i[a+n]=e[t+n];o[r]+=2}function Gp(e,t,r,o,i,n,a,s){let m=e[t+3],f=e[t]-r,p=e[t+2]-o,c,l,u;for(c=Math.floor((p-m)/i);c<=Math.floor((p+m)/i);c++)for(l=Math.floor((f-m)/i);l<=Math.floor((f+m)/i);l++)u=c*n+l,s?Dp(e,t,u,a,s):a[u]++}function vm(e,t,r,o,i,n,a){let s,m;for(s of e)for(m=0;m<s.length;m+=8)Gp(s,m,t,r,o,i,n,a)}function Up(e,t){let r=0,o,i,n,a;for(o of e)r+=o.length/8;let s=32,m;if(r){let f=1/0,p=1/0,c=-1/0,l=-1/0;for(o of e)for(i=0;i<o.length;i+=8)f=Math.min(f,o[i]-o[i+3]),c=Math.max(c,o[i]+o[i+3]),p=Math.min(p,o[i+2]-o[i+3]),l=Math.max(l,o[i+2]+o[i+3]);let u=Math.ceil((c-f)/s)+1,h=Math.ceil((l-p)/s)+1,x=new Uint32Array(u*h),g=new Uint32Array(u*h);vm(e,f,p,s,u,x);let y=0;for(n of x)y+=n;let v=(2+u*h+y*2)*4;if(v*4>t)throw new Error("Streetlight grid exceeds GPU storage limit");m=new Float32Array(v),m[0]=f,m[1]=p,m[2]=s,m[3]=u,m[4]=h,m[5]=r;let S=2+u*h;for(a=0;a<x.length;a++)x[a]&&(m[(2+a)*4]=g[a]=S,m[(2+a)*4+1]=x[a],S+=x[a]*2);vm(e,f,p,s,u,g,m)}else m=new Float32Array(8);return{data:m,count:r}}var Np=.03/(4*Math.PI);function Fp(e,t){let r=new Float32Array(e.length*8),o,i,n,a,s,m,f,p;for(o=0;o<e.length;o++)({position:[i,n,a],radius:s,color:m,flux:f}=e[o]),p=t[3]*i+t[7]*n+t[11]*a+t[15],r[o*8]=(t[0]*i+t[4]*n+t[8]*a+t[12])/p,r[o*8+1]=(t[1]*i+t[5]*n+t[9]*a+t[13])/p,r[o*8+2]=(t[2]*i+t[6]*n+t[10]*a+t[14])/p,r[o*8+3]=s,r[o*8+4]=m[0],r[o*8+5]=m[1],r[o*8+6]=m[2],r[o*8+7]=f*Np;return r}function wm(e,t,r){let o=t?.meshes.length===e.length,i,n,a,s,m,f,p;for(i=0;i<e.length;i++){for(n=e[i],a=n.worldMatrix,s=n.extras.lights,m=n._worldLights,f=!!m,p=0;p<a.length&&f;p++)f=a[p]===m.matrix[p];(!f||m.lights!==s)&&(m=n._worldLights={lights:s,matrix:[...a],data:Fp(s,a)}),o&&=t.meshes[i].mesh===n&&t.meshes[i].cache===m}if(o)return t;let c=new Array(e.length),l=new Array(e.length);for(i=0;i<e.length;i++)n=e[i],m=n._worldLights,c[i]=m.data,l[i]={mesh:n,cache:m};return{...Up(c,r),meshes:l}}var lr=[];function Lm(e,t,r){if(!e.visible)return;e.extras?.lights&&(e.extras.dynamicLights?r:t).push(e);let o;for(o of e.children||lr)Lm(o,t,r)}function jp(e){let{device:t,sunlight:r}=w.get(e),o=[],i=[],n;for(n of F.get(e))!n.options.nightLight||!M.get(n).visible||Lm(M.get(n),o,i);let a=t.limits.maxStorageBufferBindingSize,s=wm(o,r.staticLightGrid,a),m=wm(i,r.dynamicLightGrid,a);if(s===r.staticLightGrid&&m===r.dynamicLightGrid)return;let f=s.data.byteLength+m.data.byteLength;if(f>a)throw new Error("Streetlight grid exceeds GPU storage limit");let p=s!==r.staticLightGrid;r.lights.size<f&&(W(e,r.lights),r.lights=t.createBuffer({size:f,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),Rn(e),p=!0),s.data[6]=s.data.length/4,p&&t.queue.writeBuffer(r.lights,0,s.data),t.queue.writeBuffer(r.lights,s.data.byteLength,m.data),r.lightCount=s.count+m.count,r.staticLightGrid=s,r.dynamicLightGrid=m}function Wp(e,t,r,o){let i=w.get(e),n=ee.get(e),a=n.viewMatrix,s=o?.direction,m=s?s[0]:-300,f=s?s[1]:500,p=s?s[2]:300,c=a[0]*m+a[4]*f+a[8]*p,l=a[1]*m+a[5]*f+a[9]*p,u=a[2]*m+a[6]*f+a[10]*p,h=Math.hypot(c,l,u)||1,x=Math.hypot(a[4],a[5],a[6])||1;Ip(e,t,r);let g=i.uniformData;g.set(n.viewMatrix,0),g.set(n.projectionMatrix,16),K.get(e)?.matrix?g.set(K.get(e).matrix,32):(g.fill(0,32,48),g[32]=g[37]=g[42]=g[47]=1),g[48]=c/h,g[49]=l/h,g[50]=u/h,g[51]=o&&o.altitude<=0?0:1,g[52]=a[4]/x,g[53]=a[5]/x,g[54]=a[6]/x;let y=o?Math.max(0,Math.min(1,(3-o.altitude)/9)):0;g[55]=y*y*(3-2*y);let v=o?.tint;g[56]=v?v[0]:1,g[57]=v?v[1]:1,g[58]=v?v[2]:1,g[59]=0,y>0&&jp(e),i.uniformSlot=1}var ur={colorAttachments:[{view:null,resolveTarget:null,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"}],depthStencilAttachment:{view:null,depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}};var bm=[null];var we={layout:null,vertex:{module:null,entryPoint:"vertexMain",buffers:null},fragment:{module:null,entryPoint:"fragmentMain",targets:[{format:null,blend:null,writeMask:null}]},primitive:{topology:"triangle-list",cullMode:null,frontFace:null},multisample:{count:4},depthStencil:{format:"depth24plus",depthWriteEnabled:null,depthCompare:null}};var $p={color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha",operation:"add"}};function Vp(e,t,r,o){let{program:i}=t,n=i.depthTest===!1||t.ground&&e.groundOverlap?"always":"less-equal",a=`${r}:${o}:${n}`,s=i.pipelineCache.get(a);return s||(s=e.device.createRenderPipeline((we.layout=i.pipelineLayout,we.vertex.module=i.vertex,we.vertex.buffers=i.vertexBuffers,we.fragment.module=i.fragment,we.fragment.targets[0].format=e.format,we.fragment.targets[0].blend=i.transparent?$p:void 0,we.fragment.targets[0].writeMask=GPUColorWrite.ALL,we.primitive.cullMode=r,we.primitive.frontFace=o,we.depthStencil.depthWriteEnabled=i.depthWrite,we.depthStencil.depthCompare=n,we)),we.layout=null,we.vertex.module=null,we.vertex.buffers=null,we.fragment.module=null,i.pipelineCache.set(a,s)),s}function Zp(e,t,r){let o=e.uniformData,i=(t._nativeSource||t._rasterSource)?.options.cutout;if(i&&(!Number.isFinite(i.x)||!Number.isFinite(i.y)||!Number.isFinite(i.radius)||i.radius<0))throw new Error("cutout requires finite x, y and a non-negative radius in CSS pixels");o[r+36]=(i?.x??0)*e.dpr,o[r+37]=(i?.y??0)*e.dpr,o[r+38]=(i?.radius??0)*e.dpr,o[r+39]=i?.outside?1:0}function qp(e,t){let r=t.program.uniforms,o=e.uniformSlot++*256,i=e.uniformData,n=o/4;return i.set(t.worldMatrix,n),i.set(r.baseColor.value,n+16),i[n+19]=1,i[n+20]=r.metallic.value,i[n+21]=r.roughness.value,i[n+22]=r.opacity.value*(t.ground?t._appearance??1:1),i[n+23]=r.alphaCutoff.value,i.set(r.emissive.value,n+24),i[n+27]=r.occlusionStrength.value,i[n+28]=t.terrain?.[0]??0,i[n+29]=t.terrain?.[1]??0,i[n+30]=t.terrain?.[2]??0,i[n+31]=t.terrain?.[3]??0,i[n+32]=t.highlight?.[0]??0,i[n+33]=t.highlight?.[1]??0,i[n+34]=t.program.nightSparkle?i[55]:0,i[n+35]=t.ground?1:t._appearance??1,Zp(e,t,n),i[n+40]=r.strokeScale?.value??1,i[n+41]=i[n+42]=i[n+43]=0,o}var Wr={source:null,flipY:null};var wo={texture:null};var Lo=[null,null];function Hp(e,t){t.uploaded!==t.image&&(e.queue.copyExternalImageToTexture((Wr.source=t.image,Wr.flipY=!!t.flipY,Wr),(wo.texture=t.texture,wo),(Lo[0]=t.image.width,Lo[1]=t.image.height,Lo)),Wr.source=null,wo.texture=null,t.uploaded=t.image)}var bo={layout:null,entries:null};var Yp=[];var In={binding:0,resource:{buffer:null,size:176}};var Dn={binding:1,resource:{buffer:null,size:240}};var Gn={binding:2,resource:null};var Ci=[{binding:null,resource:null},{binding:null,resource:null},{binding:null,resource:null},{binding:null,resource:null},{binding:null,resource:null}];var _i=[{binding:null,resource:null},{binding:null,resource:null},{binding:null,resource:null},{binding:null,resource:null},{binding:null,resource:null}];function Xp(e,t,r){let{program:o}=t,i=Yp;i.length=0,In.resource.buffer=e.uniformBuffer,Dn.resource.buffer=e.uniformBuffer,i.push(In,Dn),o.terrain&&(Gn.resource=o.terrain.texture.createView(),i.push(Gn)),t.boundBuffer=e.uniformBuffer;let n=t.boundTextures||=[];n.length=r.length;let a,s,m;for(a=0;a<r.length;a++)s=o.bindings[a],m=r[a],Ci[a].binding=s.texture,Ci[a].resource=m.texture.createView(),_i[a].binding=s.sampler,_i[a].resource=m.sampler,i.push(Ci[a],_i[a]),n[a]||=[],n[a][0]=m.texture,n[a][1]=m.sampler;for(t.bindGroup=e.device.createBindGroup((bo.layout=o.bindGroupLayout,bo.entries=i,bo)),bo.layout=null,bo.entries=null,In.resource.buffer=null,Dn.resource.buffer=null,Gn.resource=null,a=0;a<r.length;a++)Ci[a].resource=null,_i[a].resource=null;i.length=0}function Jp(e,t){let{program:r}=t,{device:o}=e,i=t._textures||=[];i.length=0;let n,a,s;for(n of r.bindings){if(a=r.uniforms[n.name]?.value,!a)throw new Error(`Missing Layer3D texture: ${n.name}`);Hp(o,a),i.push(a)}let m=!t.bindGroup||t.boundBuffer!==e.uniformBuffer||i.length!==t.boundTextures.length;for(s=0;!m&&s<i.length;s++)(i[s].texture!==t.boundTextures[s][0]||i[s].sampler!==t.boundTextures[s][1])&&(m=!0);m&&Xp(e,t,i)}function Un(e,t,r,o,i){let{geometry:n}=t,{attributes:a,drawRange:s}=n,m=w.get(e),{device:f}=m,p=Vp(m,t,o,i),c=qp(m,t);Jp(m,t),r.setPipeline(p),r.setBindGroup(0,t.bindGroup,(bm[0]=c,bm)),r.setVertexBuffer(0,a.position.buffer),r.setVertexBuffer(1,a.normal.buffer),a.color&&r.setVertexBuffer(2,a.color.buffer),a.uv&&r.setVertexBuffer(3,a.uv.buffer);let l=a.instanceOffset;l&&r.setVertexBuffer(4,l.buffer);let u,h;for(u in a)h=a[u],h.needsUpdate&&(f.queue.writeBuffer(h.buffer,0,h.data),h.needsUpdate=!1,(u==="position"||u==="instanceOffset")&&(n.bounds=null));let x=a.index;x?(r.setIndexBuffer(x.buffer,x.indexFormat),r.drawIndexed(s.count,l?.count??1,s.start,0,0)):r.draw(s.count,l?.count??1,s.start,0)}function Kp(e,t,r){let o=w.get(e),i=t.beginRenderPass((ur.colorAttachments[0].view=o.colorTexture.createView(),ur.colorAttachments[0].resolveTarget=o.context.getCurrentTexture().createView(),ur.depthStencilAttachment.view=o.depthTexture.createView(),ur));ur.colorAttachments[0].view=null,ur.colorAttachments[0].resolveTarget=null,ur.depthStencilAttachment.view=null,i.setViewport(0,0,o.canvas.width,o.canvas.height,0,1),i.setBindGroup(1,o.sunlight.bindGroup);let n,a,s,m,f,p;for(n of r){if(a=n.worldMatrix,n.texture&&(n.program.uniforms.baseTexture.value=n.texture,n.program.uniforms.opacity.value=n.opacity),s=n.program.uniforms,s.roofTexture&&(s.roofTexture.value=K.get(e)?.texture||o.roofFallbackTexture),!n._frontFace||n._frontFaceWorldVersion!==n._worldMatrixVersion||n._worldMatrixVersion===void 0){if(m=a[0]*(a[5]*a[10]-a[6]*a[9])-a[4]*(a[1]*a[10]-a[2]*a[9])+a[8]*(a[1]*a[6]-a[2]*a[5]),!Number.isFinite(m)||m===0)throw new Error("Singular 3D transform");n._frontFace=m<0?"cw":"ccw",n._frontFaceWorldVersion=n._worldMatrixVersion}f=n._frontFace,p=n.program,p.transparent&&p._layerMaterial.doubleSided&&!n._nativeSource?(Un(e,n,i,"front",f),Un(e,n,i,"back",f)):Un(e,n,i,p.cullMode,f)}i.end()}var Qp=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0]);var ec=new Float32Array(20);function tc(e,t){let r=e.meshes.get(t),o=t.geometry.drawRange;if(!(r&&r.world===t._worldMatrixVersion&&r.geometry===t.geometry&&r.start===o.start&&r.count===o.count&&r.appearance===(t._appearance??1)))return!1;let i;for(i of Object.values(t.geometry.attributes))if(i.needsUpdate)return!1;return!0}function rc(e,t,r){let o=e.cache,i=e.enabled&&o?.meshes.size===t.length,n,a;if(i){for(n=0;n<r.direction.length;n++)if(r.direction[n]!==o.direction[n]){i=!1;break}}if(i){for(a of t)if(!tc(o,a)){i=!1;break}}return i}var oc={min:[0,0,0],max:[0,0,0]};var ic={position:[0,0,0],target:[0,0,0],up:[0,0,-1],x:[0,0,0],y:[0,0,0],z:[0,0,0],fov:45,aspect:1,near:1,far:500,viewMatrix:[],projectionMatrix:[],projectionViewMatrix:[]};var nc=[0,0,0];var ac=[0,0,0];function sc(e,t,r){let o=e._shadowBounds;if(!o||o.version!==e._worldMatrixVersion||o.bounds!==t){o||=e._shadowBounds={min:[1/0,1/0,1/0],max:[-1/0,-1/0,-1/0]},o.version=e._worldMatrixVersion,o.bounds=t,o.min.fill(1/0),o.max.fill(-1/0);let i,n,a,s,m,f,p;for(i=0;i<8;i++)for(n=i&1?t.max[0]:t.min[0],a=i&2?t.max[1]:t.min[1],s=i&4?t.max[2]:t.min[2],m=r[3]*n+r[7]*a+r[11]*s+r[15],f=0;f<3;f++)p=(r[f]*n+r[f+4]*a+r[f+8]*s+r[f+12])/m,o.min[f]=Math.min(o.min[f],p),o.max[f]=Math.max(o.max[f],p)}return o}function mc(e,t={min:[1/0,1/0,1/0],max:[-1/0,-1/0,-1/0]}){let{min:r,max:o}=t;r.fill(1/0),o.fill(-1/0);let i,n,a,s,m;for(i of e)for((!i.geometry.bounds||i.geometry.attributes.position.needsUpdate)&&_e(i.geometry),n=i.geometry.bounds,a=i.worldMatrix,s=sc(i,n,a),m=0;m<3;m++)r[m]=Math.min(r[m],s.min[m]),o[m]=Math.max(o[m],s.max[m]);return r[1]=Math.min(0,r[1]),t}function fc(e,t){let{min:r,max:o}=mc(e,oc),i=ic;i.viewTransform||=new DOMMatrix,i.projectionTransform||=new DOMMatrix,i.projectionViewTransform||=new DOMMatrix;let n=nc,a=ac,s,m,f,p,c,l,u=Math.max(100,Math.hypot(o[0]-r[0],o[1]-r[1],o[2]-r[2]));for(s=0;s<3;s++)i.target[s]=(r[s]+o[s])/2,i.position[s]=i.target[s]+t.direction[s]*u*2;i.far=u*5,xo(i);let h=i.viewMatrix;for(n.fill(1/0),a.fill(-1/0),s=0;s<8;s++)for(f=s&1?o[0]:r[0],p=s&2?o[1]:r[1],c=s&4?o[2]:r[2],m=0;m<3;m++)l=h[m]*f+h[m+4]*p+h[m+8]*c+h[m+12],n[m]=Math.min(n[m],l-20),a[m]=Math.max(a[m],l+20);let x=2/(a[0]-n[0]),g=2/(a[1]-n[1]),y=-1/(a[2]-n[2]),v=new Float32Array(16);for(s=0;s<16;s+=4)v[s]=h[s]*x,v[s+1]=h[s+1]*g,v[s+2]=h[s+2]*y,v[s+3]=h[s+3];return v[12]-=(a[0]+n[0])/(a[0]-n[0]),v[13]-=(a[1]+n[1])/(a[1]-n[1]),v[14]+=a[2]/(a[2]-n[2]),v}var Mm={entries:[{binding:0,visibility:null,buffer:{type:"uniform",hasDynamicOffset:!0}}]};var Bm={entries:[{binding:0,visibility:null,buffer:{type:"uniform"}}]};var Mo={layout:null,entries:[{binding:0,resource:{buffer:null}}]};var Nn={code:null};var Lt={layout:null,vertex:{module:null,entryPoint:"main",buffers:null},fragment:{module:null,entryPoint:"fragmentMain",targets:[]},primitive:{topology:"triangle-list",cullMode:"none"},depthStencil:{format:"depth32float",depthWriteEnabled:!0,depthCompare:"less",depthBias:2,depthBiasSlopeScale:2}};var Bo={bindGroupLayouts:[null,null]};var To=Object.freeze({arrayStride:12,attributes:Object.freeze([Object.freeze({shaderLocation:0,offset:0,format:"float32x3"})])});var Fn=Object.freeze({arrayStride:16,stepMode:"instance",attributes:Object.freeze([Object.freeze({shaderLocation:4,offset:0,format:"float32x4"})])});var pc=[To,Fn];var cc=[To];function Tm(e,t,r=!1){let o=r?"instancePipeline":"pipeline";if(!t[o]){t.meshLayout||(t.meshLayout=e.createBindGroupLayout((Mm.entries[0].visibility=GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,Mm)),t.depthLayout=e.createBindGroupLayout((Bm.entries[0].visibility=GPUShaderStage.VERTEX,Bm)),t.depthBindGroup=e.createBindGroup((Mo.layout=t.depthLayout,Mo.entries[0].resource.buffer=t.buffer,Mo)),Mo.layout=null,Mo.entries[0].resource.buffer=null);let i=e.createShaderModule((Nn.code=` struct Mesh{world:mat4x4<f32>,padding:array<vec4<f32>,4>,highlight:vec4<f32>};@group(0)@binding(0)var<uniform> mesh:Mesh;@group(1)@binding(0)var<uniform> matrix:mat4x4<f32>;@vertex fn main(@location(0)position:vec3<f32>${r?", @location(4) offset: vec4<f32>":""})->@builtin(position)vec4<f32>{return matrix * mesh.world * vec4<f32>(position${r?" + offset.xyz":""},1.0);}@fragment fn fragmentMain(@builtin(position)position:vec4<f32>){let noise = fract(52.9829189 * fract(dot(floor(position.xy),vec2<f32>(0.06711056,0.00583715))));if(mesh.highlight.w < 1.0 && noise >= mesh.highlight.w){discard;}}`,Nn));Nn.code=null;let n=r?pc:cc;t[o]=e.createRenderPipeline((Lt.layout=e.createPipelineLayout((Bo.bindGroupLayouts[0]=t.meshLayout,Bo.bindGroupLayouts[1]=t.depthLayout,Bo)),Lt.vertex.module=i,Lt.vertex.buffers=n,Lt.fragment.module=i,Lt)),Bo.bindGroupLayouts[0]=null,Bo.bindGroupLayouts[1]=null,Lt.layout=null,Lt.vertex.module=null,Lt.vertex.buffers=null,Lt.fragment.module=null}}var jn={colorAttachments:[],depthStencilAttachment:{view:null,depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}};var Po={layout:null,entries:[{binding:0,resource:{buffer:null,size:144}}]};var Pm=[null];function lc(e,t,r){let o=w.get(e),i=o.device,n=o.sunlight,a=t.beginRenderPass((jn.depthStencilAttachment.view=n.texture.createView(),jn));jn.depthStencilAttachment.view=null;let s=n.pipeline;a.setPipeline(s),a.setBindGroup(1,n.depthBindGroup);let m,f,p,c,l,u,h,x;for(m of r){f=m.geometry.attributes,p=f.instanceOffset,c=p?n.instancePipeline:n.pipeline,c!==s&&(s=c,a.setPipeline(s)),l=o.uniformSlot++*256,o.uniformData.set(m.worldMatrix,l/4),o.uniformData[l/4+35]=m._appearance??1,m._shadowBuffer!==o.uniformBuffer&&(m._shadowBuffer=o.uniformBuffer,m._shadowBindGroup=i.createBindGroup((Po.layout=n.meshLayout,Po.entries[0].resource.buffer=o.uniformBuffer,Po)),Po.layout=null,Po.entries[0].resource.buffer=null);for(u of Object.values(f))u.needsUpdate&&(i.queue.writeBuffer(u.buffer,0,u.data),u.needsUpdate=!1);a.setBindGroup(0,m._shadowBindGroup,(Pm[0]=l,Pm)),a.setVertexBuffer(0,f.position.buffer),p&&a.setVertexBuffer(1,p.buffer),h=f.index,x=m.geometry.drawRange,h?(a.setIndexBuffer(h.buffer,h.indexFormat),a.drawIndexed(x.count,p?.count??1,x.start,0,0)):a.draw(x.count,p?.count??1,x.start,0)}a.end()}var Ei={size:[null,null],format:"depth32float",usage:null};function Wn(e,t){let r=w.get(e).device,o=w.get(e).sunlight;o.size!==t&&(o.texture&&W(e,o.texture),o.size=t,o.texture=r.createTexture((Ei.size[0]=t,Ei.size[1]=t,Ei.usage=GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC,Ei)),Rn(e))}function uc(e,t,r,o){let i=w.get(e),n=i.device,a=i.sunlight;if(!r.length||!o||o.altitude<3){if(!a.enabled)return;n.queue.writeBuffer(a.buffer,0,Qp),a.enabled=!1,a.cache=null;return}if(rc(a,r,o))return;let s=ec;a.enabled=!0,Wn(e,Math.min(2048,n.limits.maxTextureDimension2D)),s.set(fc(r,o)),s[16]=1,n.queue.writeBuffer(a.buffer,0,s),Tm(n,a);let m;for(m of r)if(m.geometry.attributes.instanceOffset){Tm(n,a,!0);break}lc(e,t,r);let f=new Map,p;for(p of r)f.set(p,{world:p._worldMatrixVersion,geometry:p.geometry,start:p.geometry.drawRange.start,count:p.geometry.drawRange.count,appearance:p._appearance??1});a.cache={direction:[...o.direction],meshes:f}}function $n(e){let t=ft.get(e);Nt.delete(e),ft.set(e,null),!Nt.size&&t!=null&&cancelAnimationFrame(t)}var Wt=new WeakMap;var Oi=new WeakMap;var zi=new WeakMap;var pe=new WeakMap;var Vn=new WeakMap;function q(e,t){e.parent&&e.parent.children.splice(e.parent.children.indexOf(e),1),e.parent=t,t&&t.children.push(e)}function So(e,t){Vn.get(e)?.abort();let r=I.get(e).get(t);r&&(q(r,null),E(e),r.texture!==t.texture&&W(e,r.texture.texture),I.get(e).delete(t))}function ko(e,t){let r=`${t.coords.z}/${t.coords.x}/${t.coords.y}`;I.get(e).get(r)===t&&(I.get(e).delete(r),Ee.set(e,(Ee.get(e)||0)+1),t.request.abort(),pe.get(e)&&So(pe.get(e),t),t.mesh&&q(t.mesh,null),t.texture&&W(e,t.texture.texture),t.image?.close(),e.fire("tileunload",{tile:t,coords:t.coords}),E(e))}function Co(e){let t=sr.get(e),r=performance.now();if(Oi.get(e)===Ee.get(e)&&zi.get(e)===t&&r<Wt.get(e))return Number.isFinite(Wt.get(e));Oi.set(e,Ee.get(e)),zi.set(e,t),Wt.set(e,1/0);let o=[],i,n,a,s,m,f;for(i of t)n=I.get(e).get(i),n?.done&&r-n.loadedAt<250&&Wt.set(e,Math.min(Wt.get(e),n.loadedAt+250)),(!n?.done||r-n.loadedAt<250)&&(a=i.split("/"),o.push({z:Number(a[0]),x:Number(a[1]),y:Number(a[2])}));for([i,n]of I.get(e))if(!t.has(i)){s=!1;for(m of o)if(f=Math.min(m.z,n.coords.z),Math.floor(m.x/2**(m.z-f))===Math.floor(n.coords.x/2**(n.coords.z-f))&&Math.floor(m.y/2**(m.z-f))===Math.floor(n.coords.y/2**(n.coords.z-f))){s=!0;break}s||ko(e,n)}return Number.isFinite(Wt.get(e))}L();function _o(e){return de.get(e.source)===e&&e.map.hasLayer(e.source)}function dc(e){let t=Be.get(e.map);if(e.terrainStream!==t&&(e.terrainStream=t,e.terrainRequests=t?new Map:null),e.terrainRequests){let r;for(r of e.terrainRequests.keys())e.source._tiles[r]||e.terrainRequests.delete(r)}return t}L();var $t=Object.freeze([1,1,1]);var $r=new WeakMap;L();function bt(e,t,r,o){let{source:i,marker:n,paneOrder:a,order:s}=e;t.program.uniforms.baseColor.value=r,t.program.uniforms.opacity.value=o,i instanceof d.GridLayer&&(t.opacity=o);let m=n?i._zIndex+($r.get(i)||0):i.options.zIndex;t.renderOrder=a*1e6+(m||0)*1e3+s,t._nativeSource=i,t._nativeUsed=!0}var hc=Object.freeze([0,2,1,1,2,3]);var Sm=Object.freeze([0,0,1,0,0,1,1,1]);var gc=Object.freeze({minFilter:"linear",magFilter:"linear"});function Ge(e,t){if(!t)return;q(t,null),E(e);let r;for(r of Object.values(t.geometry.attributes))r.buffer.destroy()}async function xc(e,t,r,o,i,n,a){let s,m=o;try{if(o instanceof HTMLImageElement){let f=document.createElement("canvas");f.width=n,f.height=a;let p=f.getContext("2d");if(!p)throw new Error("Unable to rasterize SVG image");p.drawImage(o,0,0,n,a),m=f}if(s=await createImageBitmap(m),!_o(e)||e.textures.get(t)!==r)return;i.queue.copyExternalImageToTexture({source:s},{texture:r.texture},[n,a]),r.uploaded=o,r.pending=!1,De(e)}catch(f){e.failed=!0,e.source.fire("error",{error:f})}finally{s?.close()}}function vc(e,t,r,o,i,n,a){try{i.queue.copyExternalImageToTexture({source:o},{texture:r.texture},[n,a])}catch(s){throw r.texture.destroy(),e.textures.delete(t),s}r.uploaded=o}function Zn(e,t,r){if(!(r instanceof HTMLImageElement)&&!(r instanceof HTMLCanvasElement))throw new Error("WebGPU native raster layers require image or canvas tiles");let{backend:o,textures:i,meshes:n}=e,a=i.get(t),s=r.currentSrc||r.src;if(!a||a.image!==r||a.url!==s){a&&(Ge(o,n.get(t)),n.delete(t),W(o,a.texture),i.delete(t));let m=r.naturalWidth||r.width,f=r.naturalHeight||r.height;if(!m||!f)return;let{device:p}=w.get(o);a={device:p,image:r,url:s,format:"rgba8unorm",uploaded:null,texture:p.createTexture({size:[m,f],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),sampler:p.createSampler(gc)},i.set(t,a),r instanceof HTMLCanvasElement||s.startsWith("data:image/svg+xml")?(a.pending=!0,xc(e,t,a,r,p,m,f)):vc(e,t,a,r,p,m,f)}return a.used=!0,a.uploaded===r?a:void 0}L();L();var Eo=Object.freeze({});var qn={size:null,usage:null};var Mt={value:0};function Oe(){return{position:[0,0,0],rotation:[0,0,0],scale:[1,1,1],worldMatrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],children:[],highlightRange:[0,0],visible:!0}}var Hn={code:null};var Yn={code:null};var Oo={bindGroupLayouts:[null,null]};var wc=" fn demSample(pixel:vec2<i32>)-> f32{if(any(pixel < vec2<i32>(0))|| any(pixel >= vec2<i32>(textureDimensions(dem)))){return -1e9;}return textureLoad(dem,pixel,0).r;}fn elevation(pixel:vec2<f32>,base:f32)-> f32{let p = pixel - vec2<f32>(0.5);let f = fract(p);let i = vec2<i32>(floor(p));let v00 = demSample(i);let v10 = demSample(i + vec2<i32>(1,0));let v01 = demSample(i + vec2<i32>(0,1));let v11 = demSample(i + vec2<i32>(1,1));if(v00 > -1000.0 && v10 > -1000.0 && v01 > -1000.0 && v11 > -1000.0){return mix(mix(v00,v10,f.x),mix(v01,v11,f.x),f.y);}if(v00 > -1000.0){return v00;}if(v10 > -1000.0){return v10;}if(v01 > -1000.0){return v01;}if(v11 > -1000.0){return v11;}return base;}";var Lc=Object.freeze({arrayStride:12,attributes:Object.freeze([Object.freeze({shaderLocation:1,offset:0,format:"float32x3"})])});var bc=Object.freeze({arrayStride:12,attributes:Object.freeze([Object.freeze({shaderLocation:2,offset:0,format:"float32x3"})])});var Mc=Object.freeze({arrayStride:8,attributes:Object.freeze([Object.freeze({shaderLocation:3,offset:0,format:"float32x2"})])});var Xn={entries:null};var Bc=[];var km={binding:0,visibility:null,buffer:{type:"uniform",hasDynamicOffset:!0}};var Cm={binding:1,visibility:null,buffer:{type:"uniform"}};var _m={binding:2,visibility:null,texture:{sampleType:"unfilterable-float",viewDimension:"2d"}};var Tc=[{binding:null,visibility:null,texture:{sampleType:"float",viewDimension:"2d"}},{binding:null,visibility:null,texture:{sampleType:"float",viewDimension:"2d"}},{binding:null,visibility:null,texture:{sampleType:"float",viewDimension:"2d"}},{binding:null,visibility:null,texture:{sampleType:"float",viewDimension:"2d"}},{binding:null,visibility:null,texture:{sampleType:"float",viewDimension:"2d"}}];var Pc=[{binding:null,visibility:null,sampler:{type:"filtering"}},{binding:null,visibility:null,sampler:{type:"filtering"}},{binding:null,visibility:null,sampler:{type:"filtering"}},{binding:null,visibility:null,sampler:{type:"filtering"}},{binding:null,visibility:null,sampler:{type:"filtering"}}];function Sc(e,t){let r=Bc;r.length=0,km.visibility=GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,Cm.visibility=GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,r.push(km,Cm),t.hasTerrain&&(_m.visibility=GPUShaderStage.VERTEX,r.push(_m));let o,i,n=0;for(o of t.bindings)i=Tc[n],i.binding=o.texture,i.visibility=GPUShaderStage.FRAGMENT,r.push(i),i=Pc[n++],i.binding=o.sampler,i.visibility=GPUShaderStage.FRAGMENT,r.push(i);let a=e.createBindGroupLayout((Xn.entries=r,Xn));return Xn.entries=null,a}function Jn(e){let t={baseColor:{value:e.color||[1,1,1]},metallic:{value:e.metallic??0},roughness:{value:e.roughness??.85},opacity:{value:e.opacity??1},alphaCutoff:{value:e.alphaCutoff??.5},occlusionStrength:{value:e.occlusionStrength??1},emissive:{value:e.emissive||[0,0,0]}};return e.baseTexture&&(t.baseTexture={value:e.baseTexture}),e.metalTexture&&(t.metalTexture={value:e.metalTexture}),e.emissiveTexture&&(t.emissiveTexture={value:e.emissiveTexture}),e.occlusionTexture&&(t.occlusionTexture={value:e.occlusionTexture}),(e.roofTexture||e.wallTexture)&&(t.roofTexture={value:null}),e.nativeStroke&&(t.strokeScale={value:1}),t}function zo(e,t,r){if(!r)return"";let o=3+e.length*2;return e.push({name:t,texture:o,sampler:o+1}),`@group(0)@binding(${o})var ${t}:texture_2d<f32>;@group(0)@binding(${o+1})var ${t}Sampler:sampler;`}function kc(e){let t,r;for(t of["roofTexture","wallTexture"])if(r=e[t],r!==void 0&&typeof r!="boolean"&&(!Number.isFinite(r)||r<0||r>1))throw new Error(`${t} must be a boolean or a finite number between 0 and 1`)}function Cc(e){let t=Number(e.roofTexture??0);return` output.roofUv =(frame.roofMatrix * world).xz;output.roof = select(0.0,select(${Number(e.wallTexture??0).toFixed(8)},${t.toFixed(8)},input.normal.y >= 0.5),((${!!e.roofTexture} && input.normal.y >= 0.5)||(${!!e.wallTexture} && abs(input.normal.y)< 0.5))&& !highlighted);`}function _c(e){return{position:e.nativeStroke?"position = input.normal + (input.position - input.normal) * u.nativeStroke.x;":"",normal:e.nativeStroke?"let sourceNormal = vec3<f32>(0.0, 1.0, 0.0);":"let sourceNormal = input.normal;"}}function Ec(e,t,r,o,i,n){let a=e.instanced?" + input.instanceOffset.xyz":"",s=_c(e);return` struct Mesh{worldMatrix:mat4x4<f32>,baseColor:vec4<f32>,material:vec4<f32>,emissive:vec4<f32>,terrain:vec4<f32>,highlight:vec4<f32>,cutout:vec4<f32>,nativeStroke:vec4<f32>,};struct Frame{viewMatrix:mat4x4<f32>,projectionMatrix:mat4x4<f32>,roofMatrix:mat4x4<f32>,lightDirection:vec4<f32>,skyDirection:vec4<f32>,atmosphereTint:vec4<f32>,};@group(0)@binding(0)var<uniform> u:Mesh;@group(0)@binding(1)var<uniform> frame:Frame;struct Solar{matrix:mat4x4<f32>,params:vec4<f32>};@group(1)@binding(0)var<uniform> solar:Solar;${o?`@group(0)@binding(2)var dem:texture_2d<f32>;${r}`:""} struct VertexInput{@location(0)position:vec3<f32>,@location(1)normal:vec3<f32>,${e.instanced?"@location(4) instanceOffset: vec4<f32>,":""} ${e.vertexColors?"@location(2) color: vec3<f32>,":""} ${i?"@location(3) uv: vec2<f32>,":""}};struct VertexOutput{@builtin(position)position:vec4<f32>,@location(0)color:vec3<f32>,@location(1)normal:vec3<f32>,@location(2)viewPosition:vec3<f32>,@location(6)shadowPosition:vec4<f32>,@location(7)worldPosition:vec3<f32>,${t?"@location(8) localPosition: vec3<f32>,":""} ${i?"@location(3) uv: vec2<f32>,":""} ${n?"@location(4) roofUv: vec2<f32>, @location(5) roof: f32,":""}};@vertex fn vertexMain(input:VertexInput,@builtin(vertex_index)vertexIndex:u32)-> VertexOutput{var output:VertexOutput;var position = input.position${a};${s.position} ${o?"position.y = elevation(u.terrain.xy + input.uv * u.terrain.z, u.terrain.w) - u.terrain.w;":""} let featureVertex = f32(vertexIndex)${e.instanced?" + input.instanceOffset.w":""};let highlighted = featureVertex >= u.highlight.x && featureVertex < u.highlight.y;output.color = ${e.vertexColors?"select(input.color, vec3<f32>(72.0 / 255.0, 217.0 / 255.0, 1.0), highlighted)":"u.baseColor.rgb"};let m = mat3x3<f32>(u.worldMatrix[0].xyz,u.worldMatrix[1].xyz,u.worldMatrix[2].xyz);${s.normal} let normal =(cross(m[1],m[2])* sourceNormal.x + cross(m[2],m[0])* sourceNormal.y + cross(m[0],m[1])* sourceNormal.z)/ determinant(m);output.normal =(frame.viewMatrix * vec4<f32>(normal,0.0)).xyz;let world = u.worldMatrix * vec4<f32>(position,1.0);output.shadowPosition = solar.matrix * world;output.worldPosition = world.xyz / world.w;${t?`output.localPosition = input.position${a};`:""} let viewPosition = frame.viewMatrix * world;output.viewPosition = viewPosition.xyz;${i?"output.uv = input.uv;":""} ${n?Cc(e):""} output.position = frame.projectionMatrix * viewPosition;return output;}`}function Oc(e,t,r){return` var normal = normalize(input.normal)* select(-1.0,1.0,frontFacing);let texel = ${t?"textureSample(baseTexture, baseTextureSampler, input.uv)":"vec4<f32>(1.0)"};let alpha = u.material.z * texel.a;${e.alphaMode==="MASK"?"if (alpha < u.material.w) { discard; }":""} ${e.alphaMode==="BLEND"?"if (alpha < 0.01) { discard; }":""} var base = ${e.vertexColors?"toLinear(min(input.color, vec3<f32>(1.0)))":"input.color"} * ${e.baseTexture?.srgb?"texel.rgb":"toLinear(texel.rgb)"};${r?" if(input.roof > 0.0 && all(input.roofUv >= vec2<f32>(0.0))&& all(input.roofUv <= vec2<f32>(1.0))){let roof = textureSampleLevel(roofTexture,roofTextureSampler,input.roofUv,0.0);base = mix(base,toLinear(roof.rgb),roof.a * input.roof);}":""}`}function zc(e,t,r,o,i,n,a){return e.unlit?` let rasterTexel = ${r?"textureSample(baseTexture, baseTextureSampler, input.uv)":"vec4<f32>(input.color, 1.0)"};return vec4<f32>(toSRGB(toLinear(rasterTexel.rgb)*(frame.atmosphereTint.rgb *(0.55 + 0.45 * sunlight)+ artificial)),${e.alphaMode==="BLEND"?"u.material.z * rasterTexel.a":"1.0"});`:`${Oc(e,r,a)} let mr = ${o?"textureSample(metalTexture, metalTextureSampler, input.uv)":"vec4<f32>(1.0)"};let metal = clamp(u.material.x * mr.b,0.0,1.0);let rough = clamp(u.material.y * mr.g,0.08,1.0);let view = normalize(-input.viewPosition);let halfVector = normalize(view + frame.lightDirection.xyz);let nl = max(dot(normal,frame.lightDirection.xyz),0.0)* frame.lightDirection.w * sunlight;let nv = max(dot(normal,view),0.001);let nh = max(dot(normal,halfVector),0.0);let vh = max(dot(view,halfVector),0.0);let a2 = pow(rough,4.0);let d = a2 / max(PI * pow(nh * nh *(a2 - 1.0)+ 1.0,2.0),0.0001);let gv = nl * sqrt(nv * nv *(1.0 - a2)+ a2);let gl = nv * sqrt(nl * nl *(1.0 - a2)+ a2);let visibility = 0.5 / max(gv + gl,0.0001);let f0 = mix(vec3<f32>(0.04),base,metal);let fresnel = f0 +(1.0 - f0)* pow(1.0 - vh,5.0);let specular = d * visibility * fresnel;let diffuse =(1.0 - metal)* base / PI;let sky = dot(normal,frame.skyDirection.xyz)* 0.5 + 0.5;let ambient = mix(toLinear(vec3<f32>(0.455,0.412,0.322)),vec3<f32>(1.0),sky)*(2.0 / PI);let ao = ${n?"mix(1.0, textureSample(occlusionTexture, occlusionTextureSampler, input.uv).r, u.emissive.w)":"1.0"};${t?" let lattice =(fract(input.localPosition / 2.5)- 0.5)* 2.5;let pointGlow =(1.0 - smoothstep(0.16,0.42,length(lattice)))* u.highlight.z;":""} let glow = ${t?"vec3<f32>(3.0, 2.6, 1.8) * pointGlow +":""}${e.vertexColors?" max(input.color - vec3<f32>(1.0), vec3<f32>(0.0)) * (0.3 + 5.0 * frame.skyDirection.w) +":""} u.emissive.rgb * ${i?e.emissiveTexture.srgb?"textureSample(emissiveTexture, emissiveTextureSampler, input.uv).rgb":"toLinear(textureSample(emissiveTexture, emissiveTextureSampler, input.uv).rgb)":"vec3<f32>(1.0)"};var color = ambient * base *(1.0 - metal)* ao +(diffuse + specular)* nl * toLinear(vec3<f32>(1.0,0.937,0.835))* 3.0 + glow;${e.vertexColors?"color = base * (ambient + toLinear(vec3<f32>(1.0, 0.937, 0.835)) * (3.0 / PI) * nl) + glow;":""} color =(color - glow)* frame.atmosphereTint.rgb + base * artificial *(1.0 - metal * 0.5)+ glow;appearance(input.position.xy);return vec4<f32>(toSRGB(color),${e.alphaMode==="BLEND"?"alpha":"1.0"});`}function Ac(e=Eo,t=!1,r=""){let o=!!e.baseTexture,i=!!e.metalTexture,n=!!e.emissiveTexture,a=!!e.occlusionTexture,s=!!(e.roofTexture||e.wallTexture);kc(e);let m=!!e.terrain,f=o||i||n||a||e.nightLight,p=Ec(e,t,r,m,f,s),c=[],l=zo(c,"baseTexture",o),u=zo(c,"metalTexture",i),h=zo(c,"emissiveTexture",n),x=zo(c,"occlusionTexture",a),g=zo(c,"roofTexture",s),y=` struct Mesh{worldMatrix:mat4x4<f32>,baseColor:vec4<f32>,material:vec4<f32>,emissive:vec4<f32>,terrain:vec4<f32>,highlight:vec4<f32>,cutout:vec4<f32>,nativeStroke:vec4<f32>,};struct Frame{viewMatrix:mat4x4<f32>,projectionMatrix:mat4x4<f32>,roofMatrix:mat4x4<f32>,lightDirection:vec4<f32>,skyDirection:vec4<f32>,atmosphereTint:vec4<f32>,};struct Solar{matrix:mat4x4<f32>,params:vec4<f32>,};@group(0)@binding(0)var<uniform> u:Mesh;@group(0)@binding(1)var<uniform> frame:Frame;@group(1)@binding(0)var<uniform> solar:Solar;@group(1)@binding(1)var shadowTexture:texture_depth_2d;@group(1)@binding(2)var shadowSampler:sampler_comparison;@group(1)@binding(3)var<storage,read> lightGrid:array<vec4<f32>>;${l}${u}${h}${x}${g} struct FragmentInput{@builtin(position)position:vec4<f32>,@location(0)color:vec3<f32>,@location(1)normal:vec3<f32>,@location(2)viewPosition:vec3<f32>,@location(6)shadowPosition:vec4<f32>,@location(7)worldPosition:vec3<f32>,${t?"@location(8) localPosition: vec3<f32>,":""} ${f?"@location(3) uv: vec2<f32>,":""} ${s?"@location(4) roofUv: vec2<f32>, @location(5) roof: f32,":""}};const PI:f32 = 3.14159265;fn toLinear(c:vec3<f32>)-> vec3<f32>{return select(c / 12.92,pow((c + vec3<f32>(0.055))/ 1.055,vec3<f32>(2.4)),c >= vec3<f32>(0.04045));}fn toSRGB(c:vec3<f32>)-> vec3<f32>{return select(c * 12.92,1.055 * pow(max(c,vec3<f32>(0.0)),vec3<f32>(1.0 / 2.4))- vec3<f32>(0.055),c >= vec3<f32>(0.0031308));}fn sunVisibility(position:vec4<f32>)-> f32{let p = position.xyz / position.w;let uv = vec2<f32>(p.x * 0.5 + 0.5,0.5 - p.y * 0.5);if(solar.params.x < 0.5 || any(uv < vec2<f32>(0.0))|| any(uv > vec2<f32>(1.0))|| p.z < 0.0 || p.z > 1.0){return 1.0;}return textureSampleCompareLevel(shadowTexture,shadowSampler,uv,p.z - 0.0003);}fn gridLighting(position:vec3<f32>,normal:vec3<f32>,offset:u32)-> vec3<f32>{let grid = lightGrid[offset];if(grid.w < 1.0){return vec3<f32>(0.0);}let cell = vec2<i32>(floor((position.xz - grid.xy)/ grid.z));if(any(cell < vec2<i32>(0))|| cell.x >= i32(grid.w)|| cell.y >= i32(lightGrid[offset + 1u].x)){return vec3<f32>(0.0);}let header = lightGrid[offset + 2u + u32(cell.y)* u32(grid.w)+ u32(cell.x)];var light = vec3<f32>(0.0);for(var i = 0u;i < u32(header.y);i++){let source = lightGrid[offset + u32(header.x)+ i * 2u];let colour = lightGrid[offset + u32(header.x)+ i * 2u + 1u];let delta = source.xyz - position;let distance2 = max(dot(delta,delta),1.0);let falloff = max(0.0,1.0 - distance2 /(source.w * source.w));let lambert = max(0.0,dot(normal,delta / sqrt(distance2)));light += toLinear(colour.rgb)* colour.w * lambert * falloff * falloff / distance2;}return light;}fn localLighting(position:vec3<f32>,normal:vec3<f32>)-> vec3<f32>{if(frame.skyDirection.w <= 0.0){return vec3<f32>(0.0);}var light = gridLighting(position,normal,0u);let moving = u32(lightGrid[1].z);if(moving > 0u){light += gridLighting(position,normal,moving);}return light * frame.skyDirection.w;}fn appearance(position:vec2<f32>){let noise = fract(52.9829189 * fract(dot(floor(position),vec2<f32>(0.06711056,0.00583715))));if(u.highlight.w < 1.0 && noise >= u.highlight.w){discard;}}@fragment fn fragmentMain(input:FragmentInput,@builtin(front_facing)frontFacing:bool)->@location(0)vec4<f32>{let cutoutDistance = distance(input.position.xy,u.cutout.xy);if(select((cutoutDistance < u.cutout.z),(cutoutDistance >= u.cutout.z),u.cutout.w > 0.0)){discard;}${e.nightLight?" if(input.uv.x <= 2.0){let radial = max(0.0,1.0 - dot(input.uv,input.uv));let alpha = radial * radial * frame.skyDirection.w * 0.65;if(alpha < 0.005){discard;}appearance(input.position.xy);return vec4<f32>(input.color,alpha);}":""} let sunlight = sunVisibility(input.shadowPosition);let worldNormal = normalize(transpose(mat3x3<f32>(frame.viewMatrix[0].xyz,frame.viewMatrix[1].xyz,frame.viewMatrix[2].xyz))* normalize(input.normal))* select(-1.0,1.0,frontFacing);let artificial = localLighting(input.worldPosition,worldNormal);${zc(e,t,o,i,n,a,s)}}`;return{vertex:p,fragment:y,bindings:c,textured:f,hasTerrain:m}}async function Rc(e,t){let r,o;try{let i=await Promise.all(t),n="",a=0;for(r of i)for(o of r.messages)o.type==="error"&&(n+=`${a++?`
2
+ `:""}${o.message}`);a&&e.fire("error",{error:new Error(`Unable to compile Layer3D WGSL: ${n}`)})}catch(i){e.fire("error",{error:i})}}function Ue(e,t=Eo){let r=w.get(e),{device:o}=r,i=Ac(t,!!e.options.nightSparkle,t.terrain?wc:""),n=o.createShaderModule((Hn.code=i.vertex,Hn));Hn.code=null;let a=o.createShaderModule((Yn.code=i.fragment,Yn));Yn.code=null,Rc(e,[n.getCompilationInfo(),a.getCompilationInfo()]);let s=[To,Lc,t.vertexColors?bc:null,i.textured?Mc:null];t.instanced&&s.push(Fn);let m=Sc(o,i),f=o.createPipelineLayout((Oo.bindGroupLayouts[0]=m,Oo.bindGroupLayouts[1]=r.sunlight.layout,Oo));Oo.bindGroupLayouts[0]=null,Oo.bindGroupLayouts[1]=null;let p=Jn(t);return{device:o,vertex:n,fragment:a,bindings:i.bindings,vertexBuffers:s,bindGroupLayout:m,pipelineLayout:f,pipelineCache:new Map,cullMode:t.doubleSided?"none":"back",transparent:t.alphaMode==="BLEND",depthWrite:t.depthWrite??t.alphaMode!=="BLEND",depthTest:t.depthTest!==!1,terrain:t.terrain,nightLight:!!t.nightLight,nightSparkle:!!e.options.nightSparkle,uniforms:p,_layerMaterial:t}}function dr(e,t,r=Eo,o=0,i){let{device:n}=w.get(e),a={},s,m,f,p,c;for([s,m]of Object.entries(t))f=new Float32Array(m),p=s==="uv"?2:3,c=n.createBuffer((qn.size=Math.max(4,f.byteLength),qn.usage=GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST|o,qn)),n.queue.writeBuffer(c,0,f),a[s]={size:p,data:f,count:f.length/p,buffer:c};let l={...Oe(),device:n,geometry:{device:n,attributes:a,drawRange:{start:0,count:a.position.count}},program:i||Ue(e,{vertexColors:!0,doubleSided:!0,...r}),id:Mt.value++,renderOrder:0,extras:{}};return q(l,M.get(e)),E(e),l}var Em=new WeakMap;function Om(e,t){let r=w.get(e),o=Em.get(r);o||(o=new Map,Em.set(r,o));let i=`${!!t.baseTexture}:${!!t.nativeStroke}:${!!t.depthWrite}`,n=o.get(i);return n||(n=Ue(e,{doubleSided:!0,...t}),o.set(i,n)),{...n,uniforms:Jn(t),_layerMaterial:t}}function Dc(e,t,r,o,i,n,a,s,m){let{backend:f,source:p,meshes:c}=e,l=m?e.strokeAnchors:[],u,h=c.get(t);if(!m)for(u=0;u<r.length;u++)l.push(u%3===1?1:0);let x={position:r,normal:l};a&&(x.uv=a);let g={vertexColors:!1,color:o,opacity:i,unlit:!0,alphaMode:"BLEND",depthWrite:s,nativeStroke:m};return n&&(g.baseTexture=n),h&&Ge(f,h),h=dr(f,x,g,0,p instanceof d.GridLayer?(s?e.terrainRasterProgram:e.rasterProgram)||Om(f,g):Om(f,g)),p instanceof d.GridLayer&&(s?e.terrainRasterProgram||=h.program:e.rasterProgram||=h.program,h.texture=n),c.set(t,h),h}function Gc(e){let t=e.geometry.attributes,r=t.position.data,o=t.normal.data,i,n=0;for(i=0;i<r.length;i+=3)n=Math.max(n,Math.hypot(r[i]-o[i],r[i+1]-o[i+1],r[i+2]-o[i+2]));e.geometry.nativeStrokeRadius=n}function Ao(e,t,r,o,i,n,a,s=!1){let{source:m,meshes:f}=e;if(!r.length)return;let p=t==="stroke"&&!!e.strokeCoordinates&&m.options.interactive===!1,c=f.get(t);if(!c||c.geometry.attributes.position.data.length!==r.length||m instanceof d.GridLayer&&c.program.depthWrite!==s||c.program.uniforms.baseTexture?.value!==n||!!c.program._layerMaterial.nativeStroke!==p)c=Dc(e,t,r,o,i,n,a,s,p);else{let l=c.geometry.attributes.position;l.data.set(r),l.needsUpdate=!0,c.geometry.bounds=null,p&&(c.geometry.attributes.normal.data.set(e.strokeAnchors),c.geometry.attributes.normal.needsUpdate=!0)}return p&&Gc(c),c.program.uniforms.strokeScale&&(c.program.uniforms.strokeScale.value=1),bt(e,c,o,i),c}function Ro(e,t,r,o,i){let n=Zn(e,t,r);if(!n)return;let a=hc,s=[],m=[],f;for(f of a)s.push(...o[f]),m.push(Sm[f*2],Sm[f*2+1]);return Ao(e,t,s,$t,i,n,m)}var D=new WeakMap;$();function Vt(e,t){let{map:r,backend:o}=e,i=r.options.crs,n=i.project(D.get(o)),a=i.project(t),s=Math.cos(D.get(o).lat*B);return[(a.x-n.x)*s,0,-(a.y-n.y)*s]}function Kn(e,t){let r=[],o,i;for(o=0;o<4;o++)i=o===0?t.getNorthWest():o===1?t.getNorthEast():o===2?t.getSouthWest():t.getSouthEast(),r.push(Vt(e,i));return r}function Uc(e,t,r,o){let i=e.textures.get(t),n=e.meshes.get(t);if(n&&!n._terrainRequest&&i?.image===r.el&&i.url===(r.el.currentSrc||r.el.src))return i.used=!0,bt(e,n,$t,o),n;let[a,s]=e.source._tileCoordsToNwSe(r.coords);return Ro(e,t,r.el,Kn(e,new d.LatLngBounds(a,s)),o)}async function Nc(e,t,r,o){let i=2**t;r=(r%i+i)%i,o=Math.max(0,Math.min(i-1,o));let n=`${t}/${r}/${o}`,a=e.terrainCache.get(n);a?(e.terrainCache.delete(n),e.terrainCache.set(n,a)):(a={promise:e.layer.options.getTile(t,r,o,e.terrainController.signal)},e.terrainCache.set(n,a));try{if(a.data||(a.data=await a.promise),!(a.data instanceof Float32Array)||a.data.length!==65536)throw new Error(`Invalid elevation tile ${n}: expected 256x256 Float32Array`);if(!a.range){let s=1/0,m=-1/0,f;for(f of a.data)!Number.isFinite(f)||f<=-1e3||(s=Math.min(s,f),m=Math.max(m,f));a.range=[s,m]}}catch(s){throw e.terrainCache.get(n)===a&&e.terrainCache.delete(n),s}for(;e.terrainCache.size>256;)e.terrainCache.delete(e.terrainCache.keys().next().value);return a.data}async function Fc(e,t,r,o){let{x:i,y:n,z:a}=r.coords,s=o.stream,m=[],f=new Map,p,c,l=0;try{for(c=-1;c<=1;c++)for(p=-1;p<=1;p++)m.push(Nc(s,a,i+p,n+c));let u=await Promise.all(m);if(e.disposed||s.terrainController.signal.aborted||e.source._tiles[t]!==r||e.terrainRequests.get(t)!==o)return;for(c=-1;c<=1;c++)for(p=-1;p<=1;p++)f.set(`${i+p}/${n+c}`,u[l++]);o.tiles=f,De(e),e.map.fire("terrainchange"),e.source._update()}catch(u){!e.disposed&&!s.terrainController.signal.aborted&&e.source._tiles[t]===r&&(o.error=u,s.layer.fire("error",{error:u,coords:r.coords}))}}function jc(e,t,r,o,i){let n=Zn(e,t,r.el);if(!n)return;let{x:a,y:s,z:m}=r.coords,f=32,p=Vt(e,e.map.unproject([a*256,s*256],m)),c=Vt(e,e.map.unproject([(a+1)*256,(s+1)*256],m)),l=[],u=[],h=[],x=M.get(e.backend).position[1],g,y,v,S,T,P,A,Q,N,G;for(g=0;g<=f;g++)for(y=0;y<=f;y++){if(v=y/f,S=g/f,T=fr({x:(a+v)*256,y:(s+S)*256},o.tiles),!Number.isFinite(T))throw new Error(`Missing elevation sample in ${m}/${a}/${s}`);l.push([p[0]+(c[0]-p[0])*v,T-x,p[2]+(c[2]-p[2])*S,v,S])}for(g=0;g<f;g++)for(y=0;y<f;y++){P=g*(f+1)+y,A=P+1,Q=P+f+1,N=Q+1;for(G of[P,Q,A,A,Q,N])u.push(l[G][0],l[G][1],l[G][2]),h.push(l[G][3],l[G][4])}let V=Ao(e,t,u,$t,i,n,h,!0);return V._terrainRequest=o,V}function Wc(e,t,r,o){let i=e.textures.get(t),n=e.meshes.get(t),a=e.terrainRequests.get(t);return(!a||a.tile!==r)&&(a={tile:r,stream:e.terrainStream},e.terrainRequests.set(t,a),Fc(e,t,r,a)),a.tiles?n&&n._terrainRequest===a&&i?.image===r.el&&i.url===(r.el.currentSrc||r.el.src)?(i.used=!0,bt(e,n,$t,o),n):jc(e,t,r,a,o):(n&&i?.image===r.el&&(i.used=!0,bt(e,n,$t,o)),null)}function $c(e){let t,r,o;for([t,r]of e.meshes)e.source._tiles[t]||!r._terrainRequest||(o=e.textures.get(t),o&&(o.used=!0,r._nativeUsed=!0))}function Vc(e){let{source:t}=e,r=dc(e),o,i,n,a,s=!1;for(o in t._tiles)if(Object.hasOwn(t._tiles,o)){if(i=t._tiles[o],!i.loaded||i.el instanceof HTMLImageElement&&!i.el.naturalWidth){s=!!r;continue}n=(t.options.opacity??1)*(i._gpuOpacity??1),a=e.terrainRequests?Wc(e,o,i,n):Uc(e,o,i,n),e.terrainRequests&&!e.terrainRequests.get(o).tiles&&(s=!0),a&&(a.renderOrder+=i.coords.z/100)}r&&(s||!Object.keys(t._tiles).length)&&$c(e)}function Zc(e){let{source:t}=e;t._image?.complete&&t._image.naturalWidth&&Ro(e,"image",t._image,Kn(e,t.getBounds()),t.options.opacity??1)}var qc=Object.freeze(["m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44"]);L();$();Z();function Qn(e,t,r){let o=e.options.rotation+(e.options.rotateWithView?k(e._map)*B:0);e.options.keepUpright&&Math.cos(o)<0&&(o+=Math.PI);let i=e.options.scale;return new d.Point((t*Math.cos(o)-r*Math.sin(o))*i,(t*Math.sin(o)+r*Math.cos(o))*i)}function Ai(e,t,r,o,i,n){return e.x=t.m11*r+t.m21*o+t.m31*i+t.m41*n,e.y=t.m12*r+t.m22*o+t.m32*i+t.m42*n,e.z=t.m13*r+t.m23*o+t.m33*i+t.m43*n,e.w=t.m14*r+t.m24*o+t.m34*i+t.m44*n,e}function Hc(e,t,r){let o=e.source.options.icon.options,i=o[t==="shadow"?"shadowSize":"iconSize"],n=e.markerImageBounds||=[0,0,0,0];n[0]=i?i.x??i[0]:r.naturalWidth,n[1]=i?i.y??i[1]:r.naturalHeight;let a=t==="shadow"&&o.shadowAnchor||o.iconAnchor;return n[2]=a?a.x??a[0]:Math.floor(n[0]/2),n[3]=a?a.y??a[1]:Math.floor(n[1]/2),n}function Yc(e,t,r){let{source:o,map:i,backend:n}=e,a=Vt(e,o.getLatLng());if(Be.get(i)){let Mi=M.get(n),un=xe(i,o.getLatLng());Number.isFinite(un)&&(a[1]=(un-Mi.position[1])/Mi.scale[1])}let s=i.getSize(),m=e.markerMatrices||={root:new DOMMatrix,camera:new DOMMatrix,point:{x:0,y:0,z:0,w:1}},f=m.root,p=m.camera,c=m.point,l=M.get(n).worldMatrix,u=ee.get(n).projectionViewMatrix,h,x;for(h=0;h<16;h++)x=qc[h],f[x]=l[h],p[x]=u[h];Ai(c,f,a[0],a[1],a[2],1),Ai(c,p,c.x,c.y,c.z,c.w);let g=c.x,y=c.y,v=c.z,S=c.w;p.invertSelf(),f.invertSelf();let[T,P,A,Q]=Hc(e,t,r),N=(g/S+1)*s.x/2,G=(1-y/S)*s.y/2,V=N-A,ue=G-Q,Me=[],st,Ce,vt,Ze,bi;for(h=0;h<4;h++)st=V+(h%2?T:0),Ce=ue+(h<2?0:P),vt=Qn(o,st-N,Ce-G),Ze=N+vt.x,bi=G+vt.y,Ai(c,p,Ze/s.x*2-1,1-bi/s.y*2,v/S,1),Ai(c,f,c.x/c.w,c.y/c.w,c.z/c.w,1),Me.push([c.x,c.y,c.z]);return Me}function Xc(e){let{source:t}=e,r,o,i,n;for(r=0;r<2;r++)o=r?"icon":"shadow",i=r?t._icon:t._shadow,!(!(i instanceof HTMLImageElement)||!i.complete||!i.naturalWidth)&&(n=Ro(e,o,i,Yc(e,o,i),t.options.opacity??1),o==="shadow"&&n&&(n.renderOrder-=100*1e6))}function ea(e){return e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055}function ta(e,t,r,o){let i=(e+t*12)%12;return r-o*Math.max(-1,Math.min(i-3,9-i,1))}function Bt(e){if(e&&typeof e=="object"&&"h"in e){let n=e.s*Math.min(e.l,1-e.l);return{r:ea(ta(0,e.h,e.l,n)),g:ea(ta(8,e.h,e.l,n)),b:ea(ta(4,e.h,e.l,n))}}if(e&&typeof e=="object"&&"r"in e)return e;if(typeof e=="number")return{r:(e>>16&255)/255,g:(e>>8&255)/255,b:(e&255)/255};if(typeof e!="string"||!CSS.supports("color",e))throw new Error("Invalid 3D color");let t=document.createElement("canvas").getContext("2d");t.fillStyle=e,t.fillRect(0,0,1,1);let[r,o,i]=t.getImageData(0,0,1,1).data;return{r:r/255,g:o/255,b:i/255}}function Jc(e){let{source:t,meshes:r,strokeCoordinates:o,strokeAnchors:i}=e,n=r.get("stroke"),a,s,m,f,p;if(n){let c=2**(e.strokeZoom-e.map.getZoom())*Number(t.options.weight)/e.strokeWeight,l=n.geometry.attributes.position;if(n.program.uniforms.strokeScale)n.program.uniforms.strokeScale.value=c;else{for(a=0;a<o.length;a++)l.data[a]=i[a]+(o[a]-i[a])*c;l.needsUpdate=!0,n.geometry.bounds=null}({r:s,g:m,b:f}=Bt(t.options.color)),bt(e,n,[s,m,f],t.options.opacity??1)}p=r.get("fill"),p&&({r:s,g:m,b:f}=Bt(t.options.fillColor||t.options.color),bt(e,p,[s,m,f],t.options.fillOpacity??1))}var Io=[];L();L();L();function Ne(e,t,r,o,i,n,a,s){return t.push(...e(r,n),...e(o,a),...e(i,s))}var Ri=2*Math.PI;L();function zm(e,t,r,o,i){return new d.Point(e.x+t*Math.cos(i*Ri/o),e.y+r*Math.sin(i*Ri/o))}function Vr(e,t,r,o,i=r){if(!(r>0)||!(i>0))return;let n=Math.max(12,Math.min(128,Math.ceil(Math.PI*Math.sqrt(r)))),a;for(a=0;a<n;a++)Ne(e,o,t,zm(t,r,i,n,a),zm(t,r,i,n,a+1),t,t,t)}function ra(e,t,r,o,i){let{options:n,width:a,stroke:s,point:m}=e,f=a/2,p=t,c=r,l=t.distanceTo(r);if(!l)return;let u=r.subtract(t).divideBy(l),h=new d.Point(-u.y*f,u.x*f);n.lineCap==="square"&&(o&&(t=t.subtract(u.multiplyBy(f))),i&&(r=r.add(u.multiplyBy(f)))),Ne(m,s,t.add(h),t.subtract(h),r.add(h),p,p,c),Ne(m,s,r.add(h),t.subtract(h),r.subtract(h),c,p,c),n.lineCap==="round"&&(o&&Vr(m,t,f,s),i&&Vr(m,r,f,s))}L();function Kc(e,t,r,o,i){let{options:n,width:a,point:s,stroke:m}=e,f=t[r],p=a/2;if(n.lineJoin==="round"){Vr(s,f,p,m);return}let c=f.subtract(t[(r+t.length-1)%t.length]),l=Math.hypot(c.x,c.y);if(!l||!i)return;let u=c.divideBy(l),h=o.subtract(f).divideBy(i),x=u.x*h.y-u.y*h.x>0?-1:1,g=new d.Point(-u.y*x,u.x*x),y=new d.Point(-h.y*x,h.x*x),v=f.add(g.multiplyBy(p)),S=f.add(y.multiplyBy(p)),T=1+g.x*y.x+g.y*y.y,P=T>0?g.add(y).multiplyBy(p/T):null;Ne(s,m,v,f,S,f,f,f),n.lineJoin==="miter"&&P&&Math.hypot(P.x,P.y)<=p*4&&Ne(s,m,v,f.add(P),S,f,f,f)}function Qc(e,t,r,o,i,n){let a=e.dash,s=0,m=(i%n+n)%n,f=0,p,c,l=0;for(;f<a.length-1&&m>=a[f];)m-=a[f++];let u=Math.max(0,a[f]-m);for(;s<o;){if(p=Math.min(o,s+u),p>s&&f%2===0&&(c=r.subtract(t).divideBy(o),ra(e,t.add(c.multiplyBy(s)),t.add(c.multiplyBy(p)),!0,!0)),p<=s){if(++l>=a.length)throw new Error("Leaflet dashArray is too small for these coordinates")}else l=0;s=p,f=(f+1)%a.length,u=a[f]}}function oa(e,t,r){let{options:o,width:i,dash:n}=e;if(!o.stroke||i<=0||t.length<2)return;let a=Number(o.dashOffset)||0,s=0,m,f,p,c,l;for(m of n)s+=m;for(f=0;f<t.length-(r?0:1);f++)p=t[f],c=t[(f+1)%t.length],l=p.distanceTo(c),n.length?Qc(e,p,c,l,a,s):(ra(e,p,c,!r&&f===0,!r&&f===t.length-2),(r||f>0)&&Kc(e,t,f,c,l)),a+=l}function el(e){let t=1/0,r;for(r of e)t=Math.min(t,r.x);return t}function tl(e,t,r,o){let i=Math.min(r+o,e.length),n=Math.min(r+o*2,e.length),a=r,s=i,m;for(m=r;m<n;m++)a<i&&(s>=n||e[a].x<=e[s].x)?t[m]=e[a++]:t[m]=e[s++]}function rl(e){if(e.length<2)return e;let t=new Array(e.length),r=[],o,i,n,a,s;for(o of e)r.push({ring:o,x:el(o)});let m=r,f=t;for(i=1;i<r.length;i*=2){for(n=0;n<r.length;n+=i*2)tl(m,f,n,i);a=m,m=f,f=a}for(s=0;s<e.length;s++)e[s]=m[s].ring;return e}function Se(e,t,r){return(t.x-e.x)*(r.y-e.y)-(t.y-e.y)*(r.x-e.x)}function ut(e,t){return e.x===t.x&&e.y===t.y}function ol(e){let t=!0,r,o,i,n;for(;t&&e.length>3;)for(t=!1,r=0;r<e.length;r++)if(o=e[(r+e.length-1)%e.length],i=e[r],n=e[(r+1)%e.length],ut(o,i)||Math.abs(Se(o,i,n))<1e-10){e.splice(r,1),t=!0;break}if(e.length<3)throw new Error("Degenerate polygon ring");return e}function il(e){let t=0,r,o,i;for(r=0;r<e.length;r++)o=e[r],i=e[(r+1)%e.length],t+=o.x*i.y-i.x*o.y;return t<0}function nl(e,t){let r=[],o=0,i,n,a;for(i=0;i<e.length;i++)n=e[i],a=ol(t.slice(o,o+=n.length)),il(a)!==!!i&&a.reverse(),r.push(a);return r}function ia(e,t){let r=!1,o,i,n,a;for(o=0,i=t.length-1;o<t.length;i=o++)n=t[o],a=t[i],n.y>e.y!=a.y>e.y&&e.x<(a.x-n.x)*(e.y-n.y)/(a.y-n.y)+n.x&&(r=!r);return r}function al(e,t){let r;for(r=1;r<t.length;r++)if(ia(e,t[r]))return!0;return!1}function Ii(e,t,r){return Math.min(e.x,t.x)<=r.x&&r.x<=Math.max(e.x,t.x)&&Math.min(e.y,t.y)<=r.y&&r.y<=Math.max(e.y,t.y)}function sl(e,t,r,o){if(ut(e,r)||ut(e,o)||ut(t,r)||ut(t,o))return!1;let i=Se(e,t,r),n=Se(e,t,o),a=Se(r,o,e),s=Se(r,o,t);return i*n<0&&a*s<0||i===0&&Ii(e,t,r)||n===0&&Ii(e,t,o)||a===0&&Ii(r,o,e)||s===0&&Ii(r,o,t)}function Am(e,t,r){let o;for(o=0;o<r.length;o++)if(sl(e,t,r[o],r[(o+1)%r.length]))return!0;return!1}function ml(e,t,r,o){if(Am(e,t,r))return!0;let i;for(i=1;i<o.length;i++)if(Am(e,t,o[i]))return!0;return!1}function fl(e,t,r,o){let i=-1,n=-1,a=1/0,s,m,f,p,c;for(s=0;s<t.length;s++)for(m=0;m<e.length;m++)f=t[s],p=e[m],c=(f.x-p.x)**2+(f.y-p.y)**2,!(c>=a)&&(o.x=(f.x+p.x)/2,o.y=(f.y+p.y)/2,!(!ia(o,r[0])||al(o,r))&&(ml(f,p,e,r)||(i=s,n=m,a=c)));if(i<0)throw new Error("Unable to connect polygon hole");return[...e.slice(0,n+1),...t.slice(i),...t.slice(0,i+1),e[n],...e.slice(n+1)]}function pl(e,t,r,o){let i;for(i of e)if(!ut(i,t)&&!ut(i,r)&&!ut(i,o)&&Se(t,r,i)>=0&&Se(r,o,i)>=0&&Se(o,t,i)>=0)return!0;return!1}function cl(e){let t=[],r,o,i,n,a,s;for(;e.length>3;){for(r=!1,o=0;o<e.length;o++)if(i=e[(o+e.length-1)%e.length],n=e[o],a=e[(o+1)%e.length],!(Se(i,n,a)<=1e-10)&&!pl(e,i,n,a)){t.push([i.index,n.index,a.index]),e.splice(o,1),r=!0;break}if(!r)throw new Error("Unable to triangulate polygon: invalid or self-intersecting rings")}if(Se(...e)>1e-10){let m=[];for(s of e)m.push(s.index);t.push(m)}return t}function Rm(e){let t=0,r,o,i;for(r=0;r<e.length;r++)o=e[r],i=e[(r+1)%e.length],t+=o.x*i.y-i.x*o.y;return Math.abs(t)/2}function ll(e,t,r){let o=0,i=0,n,a;for(n=1;n<e.length;n++)o+=Rm(e[n]);let s=Rm(e[0])-o;for(a of r)i+=Se(t[a[0]],t[a[1]],t[a[2]])/2;if(s<=0||Math.abs(i-s)>Math.max(1e-7,s*1e-8))throw new Error("Polygon triangulation area mismatch")}function na(e,t=lr){let r=[e,...t],o=r.flat(),i,n,a;for(i of o)if(!Number.isFinite(i.x)||!Number.isFinite(i.y))throw new Error("Invalid polygon coordinates");let s=[];for(n=0;n<o.length;n++)i=o[n],s.push({x:i.x-e[0].x,y:i.y-e[0].y,index:n});let m=nl(r,s),f=m[0].slice(),p=rl(m.slice(1)),c=p.length?{x:0,y:0}:null;for(a of p)f=fl(f,a,m,c);let l=cl(f);return ll(m,s,l),l}function ul(e,t){let{options:r,fill:o,point:i}=e;if(r.triangulated){if(t.length!==1||t[0].length!==3)throw new Error("triangulated polygons require three vertices per polygon and no holes");Ne(i,o,t[0][0],t[0][1],t[0][2]);return}let n=[],a,s;for(a of t)a.length>=3&&n.push(a);let m=n.flat();for(s of na(n[0],n.slice(1)))Ne(i,o,m[s[0]],m[s[1]],m[s[2]])}function Im(e,t,r){let{options:o,map:i}=e,n=[],a,s,m;for(a of t){s=[];for(m of a)s.push(i.project(m));n.push(s)}r&&o.fill&&n[0]?.length>=3&&ul(e,n);for(a of n)oa(e,a,r)}function Dm(e,t,r){if(!t.length)return;let o;if(t[0]instanceof d.LatLng)Im(e,[t],r);else if(r&&t[0][0]instanceof d.LatLng)Im(e,t,r);else for(o of t)Dm(e,o,r)}function dl(e){let t=Array.isArray(e.dashArray)?e.dashArray:String(e.dashArray||"").trim().split(/[ ,]+/),r=[],o,i=!0;for(o of t)r.push(Number(o));for(o of r){if(!Number.isFinite(o)||o<0)throw new Error("Invalid Leaflet dashArray");o!==0&&(i=!1)}return i&&(r.length=0),r.length%2&&r.push(...r),r}L();L();function hr(e,t,r,o,i,n=0){let a=i*Ri/o;return new d.Point(e.x+Math.max(0,t+n)*Math.cos(a),e.y+Math.max(0,r+n)*Math.sin(a))}L();var Gm=new WeakMap;function Do(e){if(!d.version.startsWith("2."))return e._project();let t=e._map,r=e._renderer,o=Gm.get(t);o||(o=Object.create(d.Renderer.prototype),o._map=t,Gm.set(t,o)),o._pathZoom=t.getZoom(),o._pathOrigin=t.getPixelOrigin(),e._renderer=o;try{e._project()}finally{r?e._renderer=r:delete e._renderer}}function hl(e,t){let{map:r,point:o,fill:i,stroke:n,options:a,dash:s,width:m}=t,f=r.project(e.getLatLng()),p=e.getRadius(),c=p,l,u;if(e instanceof d.Circle){Do(e);let x=e._point.add(r.getPixelOrigin());f.x=x.x,f.y=x.y,p=e._pxRadius??e._radius,c=e._pxRadiusY??e._radiusY??p}a.fill&&Vr(o,f,p,i,c);let h=Math.max(12,Math.min(128,Math.ceil(Math.PI*Math.sqrt(Math.max(p,c)))));if(s.length){let x=[];for(l=0;l<h;l++)x.push(hr(f,p,c,h,l));oa(t,x,!0)}else if(a.stroke&&m>0)for(u=0;u<h;u++)Ne(o,n,hr(f,p,c,h,u,m/2),hr(f,p,c,h,u,-m/2),hr(f,p,c,h,u+1,m/2)),Ne(o,n,hr(f,p,c,h,u+1,m/2),hr(f,p,c,h,u,-m/2),hr(f,p,c,h,u+1,-m/2))}function gl(e,t,r){let o=[],i=[],n=e.options,a=Number(n.weight)||0,s=dl(n),m={fill:o,stroke:i,options:n,width:a,dash:s,point:r,map:t};if(e instanceof d.CircleMarker)hl(e,m);else{let f=e instanceof d.Polygon;Dm(m,e.getLatLngs(),f)}return{fill:o,stroke:i}}function Um(e,t){if(e.pixelProjection){let{transformation:r,scale:o,origin:i,metres:n}=e.pixelProjection,a=r.untransform(t,o);return[(a.x-i.x)*n,0,-(a.y-i.y)*n]}return Vt(e,e.map.unproject(t))}function yl(e,t){let r=Io[Io.length-1];return t&&r.strokeAnchors&&r.strokeAnchors.push(...Um(r,t)),Um(r,e)}$();L();function xl(e){let{source:t}=e;e.strokeCoordinates=null,e.strokeAnchors=t instanceof d.Polyline&&!t.options.dashArray?[]:null;let r=e.map.options.crs,o=D.get(e.backend);e.pixelProjection={transformation:r.transformation,scale:r.scale(e.map.getZoom()),origin:r.project(o),metres:Math.cos(o.lat*B)},Io.push(e);try{return gl(t,e.map,yl)}finally{Io.pop()}}function vl(e,t){let{source:r}=e;e.strokeAnchors?.length===t.length&&t.length?(r.options.interactive===!1?e.strokeCoordinates=t:(e.strokeCoordinates=new Float64Array(t),e.strokeAnchors=new Float64Array(e.strokeAnchors)),e.strokeZoom=e.map.getZoom(),e.strokeWeight=Number(r.options.weight)):e.strokeAnchors=null}function wl(e){let{source:t}=e;if(e.zoomOnly){Jc(e),e.zoomOnly=!1;return}let{fill:r,stroke:o}=xl(e);vl(e,o);let i,n,a,s,m,f,p,c,l;for(i=0;i<2;i++)n=i?"stroke":"fill",a=i?o:r,s=i?t.options.color:t.options.fillColor||t.options.color,m=i?t.options.opacity:t.options.fillOpacity,a.length&&({r:f,g:p,b:c}=Bt(s),Ao(e,n,a,[f,p,c],m??1),n==="stroke"&&t.options.interactive===!1&&e.strokeCoordinates&&(l=e.meshes.get(n).geometry.attributes,e.strokeCoordinates=l.position.data,e.strokeAnchors=l.normal.data))}function Ll(e){let{meshes:t,textures:r,backend:o}=e,i,n,a;for([a,i]of t)i._nativeUsed||(Ge(o,i),t.delete(a),n=r.get(a),n&&W(o,n.texture),r.delete(a));for([a,n]of r)n.used||(W(o,n.texture),r.delete(a))}function aa(e){let{source:t,meshes:r,textures:o}=e;if(!_o(e)||!w.get(e.backend)||e.failed||!e.dirty&&(!e.marker||!e.viewDirty))return;e.dirty=!1,e.viewDirty=!1;let i,n;for(i of r.values())i._nativeUsed=!1;for(n of o.values())n.used=!1;t instanceof d.GridLayer?Vc(e):t instanceof d.ImageOverlay?Zc(e):e.marker?Xc(e):wl(e),Ll(e)}function bl(e){try{aa(e);let t=e.meshes.get("stroke")?.program.uniforms.strokeScale;if(t){let r=se.get(e.map)?.zoom??e.map.getZoom();t.value=2**(e.strokeZoom-r)*Number(e.source.options.weight)/e.strokeWeight}}catch(t){e.failed=!0,e.source.fire("error",{error:t})}}function gr(e){if($n(e),R.get(e)!==e||!w.get(e))return;let t=e._map,r=performance.now(),o=t.getSize();if(!o.x||!o.y)return;Kf(e,r),ep(e,o),ap(e,o),Pe(oe.get(e));let i=!1,n,a;for(n of F.get(e))a=ho.get(n),a&&(bl(a),i=!0);let s=pt.get(t);cp(e,s,i);let m=Ft.get(e),f=w.get(e),p=kp(e,r),c=f.frameMeshes||=[];c.length=0;let l=Rp(e,p,r,c),u=f.device.createCommandEncoder();Wp(e,c,m,s),uc(e,u,m,s),Kp(e,u,c),f.device.queue.writeBuffer(f.uniformBuffer,0,f.uniformData,0,f.uniformSlot*64),f.device.queue.submit((Mn[0]=u.finish(),Mn)),Mn[0]=null;for(n of F.get(e))sr.get(n)&&(l=Co(n)||l);(t._animatingZoom||l)&&E(e)}function Ml(){let e=[...Nt];Nt.clear();let t,r;for(r of e)if(ft.set(r,null),!(R.get(r)!==r||!w.get(r)))try{gr(r)}catch(o){t||=o}if(t)throw t}function E(e){let t=R.get(e);if(!t)return e;if(t!==e)return E(t),e;if(ft.get(e)!=null)return e;let r=Nt.values().next().value;return Nt.add(e),ft.set(e,r?ft.get(r):requestAnimationFrame(Ml)),e}L();function sa(e){let{source:t}=e,r=t instanceof d.Marker&&t.options.icon instanceof d.DivIcon,o=r?null:t._icon,i=r?null:t._shadow,n,a;for(a of e.hidden)a===o||a===i||(a.classList.remove("leaflet-webgpu-target"),e.hidden.delete(a));for(n=0;n<2;n++)a=n?i:o,!(!a||e.hidden.has(a))&&(a.classList.add("leaflet-webgpu-target"),e.hidden.add(a))}function De(e=this){e.zoomOnly=!1,e.dirty=!0,e.viewDirty=!0,e.failed=!1,sa(e);let t=e.source,r,o;for(o of e.images)o===t._icon||o===t._shadow||o===t._image||(o.removeEventListener("load",Bi),o.removeEventListener("error",Ti),bn(o,e),e.images.delete(o));for(r=0;r<3;r++)o=r===0?t._icon:r===1?t._shadow:t._image,!(!(o instanceof HTMLImageElement)||e.images.has(o))&&(e.images.add(o),Yf(o,e),o.addEventListener("load",Bi),o.addEventListener("error",Ti));R.get(e.backend)&&E(e.backend)}L();var Bl=new Set(["color","opacity","weight","fillColor","fillOpacity"]);function Tl(e,t,r){let{source:o}=t;if(e!=="setStyle"||o.options.interactive!==!1||t.dirty&&!t.zoomOnly)return!1;let i=t.strokeCoordinates&&t.meshes.get("stroke")?.program.uniforms.strokeScale,n=o instanceof d.Polygon&&!o.options.stroke&&t.meshes.has("fill");if(!i&&!n)return!1;let a;if(r[0]){for(a of Object.keys(r[0]))if(!Bl.has(a))return!1}return!0}L();function Pl(e,t){let{source:r}=e;if(!(r instanceof d.GridLayer)||t!=="bringToFront"&&t!=="bringToBack")return;let o=t==="bringToFront"?-1/0:1/0,i,n;for(i of Object.values(e.map._layers))i===r||!(i instanceof d.GridLayer)||i.getPane()!==r.getPane()||(n=i.options.zIndex||0,o=t==="bringToFront"?Math.max(o,n):Math.min(o,n));let a=t==="bringToFront"?o+1:o-1;Number.isFinite(a)&&r.setZIndex(a)}function H(e,t,r){let o=de.get(t),i=o.methods.get(e).original,n=Tl(e,o,r),a=i.apply(t,r);return Pl(o,e),e==="bringToFront"&&(o.order=ar.get(o.map)+1,ar.set(o.map,o.order)),e==="bringToBack"&&(o.order=uo.get(o.map)-1,uo.set(o.map,o.order)),De(o),n&&(!t.options.stroke||Number(t.options.weight)>0)&&(o.zoomOnly=!0),a}function Sl(...e){return H("setLatLng",this,e)}function kl(...e){return H("setLatLngs",this,e)}function Cl(...e){return H("addLatLng",this,e)}function _l(...e){return H("setRadius",this,e)}function El(...e){return H("setStyle",this,e)}function Ol(...e){return H("redraw",this,e)}function zl(...e){return H("setIcon",this,e)}function Al(...e){return H("setUrl",this,e)}function Rl(...e){return H("setBounds",this,e)}function Il(...e){return H("setOpacity",this,e)}function Dl(...e){return H("setZIndex",this,e)}function Gl(...e){return H("setZIndexOffset",this,e)}function Ul(...e){return H("bringToFront",this,e)}function Nl(...e){return H("bringToBack",this,e)}var Nm={setLatLng:Sl,setLatLngs:kl,addLatLng:Cl,setRadius:_l,setStyle:El,redraw:Ol,setIcon:zl,setUrl:Al,setBounds:Rl,setOpacity:Il,setZIndex:Dl,setZIndexOffset:Gl,bringToFront:Ul,bringToBack:Nl};L();var yr=Object.freeze({});function ma(e=yr){return new d.Layer(e)}L();var Zr=new WeakMap;var ne=new WeakMap;var Tt=new WeakMap;function Fl(e,t,r,o){let i=Math.min(r+o,e.length),n=Math.min(r+o*2,e.length),a=r,s=i,m;for(m=r;m<n;m++)a<i&&(s>=n||!(e[s].distance<e[a].distance))?t[m]=e[a++]:t[m]=e[s++]}function jl(e){if(e.length<2)return e;let t=new Array(e.length),r=e,o=t,i,n,a,s;for(i=1;i<e.length;i*=2){for(n=0;n<e.length;n+=i*2)Fl(r,o,n,i);a=r,r=o,o=a}if(r!==e)for(s=0;s<e.length;s++)e[s]=r[s];return e}function Wl(e,t,r,o){let n=new DOMMatrix(t.worldMatrix).invertSelf().toFloat64Array(),a,s,m,f,p;for(a of n)if(!Number.isFinite(a))throw new Error("Singular 3D transform");s=e.origin[0],m=e.origin[1],f=e.origin[2],p=n[3]*s+n[7]*m+n[11]*f+n[15],r[0]=(n[0]*s+n[4]*m+n[8]*f+n[12])/p,r[1]=(n[1]*s+n[5]*m+n[9]*f+n[13])/p,r[2]=(n[2]*s+n[6]*m+n[10]*f+n[14])/p,s=e.direction[0],m=e.direction[1],f=e.direction[2],o[0]=n[0]*s+n[4]*m+n[8]*f,o[1]=n[1]*s+n[5]*m+n[9]*f,o[2]=n[2]*s+n[6]*m+n[10]*f;let c=Math.hypot(...o)||1;o[0]/=c,o[1]/=c,o[2]/=c}function $l(e,t,r){e.geometry.bounds||_e(e.geometry);let o=0,i=1/0,n,a,s;for(n=0;n<3;n++)if(Math.abs(r[n])<1e-12){if(t[n]<e.geometry.bounds.min[n]||t[n]>e.geometry.bounds.max[n]){i=-1/0;break}}else a=(e.geometry.bounds.min[n]-t[n])/r[n],s=(e.geometry.bounds.max[n]-t[n])/r[n],o=Math.max(o,Math.min(a,s)),i=Math.min(i,Math.max(a,s));return!(i<o)}function fa(e,t){return t?.count??t?.data.length??e.count??e.data.length/(e.size??3)}function pa(e,t,r,o,i){let{position:n,index:a,instanceOffset:s}=e.geometry.attributes,m=n.size??3,f=fa(n,a),p=s?t%f:t,c=s?Math.floor(t/f)*s.size:0,l=s?.data[c]??0,u=s?.data[c+1]??0,h=s?.data[c+2]??0,x=(a?a.data[p]:p)*m,g=(a?a.data[p+1]:p+1)*m,y=(a?a.data[p+2]:p+2)*m;r[0]=n.data[x],r[1]=n.data[x+1],r[2]=n.data[x+2],o[0]=n.data[g],o[1]=n.data[g+1],o[2]=n.data[g+2],i[0]=n.data[y],i[1]=n.data[y+1],i[2]=n.data[y+2],s&&(r[0]=Math.fround(r[0]+l),r[1]=Math.fround(r[1]+u),r[2]=Math.fround(r[2]+h),o[0]=Math.fround(o[0]+l),o[1]=Math.fround(o[1]+u),o[2]=Math.fround(o[2]+h),i[0]=Math.fround(i[0]+l),i[1]=Math.fround(i[1]+u),i[2]=Math.fround(i[2]+h))}function Vl(e,t,r,o,i){if(!e.program.nightLight)return!1;let{index:n,uv:{data:a}}=e.geometry.attributes,s=n?n.data[t]:t,m=n?n.data[t+1]:t+1,f=n?n.data[t+2]:t+2,p=a[s*2]*(1-r-o)+a[m*2]*r+a[f*2]*o,c=a[s*2+1]*(1-r-o)+a[m*2+1]*r+a[f*2+1]*o;return p<=2&&(!i||p*p+c*c>.9)}function Zl(e,t,r,o,i,n,a,s){let m=o[0]-r[0],f=o[1]-r[1],p=o[2]-r[2],c=i[0]-r[0],l=i[1]-r[1],u=i[2]-r[2],h=a[1]*u-a[2]*l,x=a[2]*c-a[0]*u,g=a[0]*l-a[1]*c,y=m*h+f*x+p*g;if(e.program.cullMode==="none"||e.program.cullFace===null?Math.abs(y)<1e-9:y<1e-9)return 1/0;let v=n[0]-r[0],S=n[1]-r[1],T=n[2]-r[2],P=(v*h+S*x+T*g)/y;if(P<0||P>1)return 1/0;let A=S*p-T*f,Q=T*m-v*p,N=v*f-S*m,G=(a[0]*A+a[1]*Q+a[2]*N)/y;return G<0||P+G>1||Vl(e,t,P,G,s)?1/0:(c*A+l*Q+u*N)/y}function ql(e,t,r,o,i,n){let a=o[0]*i+r[0],s=o[1]*i+r[1],m=o[2]*i+r[2],f=t.worldMatrix,p=f[3]*a+f[7]*s+f[11]*m+f[15],c=[(f[0]*a+f[4]*s+f[8]*m+f[12])/p,(f[1]*a+f[5]*s+f[9]*m+f[13])/p,(f[2]*a+f[6]*s+f[10]*m+f[14])/p];return{faceIndex:n,object:t,point:c,distance:Math.hypot(c[0]-e.origin[0],c[1]-e.origin[1],c[2]-e.origin[2])}}function ca(e,t,r=0){let o=[],i=[0,0,0],n=[0,0,0],a=[0,0,0],s=[0,0,0],m=[0,0,0],f,p,c,l,u,h,x,g,y;for(f of t)if(Wl(e,f,s,m),!!$l(f,s,m)){for({position:p,index:c,instanceOffset:l}=f.geometry.attributes,u=c?.count||p.count,h=1/0,x=void 0,g=0;g<u*(l?.count??1);g+=3)pa(f,g,i,n,a),y=Zl(f,g,i,n,a,s,m,r),y>0&&y<h&&(h=y,x=g/3);x!==void 0&&o.push(ql(e,f,s,m,h,x))}return jl(o)}function Zt(e,t,r){if(t(e,r))return;let o;for(o of e.children)Zt(o,t,r)}function la(e,t){if(!e.visible)return!0;e.geometry&&e._appearance!==0&&t.push(e)}function Hl(e,t,r,o){let i=1,n=t.length-1,a;for(;i<n;)a=i+Math.floor((n-i)/2),t[a]<r?i=a+1:n=a;let s=e[i-1],m=e[i],f=t[i]-t[i-1]||1,p=(r-t[i-1])/f;return o||={},o.x=s[0]+(m[0]-s[0])*p,o.y=(s[2]??0)+((m[2]??0)-(s[2]??0))*p,o.z=s[1]+(m[1]-s[1])*p,o.dx=(m[0]-s[0])/f,o.dz=(m[1]-s[1])/f,o}function Go(e,t,r){let{points:o,lengths:i,length:n}=t.lane,a=t.distance+e.elapsed*t.speed;a-=n*Math.floor(a/n);let s=Hl(o,i,a,r);return s.x-=s.dz*e.side,s.z+=s.dx*e.side,s}function Yl(e){if(!e.mesh||!e.stale)return;e.stale=!1;let{position:t,normal:r}=e.mesh.geometry.attributes,o=e.position||={},i,n,a,s,m,f,p,c,l,u,h,x,g;for(i=0;i<e.trips.length;i++)for(n=e.trips[i],{x:a,y:s,z:m,dx:f,dz:p}=Go(e,n,o),c=0,l=i*e.stride;c<e.stride;c+=3,l+=3)u=e.template.position[c],h=e.template.position[c+2],x=e.template.normal[c],g=e.template.normal[c+2],t.data[l]=a-u*p-h*f,t.data[l+1]=s+e.template.position[c+1],t.data[l+2]=m+u*f-h*p,r.data[l]=-x*p-g*f,r.data[l+1]=e.template.normal[c+1],r.data[l+2]=x*f-g*p}function Xl(e){let t,r;for(t=1;t<=4;t++)for(r=1;r<=4;r++)if(!Number.isFinite(e[`m${t}${r}`]))throw new Error("Singular 3D transform")}function ua(e,t,r=M.get(e).children,o=!0){if(!w.get(e))return[];let i=Tt.get(e);i&&Yl(i);let n=e._map.getContainer().getBoundingClientRect();Pe(oe.get(e)),xo(ee.get(e));let a=ne.get(e).inverse,s=ee.get(e).projectionViewMatrix;a.m11=s[0],a.m12=s[1],a.m13=s[2],a.m14=s[3],a.m21=s[4],a.m22=s[5],a.m23=s[6],a.m24=s[7],a.m31=s[8],a.m32=s[9],a.m33=s[10],a.m34=s[11],a.m41=s[12],a.m42=s[13],a.m43=s[14],a.m44=s[15],a.invertSelf();let m=(t.clientX-n.left)/n.width*2-1,f=-((t.clientY-n.top)/n.height)*2+1,p=a.m11*m+a.m21*f+a.m41,c=a.m12*m+a.m22*f+a.m42,l=a.m13*m+a.m23*f+a.m43,u=a.m14*m+a.m24*f+a.m44,h;Xl(a),ne.get(e).origin[0]=ee.get(e).position[0],ne.get(e).origin[1]=ee.get(e).position[1],ne.get(e).origin[2]=ee.get(e).position[2],ne.get(e).direction[0]=p/u-ne.get(e).origin[0],ne.get(e).direction[1]=c/u-ne.get(e).origin[1],ne.get(e).direction[2]=l/u-ne.get(e).origin[2];let x=ne.get(e).direction,g=Math.hypot(x[0],x[1],x[2])||1;ne.get(e).direction[0]/=g,ne.get(e).direction[1]/=g,ne.get(e).direction[2]/=g;let y=ne.get(e).meshes;y.length=0;for(h of r)o?Zt(h,la,y):h.geometry&&h.visible&&h._appearance!==0&&y.push(h);return ca(ne.get(e),y,w.get(e).uniformData?.[55])}function Jl(){let{map:e,descriptor:t,handle:r}=this;e._fireDOMEvent===r&&(t?Object.defineProperty(e,"_fireDOMEvent",t):delete e._fireDOMEvent)}var te=new WeakMap;var Kl=new Set(["click","preclick","dblclick","contextmenu","mousedown","mouseup","mousemove","mouseover","mouseout","pointerdown","pointerup","pointermove","pointerover","pointerout"]);L();function Ql(e,t){return t.object.renderOrder-e.object.renderOrder||e.distance-t.distance}function eu(e,t,r){let o=[],i,n,a;if(r!==e.out)for(i of e.states)({source:n,backend:a}=i),!(n instanceof d.Marker||n.options.interactive===!1||!(n instanceof d.Path)&&!n.options.interactive)&&o.push(...ua(a,t,i.meshes.values(),!1));return o.sort(Ql),o[0]?.object._nativeSource||null}function da(e,t,r,o){t.hovered!==o&&(t.hovered&&t.fireDOMEvent.call(e,r,t.out,[t.hovered]),t.hovered=o,o&&t.fireDOMEvent.call(e,r,t.over,[o]),e.getContainer().style.cursor=o?"pointer":"")}function tu(e,t,r,o){let i=r.target,n=i instanceof Element&&i.closest(".leaflet-marker-icon,.leaflet-popup,.leaflet-tooltip,.leaflet-control");return n&&t.hovered&&(o===t.move||o===t.out)&&da(e,t,r,null),n||o===t.move&&(e.dragging?.moving()||e._animatingZoom)}function Fm(e,t=e.type,r){let o=this,i=Zr.get(o),n=i.fireDOMEvent,a=te.get(o);if(!w.get(a)||r||!Kl.has(t))return n.call(this,e,t,r);if(tu(o,i,e,t))return n.call(this,e,t,r);let s=eu(i,e,t);return(t==="click"||t==="preclick")&&s&&o._draggableMoved(s)&&(s=null),(t===i.move||t===i.out)&&da(o,i,e,s),n.call(this,e,t,s?[s]:void 0)}function ru(e){let{map:t}=e,r=Zr.get(t);if(!r){r={map:t,states:new Set,hovered:null};let o=d.version.startsWith("2");r.move=o?"pointermove":"mousemove",r.out=o?"pointerout":"mouseout",r.over=o?"pointerover":"mouseover",r.descriptor=Object.getOwnPropertyDescriptor(t,"_fireDOMEvent"),r.fireDOMEvent=t._fireDOMEvent,r.handle=Fm,r.restore=Jl,Zr.set(t,r),t._fireDOMEvent=Fm}r.states.add(e),e._nativeEventContext=r}L();function Uo(e){if(!(e?.type==="zoomend"&&this.source instanceof d.Polyline&&(!this.source.options.stroke||!(Number(this.source.options.weight)>0)))){if(e?.type==="zoomend"&&this.strokeCoordinates&&(!this.dirty||this.zoomOnly)){this.zoomOnly=!0,this.dirty=!0,E(this.backend);return}e?.type==="terrainchange"&&this.marker&&this.source.update(),De(this)}}function ha(){this.viewDirty=!0,R.get(this.backend)&&E(this.backend)}function ou(e){let t=e._nativeEventContext;if(!t)return;let{map:r}=t;t.states.delete(e),t.hovered===e.source&&(t.hovered=null,r.getContainer().style.cursor=""),e._nativeEventContext=null,!t.states.size&&(t.restore(),Zr.delete(r))}function Di(){let e=this;if(e.disposed)return;e.disposed=!0;let{source:t,map:r,backend:o,meshes:i,textures:n,images:a}=e;t.off("load tileload tileunload move drag",Uo,e),r.off("zoomend terrainchange",Uo,e),e.marker&&r.off("move zoom rotate pitch resize viewreset",ha,e),ou(e);let m,f,p,c,l;for([m,f]of e.methods)f.own?Object.defineProperty(t,m,f.own):delete t[m];for(p of i.values())Ge(o,p);i.clear();for(c of n.values())W(o,c.texture);n.clear();for(l of a)l.removeEventListener("load",Bi),l.removeEventListener("error",Ti),bn(l,e);ho.delete(o),o.remove()}function iu(){this.ready.resolve()}function nu({error:e}){this.ready.reject(e)}function au({error:e}){this.source.fire("error",{error:e})}async function su(e){let{source:t,map:r}=e,o=e.backend=ma({source:{type:"vector"}});e.meshes=new Map,e.textures=new Map,e.methods=new Map,e.images=new Set,ar.get(r)||ar.set(r,0),uo.get(r)||uo.set(r,0),e.dirty=!0,e.viewDirty=!0,e.failed=!1,e.order=ar.get(r)+1,ar.set(r,e.order),e.marker=t instanceof d.Marker,e.paneOrder=Number(getComputedStyle(t.getPane()).zIndex)||0,e.disposed=!1,t.on("load tileload tileunload move drag",Uo,e),r.on("zoomend terrainchange",Uo,e),e.marker&&r.on("move zoom rotate pitch resize viewreset",ha,e),ru(e);let n,a,s;for(n in Nm)typeof t[n]=="function"&&(a=Object.getOwnPropertyDescriptor(t,n),s=t[n],e.methods.set(n,{own:a,original:s}),t[n]=Nm[n]);let m=e.ready=Promise.withResolvers();o.once("ready",iu,e),o.once("error",nu,e),o.on("error",au,e),De(e),o.addTo(r);try{await m.promise}catch(f){throw Di.call(e),f}if(!_o(e))return t;ho.set(o,e);try{aa(e)}catch(f){throw Di.call(e),f}return E(e.backend),t}function mu(e){de.get(e.source)===e&&de.set(e.source,null),e.backend&&Di.call(e);let t;for(t of e.hidden)t.classList.remove("leaflet-webgpu-target")}function fu(e){return de.get(e.source)!==e?e.source:su(e)}function He(e,t){e.fire("error",{error:t})}function ga(e,t){if(de.get(e))return;if(!document.getElementById("leaflet-webgpu-targets")){let o=document.createElement("style");o.id="leaflet-webgpu-targets",o.textContent=".leaflet-webgpu-target{opacity:0!important}",document.head.append(o)}let r={source:e,map:t,hidden:new Set};de.set(e,r),sa(r),e.once("remove",mu.bind(null,r)),re.set(e,Promise.resolve().then(fu.bind(null,r))),re.get(e).catch(He.bind(null,e))}var ya=[1,0,1,0];L();function ce(e){return new d.Point(Array.isArray(e)?e[0]:e.x,Array.isArray(e)?e[1]:e.y)}$();Z();J();function xa(e,t){let r=k(e)*B,o=_(e)*B;return t||=[],t[0]=Math.cos(r),t[1]=Math.sin(r),t[2]=Math.cos(o),t[3]=Math.sin(o),t}function ze(e,t,r=!1,o=!1,i=0){let n=e.getSize(),a=n.x/2,s=n.y/2,m=n.y*1.5,f=ce(t);if(!m)return f;let[p,c,l,u]=xa(e,ya),h=f.x-a,x=f.y-s;if(r){let S=n.y*e.options.pitchMaxDistance,T=l*m+u*x,P=T*l>0?(x*(m-l*i)+m*u*i)/T:-S;o&&(P=Math.max(-S,Math.min(S,P)));let A=h*(m-u*P-l*i)/m;return f.x=p*A+c*P+a,f.y=-c*A+p*P+s,f}let g=p*h-c*x,y=c*h+p*x,v=m/(m-u*y-l*i);return f.x=g*v+a,f.y=(l*y-u*i)*v+s,f}function pu(e){return ze(this,it(this,j.value.layerPointToContainerPoint.call(this,e)))}function cu(e){return j.value.containerPointToLayerPoint.call(this,it(this,ze(this,e,!0),!0))}function lu(){return j.value.containerPointToLayerPoint.call(this,this.getSize().divideBy(2))}function uu(e,t){let r=this.getSize().divideBy(2),o=r.subtract(ze(this,r.subtract(ce(e)),!0));return j.value.panBy.call(this,o,t)}L();J();Z();function du(e,t,r){if(!_(this)&&!k(this))return j.value.setZoomAround.call(this,e,t,r);t=this._limitZoom(t);let o=this.getZoomScale(t),i=this.getSize().divideBy(2),n=e instanceof d.Point?e:this.latLngToContainerPoint(e),a=this.containerPointToLayerPoint(i),s=this.containerPointToLayerPoint(n),m=a.add(s.subtract(a).multiplyBy(1-1/o));return this.setView(this.layerPointToLatLng(m),t,{zoom:r})}var Pt=Object.freeze([0,0]);J();Z();function hu(e,t={}){if(!_(this)&&!k(this))return j.value.panInside.call(this,e,t);let r=ce(t.paddingTopLeft||t.padding||Pt),o=this.getSize().subtract(ce(t.paddingBottomRight||t.padding||Pt)),i=this.latLngToContainerPoint(e),n=r;if(n.x=Math.max(r.x,Math.min(o.x,i.x)),n.y=Math.max(r.y,Math.min(o.y,i.y)),n.equals(i))return this;let a=this.latLngToLayerPoint(e).subtract(this.containerPointToLayerPoint(n));return this.panTo(this.unproject(this.project(this.getCenter()).add(a)),t)}L();J();Z();L();function xr(e,t=Pt,r=0){let o=ce(t).divideBy(2),i=e.getSize().subtract(o),n=new d.Bounds,a=o.x,s=o.y,m;for(m=0;m<4;m++)o.x=m%2?i.x:a,o.y=m<2?s:i.y,n.extend(ze(e,o,!0,!0,r));return n}function gu(e,t,r){if(!r||!this._loaded||!_(this)&&!k(this))return j.value._limitCenter.call(this,e,t,r);let o=this.getSize().divideBy(2),i=xr(this),n=this.project(e,t),a=new d.Bounds(n.add(i.min.subtract(o)),n.add(i.max.subtract(o))),s=this._getBoundsOffset(a,r,t);return Math.abs(s.x)<=1&&Math.abs(s.y)<=1?e:this.unproject(n.add(s),t)}J();Z();function yu(e,t){if(!t||!_(this)&&!k(this))return j.value._limitOffset.call(this,e,t);let r=this.getSize().divideBy(2),o=r.subtract(ze(this,r.subtract(e),!0)),i=this.project(this.getCenter()),n=this.project(this._limitCenter(this.unproject(i.add(o)),this.getZoom(),t));return r.subtract(ze(this,r.subtract(n.subtract(i))))}J();Z();L();va();function jm(e,t,r,o,i){return t*r+o*e>0?Math.max(-i,Math.min(i,e*r/(t*r+o*e))):-i}function wa(e,t,r=No){t=t.getBounds?t.getBounds():t instanceof d.LatLngBounds?t:new d.LatLngBounds(t);let o=e.getZoom()??0,i=e.getSize().divideBy(2),n=e.getSize().y*1.5,a=ce(r.paddingTopLeft||r.padding||Pt).subtract(i),s=i.subtract(ce(r.paddingBottomRight||r.padding||Pt)),[m,f,p,c]=xa(e,ya);if(p<0){let Tv=a.y;a.y=-s.y,s.y=-Tv}let l=e.getSize().y*e.options.pitchMaxDistance,u=jm(a.y,Math.abs(p),n,c,l),h=jm(s.y,Math.abs(p),n,c,l),x=e.project(t.getNorthWest(),o).add(e.project(t.getSouthEast(),o)).divideBy(2),g=1/0,y=-1/0,v=a.x*c/n,S=s.x*c/n,T=S-v,P=1/0,A=-1/0,Q=[t.getNorthWest(),t.getNorthEast(),t.getSouthWest(),t.getSouthEast()],N,G,V,ue,Me;for(N=0;N<4;N++)G=Q[N],V=e.project(G,o).subtract(x),ue=m*V.x-f*V.y,Me=f*V.x+m*V.y,g=Math.min(g,Me),y=Math.max(y,Me),P=Math.min(P,ue+v*Me),A=Math.max(A,ue+S*Me);let st=Math.min((h-u)/(y-g),(s.x-a.x-T*u)/(A-P-T*g)),Ce=e.getScaleZoom(st,o),vt=e.options.zoomSnap;if(vt&&(Ce=Math.floor(Math.round(Ce/(vt/100))/100)*vt),Ce=Math.max(e.getMinZoom(),Math.min(e.getMaxZoom(),r.maxZoom??1/0,Ce)),!Number.isFinite(Ce))return{center:t.getCenter(),zoom:Ce};let Ze=e.getZoomScale(Ce,o),bi=y*Ze-h,Mi=g*Ze-u,un=Math.max(bi,T?(Ze*(A-P)-s.x+a.x)/T:bi),hm=(Math.min(Mi,un)+Mi)/2,Hf=(Ze*(P+A)-a.x-s.x-(v+S)*hm)/2;return x.x+=(m*Hf+f*hm)/Ze,x.y+=(-f*Hf+m*hm)/Ze,{center:e.unproject(x,o),zoom:Ce}}function xu(e,t){return _(this)||k(this)?wa(this,e,t):j.value._getBoundsCenterZoom.call(this,e,t)}L();J();Z();function vu(e,t,r){if(!_(this)&&!k(this))return j.value.getBoundsZoom.call(this,e,t,r);if(!t)return wa(this,e,{padding:ce(r||Pt).divideBy(2)}).zoom;e=e instanceof d.LatLngBounds?e:new d.LatLngBounds(e);let o=xr(this,r).getSize(),i=this.project(e.getSouthEast()).subtract(this.project(e.getNorthWest())),n=this.getScaleZoom(Math.max(o.x/i.x,o.y/i.y)),a=this.options.zoomSnap;return Math.max(this.getMinZoom(),Math.min(this.getMaxZoom(),a?Math.ceil(n/a)*a:n))}function wu(e,t){let r=this._getCenterOffset(e)._trunc();return t?.animate!==!0&&!this.getSize().contains(r)?!1:((j.value._panBy||j.value.panBy).call(this,r,t),!0)}L();J();Z();function Lu(){if(!_(this)&&!k(this))return j.value.getBounds.call(this);let e=xr(this),t=new d.LatLngBounds,r,o,i;for(r=0;r<2;r++)o=r?e.max:e.min,i=j.value.containerPointToLayerPoint.call(this,it(this,o,!0)),t.extend(this.layerPointToLatLng(i));return t}var bu=new WeakSet;var Wm=new WeakMap;vr();$m();function Mu(){this.options.maxBounds&&this._panInsideMaxBounds()}var wr=new WeakMap;La();Sa();J();Z();function ka(){let e=this,t=wr.get(e);if(!_(e)&&!k(e))return;let r=e.getSize().divideBy(2),o=t._newPos.subtract(t._startPos),i=r.subtract(ze(e,r.subtract(o),!0));t._newPos=t._startPos.add(i)}function Bu(){jo(this),Ye.get(this)?.remove(),wr.get(this)&&(wr.get(this).off("predrag",ka,this),wr.delete(this))}function Tu(){let e=this.dragging?._draggable;e&&(wr.set(this,e),e.on("predrag",ka,this))}async function Od(e){try{let{cameraControls:t}=await Promise.resolve().then(()=>(Ed(),_d));e._container?._leaflet_id&&t(e)}catch(t){throw e.fire("error",{error:t}),t}}function Xe(){}function zd(){if(bu.add(this),!document.getElementById("leaflet-camera-zoom-style")){let e=document.createElement("style");e.id="leaflet-camera-zoom-style",e.textContent=".leaflet-camera-zoom .leaflet-marker-icon,.leaflet-camera-zoom .leaflet-marker-shadow,.leaflet-camera-zoom .leaflet-popup,.leaflet-camera-zoom .leaflet-tooltip{transition:none!important}",document.head.append(e)}Fe(this,this.options.pitch,this.options.bearing),this.on("load resize pitch",ba),this.on("rotate pitch",Mu,this),this.once("unload",Bu,this),this.whenReady(Tu,this),(this.options.rotate||this.options.trackContainerMutation)&&(Wm.set(this,Od(this)),Wm.get(this).catch(Xe))}L();function Ad(e){e instanceof d.DivIcon||(e.options.crossOrigin||=!0);let t=et.value.setIcon.call(this,e);return this._map&&!(e instanceof d.DivIcon)&&ga(this,this._map),t}function Rd(){let e=et.value.getEvents.call(this);return e.rotate=e.pitch=e.move=this.update,e}$();function Jo(e,t,r){let o=te.get(e),i=o&&ie.get(o);if(!Be.get(e)||!i)return e.layerPointToContainerPoint(t).subtract(e._getMapPanePos());let n=xe(e,r||e.layerPointToLatLng(t))??0,a=xe(e,e.getCenter())??0,s=se.get(e)?.zoom??e.getZoom(),m=(n-a)*e.options.crs.scale(s)/(rt*Math.cos(i.lat*B)),f=it(e,j.value.layerPointToContainerPoint.call(e,t));return ze(e,f,!1,!1,m).subtract(e._getMapPanePos())}function Id(e){et.value._setPos.call(this,Jo(this._map,e,this.getLatLng()));let t,r,o,i,n,a;for(t=0;t<2;t++)r=t?this._shadow:this._icon,o=t?"shadowAnchor":"iconAnchor",r&&(i=Qn(this,1,0),n=this.options.icon.options,a=n[o]||n.iconAnchor,r.style.transformOrigin=a?`${a.x??a[0]}px ${a.y??a[1]}px`:"center",r.style.transform+=` rotate(${Math.atan2(i.y,i.x)}rad) scale(${this.options.scale})`)}function Ct(e=this){let t=de.get(e);t?.backend&&!t.disposed&&De(t)}function Dd(e){et.value._updateZIndex.call(this,e);let t=$r.get(this)!==e;$r.set(this,e),t&&Ct(this)}var Jr=new WeakMap;L();function Gd(e){let t=this._marker._map,r=d.DomUtil.getPosition(this._marker._icon).add(t._getMapPanePos()),o=t.containerPointToLayerPoint(r);d.DomUtil.setPosition(this._marker._icon,o),Jr.get(this)._cameraOriginalOnDrag.call(this,e),this._marker._setPos(o)}L();J();Z();var Vi=new Map;var Ko={value:null};function Ud(){Ko.value=null;let e=[...Vi];Vi.clear();let t,r;for([t,r]of e)t._panRequest=null,t._adjustPan(r)}function Nd(e,t){Vi.set(e,t),Ko.value===null&&(Ko.value=requestAnimationFrame(Ud)),e._panRequest=Ko.value}function Fd(e){let t=this._marker,r=t._map;if(!_(r)&&!k(r))return Jr.get(this)._cameraOriginalAdjustPan.call(this,e);let o=d.DomUtil.getPosition(t._icon).add(r._getMapPanePos()),i=r.getSize(),n=ce(t.options.autoPanPadding),a=t.options.autoPanSpeed,s=o;if(s.x=(Math.max(0,o.x-i.x+n.x)-Math.max(0,n.x-o.x))/Math.max(1,n.x)*a,s.y=(Math.max(0,o.y-i.y+n.y)-Math.max(0,n.y-o.y))/Math.max(1,n.y)*a,!s.x&&!s.y)return;let m=r._getMapPanePos();r.panBy(s,{animate:!1});let f=m.subtract(r._getMapPanePos());this._draggable._newPos._add(f),this._draggable._startPos._add(f),d.DomUtil.setPosition(t._icon,this._draggable._newPos),this._onDrag(e),Nd(this,e)}function jd(){if(!this.dragging||Jr.has(this.dragging))return;let e=this.dragging,t=e._onDrag,r=e._adjustPan;Jr.set(e,{_cameraOriginalOnDrag:t,_cameraOriginalAdjustPan:r}),e._onDrag=Gd,e._adjustPan=Fd,e.enabled()&&(e._draggable.off("drag",t,e),e._draggable.on("drag",e._onDrag,e))}function Wd(){let e=et.value._initInteraction.call(this);return jd.call(this),e}function $d(){let e=hn.value.call(this);return e.rotate=e.pitch=e.move=e.terrainchange=this._updatePosition,e}function Vd(){let e=gn.value.call(this);return e.rotate=e.pitch=e.move=e.terrainchange=this._updatePosition,e}J();Z();function Zd(){let e=this._map;if(!_(e)&&!k(e))return xn.value.call(this);if(!this.options.autoPan)return;if(e._panAnim&&e._panAnim.stop(),this._autopanning){this._autopanning=!1;return}let t=this._container.getBoundingClientRect(),r=e.getContainer().getBoundingClientRect(),o=ce(this.options.autoPanPaddingTopLeft||this.options.autoPanPadding),i=e.getSize().subtract(ce(this.options.autoPanPaddingBottomRight||this.options.autoPanPadding)),n=t.left-r.left,a=t.top-r.top,s=t.right-r.left,m=t.bottom-r.top,f=Math.min(0,n-o.x)||Math.max(0,s-i.x),p=Math.min(0,a-o.y)||Math.max(0,m-i.y);if(!f&&!p)return;this.options.keepInView&&(this._autopanning=!0);let c=e.latLngToContainerPoint(this._latlng);c.x-=f,c.y-=p;let l=e.latLngToLayerPoint(this._latlng).subtract(e.containerPointToLayerPoint(c));e.fire("autopanstart"),e.panTo(e.unproject(e.project(e.getCenter()).add(l)))}L();function qd(){if(yn.value.call(this),!this._map)return;let e=this._map.latLngToLayerPoint(this._latlng),t=Jo(this._map,e,this._latlng).subtract(e);this._zoomAnimated?d.DomUtil.setPosition(this._container,d.DomUtil.getPosition(this._container).add(t)):(this._container.style.left=`${this._containerLeft+t.x}px`,this._container.style.bottom=`${this._containerBottom-t.y}px`)}L();function Hd(e){vn.value.call(this,e);let t=Jo(this._map,e,this._latlng).subtract(e);d.DomUtil.setPosition(this._container,d.DomUtil.getPosition(this._container).add(t))}L();function Yd(){let e=Ln.value.call(this);return e.rotate=e.pitch=d.Util.throttle(this._onMoveEnd,this.options.updateInterval,this),e}L();Z();J();$();function Xd(e,t,r,o){let i=e._map,n=1/0,a=-1/0,s,m;for([s,m]of r.terrainCache)!s.startsWith(`${e._tileZoom}/`)||!m.range||(n=Math.min(n,m.range[0]),a=Math.max(a,m.range[1]));if(!Number.isFinite(n)||!Number.isFinite(a))return t;let f=se.get(i)?.zoom??i.getZoom(),p=i.options.crs.scale(f)/(rt*Math.cos(o.lat*B)),c=xe(i,i.getCenter())??0,l,u,h,x,g;for(l=0;l<2;l++)for(h=xr(i,void 0,((l?a:n)-c)*p),u=0;u<2;u++)x=u?h.max:h.min,g=j.value.containerPointToLayerPoint.call(i,it(i,x,!0)),t.extend(i.project(i.layerPointToLatLng(g),e._tileZoom));return t}function Jd(e){let t=this._map,r=Be.get(t);if(!r&&!k(t)&&!_(t))return wn.value.call(this,e);let o=t.getBounds(),i=new d.Bounds(t.project(o.getNorthWest(),this._tileZoom),t.project(o.getSouthEast(),this._tileZoom)),n=te.get(t),a=n&&ie.get(n);return!r||!a?i:Xd(this,i,r,a)}j.value=Object.defineProperties({},Object.getOwnPropertyDescriptors(d.Map.prototype));d.Map.mergeOptions({rotate:!0,bearing:0,pitch:0,maxPitch:85,pitchMaxDistance:3,rotateControl:!0,shiftKeyRotate:!0,pitchDrag:!0,touchRotate:!1,touchPitch:!1,compassBearing:!1});Object.assign(d.Map.prototype,{layerPointToContainerPoint:pu,containerPointToLayerPoint:cu,_getCenterLayerPoint:lu,panBy:uu,setZoomAround:du,panInside:hu,_limitCenter:gu,_limitOffset:yu,_getBoundsCenterZoom:xu,getBoundsZoom:vu,_tryAnimatedPan:wu,getBounds:Lu});d.Map.addInitHook(zd);et.value=Object.defineProperties({},Object.getOwnPropertyDescriptors(d.Marker.prototype));d.Marker.mergeOptions({rotation:0,rotateWithView:!1,keepUpright:!1,scale:1});Object.assign(d.Marker.prototype,{setIcon:Ad,getEvents:Rd,_setPos:Id,_updateZIndex:Dd,_initInteraction:Wd});hn.value=d.Popup.prototype.getEvents;Object.assign(d.Popup.prototype,{getEvents:$d});gn.value=d.Tooltip.prototype.getEvents;Object.assign(d.Tooltip.prototype,{getEvents:Vd});yn.value=d.Popup.prototype._updatePosition;xn.value=d.Popup.prototype._adjustPan;Object.assign(d.Popup.prototype,{_adjustPan:Zd,_updatePosition:qd});vn.value=d.Tooltip.prototype._setPosition;Object.assign(d.Tooltip.prototype,{_setPosition:Hd});wn.value=d.GridLayer.prototype._getTiledPixelBounds;Ln.value=d.GridLayer.prototype.getEvents;Object.assign(d.GridLayer.prototype,{getEvents:Yd,_getTiledPixelBounds:Jd});L();var Qo=new WeakMap;var Zi=new WeakMap;var qi=new WeakMap;L();La();$();J();Z();function Kd(e,t,r,o,i){let[n,a,s]=e,m=-n*Math.sin(o)*Math.sin(r)-a*Math.cos(r)-s*Math.cos(o)*Math.sin(r);return m>0?(i||={},i.left=t.x/2+t.y*1.5*(n*Math.cos(o)-s*Math.sin(o))/m,i.top=t.y/2-t.y*1.5*(-n*Math.sin(o)*Math.cos(r)+a*Math.sin(r)-s*Math.cos(o)*Math.cos(r))/m,i):null}function wf(e,t,r,o,i,n,a){if(e.hidden=!0,!r||!t||t.altitude<=0)return;e.parentNode!==r&&r.append(e);let s=Kd(t.direction,o,i,n,a);if(!s)return;let{left:m,top:f}=s;e.hidden=m<0||m>o.x||f<0||f>r.clientHeight||r.style.display==="none",e.style.left=`${m}px`,e.style.top=`${f}px`}function Yt({map:e,originalSky:t,sunDisc:r,moonDisc:o,projection:i}){let n=pt.get(e),a=Ye.get(e);n?e.getContainer().style.setProperty("--leaflet-sky-background",n.background):t?e.getContainer().style.setProperty("--leaflet-sky-background",t):e.getContainer().style.removeProperty("--leaflet-sky-background");let s=e.getSize(),m=_(e)*B,f=k(e)*B;wf(r,n,a,s,m,f,i),wf(o,n?.moon,a,s,m,f,i)}var Qd=[[-18,[3,7,20],[17,28,54],[.025,.04,.09]],[-6,[37,53,84],[182,106,86],[.12,.1,.14]],[0,[101,131,171],[246,170,115],[.38,.24,.18]],[10,[74,147,208],[197,221,237],[.8,.75,.68]],[25,[53,144,213],[223,238,250],[1,1,1]]];var Lf=[0,0,0];function is(e,t,r,o){o||=[],o.length=e.length;let i;for(i=0;i<e.length;i++)o[i]=e[i]+(t[i]-e[i])*r;return o}function bf(e){let t="",r;for(r=0;r<e.length;r++)r&&(t+=", "),t+=Math.round(e[r]);return`rgb(${t})`}function eh(e){if(!Number.isFinite(e))throw new Error("Invalid solar altitude");let t=Qd,r=-1,o;for(o=0;o<t.length;o++)if(t[o][0]>=e){r=o;break}let i=t[r<0?t.length-1:r],n=t[Math.max(0,r-1)],a=n===i||r<0?1:(e-n[0])/(i[0]-n[0]);return{background:`linear-gradient(${bf(is(n[1],i[1],a,Lf))}, ${bf(is(n[2],i[2],a,Lf))})`,tint:is(n[3],i[3],a)}}function ns(e,t,r){let o=e instanceof Date?Date.prototype.getTime.call(e):typeof e=="string"?Date.parse(e):new Date(e).getTime();if(!Number.isFinite(o)||!Number.isFinite(t)||Math.abs(t)>90||!Number.isFinite(r)||Math.abs(r)>180)throw new Error("Invalid solar date or location");return o}$();function as(e,t,r,o,i){let n=(280.16+360.9856235*e+r)*B-o,a=t*B,s=Math.asin(Math.sin(a)*Math.sin(i)+Math.cos(a)*Math.cos(i)*Math.cos(n)),f=(Math.atan2(Math.sin(n),Math.cos(n)*Math.sin(a)-Math.tan(i)*Math.cos(a))/B+180+360)%360;return{altitude:s/B,azimuth:f,direction:[Math.sin(f*B)*Math.cos(s),Math.sin(s),-Math.cos(f*B)*Math.cos(s)]}}$();$();var Hi=Math.sin(23.4397*B);$();var Yi=Math.cos(23.4397*B);function th(e,t,r){let o=ns(e,t,r)/864e5-10957.5,i=(134.963+13.064993*o)*B,n=(218.316+13.176396*o+6.289*Math.sin(i))*B,a=5.128*Math.sin((93.272+13.22935*o)*B)*B,s=Math.cos(a)*Math.cos(n),m=Math.cos(a)*Math.sin(n)*Yi-Math.sin(a)*Hi,f=Math.cos(a)*Math.sin(n)*Hi+Math.sin(a)*Yi;return as(o,t,r,Math.atan2(m,s),Math.asin(f))}$();function rh(e,t,r){let i=ns(e,t,r)/864e5-10957.5,n=(357.5291+.98560028*i)*B,a=n+(1.9148*Math.sin(n)+.02*Math.sin(2*n)+3e-4*Math.sin(3*n)+102.9372+180)*B,s=Math.asin(Math.sin(a)*Hi),m=Math.atan2(Math.sin(a)*Yi,Math.cos(a));return as(i,t,r,m,s)}function Kr(e){let t=te.get(e);t&&E(t)}function Sr(e){let{control:t,map:r,date:o,slider:i,output:n,status:a}=e;try{t.live&&(t.time=new Date);let s=t.time.toISOString();o.value=s.slice(0,10),i.value=String(t.time.getUTCHours()*60+t.time.getUTCMinutes()),n.textContent=`${s.slice(11,16)} UTC${t.live?" \xB7 now":""}`;let m=r.getCenter(),f=rh(t.time,m.lat,m.lng);pt.set(r,f),Object.assign(f,eh(f.altitude)),f.moon=th(t.time,m.lat,m.lng),a.textContent=f.altitude<=0?"Night \xB7 no direct sunlight":f.altitude<3?"Low sun \xB7 shadows paused":`Sun altitude ${f.altitude.toFixed(1)}\xB0`,r.fire("simulationtimechange",{time:new Date(t.time),live:t.live}),Yt(e),Kr(r)}catch(s){pt.delete(r),Yt(e),Kr(r),a.textContent=`Error: ${s.message}`,console.error("Solar simulation",s)}}function oh(e){e.control.live=!0,Sr(e)}function ih(e){let{control:t,map:r,date:o,slider:i,status:n}=e;if(t.live=!1,!o.value||!o.validity.valid){t.time=new Date(NaN),r.fire("simulationtimechange",{time:null,live:!1}),pt.delete(r),Yt(e),Kr(r),n.textContent="Error: choose a valid solar date";return}t.time=new Date(`${o.value}T00:00:00Z`),t.time.setUTCMinutes(Number(i.value)),Sr(e)}function nh(e){let t="position:absolute;width:18px;height:18px;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;",r=d.DomUtil.create("div","sunlight-sun"),o=d.DomUtil.create("div","sunlight-moon");r.style.cssText=t+"background:#fff3bd;box-shadow:0 0 18px 7px #ffd27699;",o.style.cssText=t+"background:#dce5f2;box-shadow:0 0 10px 2px #cbdcff55;",r.setAttribute("role","img"),r.setAttribute("aria-label","Sun"),o.setAttribute("role","img"),o.setAttribute("aria-label","Moon");let i=d.DomUtil.create("div","sunlight-control");i.style.cssText="color:#222;width:min(200px,calc(100vw - 60px));font:12px/1.4 sans-serif;";let n=document.createElement("input");n.type="date",n.style.cssText="width:100%;box-sizing:border-box;",n.setAttribute("aria-label","Solar date (UTC)");let a=document.createElement("input");a.type="range",a.style.cssText="width:100%;box-sizing:border-box;margin:10px 0 4px;cursor:pointer;",a.min="0",a.max="1439",a.step="1",a.setAttribute("aria-label","Time of day (UTC)");let s=document.createElement("output");s.style.cssText="font-weight:bold;font-variant-numeric:tabular-nums;",s.setAttribute("aria-live","off");let m=document.createElement("button");m.type="button",m.textContent="Now";let f=document.createElement("div");f.className="sunlight-time",f.style.cssText="display:flex;justify-content:space-between;align-items:center;",f.append(s,m);let p=document.createElement("div");p.className="sunlight-status",p.style.marginTop="5px",p.setAttribute("role","status");let c=document.createElement("small");c.style.color="#555",i.append(n,a,f,p,c);let l={control:null,map:e,originalSky:"",container:i,sunDisc:r,moonDisc:o,date:n,slider:a,output:s,status:p,projection:{left:0,top:0}};return l.update=Sr.bind(null,l),l.updateSky=Yt.bind(null,l),m.onclick=oh.bind(null,l),n.onchange=a.oninput=ih.bind(null,l),d.DomEvent.disableClickPropagation(i),d.DomEvent.disableScrollPropagation(i),l}function ah(e){e.control.live&&Sr(e)}function sh(e,t){let r=qi.get(t);if(r?.control&&r.control!==e)throw e._map=null,e.layer._map===t&&t.removeLayer(e.layer),new Error("Only one Time control can be active per map");return r||(r=nh(t),qi.set(t,r)),r.control=e,r.originalSky=t.getContainer().style.getPropertyValue("--leaflet-sky-background"),Qo.set(t,e),Zi.set(e,r),r.update(),r.timer=setInterval(ah,6e4,r),t.on("moveend",r.update),t.on("move rotate pitch resize",r.updateSky),r.container}L();L();function mh(e,t,r){let o=e.closest("label");if(r.classList.contains("layer-count"))e.hasAttribute("aria-label")||e.setAttribute("aria-label",o.textContent.trim()),r.id=`leaflet-layer-count-${d.Util.stamp(t)}`,e.setAttribute("aria-describedby",r.id),o.append(r);else if(r.classList.contains("traffic-status")){let i=o.nextElementSibling;i?.classList.contains("traffic-status-group")||(i=d.DomUtil.create("div","traffic-status-group"),i.style.cssText="display:flex;flex-wrap:wrap;gap:4px 8px;max-width:200px;margin:2px 0 6px 20px;",i.setAttribute("role","group"),i.setAttribute("aria-label","Traffic counts"),o.after(i)),i.append(r)}else o.after(r)}L();L();var Mf=d?.LayersControl?.prototype._addItem;Mf&&!d.Control.Layers&&(d.LayersControl.prototype._addItem=Cv);function Cv(e){let t=Mf.call(this,e);return t.querySelector(".leaflet-control-layers-selector").layerId=d.Util.stamp(e.layer),t}function fh(e,t,r){let o,i;for(o of e.getContainer().querySelectorAll(".leaflet-control-layers-selector"))if(i=e._layers[o.layerId],o.layerId===d.Util.stamp(t)||i instanceof d.LayerGroup&&i.hasLayer(t))return mh(o,t,r),!0;return!1}function ss(e){let t=fh(e.map,e.layer,e.element),r=e.onPlace;return r?.(t),t}var ms=[];function ph(){let e=ms.shift();e?.map.hasLayer(e.layer)&&ss(e)}function fs(){ms.push(this),queueMicrotask(ph)}function ch(){this.map.off("layeradd layerremove",fs,this);let e=this.element.parentElement;this.element.remove(),e?.classList.contains("traffic-status-group")&&!e.childElementCount&&e.remove()}function ei(e,t,r){let o={map:e._map,layer:e,element:t,onPlace:r};return o.map.on("layeradd layerremove",fs,o),e.once("remove",ch,o),ss(o)}var _t=new WeakMap;L();function lh(e){return _t.get(this).addTo(e)}L();function uh(){return d.Control.prototype.remove.call(_t.get(this))}function Bf(e){d.Util.setOptions(this,e),this.live=!0,this.layer=new d.Layer,_t.set(this.layer,this),z.set(this.layer,"time")}function dh(e){return sh(this,e)}L();function Tf(e,t){e.classList.toggle("leaflet-control",!t),e.classList.toggle("leaflet-bar",!t),e.style.background=t?"":"#fff",e.style.padding=t?"2px 0 6px 20px":"8px",e.style.margin=t?"0":""}function hh(e){d.Control.prototype.addTo.call(this,e);let t=this.getContainer();return this.layer._map===e?ei(this.layer,t,Tf.bind(null,t)):Tf(t,!1),this}L();function gh(){return this._map?.hasLayer(this.layer)?(this._map.removeLayer(this.layer),this):d.Control.prototype.remove.call(this)}function yh(e){let{map:t,timer:r,sunDisc:o,moonDisc:i}=e,n=qi.get(t);clearInterval(r),Qo.delete(t),t.fire("simulationtimechange",{time:null,live:!1}),t.off("moveend",e.update),t.off("move rotate pitch resize",e.updateSky),pt.delete(t),Yt(e),o.remove(),i.remove(),Kr(t),n===e&&(n.control=null)}function xh(){let e=Zi.get(this);e&&(yh(e),Zi.delete(this))}Ka();var Qr=class extends ht(d.Control){static initHooks=!0;static defaultOptions={position:"bottomright"};constructor(t){super(t),d.version.startsWith("2.")&&(Bf.call(this,t),this.callInitHooks())}};Object.assign(Qr.prototype,{onAdd:dh,onRemove:xh,addTo:hh,remove:gh});d.version.startsWith("1.")&&(Qr.prototype.options=Object.assign(Object.create(d.Control.prototype.options),Qr.defaultOptions),Qr.prototype.initialize=Bf);d.Control.Time=Qr;L();L();var Xt=new WeakMap;var ps=new WeakMap;L();var Le=new WeakMap;var Y=new WeakMap;var kr=new WeakMap;var Cr=new WeakMap;var X=new WeakMap;var Je=new WeakMap;var We=new WeakMap;var _r=new WeakMap;var ae=new WeakMap;L();var cs=new WeakMap;var Xi=new WeakMap;var Jt=new WeakSet;var Pf=["rootDirectoryOffset","rootDirectoryLength","jsonMetadataOffset","jsonMetadataLength","leafDirectoryOffset","leafDirectoryLength","tileDataOffset","tileDataLength","numAddressedTiles","numTileEntries","numTileContents"];var Sf=["clustered","internalCompression","tileCompression","tileType","minZoom","maxZoom"];var kf=["minLon","minLat","maxLon","maxLat"];function vh(e){let t=e.byteLength>=127?new DataView(e):null;if(!t||t.getUint32(0,!0)!==1767132496||t.getUint32(4,!0)!==57894252)throw new Error("Expected a PMTiles v3 archive");let r={},o;for(o=0;o<Pf.length;o++)r[Pf[o]]=Number(t.getBigUint64(8+o*8,!0));for(o=0;o<Sf.length;o++)r[Sf[o]]=t.getUint8(96+o);for(o=0;o<kf.length;o++)r[kf[o]]=t.getInt32(102+o*4,!0)/1e7;return r.centerZoom=t.getUint8(118),r.centerLon=t.getInt32(119,!0)/1e7,r.centerLat=t.getInt32(123,!0)/1e7,r}var ti=new WeakMap;async function ri(e,t,r,o){if(o?.throwIfAborted(),!Number.isSafeInteger(t)||!Number.isSafeInteger(r)||t<0||r<=0||!Number.isSafeInteger(t+r))throw new Error("Invalid PMTiles byte range");let i=await fetch(ae.get(e),{headers:{Range:`bytes=${t}-${t+r-1}`},signal:o});if(!i.ok)throw new Error(`Unable to read PMTiles: HTTP ${i.status}`);let n=i.headers.get("ETag");if(ti.get(e)&&n!==ti.get(e))throw new Error("PMTiles archive changed; recreate the layer");n&&ti.set(e,n);let a=await i.arrayBuffer();if(i.status===200)a=a.slice(t,t+r);else if(i.status!==206||!i.headers.get("Content-Range")?.startsWith(`bytes ${t}-${t+r-1}/`))throw new Error("Invalid PMTiles range response");if(a.byteLength!==r)throw new Error("Truncated PMTiles range");return a}function eo(e){if(!Jt.has(e))return e.getHeader();if(e.options.archive&&e.options.archive!==e)return eo(e.options.archive);let t=Xi.get(e);return t||(t=ri(e,0,127).then(vh),Xi.set(e,t)),t}var gt=new WeakMap;var Et=new WeakMap;$();function ls(e,t=!0){let r={enabled:t,loaded:0,skipped:0,pending:0,errors:[]},o;for(o of Y.get(e).values())o.error?r.errors.push(o.error):o.done||r.pending++,r.loaded+=o.buildings??0,r.skipped+=o.skipped??0;e.fire("progress",r)}function wh(e){let{backend:t,area:r}=e;if(!e.positions.length){r.mesh=null,r.buildings=0,r.skipped=e.skipped,r.done=!0;return}let o=w.get(t).device,i=e.preparedGeometry,n={position:{size:3,data:i.positions},normal:{size:3,data:i.normals},color:{size:3,data:i.colors}};i.instanceOffsets&&(n.instanceOffset={size:4,data:i.instanceOffsets}),t.options.nightLight&&(n.uv={size:2,data:i.uvs});let a,s;for(a in n)s=n[a],s.count=s.data.length/s.size,s.buffer=o.createBuffer({size:Math.max(4,s.data.byteLength),usage:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST}),o.queue.writeBuffer(s.buffer,0,s.data);let m={device:o,bounds:i.bounds,attributes:n,drawRange:{start:0,count:n.position.count}};r.mesh={...Oe(),device:o,geometry:m,program:Ue(t,{instanced:!!i.instanceOffsets,vertexColors:!0,roofTexture:t.options.roofTexture,wallTexture:t.options.wallTexture,nightLight:!!t.options.nightLight,alphaMode:t.options.nightLight?"BLEND":void 0,doubleSided:!!t.options.nightLight}),id:Mt.value++,renderOrder:0,fadeDuration:250,extras:{featureFaces:e.featureFaces,lights:e.lights}},r.buildings=e.featureFaces.length,r.skipped=e.skipped,r.done=!0,q(r.mesh,M.get(t)),E(t)}var Lh=new TextDecoder;function bh(e,t,r){if(!Number.isInteger(e)||!Number.isInteger(t)||!Number.isInteger(r)||e<0||e>26||t<0||r<0||t>=2**e||r>=2**e)throw new Error("Invalid PMTiles tile coordinates");let o=(4**e-1)/3,i=2**e,n,a,s,m;for(n=i/2;n>=1;n/=2)a=t&n?1:0,s=r&n?1:0,o+=n*n*(3*a^s),s||(a&&(t=i-1-t,r=i-1-r),m=t,t=r,r=m);return o}var Mh={bytes:null,cursor:0};function oi(e){let{bytes:t}=e,r=0,o,i;for(o=1;o<=2**49;o*=128){if(e.cursor>=t.length)throw new Error("Truncated PMTiles directory");if(i=t[e.cursor++],r+=(i&127)*o,!Number.isSafeInteger(r))throw new Error("Invalid PMTiles directory integer");if(i<128)return r}throw new Error("Invalid PMTiles directory integer")}function Bh(e){let t=Mh,r=new Uint8Array(e);t.bytes=r,t.cursor=0;try{let o=oi(t);if(o>(r.length-t.cursor)/4)throw new Error("Invalid PMTiles directory count");let i=new Array(o),n=0,a,s,m;for(a=0;a<o;a++){if(n+=oi(t),!Number.isSafeInteger(n)||a&&n<=i[a-1].tileId)throw new Error("Invalid PMTiles directory tile IDs");i[a]={tileId:n,runLength:0,length:0,offset:0}}for(s of i)s.runLength=oi(t);for(s of i)if(s.length=oi(t),!s.length)throw new Error("Invalid PMTiles directory length");for(a=0;a<i.length;a++){if(s=i[a],m=oi(t),!m&&!a)throw new Error("Invalid PMTiles directory offset");s.offset=m?m-1:i[a-1].offset+i[a-1].length}if(t.cursor!==r.length)throw new Error("Trailing PMTiles directory data");return i}finally{t.bytes=null,t.cursor=0}}async function us(e,t){if(t===1)return e;if(t!==2)throw new Error(`Unsupported PMTiles compression: ${t}`);let r=new Blob([e]),o=new DecompressionStream("gzip");return new Response(r.stream().pipeThrough(o)).arrayBuffer()}async function Th(e,t,r,o){return Bh(await us(await ri(e,t,r),o))}async function Ph(e,t,r,o){let i=Cr.get(e),n=`${t}:${r}`;i.has(n)||(i.size>=32&&i.delete(i.keys().next().value),i.set(n,Th(e,t,r,o)));let a=i.get(n);try{return await a}catch(s){throw i.get(n)===a&&i.delete(n),s}}function Sh(e,t){let r=0,o=e.length-1,i;for(;r<=o;)i=r+o>>1,e[i].tileId<=t?r=i+1:o=i-1;return e[o]}async function kh(e,t,r,o,i){if(o-r.tileId>=r.runLength)return;if(r.offset+r.length>t.tileDataLength)throw new Error("PMTiles tile outside data section");let n=await us(await ri(e,t.tileDataOffset+r.offset,r.length,i),t.tileCompression);return i?.throwIfAborted(),{data:n}}async function Ch(e,t,r,o){let i=t.rootDirectoryOffset,n=t.rootDirectoryLength,a=-1,s=-1,m=-1,f,p,c,l;for(f=0;f<4;f++){if(i===a||i===s||i===m)throw new Error("Cyclic PMTiles directory");if(f===0?a=i:f===1?s=i:f===2&&(m=i),p=await Ph(e,i,n,t.internalCompression),o?.throwIfAborted(),c=Sh(p,r),!c)return;if(c.runLength)return l=await kh(e,t,c,r,o),l;if(c.offset+c.length>t.leafDirectoryLength)throw new Error("PMTiles directory outside leaf section");i=t.leafDirectoryOffset+c.offset,n=c.length}throw new Error("PMTiles directory depth exceeds four levels")}async function to(e,t,r,o,i){if(!Jt.has(e))return e.getZxy(t,r,o,i);if(e.options.archive&&e.options.archive!==e)return to(e.options.archive,t,r,o,i);let n=bh(t,r,o);i?.throwIfAborted();let a=await eo(e);if(i?.throwIfAborted(),!(t<a.minZoom||t>a.maxZoom))return Ch(e,a,n,i)}async function _h(e,t){if(X.get(e)){let{data:o,url:i}=e.options;if(o!==void 0&&i)throw new Error("GeoJSON source requires either data or url");if(o!==void 0)return o;if(!i)throw new Error("GeoJSON source requires either data or url");let n=new URL(i,document.baseURI),a=await fetch(n,{signal:t.request.signal});if(!a.ok)throw new Error(`Unable to load GeoJSON: HTTP ${a.status}`);return a.json()}let r=await to(e,t.coords.z,t.coords.x,t.coords.y,t.request.signal);return r?JSON.parse(Lh.decode(r.data)):{type:"FeatureCollection",features:[]}}$();function Eh(e,t,r){let o=r.options.crs,i=o.project(D.get(e));return{backend:e,area:t,map:r,crs:o,origin:i,metres:Math.cos(D.get(e).lat*B),jobs:[],featureFaces:[],skipped:0}}var ds=new URL("leaflet-city-mapper-worker.js",document.currentScript?.src||document.baseURI).href;function Oh(e,t){if(t.type==="abort")e.reject(e.signal.reason);else if(t.type==="error")e.reject(new Error(`Geometry worker failed: ${t.message}`));else if(t.type==="messageerror")e.reject(new Error("Unable to receive geometry worker buffers"));else if(t.data?.error){let r=new Error(t.data.error.message);r.name=t.data.error.name,e.reject(r)}else e.resolve(t.data)}function zh(e,t,r){if(e.resolve=t,e.reject=r,e.onEvent=Oh.bind(null,e),e.worker.addEventListener("message",e.onEvent),e.worker.addEventListener("error",e.onEvent),e.worker.addEventListener("messageerror",e.onEvent),e.signal.addEventListener("abort",e.onEvent,{once:!0}),e.signal.aborted){r(e.signal.reason);return}e.worker.postMessage(e.input)}var Cf=new WeakMap;function Ah(e){e.closed=!0;let t;for(t of e.entries)t.closed=!0,t.worker.terminate(),t.task&&t.task.reject(new DOMException("Map removed","AbortError"));e.entries.clear(),e.idle.length=0}function hs(e,t){if(typeof Worker>"u")throw new Error("Web Workers are required to prepare source geometry");let r=e,o,i;if(globalThis.location){let a=new URL(e,location.href);(a.protocol==="https:"||a.protocol==="http:")&&a.origin!==location.origin&&(o=URL.createObjectURL(new Blob([`import ${JSON.stringify(a.href)};`],{type:"text/javascript"})),r=o)}try{i=new Worker(r,{type:"module"})}finally{!i&&o&&URL.revokeObjectURL(o)}let n={url:e,pool:t,worker:i,blobUrl:o};return t&&t.entries.add(n),n}function Rh(e,t){let r=e&&Cf.get(e);e&&!r&&(r={entries:new Set,idle:[],closed:!1},Cf.set(e,r),e.once("unload",Ah.bind(null,r)));let o,i;if(r){if(r.closed)throw new DOMException("Map removed","AbortError");for(i=0;i<r.idle.length;i++)if(r.idle[i].url===t)return o=r.idle[i],r.idle.splice(i,1),o;o=r.idle.pop(),o&&(o.closed=!0,o.worker.terminate(),r.entries.delete(o))}return hs(t,r)}async function ii(e,t,r,o=new AbortController().signal){o.throwIfAborted();let i=Rh(e,t||ds),{worker:n,pool:a}=i,s={worker:n,signal:o,input:r};i.task=s;let m=!1;try{let f=await new Promise(zh.bind(null,s));return m=!0,f}finally{n.removeEventListener("message",s.onEvent),n.removeEventListener("error",s.onEvent),n.removeEventListener("messageerror",s.onEvent),o.removeEventListener("abort",s.onEvent),i.task=null,m&&a&&!a.closed&&!o.aborted?a.idle.push(i):(i.closed||n.terminate(),a&&a.entries.delete(i)),i.blobUrl&&(URL.revokeObjectURL(i.blobUrl),i.blobUrl=null)}}async function Ih(e,t){try{let r=await ii(e.map||e.backend._map,e.backend.options.workerUrl,{jobs:e.jobs,nightLight:!!e.backend.options.nightLight},t),o;for(o=0;o<r.ranges.length;o++)Object.assign(e.featureFaces[o],r.ranges[o]);e.positions=r.positions,e.uvs=r.uvs,e.lights=r.lights,e.preparedGeometry=r}finally{e.jobs=null}}function Dh(e,t){let r=e?.geometry,o=r?.type==="Point";if(t&&!o)throw new Error("Night lights require Point geometry");if(r?.type!=="Polygon"&&r?.type!=="MultiPolygon"&&!o)throw new Error("Unsupported GeoJSON geometry");let i=o?r.coordinates:r.type==="Polygon"?r.coordinates[0]?.[0]:r.coordinates[0]?.[0]?.[0];if(!Number.isFinite(i?.[0])||!Number.isFinite(i?.[1]))throw new Error("Invalid GeoJSON coordinates");return i}function Gh(e,t){let r=e.options.style(t);if(r===null)return null;if(!r||typeof r!="object")throw new Error("style must return an extrusion style or null");let{top:o,bottom:i=0}=r;if(!Number.isFinite(o)||!Number.isFinite(i)||i<0||o<=i)throw new Error("Invalid extrusion heights: expected top > bottom >= 0");return r}L();function Uh(e,t,r){let{backend:o,crs:i,origin:n,metres:a,map:s}=e,m=new d.LatLng(r,t),f=i.project(m),p=xe(s,m),c=M.get(o);return{x:(f.x-n.x)*a,y:(f.y-n.y)*a,ground:Number.isFinite(p)&&Number.isFinite(c.position[1])?p-c.position[1]:0}}L();function Nh(e,t){let{backend:r,crs:o,origin:i,metres:n,map:a}=e;if(t.length<4)throw new Error("Invalid GeoJSON polygon ring");let s=[],m=M.get(r),f,p,c,l,u,h;for(f=0;f<t.length-1;f++){if(p=t[f][0],c=t[f][1],!Number.isFinite(p)||!Number.isFinite(c))throw new Error("Invalid GeoJSON coordinates");l=new d.LatLng(c,p),u=o.project(l),h=xe(a,l),s.push({x:(u.x-i.x)*n,y:(u.y-i.y)*n,ground:Number.isFinite(h)&&Number.isFinite(m.position[1])?h-m.position[1]:0})}return s}function Fh(e,t){let r=t.type==="Polygon"?[t.coordinates]:t.type==="MultiPolygon"?t.coordinates:[],o=[],i,n,a;for(i of r){if(!i.length)throw new Error("Empty GeoJSON polygon");a=[];for(n of i)a.push(Nh(e,n));o.push(a)}return o}function jh(e,t,r,o,i,n){let a=t.geometry,s=Fh(e,a),m=a.type==="Point"?Uh(e,r,o):null,f=e.backend.options.nightLight,p=m?Bt(i.color??(f?void 0:5210683)):n,c=m&&!f?Bt(i.trunkColor??7491898):null;e.jobs.push({point:m,polygons:s,baseColor:{r:n.r,g:n.g,b:n.b},support:t.properties?.cod_ouvrag||`${r},${o}`,style:{top:i.top,bottom:i.bottom??0,color:{r:p.r,g:p.g,b:p.b},trunkColor:c?{r:c.r,g:c.g,b:c.b}:void 0,trunkRadius:i.trunkRadius,crownRadius:i.crownRadius,crownBottom:i.crownBottom,crownShape:i.crownShape,poleRadius:i.poleRadius,lightRadius:i.lightRadius,lightFlux:i.lightFlux}})}L();function Wh(e,t,r,o){if(!t)return!0;let i=e.project(new d.LatLng(o,r),t.z);return Math.floor(i.x/256)===t.x&&Math.floor(i.y/256)===t.y}function $h(e,t){let{backend:r,area:o,map:i}=e,n=o.coords,a=Dh(t,r.options.nightLight),s=t.geometry,m=a[0],f=a[1];if(!Wh(i,n,m,f))return;let p=Gh(r,t);if(p===null){e.skipped++;return}let{color:c=14267276}=p,l=Bt(c);jh(e,t,m,f,p,l),e.featureFaces.push({id:t.id??t.properties?.objectid??JSON.stringify(s),properties:t.properties,baseColor:l})}async function Vh(e,t,r){let o=performance.now()+4,i;for(i of r){if(t.request.signal.aborted)return;if(performance.now()>=o){if(await new Promise(requestAnimationFrame),t.request.signal.aborted)return;o=performance.now()+4}$h(e,i)}}async function Zh(e,t,r){try{if(await new Promise(requestAnimationFrame),await se.get(r),t.request.signal.aborted)return;let o=await _h(e,t);if(t.request.signal.aborted)return;if(o?.type!=="FeatureCollection"||!Array.isArray(o.features))throw new Error("Invalid GeoJSON response");if(X.get(e)&&typeof e.options.style!="function")throw new Error("style must be a function");if(e.options.worker===!1)throw new Error("worker: false is no longer supported; GeoJSON geometry requires Web Workers");let i=Eh(e,t,r);if(await Vh(i,t,o.features),t.request.signal.aborted||(await Ih(i,t.request.signal),t.request.signal.aborted))return;wh(i)}catch(o){t.request.signal.aborted||(t.error=o.message,e.fire("error",{error:o}))}finally{Je.set(e,Je.get(e)-1),Ji(e,r)}}function gs(e,t){return e.distance-t.distance}function qh(e,t){let r=[],o,i,n;for(o of e)for(i of Y.get(o).values())i.started||i.request.signal.aborted||(n=i.coords&&t.project(t.getCenter(),i.coords.z).divideBy(256),r.push({layer:o,area:i,distance:n?Math.hypot(i.coords.x+.5-n.x,i.coords.y+.5-n.y)/2**i.coords.z:0}));return r.sort(gs),r}function Ji(e,t=e._map){let r=t&&te.get(t);if(!r||!F.has(r))return;let o=[],i,n,a;for(i of F.get(r))Number.isFinite(Je.get(i))&&Y.get(i)&&(ae.get(i)||X.get(i))&&o.push(i);let s=qh(o,t),m=0;for(i of o)m+=Je.get(i);for({layer:a,area:n}of s){if(m>=4)break;Je.get(a)>=2||(n.started=!0,Je.set(a,Je.get(a)+1),m++,Zh(a,n,t))}for(i of o)ls(i)}var at=new WeakMap;var ke=new WeakMap;function Ot(e,t){t?.model&&(t=null),!(at.get(e)?.mesh===t?.mesh&&at.get(e)?.vertexStart===t?.vertexStart)&&(at.get(e)&&(at.get(e).mesh.highlight=null),at.set(e,t),t&&(t.mesh.highlightRange[0]=t.vertexStart,t.mesh.highlightRange[1]=t.vertexEnd,t.mesh.highlight=t.mesh.highlightRange),E(e))}var Ae=new WeakMap;var Er=new WeakMap;var Re=new WeakMap;function zt(e,t,r){let o=Re.get(e);if(!o)return;if(t){o.replaceChildren(e.options.tooltip(t)),o.hidden=!1;let a=Ae.get(e).getBoundingClientRect(),s=r.clientX-a.left,m=r.clientY-a.top;o.style.left=`${s+o.offsetWidth+16>a.width?s-o.offsetWidth-12:s+12}px`,o.style.top=`${m+o.offsetHeight+16>a.height?m-o.offsetHeight-12:m+12}px`}else o.hidden=!0;let i=R.get(e),n;if(i){let a=!1;for(n of F.get(i))if(Re.get(n)&&!Re.get(n).hidden){a=!0;break}a?(Er.get(i)===void 0&&Er.set(i,Ae.get(e).style.cursor),Ae.get(e).style.cursor="pointer"):Er.get(i)!==void 0&&(Ae.get(e).style.cursor=Er.get(i),Er.delete(i))}}function ro(e,t){t.request.abort();let r;if(t.mesh){at.get(e)?.mesh===t.mesh&&(Ot(e,null),ke.set(e,null),zt(e,null)),q(t.mesh,null),E(e);let o=t.mesh.geometry;for(r of Object.values(o.attributes))r.buffer.destroy();t.mesh.program.pipelineCache.clear()}}function Hh(e,t){return e.distance-t.distance}function oo(e){if(!e._map||!R.get(e))return;if(X.get(e)){Y.get(e).has("geojson")||Y.get(e).set("geojson",{request:new AbortController}),Ji(e);return}if(!U.get(e))return;let t=U.get(e).minZoom,r=e._map.project(e._map.getCenter(),t).divideBy(256).floor(),o=e._map.getBounds(),i=e._map.project(o.getNorthWest(),t).divideBy(256).floor(),n=e._map.project(o.getSouthEast(),t).divideBy(256).floor(),a=e._map.project([U.get(e).maxLat,U.get(e).minLon],t).divideBy(256).floor(),s=e._map.project([U.get(e).minLat,U.get(e).maxLon],t).divideBy(256).floor(),m=new Map,f,p,c,l,u;for(f=Math.max(0,i.x-1,a.x);f<=Math.min(2**t-1,n.x+1,s.x);f++)for(p=Math.max(0,i.y-1,a.y);p<=Math.min(2**t-1,n.y+1,s.y);p++)m.set(`${f}/${p}`,{z:t,x:f,y:p});for([c,l]of Y.get(e))m.has(c)||(ro(e,l),Y.get(e).delete(c));let h=[];for([c,u]of m)u.distance=Math.hypot(u.x+.5-r.x,u.y+.5-r.y)/2**t,h.push(u);h.sort(Hh);for(u of h)c=`${u.x}/${u.y}`,Y.get(e).has(c)||Y.get(e).set(c,{coords:u,request:new AbortController});Ji(e)}function ni(e){if(!M.get(e)||!D.get(e))return;Et.get(e)==null&&Et.set(e,M.get(e).position[1]);let t=me.get(e._map),r=t&&pr(t,D.get(e)),o=Number.isFinite(r)?e.options.terrainOffset??0:0;M.get(e).position[1]=Et.get(e)+(r??0)+o}function Yh(e,t){e.attributes.index?.data instanceof Uint8Array&&(e.attributes.index.data=new Uint16Array(e.attributes.index.data));let r,o,i;for(r in e.attributes)o=e.attributes[r],o.size||=1,o.count=o.data.length/o.size,o.indexFormat=o.data instanceof Uint32Array?"uint32":"uint16",i=o.buffer,o.buffer=t.createBuffer({size:Math.max(4,o.data.byteLength),usage:r==="index"?GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST}),t.queue.writeBuffer(o.buffer,0,o.data),i?.destroy();e.device=t,e.drawRange.count=e.attributes.index?.count||e.attributes.position.count}function Xh(e,t){let r,o;for(r in e)r!=="baseTexture"&&r!=="metalTexture"&&r!=="emissiveTexture"&&r!=="occlusionTexture"||(o=e[r],!(!o||o.device===t)&&(o.device=t,o.texture=t.createTexture({size:[o.image.width,o.image.height],format:o.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),o.sampler=t.createSampler(o.samplerOptions),o.uploaded=null))}function Jh(e,t){let r=R.get(t),o;if(e.geometry&&e.geometry.device!==w.get(r).device){let i=e.geometry,n=e.program._layerMaterial,a=w.get(r).device;Yh(i,a),e.bindGroup=null,e.boundTextures?e.boundTextures.length=0:e.boundTextures=[],Xh(n,a),e.program.pipelineCache.clear(),e.program=Ue(t,n),e.device=a}e.texture&&e.texture.device!==w.get(r).device&&(o=e.texture,o.device=w.get(r).device,o.texture=w.get(r).device.createTexture({size:[e.texture.image.width,e.texture.image.height],format:e.texture.format,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),o.sampler=w.get(r).device.createSampler(o.samplerOptions),o.uploaded=null)}var ai=new WeakMap;function Kh(e){let t=e.getContainer();if(t.querySelector(".leaflet-webgpu-warning"))return;let r=document.createElement("div");r.className="leaflet-webgpu-warning",r.setAttribute("role","alert"),r.style.cssText="position:absolute;z-index:1000;top:50%;left:50%;transform:translate(-50%,-50%);max-width:calc(100% - 32px);box-sizing:border-box;padding:12px 16px;border:1px solid #c98b24;border-radius:6px;background:#fff8e6;box-shadow:0 3px 12px #0005;color:#30251d;font:14px/1.5 sans-serif;text-align:center;pointer-events:auto",r.append("WebGPU is not available in this browser or device. ");let o=document.createElement("a");o.href="https://developer.mozilla.org/en-US/docs/Web/API/WebGPU_API#browser_compatibility",o.target="_blank",o.rel="noopener noreferrer",o.textContent="Learn more",r.append(o),t.append(r)}function Or(e,t,r){throw Kh(r),gt.get(t).reject(e),te.delete(r),e}async function Qh(e,t){let r;try{r=await navigator.gpu.requestAdapter()}catch(o){Or(o,e,t)}return r||Or(new Error("Unable to acquire a WebGPU adapter"),e,t),r}async function eg(e,t,r){try{return await e.requestDevice()}catch(o){Or(o,t,r)}}function tg(e){let t=ai.get(e.currentTarget),r=te.get(t);if(w.get(r)?.device!==e.currentTarget||!F.get(r))return;let o;for(o of F.get(r))o.fire("error",{error:e.error})}function rg([e,t]){let r=ai.get(t),o=te.get(r);if(!o||w.get(o)?.device!==t)return;let i=new Error(`WebGPU device lost: ${e.message||e.reason}`),n;for(n of F.get(o))n.fire("error",{error:i})}function og(){return{position:[0,0,0],up:[0,1,0],target:[0,0,0],x:[0,0,0],y:[0,0,0],z:[0,0,0],viewMatrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],projectionMatrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],projectionViewMatrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],viewTransform:new DOMMatrix,projectionTransform:new DOMMatrix,projectionViewTransform:new DOMMatrix,fov:45,aspect:1,near:.1,far:1e4}}var si=new Float32Array(20);si[0]=si[5]=si[10]=si[15]=1;function ig(e,t){let r=w.get(e),o=t.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{sampleType:"depth"}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{type:"comparison"}},{binding:3,visibility:GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}}]}),i=t.createBuffer({size:80,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),n=t.createSampler({compare:"less-equal",minFilter:"linear",magFilter:"linear"}),a=t.createBuffer({size:32,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});r.sunlight={layout:o,buffer:i,sampler:n,lights:a,size:0},t.queue.writeBuffer(i,0,si),Wn(e,1),r.roofFallbackTexture={device:t,texture:t.createTexture({size:[1,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),sampler:t.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}),image:null,format:"rgba8unorm",srgb:!1,uploaded:null}}var io=new WeakMap;var ys=[];function ng(){let e=ys.shift();io.set(e,!1),!(R.get(e)!==e||!w.get(e))&&(e._map._animatingZoom?E(e):gr(e))}function Ki(){let e=this;io.get(e)||(io.set(e,!0),ys.push(e),queueMicrotask(ng))}var mi=new WeakMap;function Qi(){mi.set(this,null)}var xs=[];function ag(){let e=xs.shift();R.get(e)===e&&w.get(e)&&gr(e)}function en(e){let t=this._map;e&&!qe.get(this)&&(qe.set(this,{from:t.getCenter(),zoom:t.getZoom(),to:e.center,targetZoom:e.zoom,start:performance.now()}),t.getContainer().classList.add("leaflet-camera-zoom")),xs.push(this),queueMicrotask(ag)}function tn(){let e=this,t;if(he.get(e))for(t of he.get(e).keys())t.finish();he.set(e,null),qe.set(e,null),se.delete(e._map),e._map.getContainer().classList.remove("leaflet-camera-zoom"),Bn(e._map),mi.set(e,null),E(e)}function sg(e,t,r){mr.set(e,null),r.className="leaflet-3d",r.style.cssText="position:absolute;top:0;left:0;z-index:1;pointer-events:none",r.setAttribute("role","img"),r.setAttribute("aria-label",e.options.ariaLabel??"3D scene"),t.getPane("mapPane").before(r),t.on("move zoom rotate pitch resize viewreset layeradd layerremove",Ki,e),t.on("zoomstart",Qi,e),t.on("zoomanim",en,e),t.on("zoomend",tn,e)}async function mg(e,t){let r=document.createElement("canvas");navigator.gpu||Or(new Error("Layer3D requires WebGPU"),e,t);let o=await Qh(e,t),i=await eg(o,e,t);ai.set(i,t),i.addEventListener("uncapturederror",tg),Promise.all([i.lost,Promise.resolve(i)]).then(rg);let n=r.getContext("webgpu");n||(i.destroy(),Or(new Error("Unable to create a WebGPU canvas context"),e,t));let a=navigator.gpu.getPreferredCanvasFormat();n.configure({device:i,format:a,alphaMode:"premultiplied"}),t.getContainer().querySelector(".leaflet-webgpu-warning")?.remove(),R.set(e,e),F.set(e,new Set),ie.set(e,D.get(e)),oe.set(e,Oe()),ee.set(e,og()),w.set(e,{device:i,context:n,format:a,canvas:r,dpr:Math.min(window.devicePixelRatio,2)}),ig(e,i),sg(e,t,r)}async function fi(e,t){let r=te.get(t);gt.get(r)&&await gt.get(r).promise,r||(r=e,gt.set(e,Promise.withResolvers()),gt.get(e).promise.catch(Xe),te.set(t,r),await mg(e,t),gt.get(e).resolve(),gt.delete(r),gr(r),te.set(t,r));let o=t.options.crs.project(ie.get(r)),i=t.options.crs.project(D.get(e)),n=Math.cos(ie.get(r).lat*B);Et.get(e)==null&&Et.set(e,M.get(e).position[1]),M.get(e).position[0]=(i.x-o.x)*n,M.get(e).position[1]=Et.get(e),M.get(e).position[2]=-(i.y-o.y)*n,ni(e),M.get(e).scale.fill(n/Math.cos(D.get(e).lat*B)),R.set(e,r),w.set(e,w.get(r)),oe.set(e,oe.get(r)),ee.set(e,ee.get(r)),F.get(r).add(e),q(M.get(e),oe.get(r)),Zt(M.get(e),Jh,e),E(r),(U.get(e)&&z.get(e)!=="raster"||X.get(e))&&oo(e)}var $e=new WeakMap;$();L();function fg(e,t){let r=new Float32Array(e.length),o,i,n,a,s,m,f,p,c,l,u,h,x,g,y,v;for(o=0;o<(t?.length||e.length/3);o+=3)for(i=t?t[o]:o,n=t?t[o+1]:o+1,a=t?t[o+2]:o+2,s=e[n*3]-e[i*3],m=e[n*3+1]-e[i*3+1],f=e[n*3+2]-e[i*3+2],p=e[a*3]-e[i*3],c=e[a*3+1]-e[i*3+1],l=e[a*3+2]-e[i*3+2],h=m*l-f*c,x=f*p-s*l,g=s*c-m*p,u=0;u<3;u++)y=u===0?i:u===1?n:a,r[y*3]+=h,r[y*3+1]+=x,r[y*3+2]+=g;for(o=0;o<r.length;o+=3)for(v=Math.hypot(r[o],r[o+1],r[o+2])||1,u=0;u<3;u++)r[o+u]/=v;return r}function _f(e,t){e.geometry?.attributes.position&&t.push(e);let r;for(r of e.children)_f(r,t)}function pi(e,t){if(!$e.get(e))return;let r=[];_f($e.get(e),r);let o,i,n,a,s,m,f,p,c,l,u,h,x,g,y,v,S,T,P,A;if(!Te.get(t)||!e.options.terrainConform){for(o of r)i=o.geometry._terrainBasePositions,i&&(n=o.geometry,a=n.attributes.position,a.data.set(i),o.device.queue.writeBuffer(a.buffer,0,i),s=n._terrainBaseNormals,s&&(n.attributes.normal.data.set(s),o.device.queue.writeBuffer(n.attributes.normal.buffer,0,s)),_e(n));return}Pe(M.get(e));let Q=e._map,N=Q.options.crs,G=N.project(ie.get(R.get(e))),V=Math.cos(ie.get(R.get(e)).lat*B),ue=N.scale(ye.get(t));for(o of r){for(n=o.geometry,m=n.attributes.position,n._terrainBasePositions||=m.data.slice(),f=n.attributes.normal,n._terrainBaseNormals||=f.data.slice(),m.data.set(n._terrainBasePositions),p=o.worldMatrix,c=new DOMMatrix(p).inverse().toFloat64Array(),l=0;l<m.data.length;l+=3)u=m.data[l],h=m.data[l+1],x=m.data[l+2],g=p[1]*u+p[5]*h+p[9]*x+p[13],y=Math.max(0,Math.min(1,1-(g-M.get(e).position[1])/8)),y&&(v=p[0]*u+p[4]*h+p[8]*x+p[12],S=p[2]*u+p[6]*h+p[10]*x+p[14],T=N.transformation.transform(new d.Point(G.x+v/V,G.y-S/V),ue),P=pr(t,T),Number.isFinite(P)&&(A=(P-g)*y,m.data[l]+=c[4]*A,m.data[l+1]+=c[5]*A,m.data[l+2]+=c[6]*A));o.device.queue.writeBuffer(m.buffer,0,m.data),f.data.set(fg(m.data,n.attributes.index?.data)),o.device.queue.writeBuffer(f.buffer,0,f.data),_e(n)}E(e)}function pg(e){return{addressModeU:e?.wrapS===33071?"clamp-to-edge":e?.wrapS===33648?"mirror-repeat":"repeat",addressModeV:e?.wrapT===33071?"clamp-to-edge":e?.wrapT===33648?"mirror-repeat":"repeat",magFilter:e?.magFilter===9728?"nearest":"linear",minFilter:e?.minFilter===9728||e?.minFilter===9984||e?.minFilter===9986?"nearest":"linear"}}function rn(e,t,r=!1){let{backend:o,description:i,images:n,textures:a}=e;if(!t)return null;if((t.texCoord||0)!==0||t.extensions)throw new Error("Model textures currently require untransformed TEXCOORD_0 UVs");let s=w.get(o).device,m=`${t.index}:${r}`;if(!a.has(m)){let f=i.textures[t.index],p=i.samplers?.[f.sampler],c=n[f.source],l=r?"rgba8unorm-srgb":"rgba8unorm",u=pg(p);a.set(m,{device:s,texture:s.createTexture({size:[c.width,c.height],format:l,usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),sampler:s.createSampler(u),samplerOptions:u,format:l,srgb:r,image:c,flipY:!1,uploaded:null})}return a.get(m)}function cg(e,t){let{backend:r}=e,o=t.pbrMetallicRoughness;return{color:o?.baseColorFactor?o.baseColorFactor.slice(0,3):[1,1,1],opacity:o?.baseColorFactor?.[3]??1,metallic:o?.metallicFactor??1,roughness:o?.roughnessFactor??1,baseTexture:rn(e,o?.baseColorTexture,!0),metalTexture:rn(e,o?.metallicRoughnessTexture),emissiveTexture:rn(e,t.emissiveTexture,!0),occlusionTexture:rn(e,t.occlusionTexture),emissive:t.emissiveFactor||[0,0,0],occlusionStrength:t.occlusionTexture?.strength??1,alphaMode:r.options.alphaMode||t.alphaMode||"OPAQUE",alphaCutoff:t.alphaCutoff??.5,doubleSided:t.doubleSided}}function lg(e,t,r){let o={backend:e,description:t,images:r,textures:new Map,materials:[],active:new Set,resources:[]},i;for(i of t.materials||lr)o.materials.push(cg(o,i));return o}var ug=[0,0,0,1];var dg=[1,1,1];var hg=[0,0,0];function gg(e){if(e.matrix)return Array.from(e.matrix);let[t,r,o,i]=e.rotation||ug,[n,a,s]=e.scale||dg;return[(1-2*(r*r+o*o))*n,2*(t*r+o*i)*n,2*(t*o-r*i)*n,0,2*(t*r-o*i)*a,(1-2*(t*t+o*o))*a,2*(r*o+t*i)*a,0,2*(t*o+r*i)*s,2*(r*o-t*i)*s,(1-2*(t*t+r*r))*s,0,...e.translation||hg,1]}function yg(e,t,r){let o=e.materials[t.material]||{color:[1,1,1],metallic:1};if((o.baseTexture||o.metalTexture||o.emissiveTexture||o.occlusionTexture)&&!r.uv)throw new Error("Textured model mesh requires UV coordinates");let i=Ue(e.backend,o);e.resources.push(i);let n=w.get(e.backend).device,a,s;for([a,s]of Object.entries(r))s.size||=1,s.count=s.data.length/s.size,s.indexFormat=s.data instanceof Uint32Array?"uint32":"uint16",s.buffer=n.createBuffer({size:Math.max(4,s.data.byteLength),usage:a==="index"?GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST}),n.queue.writeBuffer(s.buffer,0,s.data);let m={device:n,attributes:r,drawRange:{start:0,count:r.index?.count||r.position.count}};return e.resources.push(m),{device:n,geometry:m,program:i}}function Ef(e,t){let{backend:r,description:o,active:i}=e;if(i.has(t))throw new Error("Cyclic glTF nodes");let n=o.nodes[t];if(!n)throw new Error("Invalid glTF node");i.add(t);let a={...Oe(),name:n.name};a.matrix=gg(n);let s,m,f,p,c;if(n.mesh!==void 0)for(s of o.meshes[n.mesh].primitives)m=structuredClone(s.preparedAttributes),f=yg(e,s,m),p={...Oe(),device:f.device,geometry:f.geometry,program:f.program,fadeDuration:250,id:Mt.value++,renderOrder:0},p.name=o.meshes[n.mesh].name,p.extras=n.extras||{},q(p,a);for(c of n.children||lr)q(Ef(e,c),a);return i.delete(t),a}function xg(e){let t,r;for(t of e.resources)if(t.attributes)for(r of Object.values(t.attributes))r.buffer.destroy();else t.pipelineCache.clear()}function vg(e,t){let r=[],o;try{for(o of t.nodes)r.push(Ef(e,o))}catch(i){throw xg(e),i}return r}function wg(e){let t=$e.get(e);if(e.options.rotation){let[r,o=r,i=r]=e.options.rotation;t.rotation[0]=r,t.rotation[1]=o,t.rotation[2]=i}if(e.options.scale){let[r,o=r,i=r]=e.options.scale;t.scale[0]=r,t.scale[1]=o,t.scale[2]=i}}async function Lg(e){await Le.get(e).promise;let t=new URL(We.get(e),document.baseURI).href,{description:r,images:o}=await ii(e._map,e.options.workerUrl,{type:"model",url:t});await Le.get(e).promise,await se.get(e._map);let i=lg(e,r,o),n=r.scenes?.[r.scene||0];if(!n)throw new Error("Missing glTF scene");let a=vg(i,n),s={...Oe(),id:t,extras:r.extras||{}};if(!a.length)throw new Error("Expected a glTF model with a non-empty scene");let m;for(m of a)q(m,s);$e.set(e,s),wg(e),q($e.get(e),M.get(e)),pi(e,me.get(e._map))}async function bg(e){try{return M.set(e,Oe()),ne.set(e,{origin:[0,0,0],direction:[0,0,0],inverse:new DOMMatrix,meshes:[]}),(ae.get(e)||X.get(e))&&(cs.set(e,M.get(e)),ae.get(e)&&U.set(e,await eo(e))),e._map&&(await fi(e,e._map),Le.get(e).resolve()),We.get(e)&&await Lg(e),R.get(e)&&E(e),e.fire("ready"),e}catch(t){throw e.fire("error",{error:t}),t}}function Mg(e,t,r,o){return o?`Unable to load: ${typeof o=="string"?o:o.message}`:`${t} loaded ${We.get(e)?"models":"elements"} in the current area${r?`; ${r} blocks loading`:""}`}function Bg(e,t,r,o){let i=kr.get(e),n=We.get(e),a=$e.get(e);n&&(t=a?1:0);let s=r||(n?!a:!U.get(e)&&!X.get(e)),m=t.toLocaleString("en-US"),f=o?"Error":`${m}${s?"\u2026":""}`,p=Mg(e,m,r,o);i.textContent!==f&&(i.textContent=f),i.title!==p&&(i.title=p),o&&i.getAttribute("role")!=="alert"?i.setAttribute("role","alert"):!o&&i.hasAttribute("role")&&i.removeAttribute("role")}function Of(e){let t=e.target,r=kr.get(t);if(!t._map)return;e.type==="add"&&ei(t,r);let o=0,i=0,n=e.error,a;if(Number.isFinite(e.loaded))o=e.loaded,i=e.pending??0,n||=e.errors?.[0];else for(a of Y.get(t).values())o+=a.buildings??0,!a.done&&!a.error&&i++,n||=a.error;Bg(t,o,i,n)}function At(e,t=yr){_r.set(e,!0),d.Util.setOptions(e,{ariaLabel:"3D scene",...t}),z.set(e,"3d");let r=!X.get(e)&&/\.(glb|gltf)(?:[?#]|$)/i.test(e.options.url);if(We.set(e,r?e.options.url:null),ae.set(e,e.options.url&&!r&&!X.get(e)?new URL(e.options.url,document.baseURI).href:null),Cr.set(e,new Map),e.options.center&&D.set(e,new d.LatLng(e.options.center[0],e.options.center[1])),Y.set(e,new Map),Je.set(e,0),ae.get(e)||X.get(e)||r){let o=d.DomUtil.create("small","layer-count");o.style.cssText="float:right;margin-left:12px;color:#555;font-variant-numeric:tabular-nums",kr.set(e,o),e.on("add error",Of),e.on("ready progress",d.Util.throttle(Of,250,e))}Le.set(e,Promise.withResolvers()),re.set(e,Promise.resolve().then(bg.bind(null,e))),re.get(e).catch(Xe)}function Tg(){this.keys.clear()}var on={KeyW:[1,0],ArrowUp:[1,0],KeyS:[-1,0],ArrowDown:[-1,0],KeyD:[0,1],ArrowRight:[0,1],KeyA:[0,-1],ArrowLeft:[0,-1]};L();ji();vr();J();Z();function Pg(e){let t=this.layer._map;if(e.type==="pointerdown"){if(e.button!==0||e.target.closest(".leaflet-control"))return;this.dragX=e.clientX,this.dragY=e.clientY,this.dragging=!0,t.getContainer().setPointerCapture(e.pointerId)}else this.dragging&&e.type==="pointermove"?(Fe(t,Math.max(20,Math.min(85,_(t)-(e.clientY-this.dragY)*.2)),k(t)-(e.clientX-this.dragX)*.25),this.dragX=e.clientX,this.dragY=e.clientY):this.dragging=!1}var nn=[["body",0,0,0],["leg",-.09,.9,1],["leg",.09,.9,-1],["arm",-.25,1.42,-1],["arm",.25,1.42,1]];$();function Rt(e){let{layer:t,state:r}=this,o=t._map,i=o.options.crs,n=D.get(t),a=M.get(t),s=i.project(n),m=Math.cos(n.lat*B),f=i.project(r.latlng),p=xe(o,r.latlng)||0;return e[0]=(f.x-s.x)*m,e[1]=p+(r.height??0)-a.position[1],e[2]=-(f.y-s.y)*m,e}function vs(){let[e,t,r]=Rt.call(this,this.local),o=-this.state.heading,i=Math.cos(o),n=Math.sin(o),a,s,m,f,p;for(a=0;a<nn.length;a++)[,s,m,f]=nn[a],p=this.meshes[a],p.position[0]=e+s*i,p.position[1]=t+m,p.position[2]=r-s*n,p.rotation[0]=f*this.swing*Math.sin(this.state.phase),p.rotation[1]=o;E(this.layer)}function Sg(){this.meshes&&vs.call(this)}function ws(){let e=this.layer._map;cancelAnimationFrame(this.frame),this.keys.clear(),this.dragging=!1,this.state.height=this.verticalSpeed=0,d.DomEvent.off(document,"keydown keyup",this.onKey),d.DomEvent.off(window,"blur",this.onBlur);let t,r;if(this.meshes)for(t of this.meshes)Ge(this.layer,t);if(this.meshes=null,this.button.setAttribute("aria-pressed","false"),this.button.style.background="#fff",this.hint.style.display="none",!(!e||!this.saved)){d.DomEvent.off(e.getContainer(),"pointerdown pointermove pointerup pointercancel",this.onPointer),e.off("terrainchange",this.onTerrain),e.options.scrollWheelZoom=this.saved.scrollWheelZoom;for(r of this.saved.handlers)e[r].enable();e.setView(this.state.latlng,this.saved.zoom,{animate:!1}),Ht(e,this.saved.pitch),this.saved=null}}function kg(e){if(e.type==="keyup"&&e.code==="Space"&&this.keys.delete("Space"),!(e.target.closest?.("input:not([type=checkbox], [type=radio]), select, textarea, [contenteditable]")||e.ctrlKey||e.altKey||e.metaKey)){if(e.type==="keydown"&&e.code==="Escape"){this.stop();return}!on[e.code]&&e.code!=="Space"||(e.preventDefault(),e.type==="keydown"?this.keys.add(e.code):this.keys.delete(e.code))}}$();L();var Cg=["dragging","keyboard","doubleClickZoom","boxZoom"];J();Z();ji();function C(e,t,r,o){return[[e,r],[t,r],[t,o],[e,o]]}var Kt=[.16,.2,.32];var zf=[.75,.2,.15];var yt=[.85,.64,.5];var Qt=[.08,.07,.06];var Ls={body:[[C(-.17,.17,-.1,.1),.82,.95,Kt],[C(-.19,.19,-.11,.11),.95,1.44,zf],[C(-.05,.05,-.05,.05),1.44,1.5,yt],[C(-.1,.1,-.11,.1),1.5,1.72,yt],[C(-.105,.105,-.06,.115),1.58,1.77,Qt],[C(-.105,.105,-.115,-.06),1.7,1.77,Qt]],leg:[[C(-.07,.07,-.07,.07),-.82,0,Kt],[C(-.07,.07,-.17,.07),-.9,-.82,Qt]],arm:[[C(-.05,.05,-.05,.05),-.55,0,zf],[C(-.045,.045,-.045,.045),-.66,-.55,yt]]};function an(e,t,r,o,i,n,a){let s=i[0]-o[0],m=i[1]-o[1],f=i[2]-o[2],p=n[0]-o[0],c=n[1]-o[1],l=n[2]-o[2],u=m*l-f*c,h=f*p-s*l,x=s*c-m*p,g=Math.hypot(u,h,x),y,v;for(y=0;y<3;y++)v=y===0?o:y===1?i:n,e.push(...v),t.push(u/g,h/g,x/g),r.push(...a)}function ci(e){let t=[],r=[],o=[],i=[],n=[],a,s,m,f,p,c,l,u,h;for([a,s,m,f,p=a]of e){i.length=n.length=0;for([c,l]of a)i.push([c,s,l]);for([c,l]of p)n.push([c,m,l]);for(u=0;u<a.length;u++)h=(u+1)%a.length,an(t,r,o,i[u],i[h],n[h],f),an(t,r,o,i[u],n[h],n[u],f);for(u=1;u<a.length-1;u++)an(t,r,o,n[0],n[u],n[u+1],f),an(t,r,o,i[0],i[u+1],i[u],f)}return{position:t,normal:r,color:o}}function _g(e){return this.keys.has("Space")?(this.verticalSpeed=6,this.state.height+=this.verticalSpeed*e,!0):!this.verticalSpeed&&!this.state.height?!1:(this.state.height=Math.max(0,this.state.height+this.verticalSpeed*e-9.81*e*e/2),this.verticalSpeed=this.state.height>0?this.verticalSpeed-9.81*e:0,!0)}L();var Af=new WeakMap;function Eg(e,t,r){let o,i,n;for(o=Math.floor(Math.min(t[0],t[3],t[6])/8);o<=Math.floor(Math.max(t[0],t[3],t[6])/8);o++)for(i=Math.floor(Math.min(t[2],t[5],t[8])/8);i<=Math.floor(Math.max(t[2],t[5],t[8])/8);i++)n=o+","+i,e.has(n)||e.set(n,[]),e.get(n).push(r)}function bs(e){let t=Af.get(e.geometry);if(t)return t;let r=e.worldMatrix,{position:o,index:i,normal:n,uv:a,instanceOffset:s}=e.geometry.attributes,m=fa(o,i),f=m*(s?.count??1),p=[],c=[],l=new Map,u=[0,0,0],h=[0,0,0],x=[0,0,0],g=[],y,v,S,T,P,A,Q,N,G,V,ue,Me,st,Ce,vt,Ze=-1/0;for(y=0;y<f;y+=3)v=i?i.data[y%m]:y%m,!(e.program.nightLight&&a&&a.data[v*2]<=2)&&(pa(e,y,u,h,x),g[0]=r[0]*u[0]+r[4]*u[1]+r[8]*u[2]+r[12],g[1]=r[1]*u[0]+r[5]*u[1]+r[9]*u[2]+r[13],g[2]=r[2]*u[0]+r[6]*u[1]+r[10]*u[2]+r[14],g[3]=r[0]*h[0]+r[4]*h[1]+r[8]*h[2]+r[12],g[4]=r[1]*h[0]+r[5]*h[1]+r[9]*h[2]+r[13],g[5]=r[2]*h[0]+r[6]*h[1]+r[10]*h[2]+r[14],g[6]=r[0]*x[0]+r[4]*x[1]+r[8]*x[2]+r[12],g[7]=r[1]*x[0]+r[5]*x[1]+r[9]*x[2]+r[13],g[8]=r[2]*x[0]+r[6]*x[1]+r[10]*x[2]+r[14],T=g[3]-g[0],P=g[4]-g[1],A=g[5]-g[2],Q=g[6]-g[0],N=g[7]-g[1],G=g[8]-g[2],V=P*G-A*N,ue=T*N-P*Q,Me=A*Q-T*G,st=Math.hypot(V,Me,ue),!(!st||Math.abs(Me)>.9*st)&&(n&&(S=v*3,(r[0]*n.data[S]+r[4]*n.data[S+1]+r[8]*n.data[S+2])*V+(r[2]*n.data[S]+r[6]*n.data[S+1]+r[10]*n.data[S+2])*ue<0&&(V=-V,ue=-ue)),Ce=Math.hypot(V,ue),vt=c.length/2,p.push(...g),Ze=Math.max(Ze,g[0],g[3],g[6]),c.push(V/Ce,ue/Ce),Eg(l,g,vt)));return t={tri:Float32Array.from(p),nrm:Float32Array.from(c),cells:l,maxX:Ze,origin:[r[12],r[13],r[14]]},Af.set(e.geometry,t),t}function Ms(e,t,r,o,i,n,a){let s=t*9,m=e[s+3]-e[s],f=e[s+4]-e[s+1],p=e[s+5]-e[s+2],c=e[s+6]-e[s],l=e[s+7]-e[s+1],u=e[s+8]-e[s+2],h=-a*l,x=a*c-n*u,g=n*l,y=m*h+f*x+p*g;if(Math.abs(y)<1e-9)return-1;let v=r-e[s],S=o-e[s+1],T=i-e[s+2],P=(v*h+S*x+T*g)/y;if(P<0||P>1)return-1;let A=S*p-T*f,Q=T*m-v*p,N=v*f-S*m,G=(n*A+a*N)/y;return G<0||P+G>1?-1:(c*A+l*Q+u*N)/y}function Og(e,t,r,o,i,n,a,s){let m,f,p,c;for(m=Math.floor(t/8);m<=a;m++)if(f=e.cells.get(`${m},${s}`),!!f)for(p of f)i.has(p)||(i.add(p),c=Ms(e.tri,p,t,r,o,1,0),c>1e-4&&n.push(c))}function zg(e){let t,r,o;for(t=1;t<e.length;t++){for(o=e[t],r=t-1;r>=0&&e[r]>o;)e[r+1]=e[r--];e[r+1]=o}let i=0,n=-1/0;for(o of e)o-n>1e-4&&i++,n=o;return i}function Rf(e,t,r,o,i,n){let a=e.geometry;if(!e.visible||!a?.attributes?.position?.data||e.program?.depthTest===!1)return!1;a.bounds||_e(a);let s=a.bounds,m=e.worldMatrix,f=s.center,p=m[0]*f[0]+m[4]*f[1]+m[8]*f[2]+m[12],c=m[1]*f[0]+m[5]*f[1]+m[9]*f[2]+m[13],l=m[2]*f[0]+m[6]*f[1]+m[10]*f[2]+m[14],u=s.radius*Math.max(Math.hypot(m[0],m[1],m[2]),Math.hypot(m[4],m[5],m[6]),Math.hypot(m[8],m[9],m[10]));if(Math.hypot(p-t,c-r,l-o)>u)return!1;let h=bs(e),x=Math.floor(h.maxX/8);if(t>=h.maxX)return!1;let g=Math.floor(o/8),y=n;return y.length=0,i.clear(),Og(h,t,r,o,i,y,x,g),zg(y)%2===1}function Ag(e,t,r,o,i,n){o<1e-6?(e.normal[0]=-i,e.normal[1]=-n):(e.normal[0]=t/o,e.normal[1]=r/o)}function Bs(e,t,r,o,i,n,a,s){let m=Tt.get(e);if(!m?.mesh||!m.trips.length)return!1;let f=m.collisionBounds;if(!f){f=m.collisionBounds={radius:0,minY:1/0,maxY:-1/0};let V,ue,Me,st;for(V=0;V<m.template.position.length;V+=3)ue=m.template.position[V],Me=m.template.position[V+1],st=m.template.position[V+2],f.radius=Math.max(f.radius,Math.hypot(ue,st)),f.minY=Math.min(f.minY,Me),f.maxY=Math.max(f.maxY,Me)}let p=M.get(e),c=m.position||={},l=Math.max(p.scale[0],p.scale[1],p.scale[2]),u=f.radius*l+.35,h,x,g,y,v,S,T,P,A,Q,N,G;for(h of m.trips)if({x:N,y:A,z:G}=Go(m,h,c),A=p.position[1]+(A+f.minY)*p.scale[1],Q=p.position[1]+(c.y+f.maxY)*p.scale[1],!(A>r+1.7*l||Q<r+.2*l)&&(N=p.position[0]+N*p.scale[0],G=p.position[2]+G*p.scale[2],x=(N-t)*i+(G-o)*n,g=Math.max(0,Math.min(a,x)),y=t+g*i-N,v=o+g*n-G,S=y*y+v*v,!(S>=u*u))){if(a===0){s.found=!0,P=Math.hypot(t-N,o-G),s.normal[0]=P?(t-N)/P:0,s.normal[1]=P?(o-G)/P:0;continue}T=Math.max(0,x-Math.sqrt(u*u-S)),!(T>a||T>=s.best)&&(s.best=T,s.found=!0,P=Math.hypot(t+T*i-N,o+T*n-G),Ag(s,t+T*i-N,o+T*n-G,P,i,n))}return s.found}function If(e){let{layer:t,local:r,hitData:o}=e,i=R.get(t);if(!i||!F.get(i))return!1;Pe(oe.get(t));let n=M.get(t),a=Rt.call(e,r),s=n.position[0]+a[0]*n.scale[0],m=n.position[1]+a[1]*n.scale[1],f=n.position[2]+a[2]*n.scale[2],p=F.get(i),c,l,u,h;for(c of p)if(!(c===t||z.get(c)==="terrain")){if(z.get(c)==="traffic"){if(o.best=0,o.found=!1,Bs(c,s,m,f,0,0,0,o))return!0;continue}for(h=o.nodes,h.length=0,M.get(c)&&h.push(M.get(c));h.length;)if(l=h.pop(),!!l.visible){if(l.geometry&&(Rf(l,s,m+.45*n.scale[1],f,o.seen,o.intersections)||Rf(l,s,m+1.35*n.scale[1],f,o.seen,o.intersections)))return!0;for(u of l.children)h.push(u)}}return!1}function Ts(){if(!this.saved||!If(this))return!1;let e=this.layer._map,t=this.state.latlng,r=this.state.height,o,i,n;for(o=.5;o<=20;o+=.5)for(i=0;i<Math.PI*2;i+=Math.PI/4)if(n=new d.LatLng(t.lat+Math.cos(i)*o/111320,t.lng+Math.sin(i)*o/(111320*Math.cos(t.lat*Math.PI/180))),this.state.latlng=n,this.state.height=0,!If(this))return this.verticalSpeed=0,e.setView(n,e.getZoom(),{animate:!1}),!0;return this.state.latlng=t,this.state.height=r,!1}function Ps(e){return Math.atan2(Math.sin(e),Math.cos(e))}function Rg(e,t){return e===t||Xt.get(e)==="terrain"||Xt.get(e)==="traffic"}function Ig(e){let t=ne.get(this.layer),r=Rt.call(this,this.local),o=M.get(this.layer),i=o.position[0]+r[0]*o.scale[0],n=o.position[1]+r[1]*o.scale[1],a=o.position[2]+r[2]*o.scale[2];if(n>e||this.verticalSpeed>0)return;Pe(oe.get(this.layer)),t.origin[0]=i,t.origin[1]=e+.01,t.origin[2]=a,t.direction[0]=0,t.direction[1]=-1,t.direction[2]=0,t.meshes.length=0;let s,m;for(s of F.get(R.get(this.layer)))Rg(s,this.layer)||z.get(s)==="raster"||s.options.nightLight||Zt(M.get(s),la,t.meshes);for(m of ca(t,t.meshes)){if(m.point[1]<n-.001)break;this.state.height+=(m.point[1]-n)/o.scale[1],this.verticalSpeed=0;break}t.meshes.length=0}L();$();function Dg(e,t,r,o,i,n){let{dx:a,dz:s,seen:m}=r,f,p,c;for(f of e)if(!(m.has(f)||a*t.nrm[f*2]+s*t.nrm[f*2+1]>=0))for(m.add(f),p=.4;p<2;p+=1.1)c=Ms(t.tri,f,o,i+p,n,a,s),c>=0&&c<r.best&&(r.best=c,r.found=!0,r.normal[0]=t.nrm[f*2],r.normal[1]=t.nrm[f*2+1])}function Gg(e,t){if(!e.visible)return!0;if(!e.geometry?.attributes?.position?.data||e.program?.depthTest===!1)return;e.geometry.bounds||_e(e.geometry);let r=e.worldMatrix,{center:o,radius:i}=e.geometry.bounds,{x:n,y:a,z:s,dx:m,dz:f,reach:p}=t;if(Math.hypot(r[0]*o[0]+r[4]*o[1]+r[8]*o[2]+r[12]-n,r[2]*o[0]+r[6]*o[1]+r[10]*o[2]+r[14]-s)>i*Math.hypot(r[0],r[1],r[2])+p)return;let c=bs(e),l=n-r[12]+c.origin[0],u=a-r[13]+c.origin[1],h=s-r[14]+c.origin[2];t.seen.clear();let g,y,v;for(g=Math.floor(Math.min(l,l+m*p)/8);g<=Math.floor(Math.max(l,l+m*p)/8);g++)for(y=Math.floor(Math.min(h,h+f*p)/8);y<=Math.floor(Math.max(h,h+f*p)/8);y++)v=c.cells.get(g+","+y),v&&Dg(v,c,t,l,u,h)}function Ug(e,t,r,o,i,n,a,s){Pe(oe.get(e)),s.x=t,s.y=r,s.z=o,s.dx=i,s.dz=n,s.reach=a,s.best=a,s.found=!1;let m;for(m of F.get(R.get(e)))if(!(m===e||z.get(m)==="terrain")){if(z.get(m)==="traffic"){Bs(m,t,r,o,i,n,a,s);continue}Zt(M.get(m),Gg,s)}return s.found?s.normal:null}function Df(e,t,r){let o=Math.hypot(e,t);return o>1e-6&&Ug(this.layer,r[0],r[1],r[2],e/o,-t/o,o+.3,this.hitData)}function Ng(e,t){let r=e*this.speed*t,{lat:o,lng:i}=this.state.latlng,{position:n,scale:a}=M.get(this.layer),s=Math.sin(this.state.heading)*r,m=Math.cos(this.state.heading)*r,f=Rt.call(this,this.local),p;for(p=0;p<f.length;p++)f[p]=n[p]+a[p]*f[p];let c=Df.call(this,s,m,f);if(c){let l=s*c[0]-m*c[1];s-=l*c[0],m+=l*c[1],Df.call(this,s,m,f)&&(s=m=0)}this.state.latlng=new d.LatLng(o+m/111320,i+s/(111320*Math.cos(o*B))),this.state.phase+=Math.hypot(s,m)/1.6*Math.PI}yo();$();Z();vr();J();function Fg(e,t,r){let o=this.layer._map;if(e||t){let n=k(o)*B,a=Ps(-this.state.heading-n);Math.abs(a)>.001&&Fe(o,_(o),(n+a*Math.min(1,r*4))*tt),o.setView(this.state.latlng,o.getZoom(),{animate:!1})}let i=e?.9:0;return Math.abs(this.swing-i)>.001?(this.swing+=(i-this.swing)*Math.min(1,r*10),!0):!1}function jg(e,t,r,o,i,n){o&&(e.state.heading=Ps(e.state.heading+o*2.5*i),n=!0),r&&(Ng.call(e,r,i),n=!0),n&&Ig.call(e,t),Fg.call(e,r,o,i)&&(n=!0),n&&vs.call(e)}function Wg(e){let t=this.layer;this.frame=requestAnimationFrame(this.step);let r=Math.min(.1,(e-(this.last??e))/1e3);if(this.last=e,!w.get(t))return;let o=!1,i,n;if(e>=this.nextClearanceCheck&&(this.nextClearanceCheck=e+250,Ts.call(this)&&(o=!0)),!this.meshes){this.meshes=[];for([i]of nn)this.meshes.push(dr(t,ci(Ls[i])));o=!0}let a=M.get(t).position[1]+Rt.call(this,this.local)[1]*M.get(t).scale[1];_g.call(this,r)&&(o=!0);let s=0,m=0;for(n of this.keys)s+=on[n]?.[0]||0,m+=on[n]?.[1]||0;s=Math.sign(s),m=Math.sign(m),jg(this,a,s,m,r,o)}function Ss(){let e=this.layer._map;if(this.saved||!e)return;this.state.latlng=e.getCenter(),this.state.height=this.verticalSpeed=0;let t=e.getSize().y*1.5/this.distance,r=Math.min(e.getMaxZoom(),Math.log2(t*rt*Math.cos(this.state.latlng.lat*B)/256)),o;this.saved={zoom:e.getZoom(),pitch:_(e),scrollWheelZoom:e.options.scrollWheelZoom,handlers:[]};for(o of Cg)e[o]?.enabled()&&this.saved.handlers.push(o);for(o of this.saved.handlers)e[o].disable();e.options.scrollWheelZoom=this.saved.scrollWheelZoom&&"center",this.state.heading=-k(e)*B,e.setView(this.state.latlng,r,{animate:!1}),Ht(e,75),Ts.call(this),d.DomEvent.on(document,"keydown keyup",this.onKey),d.DomEvent.on(window,"blur",this.onBlur),d.DomEvent.on(e.getContainer(),"pointerdown pointermove pointerup pointercancel",this.onPointer),e.on("terrainchange",this.onTerrain),this.button.setAttribute("aria-pressed","true"),this.button.style.background="#e4e4e4",this.hint.style.display="",this.last=void 0,this.nextClearanceCheck=0,this.frame=requestAnimationFrame(this.step)}function $g(){this.saved?ws.call(this):Ss.call(this)}function Vg(e,{speed:t,distance:r,...o}){let i=new d.Layer;Xt.set(i,"walk"),At(i,o);let n=new Set,a=d.DomUtil.create("div","leaflet-bar leaflet-control");a.style.cssText="display:flex;align-items:center;background:#fff;";let s=d.DomUtil.create("button","",a);s.type="button",s.title="Walk",s.setAttribute("aria-label","Walk"),s.setAttribute("aria-pressed","false"),s.textContent="\u{1F6B6}",s.style.cssText="width:30px;height:30px;padding:0;border:0;border-radius:4px;background:#fff;font-size:18px;line-height:30px;cursor:pointer;";let m=d.DomUtil.create("small","",a);m.style.cssText="display:none;padding:0 8px;color:#333;white-space:nowrap;",m.textContent="W/S: run \xB7 A/D: turn \xB7 hold Space: ascend \xB7 drag: look around \xB7 Esc: exit",d.DomEvent.disableClickPropagation(a);let f={layer:i,speed:t,distance:r,keys:n,container:a,button:s,hint:m,meshes:null,frame:null,last:void 0,nextClearanceCheck:0,swing:0,verticalSpeed:0,saved:null,hitData:null,local:null,state:e.walker={latlng:null,heading:0,phase:0,height:0}};ps.set(i,f.state),f.step=Wg.bind(f),f.onKey=kg.bind(f),f.onBlur=Tg.bind(f),f.onPointer=Pg.bind(f),f.onTerrain=Sg.bind(f),f.start=Ss.bind(f),f.stop=ws.bind(f),f.toggle=$g.bind(f),e._walk=f,d.DomEvent.on(s,"click",f.toggle)}function Gf(e){d.Util.setOptions(this,e),Vg(this,this.options)}function Zg(e){let t=jt.get(e);if(t?.control&&t.control!==this)throw this._map=null,new Error("Only one Walk control can be active per map");return t||(t={control:null,hitData:{x:0,y:0,z:0,dx:0,dz:0,reach:0,best:0,found:!1,seen:new Set,intersections:[],nodes:[],normal:[0,0]},local:[0,0,0]},jt.set(e,t)),t.control=this,t.local.fill(0),t.hitData.seen.clear(),t.hitData.normal.fill(0),this._walk.hitData=t.hitData,this._walk.local=t.local,this._walk.layer.addTo(e),this._walk.container}function qg(e){let t=jt.get(e);t?.control===this&&(this._walk.stop(),this._walk.layer.remove(),t.control=null,t.hitData.seen.clear(),this._walk.hitData=null,this._walk.local=null)}Ka();var no=class extends ht(d.Control){static initHooks=!0;static defaultOptions={position:"bottomright",speed:70,distance:20};constructor(t){super(t),d.version.startsWith("2.")&&(Gf.call(this,t),this.callInitHooks())}};Object.assign(no.prototype,{onAdd:Zg,onRemove:qg});d.version.startsWith("1.")&&(no.prototype.options=Object.assign(Object.create(d.Control.prototype.options),no.defaultOptions),no.prototype.initialize=Gf);d.Control.Walk=no;var ao=new WeakMap;var zr=new WeakMap;L();function Hg(){ao.get(this).off(zr.get(this),this),ao.set(this,null),zr.set(this,null)}var Ar=new WeakMap;L();function ks(e,t){let r=$e.get(e);if(!M.get(e)||!ee.get(e))return null;let o,i,n,a,s,m,f;for(o of ua(e,t,M.get(e).children,!!r)){if(r){for(i=o.object;i&&i!==r;)i=i.parent;if(i===r)return{id:r.id,properties:r.extras,model:r,mesh:o.object,point:o.point}}if(n=o.object.extras?.featureFaces,!!n)for(a=0,s=n.length-1;a<=s;)if(m=a+s>>1,f=n[m],o.faceIndex<f.faceStart)s=m-1;else if(o.faceIndex>=f.faceEnd)a=m+1;else return{...f,mesh:o.object,point:o.point}}return null}function li(e){ke.set(e,null),Ot(e,null),zt(e,null),e.fire("featurehover",{feature:null})}function Xg(e,t){if(t.buttons||e._map.dragging?.moving()||e._map._animatingZoom){ke.get(e)&&li(e);return}ke.set(e,ks(e,t)),Ot(e,ke.get(e)),zt(e,ke.get(e),t),e.fire("featurehover",{feature:ke.get(e),originalEvent:t})}function Jg(e){Xg(this,e)}function Kg(e,t){let r=ks(e,t);ke.set(e,r),Ot(e,r),zt(e,r,t),e.fire("featureclick",{feature:r,originalEvent:t})}function Qg(e){Kg(this,e)}function ey(){li(this)}async function ty(e,t){try{await fi(e,t),Le.get(e).resolve()}catch(r){e.fire("error",{error:r})}}function sn(e,t){if(!D.get(e)){let r=t.getCenter();D.set(e,new d.LatLng(r.lat,r.lng))}(ae.get(e)||X.get(e)||e.options.tooltip||We.get(e))&&(Ae.set(e,t.getContainer()),Ar.get(e)||Ar.set(e,{mousemove:Jg,click:Qg,mouseleave:ey}),e.options.tooltip&&(Re.set(e,d.DomUtil.create("div","leaflet-3d-tooltip",Ae.get(e))),Re.get(e).hidden=!0,Re.get(e).setAttribute("role","tooltip"),Re.get(e).setAttribute("aria-live","polite"),Re.get(e).style.cssText="position:absolute;z-index:600;max-width:220px;padding:10px 12px;border:1px solid #6b5140;border-radius:6px;background:#fffaf0;box-shadow:0 3px 12px #0005;color:#30251d;font:13px/1.45 sans-serif;pointer-events:none"),d.DomEvent.on(Ae.get(e),Ar.get(e),e)),M.get(e)&&ty(e,t)}var er=new WeakMap;var Ke=new WeakMap;var tr=new WeakMap;$();var Cs={x:0,y:0};var Ie=new WeakMap;var ge=new WeakMap;var It=new WeakMap;var mn={size:[null,null],format:"r32float",usage:null};var _s={texture:null};var Uf={bytesPerRow:null};var Es=[null,null];function ry(e,t,r,o){let i,n,a;for(i=0;i<256;i++)for(n=0;n<256;n++)a=t[i*256+n],!(!Number.isFinite(a)||a<=-1e3)&&(e.elevations[r+i*o*256+n]=a,e.low=Math.min(e.low,a),e.high=Math.max(e.high,a))}function oy(e,t){let r=t.max.x-t.min.x+1,o=t.max.y-t.min.y+1,n={elevations:new Float32Array(r*o*65536).fill(-1e9),low:1/0,high:-1/0},a,s,m,f,p,c;for([a,s]of e)m=a.split("/"),f=Number(m[0]),p=Number(m[1]),c=(p-t.min.y)*256*r*256+(f-t.min.x)*256,ry(n,s,c,r);return n}function iy(e,t){let r=w.get(e).device;if(ge.get(e)?.device===r)return ge.get(e);let o=er.get(e),i=o.max.x-o.min.x+1,n=o.max.y-o.min.y+1,{elevations:a,low:s,high:m}=oy(ot.get(e),o);return Ie.get(e)&&W(e,Ie.get(e).texture),Ie.set(e,{texture:r.createTexture((mn.size[0]=i*256,mn.size[1]=n*256,mn.usage=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST,mn)),low:Number.isFinite(s)?s:Ke.get(e),high:Number.isFinite(m)?m:Ke.get(e)}),r.queue.writeTexture((_s.texture=Ie.get(e).texture,_s),a,(Uf.bytesPerRow=i*1024,Uf),(Es[0]=i*256,Es[1]=n*256,Es)),_s.texture=null,It.set(e,new Map),ge.set(e,Ue(e,{baseTexture:t,unlit:!0,terrain:Ie.get(e),alphaMode:"BLEND",depthWrite:!0,doubleSided:e.options.doubleSided})),ge.get(e)}var Os={size:null,usage:null};function ny(e){let t=(e+1)**2,r=new Float32Array(t*3),o=new Float32Array(t*3),i=new Float32Array(t*2),n=new Uint16Array(e*e*6),a,s,m,f,p,c,l=0,u=0;for(a=0;a<=e;a++)for(s=0;s<=e;s++)r[l*3]=s/e,r[l*3+2]=a/e,o[l*3+1]=1,i[l*2]=s/e,i[l*2+1]=a/e,l++,a<e&&s<e&&(m=a*(e+1)+s,f=m+1,p=m+e+1,c=p+1,n[u++]=m,n[u++]=p,n[u++]=f,n[u++]=f,n[u++]=p,n[u++]=c);return{position:{size:3,data:r},normal:{size:3,data:o},uv:{size:2,data:i},index:{data:n}}}function ay(e,t){let r=w.get(e).device,o=It.get(e).get(t);if(!o){o=ny(t);let i,n;for([i,n]of Object.entries(o))n.size||=1,n.count=n.data.length/n.size,n.indexFormat="uint16",n.buffer=r.createBuffer((Os.size=Math.max(4,n.data.byteLength),Os.usage=i==="index"?GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,Os)),r.queue.writeBuffer(n.buffer,0,n.data);It.get(e).set(t,o)}return o}function sy(e,t,r,o){let i=Ke.get(e),n=Math.min(Ie.get(e).low,i)-i,a=Math.max(Ie.get(e).high,i)-i;return{device:w.get(e).device,attributes:t,drawRange:{start:0,count:t.index.count},bounds:{min:[0,n,0],max:[1,a,1],center:[.5,(n+a)/2,.5],radius:Math.hypot(r,a-n,o)/2/Math.max(r,1,o)}}}async function my(e,t,r,o){if(!await tr.get(e)||!e._map||me.get(e._map)!==e||pe.get(t)!==e||o.request.signal.aborted||!I.get(t).has(`${r.z}/${r.x}/${r.y}`)||I.get(e).has(o))return;let n=Math.max(1,Math.min(64,256/2**(r.z-ye.get(e)))),a=e._map,s=a.options.crs,m=s.project(D.get(e)),f=Math.cos(D.get(e).lat*B),p=s.scale(r.z),c=2**(ye.get(e)-r.z),l=Cs;l.x=r.x*256,l.y=r.y*256;let u=s.transformation.untransform(l,p);l.x=(r.x+1)*256,l.y=(r.y+1)*256;let h=s.transformation.untransform(l,p),x=w.get(e).device,g=o.texture,y=iy(e,g),v=ay(e,n),S=Ke.get(e),T=(h.x-u.x)*f,P=-(h.y-u.y)*f,A=sy(e,v,T,P),Q={position:[(u.x-m.x)*f,0,-(u.y-m.y)*f],rotation:[0,0,0],scale:[T,1,P],worldMatrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],children:[],visible:!0,device:x,geometry:A,program:y,texture:g,terrain:[r.x*256*c-er.get(e).min.x*256,r.y*256*c-er.get(e).min.y*256,256*c,S],tile:o,opacity:t.options.opacity??1,id:Mt.value++,renderOrder:t.options.zIndex||0,fadeDuration:250,fadeStart:o.loadedAt,ground:!0,_rasterSource:t};o.mesh.visible=!1,q(Q,M.get(e)),E(e),I.get(e).set(o,Q)}async function zs(e,t,r){if(pe.get(e)&&r.done&&!r.request.signal.aborted&&I.get(e).get(`${t.z}/${t.x}/${t.y}`)===r)try{await my(pe.get(e),e,t,r)}catch(o){e.fire("tileerror",{tile:r,coords:t,error:o})}}function ui(e,t){if(!I.get(e)||pe.get(e)===t)return;let r;for(r of I.get(e).values())pe.get(e)&&So(pe.get(e),r),r.mesh&&(r.mesh.visible=!0,q(r.mesh,M.get(e)));if(pe.set(e,t||null),t)for(r of I.get(e).values())r.done&&zs(e,r.coords,r)}async function fy(e,t,r){try{await r,Le.get(e).resolve(),ui(e,me.get(t))}catch(o){e.fire("error",{error:o})}}var py=new Map;var cy=new Map;function ly(e,t){return e.tile.coords.z-t.tile.coords.z||e.distance-t.distance}var fn=[null];var Dt=new WeakMap;$();var pn={size:[null,null],format:"rgba8unorm",usage:null};var uy={addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",magFilter:"linear",minFilter:"linear"};var As={size:null,usage:null};var dy=[0,0,0,1,0,0,0,0,1,1,0,1];var hy=[0,1,0,0,1,0,0,1,0,0,1,0];var gy=[0,0,1,0,0,1,1,1];var yy=[0,2,1,1,2,3];function xy(e){let t={position:{size:3,data:new Float32Array(dy)},normal:{size:3,data:new Float32Array(hy)},uv:{size:2,data:new Float32Array(gy)},index:{data:new Uint16Array(yy)}},r,o;for([r,o]of Object.entries(t))o.count=o.data.length/(o.size||1),o.indexFormat="uint16",o.buffer=e.createBuffer((As.size=o.data.byteLength,As.usage=r==="index"?GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST:GPUBufferUsage.VERTEX|GPUBufferUsage.COPY_DST,As)),e.queue.writeBuffer(o.buffer,0,o.data);return{device:e,attributes:t,drawRange:{start:0,count:t.index.count}}}function vy(e,t){let r=w.get(e).device,o={device:r,texture:r.createTexture((pn.size[0]=t.image.width,pn.size[1]=t.image.height,pn.usage=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT,pn)),sampler:r.createSampler(uy),image:t.image,format:"rgba8unorm",srgb:!1,uploaded:null},i=Wr,n=wo,a=Lo;i.source=t.image,i.flipY=!1,n.texture=o.texture,a[0]=t.image.width,a[1]=t.image.height,r.queue.copyExternalImageToTexture(i,n,a),i.source=null,n.texture=null,o.uploaded=t.image,ge.get(e)||ge.set(e,Ue(e,{baseTexture:o,unlit:!0,alphaMode:"BLEND",doubleSided:e.options.doubleSided})),Dt.get(e)||Dt.set(e,xy(r));let{coords:s}=t,m=e._map.options.crs,f=m.project(D.get(e)),p=Math.cos(D.get(e).lat*B),c=m.scale(s.z),l=Cs;l.x=s.x*256,l.y=s.y*256;let u=m.transformation.untransform(l,c);l.x=(s.x+1)*256,l.y=(s.y+1)*256;let h=m.transformation.untransform(l,c),x=(h.x-u.x)*p,g=-(h.y-u.y)*p;t.texture=o,t.mesh={position:[(u.x-f.x)*p,0,-(u.y-f.y)*p],rotation:[0,0,0],scale:[x,1,g],worldMatrix:[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],children:[],visible:!0,device:r,geometry:Dt.get(e),program:ge.get(e),texture:o,opacity:e.options.opacity,id:Mt.value++,renderOrder:e.options.zIndex||0,tile:t,fadeDuration:250,ground:!0,_rasterSource:e},q(t.mesh,M.get(e))}async function wy(e,t){try{await re.get(e);let r=await to(e.options.archive,t.coords.z,t.coords.x,t.coords.y,t.request.signal);if(t.request.signal.aborted){r?.image?.close();return}if(!r)throw new Error(`Tile ${t.coords.z}/${t.coords.x}/${t.coords.y} is not in the offline archive`);try{if(r.image)t.image=r.image;else{fn[0]=r.data;let o=new Blob(fn);fn[0]=null,t.image=await createImageBitmap(o)}}catch{throw fn[0]=null,new Error(`Unable to decode tile ${t.coords.z}/${t.coords.x}/${t.coords.y}`)}if(t.request.signal.aborted){t.image.close(),t.image=null;return}vy(e,t),t.loadedAt=performance.now(),t.done=!0,Ee.set(e,(Ee.get(e)||0)+1),zs(e,t.coords,t),e.fire("tileload",{tile:t,coords:t.coords}),E(e)}catch(r){if(t.request.signal.aborted)return;t.error=r.message,Ee.set(e,(Ee.get(e)||0)+1),e.fire("tileerror",{tile:t,coords:t.coords,error:r}),e.fire("error",{error:r,coords:t.coords})}finally{fe.set(e,fe.get(e)-1),e._map&&(Rs(e),Co(e),fe.get(e)||e.fire("load"),E(e))}}function Ly(e,t){t.started=!0;let r=fe.get(e)===0;return fe.set(e,fe.get(e)+1),e.fire("tileloadstart",{tile:t,coords:t.coords}),r&&e.fire("loading"),wy(e,t)}function Rs(e){let t=e._map;if(!t)return;let r=t.project(t.getCenter(),0).divideBy(256),o=[],i,n;for(i of I.get(e).values())i.started||i.request.signal.aborted||({coords:n}=i,o.push({tile:i,distance:Math.hypot((n.x+.5)/2**n.z-r.x,(n.y+.5)/2**n.z-r.y)}));o.sort(ly);for({tile:i}of o){if(fe.get(e)>=4)break;Ly(e,i)}}function by(e,t){let r=I.get(e),o,i,n;for([o,i]of r)!t.has(o)&&!i.done&&ko(e,i);for([o,n]of t)r.has(o)||(i={coords:n,request:new AbortController,done:!1},r.set(o,i))}var Rr=[0,0];var Ir=[0,0];function My(e,t,r){let o=e.getBounds(),i=e.project(o.getNorthWest(),r).divideBy(256).floor(),n=e.project(o.getSouthEast(),r).divideBy(256).floor();Rr[0]=t.maxLat,Rr[1]=t.minLon,Ir[0]=t.minLat,Ir[1]=t.maxLon;let a=t.maxLat===void 0||t.minLon===void 0?null:e.project(Rr,r).divideBy(256).floor(),s=t.minLat===void 0||t.maxLon===void 0?null:e.project(Ir,r).divideBy(256).floor(),m=e.project(e.getCenter(),r).divideBy(256).floor();return{minX:Math.max(0,i.x,a?.x??0,m.x-6),maxX:Math.min(2**r-1,n.x,s?.x??2**r-1,m.x+6),minY:Math.max(0,i.y,a?.y??0,m.y-6),maxY:Math.min(2**r-1,n.y,s?.y??2**r-1,m.y+6)}}function Ds(e){let t=e._map;if(!t||!R.get(e)||!U.get(e))return;let r=Math.max(U.get(e).minZoom??0,Math.min(Math.round(t.getZoom()),e.options.maxZoom,e.options.maxNativeZoom));cr.set(e,r);let o=My(t,U.get(e),r),i=py;i.clear();let n,a,s,m,f;for(n=o.minX;n<=o.maxX;n++)for(a=o.minY;a<=o.maxY;a++)i.set(`${r}/${n}/${a}`,{z:r,x:n,y:a});sr.set(e,new Set(i.keys()));let p=cy;p.clear();let c=Math.max(U.get(e).minZoom??0,r-2),l=2**(r-c);if(c<r)for([s,m]of i)I.get(e).get(s)?.done||(f={z:c,x:Math.floor(m.x/l),y:Math.floor(m.y/l)},p.set(`${f.z}/${f.x}/${f.y}`,f));let u=new Map(p);for([s,m]of i)u.set(s,m);i.clear(),p.clear(),by(e,u),Rs(e),Co(e)}async function By(e,t,r){try{await Promise.all([r,re.get(e)]),e._map===t&&t.hasLayer(e)&&Ds(e)}catch(o){e.fire("error",{error:o})}}function Ty(e,t){D.get(e)||D.set(e,t.getCenter());let r=fi(e,t);fy(e,t,r),By(e,t,r)}var Gs=new WeakMap;var Us=new WeakMap;var di=new WeakMap;var Dr=new WeakMap;var so=new WeakMap;var Ns=new WeakMap;async function Py(e){let{backend:t,archive:r,controller:o,tiles:i}=e,n,a;for(;e.next<i.length;){if(o.signal.throwIfAborted(),n=i[e.next++],a=await to(r,n.z,n.x,n.y,o.signal),!a||a.data.byteLength!==256*256*4)throw new Error(`Missing or invalid Float32 terrain tile ${n.z}/${n.x}/${n.y}`);ot.get(t).set(`${n.x}/${n.y}`,new Float32Array(a.data))}}function Sy(e){if(!e.ok)throw new Error(`Bridges: HTTP ${e.status}`);return e.json()}L();function ky(e,t){let r=e._map;ye.set(e,t.maxZoom),Rr[0]=t.maxLat,Rr[1]=t.minLon;let o=r.project(Rr,ye.get(e)).divideBy(256).floor();Ir[0]=t.minLat,Ir[1]=t.maxLon;let i=r.project(Ir,ye.get(e)).divideBy(256).floor();er.set(e,new d.Bounds(o,i));let n=[],a=r.project(r.getCenter(),ye.get(e)).divideBy(256),s,m;for(s=o.x;s<=i.x;s++)for(m=o.y;m<=i.y;m++)n.push({z:ye.get(e),x:s,y:m,distance:Math.hypot(s+.5-a.x,m+.5-a.y)});return n.sort(gs),n}var mo=new WeakMap;$();L();function Cy([e,t,r],o,i,n,a){let s=o.project(new d.LatLng(t,e));return[(s.x-i.x)*n,r-a,-(s.y-i.y)*n]}function _y(e,t){let r=[],o=0,i,n,a;for(i of e){for(n=[],a=0;a<i.length;a++)n.push({x:t[o+a][0],y:t[o+a][1]});r.push(n),o+=i.length}return r}function Ey(e,t,r){let o=[],i=1/0,n=1/0,a=-1/0,s=-1/0,m,f,p,c,l,u,h,x;for(m of r){f=[];for(p of m)f.push(t[p]);o.push(f)}for(c of t)i=Math.min(i,c[0]),n=Math.min(n,c[1]),a=Math.max(a,c[0]),s=Math.max(s,c[1]);let g={triangles:o,min:[i,n],max:[a,s]};for(l=Math.floor(g.min[0]/64);l<=Math.floor(g.max[0]/64);l++)for(u=Math.floor(g.min[1]/64);u<=Math.floor(g.max[1]/64);u++)h=`${l}/${u}`,x=ct.get(e).get(h),x||ct.get(e).set(h,x=[]),x.push(g)}function Oy(e,t,r){let{position:o,normal:i,color:n}=e,a,s,m,f,p,c,l,u,h;for([a,s,m]of r)for(f=t[a],p=t[s],c=t[m],(p[2]-f[2])*(c[0]-f[0])-(p[0]-f[0])*(c[2]-f[2])<0&&(l=s,s=m,m=l),u=0;u<6;u++)l=u===0||u===3?a:u===1||u===5?s:m,h=t[l],o.push(h[0],h[1]-(u>=3?1.2:0),h[2]),i.push(0,u>=3?-1:1,0),n.push(.6,.58,.54)}function zy(e,t,r){let{position:o,normal:i,color:n}=e,a=Math.hypot(r[0]-t[0],r[2]-t[2])||1,s=(r[2]-t[2])/a,m=-(r[0]-t[0])/a,f,p;for(f=0;f<6;f++)p=f===0||f===3||f===5?t:r,o.push(p[0],p[1]-(f===2||f>=4?1.2:0),p[2]),i.push(s,0,m),n.push(.6,.58,.54)}function Ay(e,t,r){let o=0,i,n;for(i of r){for(n=0;n<i.length;n++)zy(e,t[o+n],t[o+(n+1)%i.length]);o+=i.length}}function Ry(e,t){let{backend:r,map:o,zoom:i,crs:n,origin:a,metres:s,base:m}=e,f=[],p,c,l,u,h,x,g,y,v,S,T;for(p of t)c=p.slice(0,-1),c.length>=3&&f.push(c);if(!f.length)return;let P=[],A=[];for(p of f)for([l,u,h]of p)x=o.project([u,l],i),P.push([x.x,x.y,h]);for(p of f)for(g of p)A.push(Cy(g,n,a,s,m));try{y=_y(f,P),[v,...S]=y,T=na(v,S)}catch{return}Ey(r,P,T),Oy(e,A,T),Ay(e,A,f)}function Iy(e,t){let r=e._map,o=r.options.crs,i=ye.get(e),n=o.project(D.get(e)),a=Math.cos(D.get(e).lat*B),s=M.get(e).position[1],m=[],f=[],p=[];ct.set(e,new Map);let c={backend:e,map:r,crs:o,zoom:i,origin:n,metres:a,base:s,position:m,normal:f,color:p},l,u,h;for({geometry:l}of t.features)if(!(l.type!=="Polygon"&&l.type!=="MultiPolygon"))for(u=l.coordinates,h=0;h<(l.type==="Polygon"?1:u.length);h++)Ry(c,l.type==="Polygon"?u:u[h]);m.length&&mo.set(e,dr(e,{position:m,normal:f,color:p}))}function Dy(e,t,r){Te.set(e,!0),Ke.set(e,pr(e,D.get(e))??0);let o;for(o of Object.values(t._layers))ni(o),pi(o,e);r&&Iy(e,r),t.fire("terrainchange"),E(e),e.fire("terrainready")}async function Fs(e){if(Dr.get(e)||!e._map)return;Dr.set(e,!0),Te.set(e,!1);let t=new AbortController;di.set(e,t);let r;try{if(!so.get(e))throw new Error("Terrain layer requires a PMTiles or COG elevation archive");let o=ma({source:{type:"raster",url:so.get(e),archive:e.options.archive,asset:e.options.asset,workerUrl:e.options.workerUrl}});Ns.set(o,e._map),Us.set(e,o),await re.get(o);let i=U.get(o);if(i.tileType!==0||i.minZoom!==i.maxZoom)throw new Error("Expected a single-zoom Float32 terrain archive");let n=e._map,a=ky(e,i),s={backend:e,archive:o,controller:t,tiles:a,next:0},m=[];for(r=0;r<Math.min(4,a.length);r++)m.push(Py(s));await Promise.all(m);let f=e.options.bridges&&await fetch(e.options.bridges,{signal:t.signal}).then(Sy);return t.signal.aborted||e._map!==n?void 0:(Dy(e,n,f),!0)}catch(o){return t.signal.aborted||e.fire("error",{error:o}),!1}finally{Dr.set(e,!1)}}function Gy(){Fs(this.backend).then(this.resolve,this.reject)}function Uy(e){z.get(e)==="raster"&&ui(e,this)}function Ny(e,t){if(Be.get(t)||me.get(t)&&me.get(t)!==e)throw new Error("Only one terrain layer can be active per map");if(Gs.get(e)){Be.set(t,{layer:e,map:t,terrainCache:new Map,terrainController:new AbortController}),sn(e,t),t.fire("terrainchange");return}if(me.set(t,e),sn(e,t),M.get(e))tr.set(e,Fs(e));else{let r=Promise.withResolvers();tr.set(e,r.promise),e.once("ready",Gy,{backend:e,...r})}t.eachLayer(Uy,e),t.fire("terrainchange")}var js=[];function Fy(){js.shift()?.fire("load")}function jy(){this._image||this._initImage(),this._image.complete&&this._image.naturalWidth&&(js.push(this),queueMicrotask(Fy))}function Wy(e,t){switch(z.get(e)){case"3d":return sn(e,t);case"raster":return Ty(e,t);case"terrain":return Ny(e,t);case"image":return jy.call(e,t);case"time":return lh.call(e,t)}}function $y(e){if(!e._map)return;let t;for(t of Y.get(e).values())ro(e,t);Y.get(e).clear(),oo(e)}function Vy(e){let t={};return ae.get(e)&&(t.moveend=t.zoomend=t.rotate=t.pitch=t.resize=oo.bind(null,e)),(X.get(e)||ae.get(e))&&(t.terrainchange=$y.bind(null,e)),t}function Zy(e){let t=Ds.bind(null,e);return{moveend:t,zoomend:t,rotate:t,pitch:t,resize:t}}function qy(){return{}}L();function Hy(e){return!_r.get(e)&&(e instanceof d.GridLayer||e instanceof d.Polyline||e instanceof d.CircleMarker||e instanceof d.Marker&&!(e.options.icon instanceof d.DivIcon)||e instanceof d.ImageOverlay&&!(e instanceof d.VideoOverlay)&&!(e instanceof d.SVGOverlay))}function Yy(e){let t=Hy(this);t&&((this instanceof d.GridLayer||this instanceof d.ImageOverlay)&&(this.options.crossOrigin||=!0),this instanceof d.Marker&&(this.options.icon.options.crossOrigin||=!0));let r=e.target;r.hasLayer(this)&&(z.get(this)?(this._map=r,this._zoomAnimated=r._zoomAnimated,z.get(this)!=="pending"&&z.get(this)!=="time"&&(zr.set(this,z.get(this)==="raster"?Zy(this):_r.get(this)?Vy(this):qy()),ao.set(this,r),r.on(zr.get(this),this),this.once("remove",Hg,this)),Wy(this,r),this.fire("add"),r.fire("layeradd",{layer:this})):mt.value._layerAdd.call(this,e),!(!t||!e.target.hasLayer(this))&&ga(this,e.target))}L();var Ws=[];var $s={value:Promise.resolve()};function Xy(e,t){X.set(e,!0),At(e,t)}function Jy(e){return e.data===void 0&&(e.tileJSON!==void 0||typeof e.url=="string"&&/\{[zxy]\}|%7B[zxy]%7D/i.test(e.url))}L();var be=new WeakMap;async function Ky(e){let t=new URL(e.tileJSON,document.baseURI).href,r=await fetch(t);if(!r.ok)throw new Error(`TileJSON: HTTP ${r.status}`);let o=await r.json();if(!o||!Array.isArray(o.tiles)||!o.tiles.length||typeof o.tiles[0]!="string")throw new Error("TileJSON requires a tile URL template");return{...e,url:new URL(o.tiles[0],t).href,minNativeZoom:e.minNativeZoom??o.minzoom,maxNativeZoom:e.maxNativeZoom??o.maxzoom,attribution:e.attribution??o.attribution}}function Qy(e){let t="",r=!1,o=!1,i=0,n="";for(i=0;i<e.length;i++)n=e[i],!(!r&&n===","&&/^\s*[\]}]/.test(e.slice(i+1)))&&(t+=n,o?o=!1:r&&n==="\\"?o=!0:n==='"'&&(r=!r));return t}function ex(e,t){if(t.quoted)return t.escaped?(t.escaped=!1,e==="'"?e:"\\"+e):e==="\\"?(t.escaped=!0,""):e===t.quoted?(t.quoted="",'"'):e==='"'?'\\"':e;if(e==='"'||e==="'")return t.quoted=e,'"'}function tx(e,t,r){if(r==="/"){for(;t<e.length&&e[t]!==`
3
+ `;)t++;return t}let o=e.indexOf("*/",t+2);if(o<0)throw new Error("Unterminated style comment");return o+1}function rx(e){let t="",r=0,o="",i="",n,a={quoted:"",escaped:!1};for(r=0;r<e.length;r++){if(o=e[r],i=e[r+1],n=ex(o,a),n!==void 0){t+=n;continue}o==="/"&&(i==="/"||i==="*")?(r=tx(e,r,i),t+=i==="/"?`
4
+ `:" "):t+=o}return t}function ox(e){let t=0,r=null;if(!Array.isArray(e))throw new Error("Invalid vector style layers");for(t=0;t<e.length;t++)if(r=e[t],!r||typeof r.id!="string"||typeof r.type!="string")throw new Error("Invalid vector style layers")}function ix(e){let t=/^\s*(?:const|let|var)\s+otm_layers\s*=\s*/.exec(e);t&&(e=e.slice(t[0].length));let r=Qy(rx(e).trim().replace(/;$/,"")),o=JSON.parse(r),i=o.layers??o;return ox(i),i}async function nx(e){if(typeof e=="string"){let r=await fetch(e);if(!r.ok)throw new Error(`Vector style: HTTP ${r.status}`);e=ix(await r.text())}else e=e?.layers??e;if(!Array.isArray(e))throw new Error("Invalid vector style layers");let t;for(t of e)if(!t||typeof t.id!="string"||typeof t.type!="string")throw new Error("Invalid vector style layers");return e}function ax(e,t,r){if(!Number.isInteger(e)||!Number.isInteger(t)||!Number.isInteger(r)||e<0||t<e||r<t||r>24)throw new Error("Invalid vector tile zoom range")}async function sx(e){if(!e||typeof e!="object")throw new TypeError("Vector tiles require source options");e.tileJSON&&(e=await Ky(e));let{url:t,style:r,minNativeZoom:o=0,maxNativeZoom:i=14,maxZoom:n=19}=e,a;typeof t=="string"&&(t=t.replaceAll(/%7B([zxy])%7D/gi,"{$1}"));for(a of["{z}","{x}","{y}"])if(typeof t!="string"||!t.includes(a))throw new Error("Vector tiles require an XYZ URL template");return ax(o,i,n),r=await nx(r),{...e,url:t,style:r,minNativeZoom:o,maxNativeZoom:i,maxZoom:n}}async function mx(e){let t=await fetch(`${e}.json`);if(!t.ok)throw new Error(`Sprite ${e}.json: HTTP ${t.status}`);return{url:`${e}.png`,index:await t.json()}}var Vs="move zoom rotate pitch resize viewreset";function fx(e,t,r,o,i){let n=0;if(e==="all"){for(n=0;n<t.length;n++)if(!O(t[n],r,o,i))return!1;return!0}if(e==="any"){for(n=0;n<t.length;n++)if(O(t[n],r,o,i))return!0;return!1}throw new Error(`Unsupported vector style expression: ${e}`)}function px(e,t,r,o,i){let n=0,a=null;if(e==="coalesce"){for(n=0;n<t.length;n++)if(a=O(t[n],r,o),a!=null)return a;return null}if(e==="case"){for(n=0;n<t.length-1;n+=2)if(O(t[n],r,o))return O(t[n+1],r,o);return O(t[t.length-1],r,o)}throw new Error(`Unsupported vector style expression: ${e}`)}function Gr(e,t,r,o){return o&&typeof e=="string"?t[e]:O(e,t,r)}function cx(e,t,r,o,i){let n=Gr(t[0],r,o,i),a=O(t[1],r,o);switch(e){case"==":return n===a;case"!=":return n!==a;case"<=":return n<=a;case">=":return n>=a;case"<":return n<a;case">":return n>a;default:throw new Error(`Unsupported vector style expression: ${e}`)}}var Nf={black:[0,0,0,1],white:[255,255,255,1],gray:[128,128,128,1],blue:[0,0,255,1],red:[255,0,0,1],green:[0,128,0,1]};function lx(e){let t=/^rgba?\(([^)]+)\)$/.exec(e);if(t){let r=t[1].split(","),o=0,i=!0;for(o=0;o<r.length;o++)r[o]=Number(r[o]);for(r.length===3&&r.push(1),o=0;o<r.length;o++)Number.isFinite(r[o])||(i=!1);if(r.length===4&&i)return r}throw new Error(`Unsupported interpolated style color: ${e}`)}function ux(e){let t=0,r=0;e.length===4&&(e="#"+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]);let o=[];for(t=1;t<6;t+=2)r=parseInt(e.slice(t,t+2),16),o.push(r);return o.push(1),o}function Ur(e){return Object.hasOwn(Nf,e)?Nf[e]:/^#[0-9a-f]{3}$/i.test(e)||/^#[0-9a-f]{6}$/i.test(e)?ux(e):lx(e)}function dx(e,t,r){let o=O(e[1],t,r),i=e[0][0]==="exponential"?e[0][1]:1,n=0,a=0,s=0,m=0,f=null,p=null,c=0,l="";if(o<=e[2])return O(e[3],t,r);for(n=4;n<e.length;n+=2)if(!(o>e[n])){if(a=e[n-2],s=e[n],m=i===1?(o-a)/(s-a):(i**(o-a)-1)/(i**(s-a)-1),f=O(e[n-1],t,r),p=O(e[n+1],t,r),typeof f=="number"&&typeof p=="number")return f+(p-f)*m;for(f=Ur(f),p=Ur(p),c=0;c<3;c++)c&&(l+=","),l+=Math.round(f[c]+(p[c]-f[c])*m);return`rgba(${l},${f[3]+(p[3]-f[3])*m})`}return O(e.at(-1),t,r)}function Ff(e,t,r,o){let i=0,n=null;for(i=t;i<r;i++)if(n=e[i],n===o||n!==n&&o!==o)return!0;return!1}function Zs(e,t,r,o,i){let n=null;if(e==="!in")return n=Gr(t[0],r,o,i),!Ff(t,1,t.length,n);if(i)return n=Gr(t[0],r,o,!0),Ff(t,1,t.length,n);let a=O(t[1],r,o);return n=Gr(t[0],r,o,!1),a.includes(n)}function hx(e,t,r,o,i){if(e==="in")return Zs(e,t,r,o,i);if(e==="interpolate")return dx(t,r,o);throw new Error(`Unsupported vector style expression: ${e}`)}function gx(e,t,r,o){let i=0,n=0;if(e==="+"){for(i=0;i<t.length;i++)n+=O(t[i],r,o);return n}if(e==="-")return t.length===1?-O(t[0],r,o):O(t[0],r,o)-O(t[1],r,o);throw new Error(`Unsupported vector style expression: ${e}`)}function yx(e,t,r){let o=O(e[0],t,r),i=0,n=!1;for(i=1;i<e.length-1;i+=2)if(Array.isArray(e[i])?n=e[i].includes(o):n=e[i]===o,n)return O(e[i+1],t,r);return O(e[e.length-1],t,r)}function xx(e,t,r,o,i){if(e==="!")return!O(t[0],r,o,i);if(e==="!=")return Gr(t[0],r,o,i)!==O(t[1],r,o);if(e==="!in")return Zs(e,t,r,o,i);throw new Error(`Unsupported vector style expression: ${e}`)}function vx(e,t,r,o){switch(e){case"literal":return t[0];case"get":return r[t[0]];case"has":return Object.hasOwn(r,t[0]);case"zoom":return o;default:throw new Error(`Unsupported vector style expression: ${e}`)}}function wx(e,t,r){let o=O(e[0],t,r),i=e[1],n=0;for(n=2;n<e.length&&!(o<e[n]);n+=2)i=e[n+1];return O(i,t,r)}function Lx(e,t,r,o){if(e==="to-boolean")return!!O(t[0],r,o);if(e==="to-number"){let i=0,n=0;for(i=0;i<t.length;i++)if(n=Number(O(t[i],r,o)),Number.isFinite(n))return n;throw new Error("Invalid numeric style expression")}throw new Error(`Unsupported vector style expression: ${e}`)}function O(e,t,r,o=!1){if(!Array.isArray(e))return e;let i=e[0],n=e.slice(1),a=String(i);if(/^(?:literal|get|has|zoom)$/.test(a))return vx(i,n,t,r);switch(a[0]){case"a":return fx(i,n,t,r,o);case"!":return xx(i,n,t,r,o);case"=":case"<":case">":return cx(i,n,t,r,o);case"i":return hx(i,n,t,r,o);case"t":return Lx(i,n,t,r,o);case"c":return px(i,n,t,r,o);case"m":return yx(n,t,r);case"s":return wx(n,t,r);default:return gx(i,n,t,r)}}function Qe(e){return e._map.getZoom()+(be.get(e).styleZoomOffset??0)}function bx(){clearTimeout(this.timer),this.changedAt=performance.now(),this.timer=setTimeout(this.update.bind(this),180)}$();function qs(e,t){if(!Number.isFinite(t))throw new TypeError("Marker rotation must be finite");return e.options.rotation=t,e.update(),Ct(e),e}function cn(e,t,r){if(!r.along)return;let o=e.latLngToContainerPoint(r.along[0]),i=e.latLngToContainerPoint(r.along[1]),n=Math.atan2(i.y-o.y,i.x-o.x)/B;n>90?n-=180:n<-90&&(n+=180),t.options.rotation!==n*B&&qs(t,n*B)}function Mx(){let e;for(e of this.labels.values())e._mvtLabel&&cn(this._map,e,e._mvtLabel)}var hi=new WeakMap;function gi(e){let t=hi.get(e);t?.blobUrl&&(URL.revokeObjectURL(t.blobUrl),t.blobUrl=null)}function Bx({data:e}){gi(this);let t=this.waiting.get(e.id);t&&(this.waiting.delete(e.id),e.error?t.reject(new Error(e.error)):t.resolve(e))}function Tx(e){gi(this);let t=new Error(`Worker MVT: ${e.message}`),r;for(r of this.waiting.values())r.reject(t);this.waiting.clear(),He(this,t)}function Px(e){let{style:t,pane:r}=be.get(this),o,i;for([o]of t.entries())(e.getPane(`${r}-${o}`)||e.createPane(`${r}-${o}`)).style.zIndex=200+o;for(i of t)if(i.type==="background"){e.getContainer().style.background=O(i.paint["background-color"],{},Qe(this));break}this.session={},this.tiles=new Map,this.labels=new Map,this.waiting=new Map,this.retiring=new Set,this.inflight=0,this.sequence=0,this.changedAt=0,this.paintZoom=null;let n=hs(this.options.workerUrl||ds);hi.set(this,n),this.worker=n.worker,this.worker.onmessage=Bx.bind(this),this.worker.onerror=Tx.bind(this),this.refresh=bx.bind(this),this.rotateLabels=Mx.bind(this),e.on(Vs,this.refresh),e.on("move rotate pitch",this.rotateLabels),this.update()}function Sx(e){e.off(Vs,this.refresh),e.off("move rotate pitch",this.rotateLabels),clearTimeout(this.timer),this.session=null,this.worker.terminate(),gi(this),hi.delete(this);let t,r,o,i;for(t of this.waiting.values())t.reject(new DOMException("Layer removed","AbortError"));this.waiting.clear();for(r of this.tiles.values())r.controller.abort(),r.group?.remove();for(o of this.retiring)o.remove();for(i of this.labels.values())i.remove();this.tiles.clear(),this.labels.clear(),this.retiring.clear()}function kx(){if(!this.session)return;let{minNativeZoom:e,maxNativeZoom:t}=be.get(this),r=Math.max(e,Math.min(t,Math.floor(Qe(this)))),o=this._map.getBounds(),i=2**r,n=this._map.project(o.getNorthWest(),r).divideBy(256),a=this._map.project(o.getSouthEast(),r).divideBy(256),s,m,f,p;for(s of this.tiles.values())s.needed=!1;for(m=Math.floor(n.x);m<=Math.floor(a.x);m++)for(f=Math.max(0,Math.floor(n.y));f<=Math.min(i-1,Math.floor(a.y));f++)p=`${r}/${m}/${f}`,s=this.tiles.get(p),s||(s={key:p,coords:{z:r,x:m,y:f},controller:new AbortController},this.tiles.set(p,s)),s.needed=!0;this.prune(),this.pump(),this.updatePaint().catch(He.bind(null,this)),this.updateLabels().catch(He.bind(null,this))}function Nr(e,t,r,o,i){return e[t]===void 0?r:O(e[t],o,i)}function Cx(e,t,r){let o=Ur(Nr(e,"fill-color","#000",t,r)),i=Nr(e,"fill-outline-color",null,t,r),n=i===null?null:Ur(i),a=Nr(e,"fill-opacity",1,t,r)*o[3],s={r:o[0]/255,g:o[1]/255,b:o[2]/255},m=n?{r:n[0]/255,g:n[1]/255,b:n[2]/255}:null;return{fillColor:s,fillOpacity:a,color:m,weight:.5}}function _x(e,t,r,o){if(!e)return;let i=e,n=0,a="";if(typeof e[0]!="number"&&(i=O(e,r,o)),!Array.isArray(i))throw new TypeError("Style dash array must be an array");for(n=0;n<i.length;n++)n&&(a+=" "),a+=i[n]*t;return a}function Ex(e,t,r,o){let i=Nr(t,"line-width",1,r,o),n=Ur(Nr(t,"line-color","#000",r,o)),a=Nr(t,"line-opacity",1,r,o)*n[3],s=_x(t["line-dasharray"],i,r,o),m=e.layout?.["line-cap"]||"butt",f=e.layout?.["line-join"]||"miter";return{color:{r:n[0]/255,g:n[1]/255,b:n[2]/255},opacity:a,weight:i,dashArray:s,lineCap:m,lineJoin:f}}function Ox(e,t,r){let o=e.paint||{};return e.type==="fill"?Cx(o,t,r):Ex(e,o,t,r)}function Hs(e,t,r){return r>=(e.minzoom??0)&&r<(e.maxzoom??1/0)&&e.layout?.visibility!=="none"&&(!e.filter||O(e.filter,t,r,!0))}function Ys(e,t){let r=Ox(e.entry,e.properties,t);return Hs(e.entry,e.properties,t)||(r.opacity=0,r.fillOpacity=0),r}function zx(e,t){let r=Ys(e,t),{layer:o}=e;e.kind==="line"?r.dashArray!==o.options.dashArray?o.setStyle(r):o.setStyle({color:r.color,opacity:r.opacity,weight:r.weight}):(JSON.stringify(r.fillColor)!==JSON.stringify(o.options.fillColor)||r.fillOpacity!==o.options.fillOpacity)&&o.setStyle({fillColor:r.fillColor,fillOpacity:r.fillOpacity})}function fo(e,t){return e.session===t&&performance.now()-(e.changedAt||0)>=180}function xt(e=0){let t=Promise.withResolvers();return setTimeout(t.resolve,e),t.promise}async function Ax(){let e=Qe(this),t=this.session;if(this.paintZoom===e)return;let r=this.paintRevision=(this.paintRevision||0)+1,o=0,i,n;for(i of this.tiles.values())if(i.rendered)for(n of i.rendered){if(!fo(this,t)||this.paintRevision!==r||Qe(this)!==e)return;zx(n,e),++o%32===0&&await xt()}this.paintZoom=e}function Rx(e,t){return e.priority-t.priority}function Ix(e){let t=[],r,o;for(r of e.tiles.values())if(!(!r.needed||!r.labelCandidates))for(o of r.labelCandidates)t.push(o);return t.sort(Rx)}function Dx(e,t){e.size=O(e.entry.layout?.["text-size"]??12,e.properties,t),e.color=O(e.entry.paint?.["text-color"]??"#000",e.properties,t),e.halo=O(e.entry.paint?.["text-halo-color"]??"#fff",e.properties,t),e.haloWidth=O(e.entry.paint?.["text-halo-width"]??0,e.properties,t)}function Gx(e,t,r){let o=e._map,i=Qe(e);if(!Hs(t.entry,t.properties,i)||(Dx(t,i),!(t.size>0))||t.icon&&!be.get(e).spriteSheet?.index[t.icon]||t.along&&t.pixelBase*2**o.getZoom()<t.text.length*t.size*.6)return null;let n=o.latLngToContainerPoint(t.latlng);if(n.x<0||n.y<0||n.x>r.x||n.y>r.y)return null;let a=t.text.length*t.size*.65+16,s=[],m,f;for(m=Math.floor((n.x-a/2)/32);m<=Math.floor((n.x+a/2)/32);m++)for(f=Math.floor((n.y-t.size)/24);f<=Math.floor((n.y+t.size)/24);f++)s.push(`${m}:${f}`);return s}function Ux(e,t){let r;for(r of e)if(t.has(r))return!1;for(r of e)t.add(r);return!0}L();L();L();function Nx(e,t){let{x:r,y:o,width:i,height:n}=t.index[e.icon],[a,s]=e.iconOffset;return new d.DivIcon({className:"",html:`<div style="width:${i}px;height:${n}px;background:url(${t.url}) -${r}px -${o}px"></div>`,iconSize:[i,n],iconAnchor:[i/2-a,n/2-s]})}function Fx(e){let t=Math.floor(19.23076923076923),r=[],o="",i;for(i of e.split(" "))o&&Array.from(`${o} ${i}`).length>t?(r.push(o),o=i):o=o?`${o} ${i}`:i;return r.push(o),r}function jf(e,t){if(e.icon)return Nx(e,t);let r=document.createElementNS("http://www.w3.org/2000/svg","svg"),o=e.along?[e.text]:Fx(e.text),i=0,n,a,s,m;for(n of o)i=Math.max(i,Array.from(n).length);let f=Math.max(40,i*e.size*.65+12),p=e.size*1.2,c=o.length*p+12;r.setAttribute("width",f),r.setAttribute("height",c);let l={x:f/2,"text-anchor":"middle","font-family":"sans-serif","font-size":e.size,fill:e.color,stroke:e.halo,"stroke-width":e.haloWidth*2,"paint-order":"stroke"};for(m=0;m<o.length;m++){s=document.createElementNS(r.namespaceURI,"text");for(a of Object.keys(l))s.setAttribute(a,l[a]);s.setAttribute("y",c/2+(m-(o.length-1)/2)*p+e.size*.35),s.textContent=o[m],r.append(s)}return new d.Icon({iconUrl:`data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(r))}`,iconSize:[f,c],iconAnchor:[f/2,c/2]})}function Xs({error:e}){He(this,e)}function jx(e,t,r){let o=JSON.stringify([t.size,t.color,t.halo,t.haloWidth,t.icon]),i=be.get(e).spriteSheet,n=e.labels.get(r);if(n){if(n._mvtLabel=t,n._mvtLabelStyle===o)return cn(e._map,n,t),!1;n.setIcon(jf(t,i))}else{let{pane:a}=be.get(e);n=new d.Marker(t.latlng,{icon:jf(t,i),pane:`${a}-${t.order}`,title:t.text,alt:t.text,interactive:!1,keyboard:!1,rotateWithView:!1}).on("error",Xs,e).addTo(e._map),e.labels.set(r,n)}return n._mvtLabelStyle=o,n._mvtLabel=t,cn(e._map,n,t),!0}async function Wx(){let e=this.session,t=this.labelRevision=(this.labelRevision||0)+1;this.labelsReady=!1;let r=Ix(this),o=this._map.getSize(),i=new Set,n=new Set,a=0,s,m,f,p;for(s of r){if(++a%128===0&&await xt(),!fo(this,e)||this.labelRevision!==t)return;f=Gx(this,s,o),!(!f||!s.allowOverlap&&!Ux(f,i))&&(m=`${s.text}${s.icon||""}:${s.latlng.join(":")}`,n.add(m),jx(this,s,m)&&await xt())}for([m,p]of this.labels){if(!fo(this,e)||this.labelRevision!==t)return;n.has(m)||(p.remove(),this.labels.delete(m),await xt())}this.labelsReady=!0}function $x(e,t){let r=e.z-t.z;return r>=0?e.x>>r===t.x&&e.y>>r===t.y:t.x>>-r===e.x&&t.y>>-r===e.y}function Vx(e,t){let r;for(r of e.tiles.values())if(r.needed&&!r.group&&$x(r.coords,t.coords))return!0;return!1}function Zx(){let e,t;for([t,e]of this.tiles)e.needed||e.group&&Vx(this,e)||(e.controller.abort(),this.tiles.delete(t),e.group&&this.retire(e.group).catch(He.bind(null,this)))}async function qx(e){let t=this.session;this.retiring.add(e);let r=0,o;for(o of e.getLayers()){if(this.session!==t)return;e.removeLayer(o),++r%8===0&&await xt()}e.remove(),this.retiring.delete(e)}function Hx(e,t){return e.distance-t.distance}function Yx(){if(!this.session)return;let e=this._map.getCenter(),t=[],r,o;for(r of this.tiles.values())!r.needed||r.started||(o=this._map.project(e,r.coords.z).divideBy(256),r.distance=(r.coords.x-o.x)**2+(r.coords.y-o.y)**2,t.push(r));t.sort(Hx);for(r of t){if(this.inflight>=4)break;r.started=!0,this.inflight++,this.load(r)}}L();L();function Xx(e,t,r,o){let{pane:i}=be.get(e),a={...Ys(o,Qe(e)),pane:`${i}-${o.order}`,interactive:!1,smoothFactor:0},s=o.kind==="fill"?new d.Polygon(o.paths,{...a,stroke:!1,triangulated:!0}):new d.Polyline(o.paths,a);s.on("error",Xs,e),t.rendered.push({layer:s,kind:o.kind,entry:o.entry,properties:o.properties}),r.addLayer(s)}async function Jx(e,t,r,o,i){let n,a=performance.now();for(n of o){for(;!fo(e,i)&&e.session===i&&!t.controller.signal.aborted;)await xt(50);if(t.controller.signal.aborted||e.session!==i)return!1;Xx(e,t,r,n),performance.now()-a>8&&(await xt(),a=performance.now())}return!0}async function Kx(e){let{coords:t,controller:r}=e,o=this.session,{url:i,style:n,sourceId:a,maxZoom:s,maxNativeZoom:m}=be.get(this),f=2**t.z,p=(t.x%f+f)%f,c;try{let l=d.Util.template(i,{z:t.z,x:p,y:t.y}),u=await fetch(l,{signal:r.signal});if(!u.ok)throw new Error(`Tile ${e.key}: HTTP ${u.status}`);let h=await u.arrayBuffer();if(r.signal.aborted)return;let x=++this.sequence,g=Promise.withResolvers();this.waiting.set(x,g),this.worker.postMessage({type:"vector",id:x,buffer:h,coords:t,style:n,source:a,maxZoom:s,zoom:Qe(this),mapZoom:t.z>=m?s:this._map.getZoom()},[h]);let y=await g.promise;if(r.signal.aborted||this.session!==o)return;if(c=new d.LayerGroup().addTo(this._map),e.rendered=[],!await Jx(this,e,c,y.batches,o)){c.remove();return}e.group=c,e.labelCandidates=y.labels,this.fire("tileload",{coords:t,group:c}),this.prune(),this.refresh()}catch(l){c?.remove(),!r.signal.aborted&&this.session===o&&this.fire("error",{error:l})}finally{this.session===o&&(this.inflight--,this.pump())}}async function Qx(e,t){let r=await sx(t);typeof r.sprite=="string"&&(r.spriteSheet=await mx(r.sprite));let{url:o,tileJSON:i,style:n,sourceId:a,minNativeZoom:s,maxNativeZoom:m,maxZoom:f,...p}=r;return d.Util.setOptions(e,p),r.pane=`mvt-${d.Util.stamp(e)}`,be.set(e,r),Object.assign(e,{onAdd:Px,onRemove:Sx,update:kx,updatePaint:Ax,updateLabels:Wx,prune:Zx,retire:qx,pump:Yx,load:Kx}),e}function e0(e){let t=e._map;return t?.removeLayer(e),z.delete(e),t?.addLayer(e),e.fire("ready"),e}function Js(e,t){throw e.fire("error",{error:t}),t}function t0(e,t){z.set(e,"pending");let r=Qx(e,t).then(e0.bind(null,e)).catch(Js.bind(null,e));re.set(e,r),r.catch(Xe)}L();async function r0(e,t){let r=await eo(t);return e.options.archive=t,U.set(e,r),e.options.maxNativeZoom===void 0&&(e.options.maxNativeZoom=r.maxZoom),e.options.maxZoom=Math.max(e.options.minZoom||0,e.options.maxZoom),e.fire("ready"),e}function o0(e){let t,r;for(t of I.get(e).values())ko(e,t);if(ge.get(e)?.pipelineCache.clear(),ge.set(e,null),Dt.get(e)){for(r of Object.values(Dt.get(e).attributes))W(e,r.buffer);Dt.set(e,null)}}var Fr=new WeakMap;var yi=new WeakMap;var Ks={_3d:_r,_added:Le,_areas:Y,_bridgeMesh:mo,_bridges:ct,_cameraZIndexOffset:$r,_countStatus:kr,_cursor:Er,_dem:Ie,_directories:Cr,_etag:ti,_fadeFrame:Fr,_fadeVersion:yi,_frame:ft,_geojson:X,_header:Xi,_inflight:Je,_layers:F,_loadingTiles:fe,_nativeGPU:de,_pointerEvents:Ar,_pruneAfter:Wt,_pruneVersion:Oi,_pruneWanted:zi,_queued:io,_rasterGeometry:Dt,_rasterProgram:ge,_rasterTiles:I,_rasterVersion:Ee,_rendererReady:gt,_roofRaster:K,_roofRasters:ki,_sceneOrigin:ie,_shadowMeshes:Ft,_shared:R,_size:mr,_terrain3D:pe,_terrainArchive:Us,_terrainBaseY:Et,_terrainBounds:er,_terrainController:di,_terrainGrids:It,_terrainLoading:Dr,_terrainOriginElevation:Ke,_terrainPromise:tr,_terrainReady:Te,_terrainRequest:Vn,_terrainTiles:ot,_terrainZoom:ye,_tileZoom:cr,_tooltip:Re,_type:Xt,_visibleMeshes:jr,_wantedRasterTiles:sr,_zoomLevel:mi,_zoomTransitions:he,_zoomView:qe,camera:ee,container:Ae,control:_t,eventMap:ao,events:zr,group:cs,header:U,highlightedFeature:at,hoveredFeature:ke,kind:z,location:D,model:$e,modelUrl:We,raycaster:ne,ready:re,renderer:w,root:M,scene:oe,terrainSource:so,url:ae,walker:ps};L();var i0=["_layers","_sceneOrigin","_size","_zoomLevel","_zoomTransitions","_zoomView","_cursor","_roofRaster"];var n0=["_layers","_sceneOrigin","_size","_zoomLevel","_cursor"];async function a0(e,t){try{await e.device.queue.onSubmittedWorkDone(),e.depthTexture?.destroy(),e.colorTexture?.destroy(),e.roofFallbackTexture?.texture?.destroy(),e.uniformBuffer?.destroy(),e.sunlight?.texture?.destroy(),e.sunlight?.buffer?.destroy(),e.sunlight?.lights?.destroy()}catch(r){t.fire("error",{error:r})}e.device.destroy()}function s0(e,t){if(K.get(e)&&W(e,K.get(e).texture.texture),K.set(e,null),he.get(e)){let i;for(i of he.get(e).keys())i.play()}he.set(e,null),qe.set(e,null),se.delete(t),t.getContainer().classList.remove("leaflet-camera-zoom");let r=w.get(e);r.canvas.remove(),a0(r,e),te.delete(t);let o;for(o of n0)Ks[o].delete(e)}function po(e,t){Le.set(e,Promise.withResolvers()),Ae.get(e)&&(li(e),d.DomEvent.off(Ae.get(e),Ar.get(e),e),Ae.set(e,null));let r,o,i,n;for(r of Y.get(e).values())ro(e,r);Y.get(e).clear(),Re.get(e)?.remove(),Re.set(e,null),(ae.get(e)||X.get(e))&&ls(e,!1);let a=R.get(e);if(a){if(q(M.get(e),null),F.get(a).delete(e),a===e)if(t.off("move zoom rotate pitch resize viewreset layeradd layerremove",Ki,e),t.off("zoomstart",Qi,e),t.off("zoomanim",en,e),t.off("zoomend",tn,e),$n(e),F.get(e).size){let s=F.get(e).values().next().value;for(o of i0)n=Ks[o],n.set(s,n.get(e)),n.delete(e);for(i of F.get(s))R.set(i,s);te.set(t,s),t.on("move zoom rotate pitch resize viewreset layeradd layerremove",Ki,s),t.on("zoomstart",Qi,s),t.on("zoomanim",en,s),t.on("zoomend",tn,s),E(s)}else s0(e,t);else E(a);R.set(e,null),w.set(e,null),oe.set(e,null),ee.set(e,null)}}function m0(e,t){o0(e),pe.set(e,null),po(e,t)}L();function Qs(e,t){z.set(e,"raster"),t={ariaLabel:"PMTiles raster",maxZoom:18,opacity:1,zIndex:0,...t},d.Util.setOptions(e,t),M.set(e,Oe()),Y.set(e,new Map),I.set(e,new Map),fe.set(e,0),Le.set(e,Promise.withResolvers()),ae.set(e,new URL(t.url,document.baseURI).href),Cr.set(e,new Map),re.set(e,Promise.resolve(e.options.archive||e).then(r0.bind(null,e)).catch(Js.bind(null,e)))}var f0=Object.freeze([]);function p0(e){z.get(e)==="raster"&&ui(e,null)}function c0(e,t){let r=Be.get(t);if(r?.layer===e){Be.delete(t),r.terrainController.abort(),r.terrainCache.clear(),t.fire("terrainchange"),po(e,t);return}di.get(e)?.abort(),Dr.set(e,!1),Te.set(e,!1),t.eachLayer(p0);let o,i,n,a;for(o of I.get(e).keys())So(e,o);me.get(t)===e&&me.delete(t);for(i of Object.values(t._layers))pi(i,null),ni(i);t.fire("terrainchange"),ot.get(e).clear(),Ke.set(e,0),tr.set(e,null),ge.get(e)&&ge.get(e).pipelineCache.clear(),ge.set(e,null),Ie.get(e)&&W(e,Ie.get(e).texture),Ie.set(e,null);for(n of It.get(e)?.values()||f0)for(a of Object.values(n))W(e,a.buffer);It.set(e,null),ct.set(e,null),Ge(e,mo.get(e)),mo.set(e,null),po(e,t)}function l0(e,t){if(t.getTile!==void 0&&typeof t.getTile!="function")throw new Error("Streamed terrain requires a getTile function");let r=t.url,o={...t};delete o.url,At(e,o),so.set(e,r),ot.set(e,new Map),I.set(e,new Map),Te.set(e,!1),t.getTile&&Gs.set(e,!0),z.set(e,"terrain")}L();var em=Object.freeze({});var rr=[[.86,.86,.88],[.1,.1,.12],[.5,.53,.57],[.65,.1,.08],[.12,.25,.55],[.85,.7,.15]];function u0(e){let t=rr[e%rr.length];return[[C(-.045,.045,-.85,-.25),.02,.62,Qt],[C(-.045,.045,.25,.85),.02,.62,Qt],[C(-.06,.06,-.5,.5),.4,.65,t],[C(-.32,.32,-.58,-.5),.95,1.02,Qt],[C(-.1,.1,.15,.4),.85,.92,Qt],[C(-.18,.18,-.12,.28),1,1.5,t],[C(-.11,.11,-.22,0),1.5,1.72,yt],[C(-.13,.13,-.23,.01),1.72,1.8,t],[C(-.25,-.15,-.5,-.05),1,1.25,yt],[C(.15,.25,-.5,-.05),1,1.25,yt],[C(-.2,-.08,0,.32),.3,1,Kt],[C(.08,.2,-.25,.07),.3,1,Kt]]}function d0(e){let t=Ls.body.slice();return t[1]=[t[1][0],t[1][1],t[1][2],rr[e%rr.length]],t.push([C(-.16,-.02,-.07,.07),.08,.9,Kt],[C(.02,.16,-.07,.07),.08,.9,Kt],[C(-.3,-.2,-.05,.05),.76,1.42,yt],[C(.2,.3,-.05,.05),.76,1.42,yt]),t}function xi(e){let t=e?.route_color;if(!/^[\da-f]{6}$/i.test(t))return[.1,.55,.65];let r=Number.parseInt(t,16);return[(r>>16&255)/255,(r>>8&255)/255,(r&255)/255]}var co=[.12,.15,.18];var Gt=[.92,.93,.92];var vi=[.05,.05,.05];var tm=[1.9,1.85,1.7];var rm=[1.7,.06,.05];function wi(e,t,r){let o=e-t/2,i=e+t/2;return[[C(-1.25,1.25,o,i),.45,1.25,r],[C(-1.2,1.2,o+.15,i-.15),1.25,2.65,co],[C(-1.25,1.25,o,i),2.65,3.1,Gt],[C(-1.15,-.85,o+1,o+2),0,.7,vi],[C(.85,1.15,i-2,i-1),0,.7,vi],[C(-.9,.9,o-.03,o),.8,1.05,tm],[C(-.9,.9,i,i+.03),.8,1.05,rm]]}function h0(e,t){return wi(0,12,xi(t))}function g0(e,t){let r=xi(t),o=[],i;for(i=0;i<5;i++)o.push(...wi((i-2)*6.5,6,r));return o}function y0(e,t){let r=xi(t),o=[],i;for(i=0;i<5;i++)o.push(...wi((i-2)*15,14,r));return o}function or(e,t,r,o,...i){return[[C(e,t,r,o),...i],[C(-t,-e,r,o),...i]]}function x0(e){let t=rr[e%rr.length];return[...or(.7,.92,-1.68,-1.02,0,.64,vi),...or(.7,.92,1.02,1.68,0,.64,vi),[[[-.9,-1.95],[-.72,-2.25],[.72,-2.25],[.9,-1.95],[.9,2.05],[.76,2.25],[-.76,2.25],[-.9,2.05]],.28,.82,t],[C(-.84,.84,-.75,1.6),.82,1.38,co,C(-.7,.7,-.05,1.3)],[C(-.71,.71,-.06,1.31),1.38,1.46,t],...or(.38,.8,-2.3,-2.16,.56,.76,tm),[C(-.78,.78,2.16,2.3),.6,.76,rm]]}var Wf=[[-5.5,30],[5.5,30],[5.5,-20],[4,-26],[1.5,-30],[-1.5,-30],[-4,-26],[-5.5,-20]];function v0(){let e=[],t;for(t=0;t<12;t++)e.push(...or(.5,3.8,-12+t*3,-11.3+t*3,3.9,4.4,[.62,.1,.1]));return e}function w0(){return[[Wf,0,.8,[.1,.16,.26]],[Wf,.8,1.4,Gt],[C(-5,5,-18,26),1.4,3.7,co,C(-4.6,4.6,-17.4,25.6)],...or(4.64,4.74,-17,25,3.25,3.45,[1.6,1.25,.8]),[C(-4.8,4.8,-17.8,25.8),3.7,3.9,Gt],...v0(),...or(4.65,4.8,-13.6,25.8,3.9,4.8,Gt),[C(-4.8,4.8,25.65,25.8),3.9,4.8,Gt],[C(-2.2,2.2,-17.6,-14),3.9,4.7,Gt],[C(-2.2,2.2,-17.6,-14),4.7,5.5,co],[C(-2.5,2.5,-18,-13.6),5.5,5.7,Gt],[C(-2.45,-2.2,-16.2,-15.8),5,5.3,[2,.15,.1]],[C(2.2,2.45,-16.2,-15.8),5,5.3,[.1,2,.4]],[C(-.1,.1,-15.9,-15.7),5.7,6.6,Gt],[C(-.15,.15,-15.95,-15.65),6.6,6.8,[2,2,1.9]]]}var L0={bicycle:{side:.4,model:u0},pedestrian:{side:.3,model:d0},bus:{side:1.5,model:h0},tram:{side:0,model:g0},metro:{side:0,model:y0},car:{side:1.8,model:x0,lights:[{position:[0,1.2,-6],radius:10,color:[1,.94,.82],flux:800}]},boat:{side:0,model:w0,lights:[{position:[0,8,4],radius:30,color:[1,.8,.55],flux:2e4}]}};var b0=" struct Params{seconds:f32,side:f32,vertices:u32,total:u32}struct Vehicle{start:u32,count:u32,base:f32,speed:f32}@group(0)@binding(0)var<uniform> params:Params;@group(0)@binding(1)var<storage,read> model:array<f32>;@group(0)@binding(2)var<storage,read> points:array<vec4f>;@group(0)@binding(3)var<storage,read> vehicles:array<Vehicle>;@group(0)@binding(4)var<storage,read_write> position:array<f32>;@group(0)@binding(5)var<storage,read_write> normal:array<f32>;var<workgroup> center:vec3f;var<workgroup> heading:vec2f;@compute@workgroup_size(64)fn main(@builtin(workgroup_id)group:vec3u,@builtin(local_invocation_index)thread:u32){let vehicleIndex = group.x;if(thread == 0u){let vehicle = vehicles[vehicleIndex];let last = vehicle.start + vehicle.count - 1u;let length = points[last].w;var s = vehicle.base + params.seconds * vehicle.speed;s -= length * floor(s / length);var i = vehicle.start + 1u;var end = last;while(i < end){let middle = i +(end - i)/ 2u;if(points[middle].w < s){i = middle + 1u;}else{end = middle;}}let a = points[i - 1u];let b = points[i];let d = select(b.w - a.w,1.0,b.w == a.w);let t =(s - a.w)/ d;heading =(b.xy - a.xy)/ d;center = vec3f(a.x +(b.x - a.x)* t - heading.y * params.side,a.z +(b.z - a.z)* t,a.y +(b.y - a.y)* t + heading.x * params.side);}workgroupBarrier();for(var vertex = thread;vertex < params.vertices;vertex += 64u){let k = vertex * 3u;let n = params.vertices * 3u + k;let o =(vehicleIndex * params.vertices + vertex)* 3u;position[o]= center.x - model[k]* heading.y - model[k + 2u]* heading.x;position[o + 1u]= center.y + model[k + 1u];position[o + 2u]= center.z + model[k]* heading.x - model[k + 2u]* heading.y;normal[o]= -model[n]* heading.y - model[n + 2u]* heading.x;normal[o + 1u]= model[n + 1u];normal[o + 2u]= model[n]* heading.x - model[n + 2u]* heading.y;}}";function M0({properties:e}){let t=document.createElement("div");t.style.whiteSpace="pre-line";let r=e.name?String(e.name):"";return e.departure&&(r+=`${r?`
5
5
  `:""}Departure ${e.departure} ${e.timetable.timeZone}`),e.description&&(r+=`${r?`
6
- `:""}${e.description}`),t.textContent=r,t}function Vs(e){e.layer._map.off("simulationtimechange layerremove",e.update).on("simulationtimechange layerremove",e.update),e.layer._map.off("terrainchange",e.terrain).on("terrainchange",e.terrain),qo(e.layer,e.status),e.update()}function t0(e){Lt.set(e.layer,e),e.ready&&Vs(e)}function er(e,t){t&&(nt.get(e.layer)?.mesh===t&&(Ct(e.layer,null),Se.set(e.layer,null),_t(e.layer,null)),Ie(e.layer,t))}function Zs(e){e.gpu?.params?.destroy(),e.gpu?.template?.destroy(),e.gpu?.points?.destroy(),e.gpu?.vehicles?.destroy(),e.gpu=null}function r0(e){e.request?.abort(),cancelAnimationFrame(e.frame),e.frame=void 0,e.layer._map.off("simulationtimechange layerremove",e.update).off("terrainchange",e.terrain),er(e,e.mesh),er(e,e.route),e.mesh=e.route=null,Lt.delete(e.layer),Zs(e),e.lanes.length=0,e.trips.length=0,e.tripsKey=e.loaded=null}function o0(e){e.ready=!0,e.layer._map&&Vs(e)}function qs(e){let t=Zo.get(e.layer._map),r=t?t.live:!0;return{live:r,time:r?new Date:t.time}}function i0(e,t,r=8){let o=Math.round(e*t/3600/r),i=Array.from({length:o}),n;for(n=0;n<i.length;n++)i[n]=(n+.5)*e/o;return i}var di=new Map;function kf(e){let t=e.split(":");return Number(t[0])*60+Number(t[1])}function n0(e,t){return e-t}function a0(e,{timeZone:t,duration:r,services:o}){let i=e instanceof Date?e:new Date(e);if(!Number.isFinite(i.getTime()))throw new Error("Invalid date");let n=di.get(t);n||(n=new Intl.DateTimeFormat("en-GB",{timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hourCycle:"h23"}),di.size>=32&&di.delete(di.keys().next().value),di.set(t,n));let a={},s,m,f,p,c,l,u;for(s of n.formatToParts(i))s.type!=="literal"&&(a[s.type]=Number(s.value));let h=a.hour*60+a.minute+(a.second+i.getUTCMilliseconds()/1e3)/60,x=((Math.floor(Date.UTC(a.year,a.month-1,a.day)/864e5)+4)%7+7)%7,g=[];for({from:m,to:f,every:p=1/0,months:c,weekdays:l}of o)if(!(c?.includes(a.month)===!1||l?.includes(x)===!1))for(u=kf(m);u<=kf(f);u+=p)g.push(u);g.sort(n0);let y=[];for(u of g)h>=u&&h<u+r&&y.push({id:`${a.year}-${a.month}-${a.day}-${u}`,departure:`${String(Math.floor(u/60)).padStart(2,"0")}:${String(u%60).padStart(2,"0")}`,progress:(h-u)/r});return y}function s0(e,t,r){let o=[],i,n,a,s,m,f,p,c;for(i=0;i<t.length;i++)if(n=t[i],{timetable:a,flow:s=0}=n.properties,!!n.length)if(a)for(m of a0(e,a))o.push({id:`${i}-${m.id}`,lane:n,distance:m.progress*n.length,speed:n.length/(a.duration*60),properties:{...n.properties,departure:m.departure}});else for(f=e/1e3*r,p=n.offsets||=i0(n.length,s,r),c=0;c<p.length;c++)o.push({id:`${i}-${c}`,lane:n,distance:(p[c]+f)%n.length,speed:r,properties:n.properties});return o}function Hs(e,t){e.error=t,e.status.textContent=`${e.vehicle}: Error: ${t.message}`,e.status.setAttribute("role","alert"),console.error("Traffic layer",t)}var m0=Object.freeze({unlit:!0});function f0(e,t,r,o,i,n,a,s,m,f,p,c,l,u){let h=o[0]+n*f,x=o[1]+a*f,g=o[2]+(i[2]-o[2])*f+.4,y=o[0]+n*p,w=o[1]+a*p,S=o[2]+(i[2]-o[2])*p+.4,T;for(T=0;T<6;T++)T===0||T===3?e.push(h-s,g,x-m):T===1?e.push(h+s,g,x+m):T===5?e.push(y-s,S,w-m):e.push(y+s,S,w+m),t.push(0,1,0),r.push(c,l,u)}function p0(e,t,r,o,i,n,a,s,m){let f=o[n-1],p=o[n],c=p[0]-f[0],l=p[1]-f[1],u=i[n]-i[n-1];if(!u)return;let h=-l/u*2.5,x=c/u*2.5,g,y,w;for(g=Math.floor(i[n-1]/30)*30;g<i[n];g+=30)y=Math.max(0,(g-i[n-1])/u),w=Math.min(1,(g+18-i[n-1])/u),!(w<=y)&&f0(e,t,r,f,p,c,l,h,x,y,w,a,s,m)}function c0(e){let t=[],r=[],o=[],i,n,a,s,m,f,p,c,l;for({points:i,lengths:n,properties:a}of e)for(s=a?.route_color,m=/^[\da-f]{6}$/i.test(s)?Number.parseInt(s,16):null,f=m===null?.08:(m>>16&255)/255,p=m===null?.7:(m>>8&255)/255,c=m===null?.85:(m&255)/255,l=1;l<i.length;l++)p0(t,r,o,i,n,l,f,p,c);return{position:t,normal:r,color:o}}function Ys(e,t,r,o,i=0){let n=pr(e.layer,t,o,i);return n.extras.featureFaces=r,n}function l0(e){e.route=Ys(e,c0(e.lanes),[],m0)}function Xs(e){let t=20,r=5,o,i,n,a,s;for(o=0;o<e.template.position.length;o+=3)t=Math.max(t,Math.hypot(e.template.position[o],e.template.position[o+2])+Math.abs(e.side)),r=Math.max(r,e.template.position[o+1]);let m=[];for(i of e.lanes)for([n,a,s]of i.points)m.push(n-t,s,a-t,n+t,s+r,a+t);let f={attributes:{position:{data:m}}};Ce(f),e.mesh.geometry.bounds=f.bounds}function u0(e){let{trips:t,model:r,vertices:o}=e;if(er(e,e.mesh),e.mesh=null,!t.length)return;let i=[],n=[],a,s,m;for(a=0;a<t.length;a++){s=t[a];for(m of ii(r(a,s.properties)).color)i.push(m);n.push({id:s.id,properties:s.properties,faceStart:a*o/3,faceEnd:(a+1)*o/3,vertexStart:a*o,vertexEnd:(a+1)*o})}let f=i.length/3;e.mesh=Ys(e,{position:new Array(i.length).fill(0),normal:new Array(i.length).fill(0),color:i},n,Ws,GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC),e.mesh.geometry.drawRange.count=f,e.mesh.extras.dynamicLights=!0,Xs(e)}function nn(e,t){let r=e.createBuffer({size:Math.max(16,t.byteLength),usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});return e.queue.writeBuffer(r,0,t),r}function d0(e,t){let r,o,i,n=0;for(r of e.lanes)n+=r.points.length;let a=new Float32Array(n*4),s=0;for(r of e.lanes)for(r.start=s/4,o=0;o<r.points.length;o++)i=r.points[o],a[s++]=i[0],a[s++]=i[1],a[s++]=i[2],a[s++]=r.lengths[o];e.gpu.points?.destroy(),e.gpu.points=nn(t,a),e.lanesDirty=!1}function h0(e){let{device:t}=v.get(e.layer);if(e.gpu?.device!==t){Zs(e);let c=new Float32Array(e.template.position.length+e.template.normal.length);c.set(e.template.position),c.set(e.template.normal,e.template.position.length),e.gpu={device:t,pipeline:t.createComputePipeline({layout:"auto",compute:{module:t.createShaderModule({code:e.shader}),entryPoint:"main"}}),params:t.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),template:nn(t,c)},e.lanesDirty=!0}let r,o,i;e.lanesDirty&&d0(e,t);let n=new Float32Array(e.trips.length*4),a=new Uint32Array(n.buffer);for(r=0;r<e.trips.length;r++)o=e.trips[r],a[r*4]=o.lane.start,a[r*4+1]=o.lane.points.length,n[r*4+2]=o.distance,n[r*4+3]=o.speed,e.mesh.extras.featureFaces[r].properties=o.properties;e.gpu.vehicles?.size>=n.byteLength?t.queue.writeBuffer(e.gpu.vehicles,0,n):(e.gpu.vehicles?.destroy(),e.gpu.vehicles=nn(t,n));let{position:s,normal:m}=e.mesh.geometry.attributes,f=[],p;for(i=0;i<6;i++)p=i===0?e.gpu.params:i===1?e.gpu.template:i===2?e.gpu.points:i===3?e.gpu.vehicles:i===4?s.buffer:m.buffer,f.push({binding:i,resource:{buffer:p}});e.gpu.bindGroup=t.createBindGroup({layout:e.gpu.pipeline.getBindGroupLayout(0),entries:f})}function g0(e,t){return t?e.loaded?`${e.trips.length} ${e.vehicle==="boat"?"boats":e.vehicle}`:`${e.vehicle}: loading\u2026`:`${e.vehicle}: select a valid simulation date`}function y0(e,t,r,o){let i;try{o?e.trips=s0(t,e.lanes,e.velocity):e.trips.length=0,i=g0(e,o)}catch(f){Hs(e,f);return}e.rebasedAt=r,e.nextCheck=r+1e3;let n="",a;for(a of e.trips)n+=`${n?",":""}${a.id}`;let s=e.outline&&!e.route&&e.lanes.length,m=n!==e.tripsKey||!!s;return s&&l0(e),n!==e.tripsKey&&(u0(e),e.tripsKey=n),e.mesh&&h0(e),e.error||(e.status.textContent!==i&&(e.status.textContent=i),e.status.removeAttribute("role")),m}function x0(e,t){let{device:r}=e.gpu;e.paramFloats[0]=e.elapsed=t,e.paramFloats[1]=e.side,e.paramInts[2]=e.vertices,e.paramInts[3]=e.trips.length*e.vertices,r.queue.writeBuffer(e.gpu.params,0,e.params);let o=r.createCommandEncoder(),i=o.beginComputePass();i.setPipeline(e.gpu.pipeline),i.setBindGroup(0,e.gpu.bindGroup),i.dispatchWorkgroups(e.trips.length),i.end(),r.queue.submit([o.finish()]),e.stale=!0}function v0(e){e.litAt=performance.now();let t=[],r=e.position||={},o,i,n,a,s,m,f,p,c,l;for(o of e.trips){({x:i,y:n,z:a,dx:s,dz:m}=zo(e,o,r));for(l of e.lights)[f,p,c]=l.position,t.push({...l,position:[i-f*m-c*s,n+p,a+f*s-c*m]})}e.mesh.extras.lights=t}function w0(e,t,r){e.mesh&&(x0(e,(t-e.rebasedAt)/1e3),e.lights&&(!r||!(performance.now()-e.litAt<100))&&v0(e))}function L0(e){if(e.frame=void 0,!e.ready||!e.layer._map)return;if(!v.get(e.layer)){e.frame=requestAnimationFrame(e.tick);return}e.mesh&&!(e.mesh.geometry.attributes.position.buffer.usage&GPUBufferUsage.STORAGE)&&(e.tripsKey=null,e.nextCheck=-1/0);let{live:t,time:r}=qs(e),o=r?.getTime(),i=Number.isFinite(o),n=!1;(!t||!i||!(o>=e.rebasedAt&&o<e.nextCheck))&&(n=y0(e,r,o,i),n===void 0)||(w0(e,o,t),(e.mesh||n)&&E(e.layer),t&&i&&(e.frame=requestAnimationFrame(e.tick)))}async function b0(e,t,r){let o=new URL(e.url,document.baseURI).href;if(/\.m?js(?:[?#]|$)/i.test(e.url))return(await import(o)).default(t,e.layer,r);if(!e.file){let i=await fetch(o,{signal:r});if(!i.ok)throw new Error(`HTTP ${i.status}`);e.file=await i.json()}return e.file}var M0=Object.freeze([]);function B0({features:e=M0}){let t=[],r,o,i,n,a,s,m,f;for({geometry:r,properties:o}of e)if(!(r?.type!=="LineString"&&r?.type!=="MultiLineString"))for(i=r.type==="MultiLineString"?r.coordinates:null,f=0;f<(i?i.length:1);f++){n=i?i[f]:r.coordinates,a=[];for([s,m]of n)a.push([m,s]);t.push({latlngs:a,properties:o??{},elevation:o?.elevation})}return t}$();L();function T0(e){let t=me.get(e);return Be.get(t)&&t}function Js(e){let{layer:t,lanes:r}=e,o=T0(t._map),i=M.get(t).position[1],n,a,s;for(n of r)for(a=0;a<n.points.length;a++)s=o&&(n.elevation??ye(t._map,n.latlngs[a])),n.points[a][2]=Number.isFinite(s)&&Number.isFinite(i)?s-i:0;e.lanesDirty=!0,e.nextCheck=-1/0}function P0(e){let{layer:t,lanes:r}=e,o=t._map.options.crs,i=o.project(I.get(t)),n=Math.cos(I.get(t).lat*B),a,s,m,f,p;for(a of r){a.points=[];for([s,m]of a.latlngs)f=o.project(new d.LatLng(s,m)),a.points.push([(f.x-i.x)*n,-(f.y-i.y)*n,0]);for(a.lengths=[0],p=1;p<a.points.length;p++)a.lengths.push(a.lengths[p-1]+Math.hypot(a.points[p][0]-a.points[p-1][0],a.points[p][1]-a.points[p-1][1]));a.length=a.lengths.at(-1)}Js(e),er(e,e.route),e.route=null,e.tripsKey=null}function S0(e,t,r){if(!(t.aborted||!e.layer._map)){if(e.error=null,r===e.loaded){e.nextCheck=-1/0,e.frame||e.tick();return}e.loaded=r,e.lanes=B0(r),P0(e),e.frame||e.tick()}}function k0(e,t,r){!t.aborted&&r.name!=="AbortError"&&Hs(e,r)}function C0(e){let{time:t}=qs(e);if(!Number.isFinite(t?.getTime()))return;e.request?.abort();let{signal:r}=e.request=new AbortController;b0(e,t,r).then(S0.bind(null,e,r),k0.bind(null,e,r))}function _0(e,t){t?.layer&&!Pt.get(t.layer)?.time||(cancelAnimationFrame(e.frame),C0(e),e.tick())}function E0(e){e.lanes.length&&(Js(e),er(e,e.route),e.route=null,e.mesh&&Xs(e),e.frame||e.tick())}function z0(e,{url:t,vehicle:r="car",side:o,outline:i,speed:n=8,...a}=Ws){let{model:s,lights:m,side:f}=Kx[r];o??=f,Et(e,{tooltip:e0,nightLight:!!m,...a});let p=d.DomUtil.create("small","traffic-status");p.style.cssText="flex:0 1 auto;padding:1px 5px;border-radius:3px;background:#00000008;color:#555;",p.title=r,p.textContent=`${r}: loading\u2026`;let c=ii(s(0)),l=c.position.length,u=l/3,h=new ArrayBuffer(16),x=new Float32Array(h),g=new Uint32Array(h),y={layer:e,url:t,model:s,lights:m,side:o,outline:i,velocity:n,vehicle:r,status:p,template:c,stride:l,vertices:u,params:h,paramFloats:x,paramInts:g,ready:!1,frame:void 0,request:void 0,lanes:[],tripsKey:void 0,mesh:void 0,route:void 0,litAt:-1/0,trips:[],rebasedAt:0,nextCheck:-1/0,elapsed:0,gpu:null,lanesDirty:!0,stale:!1,loaded:void 0,file:void 0};y.shader=Qx,y.tick=L0.bind(null,y),y.update=_0.bind(null,y),y.terrain=E0.bind(null,y),Lt.set(e,y),e.on("ready",o0.bind(null,y)),e.on("add",t0.bind(null,y)),e.on("remove",r0.bind(null,y))}function A0(e){return e.header}function Cf(e,t,r,o,i){return Jo(e.layer._map||ks.get(e.layer),e.workerUrl,{type:"cog",url:e.url,asset:e.asset,z:t,x:r,y:o},i)}async function R0(e,t){let r={layer:e,url:new URL(t.url,document.baseURI).href,asset:t.asset,workerUrl:t.workerUrl},o=await Cf(r);return{getHeader:A0.bind(null,{header:o}),getZxy:Cf.bind(null,r)}}function O0(e,t){Fs(e,{ariaLabel:"COG raster",...t,archive:t.archive||R0(e,t)})}function D0(e,t={}){switch(e){case"raster":return t.asset!==void 0||/\.tiff?(?:[?#]|$)/i.test(t.url)?O0:Fs;case"terrain":return jx;case"traffic":return z0;default:return null}}function I0(){let e=Es.shift();return e.initialize=D0(e.type,e.settings),e.initialize||(e.error=new Error(`Unknown layer type: ${e.type}`)),e}function G0(e){let{layer:t,ready:r}=e;if(e.error)return qe(t,e.error),Promise.reject(e.error);try{let o=t._map;return o?.removeLayer(t),A.delete(t),e.initialize(t,e.settings),o?.addLayer(t),re.get(t)===r?t:re.get(t)}catch(o){throw t.fire("error",{error:o}),o}}function U0(e=Eo){if(St.has(this)||St.add(this),Object.getPrototypeOf(this)!==d.Layer.prototype||!e?.source){if(Ir.value.initialize)return Ir.value.initialize.apply(this,arguments);d.Util.setOptions(this,e);return}let{source:{type:t=/\.pmtiles(?:[?#]|$)|\.tiff?(?:[?#]|$)/i.test(e.source.url)?"raster":"vector",...r},...o}=e,i={...r,...o};if(d.Util.setOptions(this,o),qt.set(this,t),t==="vector"){Cy(i)?zx(this,i):i.data!==void 0||i.url&&!/\.(?:pmtiles|glb|gltf)(?:[?#]|$)/i.test(i.url)?ky(this,i):Et(this,i);return}A.set(this,"pending");let n={layer:this,type:t,settings:i,ready:null};Es.push(n),zs.value=zs.value.catch(Ye).then(I0);let a=zs.value.then(G0);re.set(this,a),n.ready=a,a.catch(Ye)}L();function N0(e,t){switch(A.get(e)){case"3d":return no(e,t);case"raster":return Ux(e,t);case"terrain":return Wx(e,t);case"time":return jd.call(e,t)}}function F0(e){let t=d.Util.stamp(e);return this._layers[t]?A.get(e)?(this._loaded&&N0(e,this),delete this._layers[t],this._loaded&&(this.fire("layerremove",{layer:e}),e.fire("remove")),e._map=e._mapToAdd=null,this):mn.value.call(this,e):this}J();function W0(){return _(this)}Z();function j0(){return k(this)}Oi();function $0(e,t){return Vt(this,e,t)}Fo();function V0(e,t){return lt(this,e,t)}function Z0(e){return Os(this,e)}L();var Ks=new WeakMap;var Qs=new WeakMap;var em=new WeakMap;function q0(e){return this._project(),this._parts=this._rings,Ks.get(this).call(this,e)}function H0(){return this._project(),Qs.get(this).call(this)}function Y0(){em.get(this).call(this),this._container.remove()}var tr=new Map;var Dt={value:null};function X0(e){tr.delete(e),Dr.set(e,null),!tr.size&&Dt.value!==null&&(cancelAnimationFrame(Dt.value),Dt.value=null)}function J0(){Dt.value=null;let e=[...tr],t,r;for([t,r]of e)tr.get(t)===r&&(tr.delete(t),Dr.set(t,null),tm.call(t))}function K0(e){pi.set(e,(pi.get(e)||0)+1),tr.set(e,pi.get(e)),Dt.value===null&&(Dt.value=requestAnimationFrame(J0)),Dr.set(e,Dt.value)}function tm(){if(!this._map)return;let e=this,t=Date.now(),r=!1,o=!1,i,n;for(i in this._tiles)Object.hasOwn(this._tiles,i)&&(n=this._tiles[i],!(!n.current||!n.loaded)&&(n._gpuOpacity=this._map._fadeAnimated?Math.min(1,(t-n.loaded)/200):1,n._gpuOpacity<1?r=!0:n.active||(this._onOpaqueTile(n),n.active=!0,o=!0)));o&&!this._noPrune&&this._pruneTiles(),Tt(this),X0(e),r&&K0(e)}function Q0(){return Tt(this),this}function ev(){this instanceof d.Polyline||this instanceof d.CircleMarker?(this.beforeAdd=this._updateBounds=Ye,this.redraw=Q0,A.set(this,"path"),this instanceof d.Polyline&&(Ks.set(this,this.closestLayerPoint),this.closestLayerPoint=q0),this instanceof d.Circle&&(Qs.set(this,this.getBounds),this.getBounds=H0)):this instanceof d.GridLayer?(em.set(this,this._initContainer),this._initContainer=Y0,this._updateOpacity=tm):this instanceof d.ImageOverlay&&!(this instanceof d.VideoOverlay)&&!(this instanceof d.SVGOverlay)&&(A.set(this,"image"),this._reset=Tt)}function tv(){St.has(this)||St.add(this);let e=this._initHooksCalled;sn.value.call(this),e||ev.call(this)}Ir.value=Object.defineProperties({},Object.getOwnPropertyDescriptors(d.Layer.prototype));sn.value=d.Layer.prototype.callInitHooks;d.Layer.include({initialize:U0,_layerAdd:Sy,callInitHooks:tv});mn.value=d.Map.prototype.removeLayer;d.Map.include({removeLayer:F0,getPitch:W0,getBearing:j0,setPitch:$0,setBearing:V0});d.Marker.include({setRotation:Z0});})();
6
+ `:""}${e.description}`),t.textContent=r,t}function om(e){e.layer._map.off("simulationtimechange layerremove",e.update).on("simulationtimechange layerremove",e.update),e.layer._map.off("terrainchange",e.terrain).on("terrainchange",e.terrain),ei(e.layer,e.status),e.update()}function B0(e){Tt.set(e.layer,e),e.ready&&om(e)}function ir(e,t){t&&(at.get(e.layer)?.mesh===t&&(Ot(e.layer,null),ke.set(e.layer,null),zt(e.layer,null)),Ge(e.layer,t))}function im(e){e.gpu?.params?.destroy(),e.gpu?.template?.destroy(),e.gpu?.points?.destroy(),e.gpu?.vehicles?.destroy(),e.gpu=null}function T0(e){e.request?.abort(),cancelAnimationFrame(e.frame),e.frame=void 0,e.layer._map.off("simulationtimechange layerremove",e.update).off("terrainchange",e.terrain),ir(e,e.mesh),ir(e,e.route),e.mesh=e.route=null,Tt.delete(e.layer),im(e),e.lanes.length=0,e.trips.length=0,e.tripsKey=e.loaded=null}function P0(e){e.ready=!0,e.layer._map&&om(e)}function nm(e){let t=Qo.get(e.layer._map),r=t?t.live:!0;return{live:r,time:r?new Date:t.time}}function S0(e,t,r=8){let o=Math.round(e*t/3600/r),i=Array.from({length:o}),n;for(n=0;n<i.length;n++)i[n]=(n+.5)*e/o;return i}var Li=new Map;function Vf(e){let t=e.split(":");return Number(t[0])*60+Number(t[1])}function k0(e,t){return e-t}function C0(e,{timeZone:t,duration:r,services:o}){let i=e instanceof Date?e:new Date(e);if(!Number.isFinite(i.getTime()))throw new Error("Invalid date");let n=Li.get(t);n||(n=new Intl.DateTimeFormat("en-GB",{timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hourCycle:"h23"}),Li.size>=32&&Li.delete(Li.keys().next().value),Li.set(t,n));let a={},s,m,f,p,c,l,u;for(s of n.formatToParts(i))s.type!=="literal"&&(a[s.type]=Number(s.value));let h=a.hour*60+a.minute+(a.second+i.getUTCMilliseconds()/1e3)/60,x=((Math.floor(Date.UTC(a.year,a.month-1,a.day)/864e5)+4)%7+7)%7,g=[];for({from:m,to:f,every:p=1/0,months:c,weekdays:l}of o)if(!(c?.includes(a.month)===!1||l?.includes(x)===!1))for(u=Vf(m);u<=Vf(f);u+=p)g.push(u);g.sort(k0);let y=[];for(u of g)h>=u&&h<u+r&&y.push({id:`${a.year}-${a.month}-${a.day}-${u}`,departure:`${String(Math.floor(u/60)).padStart(2,"0")}:${String(u%60).padStart(2,"0")}`,progress:(h-u)/r});return y}function _0(e,t,r){let o=[],i,n,a,s,m,f,p,c;for(i=0;i<t.length;i++)if(n=t[i],{timetable:a,flow:s=0}=n.properties,!!n.length)if(a)for(m of C0(e,a))o.push({id:`${i}-${m.id}`,lane:n,distance:m.progress*n.length,speed:n.length/(a.duration*60),properties:{...n.properties,departure:m.departure}});else for(f=e/1e3*r,p=n.offsets||=S0(n.length,s,r),c=0;c<p.length;c++)o.push({id:`${i}-${c}`,lane:n,distance:(p[c]+f)%n.length,speed:r,properties:n.properties});return o}function am(e,t){e.error=t,e.status.textContent=`${e.vehicle}: Error: ${t.message}`,e.status.setAttribute("role","alert"),console.error("Traffic layer",t)}var E0=Object.freeze({unlit:!0});function O0(e,t,r,o,i,n,a,s,m,f,p,c,l,u){let h=o[0]+n*f,x=o[1]+a*f,g=o[2]+(i[2]-o[2])*f+.4,y=o[0]+n*p,v=o[1]+a*p,S=o[2]+(i[2]-o[2])*p+.4,T;for(T=0;T<6;T++)T===0||T===3?e.push(h-s,g,x-m):T===1?e.push(h+s,g,x+m):T===5?e.push(y-s,S,v-m):e.push(y+s,S,v+m),t.push(0,1,0),r.push(c,l,u)}function z0(e,t,r,o,i,n,a,s,m){let f=o[n-1],p=o[n],c=p[0]-f[0],l=p[1]-f[1],u=i[n]-i[n-1];if(!u)return;let h=-l/u*2.5,x=c/u*2.5,g,y,v;for(g=Math.floor(i[n-1]/30)*30;g<i[n];g+=30)y=Math.max(0,(g-i[n-1])/u),v=Math.min(1,(g+18-i[n-1])/u),!(v<=y)&&O0(e,t,r,f,p,c,l,h,x,y,v,a,s,m)}function A0(e){let t=[],r=[],o=[],i,n,a,s,m,f,p,c,l;for({points:i,lengths:n,properties:a}of e)for(s=a?.route_color,m=/^[\da-f]{6}$/i.test(s)?Number.parseInt(s,16):null,f=m===null?.08:(m>>16&255)/255,p=m===null?.7:(m>>8&255)/255,c=m===null?.85:(m&255)/255,l=1;l<i.length;l++)z0(t,r,o,i,n,l,f,p,c);return{position:t,normal:r,color:o}}function sm(e,t,r,o,i=0){let n=dr(e.layer,t,o,i);return n.extras.featureFaces=r,n}function R0(e){e.route=sm(e,A0(e.lanes),[],E0)}function mm(e){let t=20,r=5,o,i,n,a,s;for(o=0;o<e.template.position.length;o+=3)t=Math.max(t,Math.hypot(e.template.position[o],e.template.position[o+2])+Math.abs(e.side)),r=Math.max(r,e.template.position[o+1]);let m=[];for(i of e.lanes)for([n,a,s]of i.points)m.push(n-t,s,a-t,n+t,s+r,a+t);let f={attributes:{position:{data:m}}};_e(f),e.mesh.geometry.bounds=f.bounds}function I0(e){let{trips:t,model:r,vertices:o}=e;if(ir(e,e.mesh),e.mesh=null,!t.length)return;let i=[],n=[],a,s,m;for(a=0;a<t.length;a++){s=t[a];for(m of ci(r(a,s.properties)).color)i.push(m);n.push({id:s.id,properties:s.properties,faceStart:a*o/3,faceEnd:(a+1)*o/3,vertexStart:a*o,vertexEnd:(a+1)*o})}let f=i.length/3;e.mesh=sm(e,{position:new Array(i.length).fill(0),normal:new Array(i.length).fill(0),color:i},n,em,GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_SRC),e.mesh.geometry.drawRange.count=f,e.mesh.extras.dynamicLights=!0,mm(e)}function ln(e,t){let r=e.createBuffer({size:Math.max(16,t.byteLength),usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});return e.queue.writeBuffer(r,0,t),r}function D0(e,t){let r,o,i,n=0;for(r of e.lanes)n+=r.points.length;let a=new Float32Array(n*4),s=0;for(r of e.lanes)for(r.start=s/4,o=0;o<r.points.length;o++)i=r.points[o],a[s++]=i[0],a[s++]=i[1],a[s++]=i[2],a[s++]=r.lengths[o];e.gpu.points?.destroy(),e.gpu.points=ln(t,a),e.lanesDirty=!1}function G0(e){let{device:t}=w.get(e.layer);if(e.gpu?.device!==t){im(e);let c=new Float32Array(e.template.position.length+e.template.normal.length);c.set(e.template.position),c.set(e.template.normal,e.template.position.length),e.gpu={device:t,pipeline:t.createComputePipeline({layout:"auto",compute:{module:t.createShaderModule({code:e.shader}),entryPoint:"main"}}),params:t.createBuffer({size:16,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),template:ln(t,c)},e.lanesDirty=!0}let r,o,i;e.lanesDirty&&D0(e,t);let n=new Float32Array(e.trips.length*4),a=new Uint32Array(n.buffer);for(r=0;r<e.trips.length;r++)o=e.trips[r],a[r*4]=o.lane.start,a[r*4+1]=o.lane.points.length,n[r*4+2]=o.distance,n[r*4+3]=o.speed,e.mesh.extras.featureFaces[r].properties=o.properties;e.gpu.vehicles?.size>=n.byteLength?t.queue.writeBuffer(e.gpu.vehicles,0,n):(e.gpu.vehicles?.destroy(),e.gpu.vehicles=ln(t,n));let{position:s,normal:m}=e.mesh.geometry.attributes,f=[],p;for(i=0;i<6;i++)p=i===0?e.gpu.params:i===1?e.gpu.template:i===2?e.gpu.points:i===3?e.gpu.vehicles:i===4?s.buffer:m.buffer,f.push({binding:i,resource:{buffer:p}});e.gpu.bindGroup=t.createBindGroup({layout:e.gpu.pipeline.getBindGroupLayout(0),entries:f})}function U0(e,t){return t?e.loaded?`${e.trips.length} ${e.vehicle==="boat"?"boats":e.vehicle}`:`${e.vehicle}: loading\u2026`:`${e.vehicle}: select a valid simulation date`}function N0(e,t,r,o){let i;try{o?e.trips=_0(t,e.lanes,e.velocity):e.trips.length=0,i=U0(e,o)}catch(f){am(e,f);return}e.rebasedAt=r,e.nextCheck=r+1e3;let n="",a;for(a of e.trips)n+=`${n?",":""}${a.id}`;let s=e.outline&&!e.route&&e.lanes.length,m=n!==e.tripsKey||!!s;return s&&R0(e),n!==e.tripsKey&&(I0(e),e.tripsKey=n),e.mesh&&G0(e),e.error||(e.status.textContent!==i&&(e.status.textContent=i),e.status.removeAttribute("role")),m}function F0(e,t){let{device:r}=e.gpu;e.paramFloats[0]=e.elapsed=t,e.paramFloats[1]=e.side,e.paramInts[2]=e.vertices,e.paramInts[3]=e.trips.length*e.vertices,r.queue.writeBuffer(e.gpu.params,0,e.params);let o=r.createCommandEncoder(),i=o.beginComputePass();i.setPipeline(e.gpu.pipeline),i.setBindGroup(0,e.gpu.bindGroup),i.dispatchWorkgroups(e.trips.length),i.end(),r.queue.submit([o.finish()]),e.stale=!0}function j0(e){e.litAt=performance.now();let t=[],r=e.position||={},o,i,n,a,s,m,f,p,c,l;for(o of e.trips){({x:i,y:n,z:a,dx:s,dz:m}=Go(e,o,r));for(l of e.lights)[f,p,c]=l.position,t.push({...l,position:[i-f*m-c*s,n+p,a+f*s-c*m]})}e.mesh.extras.lights=t}function W0(e,t,r){e.mesh&&(F0(e,(t-e.rebasedAt)/1e3),e.lights&&(!r||!(performance.now()-e.litAt<100))&&j0(e))}function $0(e){if(e.frame=void 0,!e.ready||!e.layer._map)return;if(!w.get(e.layer)){e.frame=requestAnimationFrame(e.tick);return}e.mesh&&!(e.mesh.geometry.attributes.position.buffer.usage&GPUBufferUsage.STORAGE)&&(e.tripsKey=null,e.nextCheck=-1/0);let{live:t,time:r}=nm(e),o=r?.getTime(),i=Number.isFinite(o),n=!1;(!t||!i||!(o>=e.rebasedAt&&o<e.nextCheck))&&(n=N0(e,r,o,i),n===void 0)||(W0(e,o,t),(e.mesh||n)&&E(e.layer),t&&i&&(e.frame=requestAnimationFrame(e.tick)))}async function V0(e,t,r){let o=new URL(e.url,document.baseURI).href;if(/\.m?js(?:[?#]|$)/i.test(e.url))return(await import(o)).default(t,e.layer,r);if(!e.file){let i=await fetch(o,{signal:r});if(!i.ok)throw new Error(`HTTP ${i.status}`);e.file=await i.json()}return e.file}var Z0=Object.freeze([]);function q0({features:e=Z0}){let t=[],r,o,i,n,a,s,m,f;for({geometry:r,properties:o}of e)if(!(r?.type!=="LineString"&&r?.type!=="MultiLineString"))for(i=r.type==="MultiLineString"?r.coordinates:null,f=0;f<(i?i.length:1);f++){n=i?i[f]:r.coordinates,a=[];for([s,m]of n)a.push([m,s]);t.push({latlngs:a,properties:o??{},elevation:o?.elevation})}return t}$();L();function H0(e){let t=me.get(e);return Te.get(t)&&t}function fm(e){let{layer:t,lanes:r}=e,o=H0(t._map),i=M.get(t).position[1],n,a,s;for(n of r)for(a=0;a<n.points.length;a++)s=o&&(n.elevation??xe(t._map,n.latlngs[a])),n.points[a][2]=Number.isFinite(s)&&Number.isFinite(i)?s-i:0;e.lanesDirty=!0,e.nextCheck=-1/0}function Y0(e){let{layer:t,lanes:r}=e,o=t._map.options.crs,i=o.project(D.get(t)),n=Math.cos(D.get(t).lat*B),a,s,m,f,p;for(a of r){a.points=[];for([s,m]of a.latlngs)f=o.project(new d.LatLng(s,m)),a.points.push([(f.x-i.x)*n,-(f.y-i.y)*n,0]);for(a.lengths=[0],p=1;p<a.points.length;p++)a.lengths.push(a.lengths[p-1]+Math.hypot(a.points[p][0]-a.points[p-1][0],a.points[p][1]-a.points[p-1][1]));a.length=a.lengths.at(-1)}fm(e),ir(e,e.route),e.route=null,e.tripsKey=null}function X0(e,t,r){if(!(t.aborted||!e.layer._map)){if(e.error=null,r===e.loaded){e.nextCheck=-1/0,e.frame||e.tick();return}e.loaded=r,e.lanes=q0(r),Y0(e),e.frame||e.tick()}}function J0(e,t,r){!t.aborted&&r.name!=="AbortError"&&am(e,r)}function K0(e){let{time:t}=nm(e);if(!Number.isFinite(t?.getTime()))return;e.request?.abort();let{signal:r}=e.request=new AbortController;V0(e,t,r).then(X0.bind(null,e,r),J0.bind(null,e,r))}function Q0(e,t){t?.layer&&!_t.get(t.layer)?.time||(cancelAnimationFrame(e.frame),K0(e),e.tick())}function ev(e){e.lanes.length&&(fm(e),ir(e,e.route),e.route=null,e.mesh&&mm(e),e.frame||e.tick())}function tv(e,{url:t,vehicle:r="car",side:o,outline:i,speed:n=8,...a}=em){let{model:s,lights:m,side:f}=L0[r];o??=f,At(e,{tooltip:M0,nightLight:!!m,...a});let p=d.DomUtil.create("small","traffic-status");p.style.cssText="flex:0 1 auto;padding:1px 5px;border-radius:3px;background:#00000008;color:#555;",p.title=r,p.textContent=`${r}: loading\u2026`;let c=ci(s(0)),l=c.position.length,u=l/3,h=new ArrayBuffer(16),x=new Float32Array(h),g=new Uint32Array(h),y={layer:e,url:t,model:s,lights:m,side:o,outline:i,velocity:n,vehicle:r,status:p,template:c,stride:l,vertices:u,params:h,paramFloats:x,paramInts:g,ready:!1,frame:void 0,request:void 0,lanes:[],tripsKey:void 0,mesh:void 0,route:void 0,litAt:-1/0,trips:[],rebasedAt:0,nextCheck:-1/0,elapsed:0,gpu:null,lanesDirty:!0,stale:!1,loaded:void 0,file:void 0};y.shader=b0,y.tick=$0.bind(null,y),y.update=Q0.bind(null,y),y.terrain=ev.bind(null,y),Tt.set(e,y),e.on("ready",P0.bind(null,y)),e.on("add",B0.bind(null,y)),e.on("remove",T0.bind(null,y))}function rv(e){return e.header}function Zf(e,t,r,o,i){return ii(e.layer._map||Ns.get(e.layer),e.workerUrl,{type:"cog",url:e.url,asset:e.asset,z:t,x:r,y:o},i)}async function ov(e,t){let r={layer:e,url:new URL(t.url,document.baseURI).href,asset:t.asset,workerUrl:t.workerUrl},o=await Zf(r);return{getHeader:rv.bind(null,{header:o}),getZxy:Zf.bind(null,r)}}function iv(e,t){Qs(e,{ariaLabel:"COG raster",...t,archive:t.archive||ov(e,t)})}function nv(e,t=yr){switch(e){case"raster":return t.asset!==void 0||/\.tiff?(?:[?#]|$)/i.test(t.url)?iv:Qs;case"terrain":return l0;case"traffic":return tv;default:return null}}function av(){let e=Ws.shift();return e.initialize=nv(e.type,e.settings),e.initialize||(e.error=new Error(`Unknown layer type: ${e.type}`)),e}function sv(e){let{layer:t,ready:r}=e;if(e.error)return He(t,e.error),Promise.reject(e.error);try{let o=t._map;return o?.removeLayer(t),z.delete(t),e.initialize(t,e.settings),o?.addLayer(t),re.get(t)===r?t:re.get(t)}catch(o){throw t.fire("error",{error:o}),o}}function pm(e=yr){if(Jt.has(this)||Jt.add(this),Object.getPrototypeOf(this)!==d.Layer.prototype||!e?.source){if(mt.value.initialize)return mt.value.initialize.apply(this,arguments);d.Util.setOptions(this,e);return}let{source:{type:t=/\.pmtiles(?:[?#]|$)|\.tiff?(?:[?#]|$)/i.test(e.source.url)?"raster":"vector",...r},...o}=e,i={...r,...o};if(d.Util.setOptions(this,o),Xt.set(this,t),t==="vector"){Jy(i)?t0(this,i):i.data!==void 0||i.style!==void 0&&!i.url||i.url&&!/\.(?:pmtiles|glb|gltf)(?:[?#]|$)/i.test(i.url)?Xy(this,i):At(this,i);return}z.set(this,"pending");let n={layer:this,type:t,settings:i,ready:null};Ws.push(n),$s.value=$s.value.catch(Xe).then(av);let a=$s.value.then(sv);re.set(this,a),n.ready=a,a.catch(Xe)}L();function mv(e,t){switch(z.get(e)){case"3d":return po(e,t);case"raster":return m0(e,t);case"terrain":return c0(e,t);case"time":return uh.call(e,t)}}function fv(e){let t=d.Util.stamp(e);return this._layers[t]?z.get(e)?(this._loaded&&mv(e,this),delete this._layers[t],this._loaded&&(this.fire("layerremove",{layer:e}),e.fire("remove")),e._map=e._mapToAdd=null,this):dn.value.call(this,e):this}J();function pv(){return _(this)}Z();function cv(){return k(this)}ji();function lv(e,t){return Ht(this,e,t)}qo();function uv(e,t){return dt(this,e,t)}function dv(e){return qs(this,e)}L();L();var cm=new WeakMap;var lm=new WeakMap;var um=new WeakMap;function hv(e){return Do(this),this._parts=this._rings,cm.get(this).call(this,e)}function gv(){return this._map&&Do(this),lm.get(this).call(this)}function yv(){um.get(this).call(this),this._container.remove()}var nr=new Map;var Ut={value:null};function xv(e){nr.delete(e),Fr.set(e,null),!nr.size&&Ut.value!==null&&(cancelAnimationFrame(Ut.value),Ut.value=null)}function vv(){Ut.value=null;let e=[...nr],t,r;for([t,r]of e)nr.get(t)===r&&(nr.delete(t),Fr.set(t,null),dm.call(t))}function wv(e){yi.set(e,(yi.get(e)||0)+1),nr.set(e,yi.get(e)),Ut.value===null&&(Ut.value=requestAnimationFrame(vv)),Fr.set(e,Ut.value)}function dm(){if(!this._map)return;let e=this,t=Date.now(),r=!1,o=!1,i,n;for(i in this._tiles)Object.hasOwn(this._tiles,i)&&(n=this._tiles[i],!(!n.current||!n.loaded)&&(n._gpuOpacity=this._map._fadeAnimated?Math.min(1,(t-n.loaded)/200):1,n._gpuOpacity<1?r=!0:n.active||(this._onOpaqueTile(n),n.active=!0,o=!0)));o&&!this._noPrune&&this._pruneTiles(),Ct(this),xv(e),r&&wv(e)}function Lv(){return Ct(this),this}function bv(){this instanceof d.Polyline||this instanceof d.CircleMarker?(this.beforeAdd=this._updateBounds=Xe,this.redraw=Lv,z.set(this,"path"),this instanceof d.Polyline&&(cm.set(this,this.closestLayerPoint),this.closestLayerPoint=hv),this instanceof d.Circle&&(lm.set(this,this.getBounds),this.getBounds=gv)):this instanceof d.GridLayer?(um.set(this,this._initContainer),this._initContainer=yv,this._updateOpacity=dm):this instanceof d.ImageOverlay&&!(this instanceof d.VideoOverlay)&&!(this instanceof d.SVGOverlay)&&(z.set(this,"image"),this._reset=Ct)}function qf(){let e=this._initHooksCalled;d.version.startsWith("2.")||mt.value.callInitHooks.call(this),(d.version.startsWith("2.")||!e)&&(Jt.add(this),bv.call(this))}L();var le=d?.Layer;function lo(e){let t=Reflect.construct(le,[],new.target);return pm.call(t,e),t.callInitHooks(),t}L();function Mv(){return le.addInitHook.apply(this===d.Layer?le:this,arguments),this}L();function Bv(e){return le.mergeOptions.call(this===d.Layer?le:this,e),this}mt.value=Object.defineProperties({},Object.getOwnPropertyDescriptors(le.prototype));mt.value._layerAdd=le.prototype._layerAdd;mt.value.callInitHooks=le.prototype.callInitHooks;d.version.startsWith("2.")?(Object.setPrototypeOf(lo,le),lo.prototype=le.prototype,lo.initHooks=!0,lo.addInitHook=Mv,lo.mergeOptions=Bv,d.Layer=lo,le.prototype.constructor=d.Layer,le.addInitHook(qf)):(le.prototype.initialize=pm,le.prototype.callInitHooks=qf);Object.assign(le.prototype,{_layerAdd:Yy});dn.value=d.Map.prototype.removeLayer;Object.assign(d.Map.prototype,{removeLayer:fv,getPitch:pv,getBearing:cv,setPitch:lv,setBearing:uv});Object.assign(d.Marker.prototype,{setRotation:dv});})();
7
7
  //# sourceMappingURL=leaflet-city-mapper.js.map